@northslopetech/altitude-ui 3.0.0-alpha.2 → 3.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.d.mts +121 -32
- package/dist/index.d.ts +121 -32
- package/dist/index.js +928 -508
- package/dist/index.mjs +942 -543
- package/package.json +12 -4
package/dist/index.mjs
CHANGED
|
@@ -12,74 +12,68 @@ function cn(...inputs) {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
// src/components/ui/button.tsx
|
|
15
|
-
import {
|
|
15
|
+
import { jsx } from "react/jsx-runtime";
|
|
16
16
|
var buttonVariants = cva2(
|
|
17
17
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
18
18
|
{
|
|
19
19
|
variants: {
|
|
20
20
|
variant: {
|
|
21
|
-
default: "
|
|
22
|
-
|
|
23
|
-
destructive: "
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
link: "bg-light text-dark underline underline-offset-4 hover:cursor-pointer active:text-info"
|
|
21
|
+
default: "interactive-default interactive-default-fg border border-default shadow-sm hover:brightness-[90%] dark:hover:brightness-[130%] active:brightness-[80%] dark:active:brightness-[120%] focus-visible:ring-2 focus-visible:ring-focus-default focus-visible:border-strong",
|
|
22
|
+
primary: "interactive-accent interactive-accent-fg hover:brightness-[90%] dark:hover:brightness-[130%] active:brightness-[80%] dark:active:brightness-[120%] focus-visible:ring-2 focus-visible:ring-focus-default",
|
|
23
|
+
destructive: "interactive-destructive interactive-destructive-fg hover:brightness-[90%] dark:hover:brightness-[130%] active:brightness-[80%] dark:active:brightness-[120%] focus-visible:ring-3 focus-visible:ring-focus-error",
|
|
24
|
+
ghost: "interactive-default interactive-default-fg hover:brightness-[90%] dark:hover:brightness-[130%] active:brightness-[80%] dark:active:brightness-[120%] focus-visible:ring-2 focus-visible:ring-focus-default",
|
|
25
|
+
link: "h-6 px-0 py-0 rounded-sm text-default underline underline-offset-2 focus-visible:ring-2 focus-visible:ring-focus-default"
|
|
27
26
|
},
|
|
28
27
|
size: {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
default: "h-9 rounded-md px-4 py-2 type-label-sm-medium",
|
|
29
|
+
lg: "h-10 rounded-md px-4 py-2.5 type-label-md-medium",
|
|
30
|
+
sm: "h-8 rounded-sm px-3 py-1.5 type-label-sm-medium",
|
|
31
|
+
mini: "h-6 rounded-sm px-2 py-1 type-label-xs-medium"
|
|
33
32
|
}
|
|
34
33
|
},
|
|
35
|
-
compoundVariants: [
|
|
34
|
+
compoundVariants: [
|
|
35
|
+
{
|
|
36
|
+
variant: "link",
|
|
37
|
+
size: ["default", "sm"],
|
|
38
|
+
className: "type-body-sm-regular hover:type-body-sm-semibold active:type-body-sm-semibold"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
variant: "link",
|
|
42
|
+
size: "lg",
|
|
43
|
+
className: "type-body-md-regular hover:type-body-md-semibold active:type-body-md-semibold"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
variant: "link",
|
|
47
|
+
size: "mini",
|
|
48
|
+
className: "type-body-xs-regular hover:type-body-xs-semibold active:type-body-xs-semibold"
|
|
49
|
+
}
|
|
50
|
+
],
|
|
36
51
|
defaultVariants: {
|
|
37
52
|
variant: "default",
|
|
38
53
|
size: "default"
|
|
39
54
|
}
|
|
40
55
|
}
|
|
41
56
|
);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return { font: "var(--typography-label-sm-bold)" };
|
|
46
|
-
case "lg":
|
|
47
|
-
return { font: "var(--typography-label-lg-bold)" };
|
|
48
|
-
case "icon":
|
|
49
|
-
case "default":
|
|
50
|
-
default:
|
|
51
|
-
return { font: "var(--typography-label-md-bold)" };
|
|
52
|
-
}
|
|
53
|
-
}
|
|
57
|
+
var hasTextChildren = (children) => React.Children.toArray(children).some(
|
|
58
|
+
(child) => typeof child === "string" && child.trim().length > 0
|
|
59
|
+
);
|
|
54
60
|
var Button = React.forwardRef(
|
|
55
|
-
({
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
size,
|
|
60
|
-
icon,
|
|
61
|
-
iconPosition = "left",
|
|
62
|
-
children,
|
|
63
|
-
...props
|
|
64
|
-
}, ref) => {
|
|
65
|
-
const typographyStyles = getButtonTypographyStyles(size);
|
|
66
|
-
const tokenStyles = {
|
|
67
|
-
...typographyStyles,
|
|
68
|
-
...style
|
|
69
|
-
};
|
|
70
|
-
return /* @__PURE__ */ jsxs(
|
|
61
|
+
({ className, style, variant, size, children, ...props }, ref) => {
|
|
62
|
+
const isIconOnly = !hasTextChildren(children);
|
|
63
|
+
const iconOnlyClasses = isIconOnly ? "aspect-square px-0 py-0" : void 0;
|
|
64
|
+
return /* @__PURE__ */ jsx(
|
|
71
65
|
ButtonPrimitive,
|
|
72
66
|
{
|
|
73
67
|
"data-slot": "button",
|
|
74
|
-
className: cn(
|
|
75
|
-
|
|
68
|
+
className: cn(
|
|
69
|
+
buttonVariants({ variant, size }),
|
|
70
|
+
iconOnlyClasses,
|
|
71
|
+
className
|
|
72
|
+
),
|
|
73
|
+
style,
|
|
76
74
|
ref,
|
|
77
75
|
...props,
|
|
78
|
-
children
|
|
79
|
-
icon && iconPosition === "left" && icon,
|
|
80
|
-
children,
|
|
81
|
-
icon && iconPosition === "right" && icon
|
|
82
|
-
]
|
|
76
|
+
children
|
|
83
77
|
}
|
|
84
78
|
);
|
|
85
79
|
}
|
|
@@ -89,7 +83,7 @@ Button.displayName = "Button";
|
|
|
89
83
|
// src/components/ui/text.tsx
|
|
90
84
|
import * as React2 from "react";
|
|
91
85
|
import { cva as cva3 } from "class-variance-authority";
|
|
92
|
-
import { jsx } from "react/jsx-runtime";
|
|
86
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
93
87
|
var textVariants = cva3("", {
|
|
94
88
|
variants: {
|
|
95
89
|
variant: {
|
|
@@ -144,7 +138,7 @@ function getDefaultElement(variant) {
|
|
|
144
138
|
var Text = React2.forwardRef(
|
|
145
139
|
({ className, variant, as, style, ...props }, ref) => {
|
|
146
140
|
const Component = as || getDefaultElement(variant);
|
|
147
|
-
return /* @__PURE__ */
|
|
141
|
+
return /* @__PURE__ */ jsx2(
|
|
148
142
|
Component,
|
|
149
143
|
{
|
|
150
144
|
className: cn(textVariants({ variant }), className),
|
|
@@ -159,9 +153,9 @@ Text.displayName = "Text";
|
|
|
159
153
|
|
|
160
154
|
// src/components/ui/card.tsx
|
|
161
155
|
import * as React3 from "react";
|
|
162
|
-
import { jsx as
|
|
156
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
163
157
|
var Card = React3.forwardRef(
|
|
164
|
-
({ className, size = "default", ...props }, ref) => /* @__PURE__ */
|
|
158
|
+
({ className, size = "default", ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
165
159
|
"div",
|
|
166
160
|
{
|
|
167
161
|
ref,
|
|
@@ -177,7 +171,7 @@ var Card = React3.forwardRef(
|
|
|
177
171
|
);
|
|
178
172
|
Card.displayName = "Card";
|
|
179
173
|
var CardHeader = React3.forwardRef(
|
|
180
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
174
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
181
175
|
"div",
|
|
182
176
|
{
|
|
183
177
|
ref,
|
|
@@ -192,7 +186,7 @@ var CardHeader = React3.forwardRef(
|
|
|
192
186
|
);
|
|
193
187
|
CardHeader.displayName = "CardHeader";
|
|
194
188
|
var CardTitle = React3.forwardRef(
|
|
195
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
189
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
196
190
|
Text,
|
|
197
191
|
{
|
|
198
192
|
ref,
|
|
@@ -205,7 +199,7 @@ var CardTitle = React3.forwardRef(
|
|
|
205
199
|
);
|
|
206
200
|
CardTitle.displayName = "CardTitle";
|
|
207
201
|
var CardDescription = React3.forwardRef(
|
|
208
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
202
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
209
203
|
Text,
|
|
210
204
|
{
|
|
211
205
|
ref,
|
|
@@ -218,7 +212,7 @@ var CardDescription = React3.forwardRef(
|
|
|
218
212
|
);
|
|
219
213
|
CardDescription.displayName = "CardDescription";
|
|
220
214
|
var CardAction = React3.forwardRef(
|
|
221
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
215
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
222
216
|
"div",
|
|
223
217
|
{
|
|
224
218
|
ref,
|
|
@@ -233,7 +227,7 @@ var CardAction = React3.forwardRef(
|
|
|
233
227
|
);
|
|
234
228
|
CardAction.displayName = "CardAction";
|
|
235
229
|
var CardContent = React3.forwardRef(
|
|
236
|
-
({ className, bleed, ...props }, ref) => /* @__PURE__ */
|
|
230
|
+
({ className, bleed, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
237
231
|
"div",
|
|
238
232
|
{
|
|
239
233
|
ref,
|
|
@@ -248,7 +242,7 @@ var CardContent = React3.forwardRef(
|
|
|
248
242
|
);
|
|
249
243
|
CardContent.displayName = "CardContent";
|
|
250
244
|
var CardFooter = React3.forwardRef(
|
|
251
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
245
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
252
246
|
"div",
|
|
253
247
|
{
|
|
254
248
|
ref,
|
|
@@ -266,7 +260,7 @@ CardFooter.displayName = "CardFooter";
|
|
|
266
260
|
// src/components/ui/typography.tsx
|
|
267
261
|
import * as React4 from "react";
|
|
268
262
|
import { cva as cva4 } from "class-variance-authority";
|
|
269
|
-
import { jsx as
|
|
263
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
270
264
|
var typographyVariants = cva4("", {
|
|
271
265
|
variants: {
|
|
272
266
|
variant: {
|
|
@@ -311,7 +305,7 @@ function getDefaultElement2(variant) {
|
|
|
311
305
|
var Typography = React4.forwardRef(
|
|
312
306
|
({ className, variant, as, style, ...props }, ref) => {
|
|
313
307
|
const Component = as || getDefaultElement2(variant);
|
|
314
|
-
return /* @__PURE__ */
|
|
308
|
+
return /* @__PURE__ */ jsx4(
|
|
315
309
|
Component,
|
|
316
310
|
{
|
|
317
311
|
className: cn(typographyVariants({ variant }), className),
|
|
@@ -389,7 +383,7 @@ import { SquaresFourIcon as PhosphorSquaresFour } from "@phosphor-icons/react/Sq
|
|
|
389
383
|
import { MagnifyingGlassPlusIcon as PhosphorMagnifyingGlassPlus } from "@phosphor-icons/react/MagnifyingGlassPlus";
|
|
390
384
|
import { MagnifyingGlassMinusIcon as PhosphorMagnifyingGlassMinus } from "@phosphor-icons/react/MagnifyingGlassMinus";
|
|
391
385
|
import { SidebarSimpleIcon as PhosphorSidebarSimple } from "@phosphor-icons/react/SidebarSimple";
|
|
392
|
-
import { jsx as
|
|
386
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
393
387
|
var getVariantStyles = (variant = "dark") => {
|
|
394
388
|
const variants = {
|
|
395
389
|
dark: "text-dark",
|
|
@@ -402,7 +396,7 @@ var getVariantStyles = (variant = "dark") => {
|
|
|
402
396
|
};
|
|
403
397
|
function createIcon(PhosphorIcon) {
|
|
404
398
|
const Wrapped = React5.forwardRef(
|
|
405
|
-
({ className, variant = "dark", size, weight = "regular", ...props }, ref) => /* @__PURE__ */
|
|
399
|
+
({ className, variant = "dark", size, weight = "regular", ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
406
400
|
PhosphorIcon,
|
|
407
401
|
{
|
|
408
402
|
ref,
|
|
@@ -476,7 +470,7 @@ var ZoomInIcon = createIcon(PhosphorMagnifyingGlassPlus);
|
|
|
476
470
|
var ZoomOutIcon = createIcon(PhosphorMagnifyingGlassMinus);
|
|
477
471
|
|
|
478
472
|
// src/components/ui/select.tsx
|
|
479
|
-
import { jsx as
|
|
473
|
+
import { jsx as jsx6, jsxs } from "react/jsx-runtime";
|
|
480
474
|
var selectTriggerVariants = cva5(
|
|
481
475
|
"flex items-center justify-between border bg-light text-dark focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 transition-colors rounded-md px-3 border-secondary focus-visible:border-2 focus-visible:border-strong aria-invalid:border-error aria-invalid:focus-visible:border-error",
|
|
482
476
|
{
|
|
@@ -517,7 +511,7 @@ var SelectTrigger = React6.forwardRef(({ className, children, style, width, ...p
|
|
|
517
511
|
font: "var(--typography-label-md-regular)",
|
|
518
512
|
...style
|
|
519
513
|
};
|
|
520
|
-
return /* @__PURE__ */
|
|
514
|
+
return /* @__PURE__ */ jsxs(
|
|
521
515
|
SelectPrimitive.Trigger,
|
|
522
516
|
{
|
|
523
517
|
ref,
|
|
@@ -529,8 +523,8 @@ var SelectTrigger = React6.forwardRef(({ className, children, style, width, ...p
|
|
|
529
523
|
style: tokenStyles,
|
|
530
524
|
...props,
|
|
531
525
|
children: [
|
|
532
|
-
/* @__PURE__ */
|
|
533
|
-
/* @__PURE__ */
|
|
526
|
+
/* @__PURE__ */ jsx6("span", { className: "flex-1 text-left truncate", children }),
|
|
527
|
+
/* @__PURE__ */ jsx6(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx6(
|
|
534
528
|
CaretDownIcon,
|
|
535
529
|
{
|
|
536
530
|
size: 20,
|
|
@@ -542,7 +536,7 @@ var SelectTrigger = React6.forwardRef(({ className, children, style, width, ...p
|
|
|
542
536
|
);
|
|
543
537
|
});
|
|
544
538
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
545
|
-
var SelectScrollUpButton = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
539
|
+
var SelectScrollUpButton = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
|
|
546
540
|
SelectPrimitive.ScrollUpButton,
|
|
547
541
|
{
|
|
548
542
|
ref,
|
|
@@ -551,11 +545,11 @@ var SelectScrollUpButton = React6.forwardRef(({ className, ...props }, ref) => /
|
|
|
551
545
|
className
|
|
552
546
|
),
|
|
553
547
|
...props,
|
|
554
|
-
children: /* @__PURE__ */
|
|
548
|
+
children: /* @__PURE__ */ jsx6(CaretUpIcon, {})
|
|
555
549
|
}
|
|
556
550
|
));
|
|
557
551
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
558
|
-
var SelectScrollDownButton = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
552
|
+
var SelectScrollDownButton = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
|
|
559
553
|
SelectPrimitive.ScrollDownButton,
|
|
560
554
|
{
|
|
561
555
|
ref,
|
|
@@ -564,13 +558,13 @@ var SelectScrollDownButton = React6.forwardRef(({ className, ...props }, ref) =>
|
|
|
564
558
|
className
|
|
565
559
|
),
|
|
566
560
|
...props,
|
|
567
|
-
children: /* @__PURE__ */
|
|
561
|
+
children: /* @__PURE__ */ jsx6(CaretDownIcon, {})
|
|
568
562
|
}
|
|
569
563
|
));
|
|
570
564
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
571
565
|
var SelectContent = React6.forwardRef(({ className, children, position = "popper", ...props }, ref) => {
|
|
572
566
|
const contentPosition = position || "popper";
|
|
573
|
-
return /* @__PURE__ */
|
|
567
|
+
return /* @__PURE__ */ jsx6(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
|
|
574
568
|
SelectPrimitive.Content,
|
|
575
569
|
{
|
|
576
570
|
ref,
|
|
@@ -581,8 +575,8 @@ var SelectContent = React6.forwardRef(({ className, children, position = "popper
|
|
|
581
575
|
position: contentPosition,
|
|
582
576
|
...props,
|
|
583
577
|
children: [
|
|
584
|
-
/* @__PURE__ */
|
|
585
|
-
/* @__PURE__ */
|
|
578
|
+
/* @__PURE__ */ jsx6(SelectScrollUpButton, {}),
|
|
579
|
+
/* @__PURE__ */ jsx6(
|
|
586
580
|
SelectPrimitive.Viewport,
|
|
587
581
|
{
|
|
588
582
|
className: cn(
|
|
@@ -592,13 +586,13 @@ var SelectContent = React6.forwardRef(({ className, children, position = "popper
|
|
|
592
586
|
children
|
|
593
587
|
}
|
|
594
588
|
),
|
|
595
|
-
/* @__PURE__ */
|
|
589
|
+
/* @__PURE__ */ jsx6(SelectScrollDownButton, {})
|
|
596
590
|
]
|
|
597
591
|
}
|
|
598
592
|
) });
|
|
599
593
|
});
|
|
600
594
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
601
|
-
var SelectLabel = React6.forwardRef(({ className, children, style, ...props }, ref) => /* @__PURE__ */
|
|
595
|
+
var SelectLabel = React6.forwardRef(({ className, children, style, ...props }, ref) => /* @__PURE__ */ jsx6(
|
|
602
596
|
SelectPrimitive.Label,
|
|
603
597
|
{
|
|
604
598
|
ref,
|
|
@@ -609,7 +603,7 @@ var SelectLabel = React6.forwardRef(({ className, children, style, ...props }, r
|
|
|
609
603
|
}
|
|
610
604
|
));
|
|
611
605
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
612
|
-
var SelectItem = React6.forwardRef(({ className, children, style, ...props }, ref) => /* @__PURE__ */
|
|
606
|
+
var SelectItem = React6.forwardRef(({ className, children, style, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
613
607
|
SelectPrimitive.Item,
|
|
614
608
|
{
|
|
615
609
|
ref,
|
|
@@ -624,13 +618,13 @@ var SelectItem = React6.forwardRef(({ className, children, style, ...props }, re
|
|
|
624
618
|
style: { font: "var(--typography-label-md-regular)", ...style },
|
|
625
619
|
...props,
|
|
626
620
|
children: [
|
|
627
|
-
/* @__PURE__ */
|
|
628
|
-
/* @__PURE__ */
|
|
621
|
+
/* @__PURE__ */ jsx6(SelectPrimitive.ItemText, { className: "flex-1 truncate", children }),
|
|
622
|
+
/* @__PURE__ */ jsx6(SelectPrimitive.ItemIndicator, { className: "flex h-4 w-4 items-center justify-center ml-auto", children: /* @__PURE__ */ jsx6(CheckIcon, { className: "text-strong" }) })
|
|
629
623
|
]
|
|
630
624
|
}
|
|
631
625
|
));
|
|
632
626
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
633
|
-
var SelectSeparator = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
627
|
+
var SelectSeparator = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
|
|
634
628
|
SelectPrimitive.Separator,
|
|
635
629
|
{
|
|
636
630
|
ref,
|
|
@@ -645,31 +639,30 @@ import { useMemo } from "react";
|
|
|
645
639
|
import { cva as cva6 } from "class-variance-authority";
|
|
646
640
|
|
|
647
641
|
// src/components/ui/label.tsx
|
|
648
|
-
import * as
|
|
649
|
-
import { jsx as
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
...props
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
}
|
|
642
|
+
import * as React7 from "react";
|
|
643
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
644
|
+
var labelClasses = "type-label-sm-medium flex flex-row items-center gap-2 text-default select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50";
|
|
645
|
+
var Label2 = React7.forwardRef(
|
|
646
|
+
({ className, ...props }, ref) => {
|
|
647
|
+
return /* @__PURE__ */ jsx7(
|
|
648
|
+
"label",
|
|
649
|
+
{
|
|
650
|
+
ref,
|
|
651
|
+
"data-slot": "label",
|
|
652
|
+
className: cn(labelClasses, className),
|
|
653
|
+
...props
|
|
654
|
+
}
|
|
655
|
+
);
|
|
656
|
+
}
|
|
657
|
+
);
|
|
658
|
+
Label2.displayName = "Label";
|
|
666
659
|
|
|
667
660
|
// src/components/ui/separator.tsx
|
|
668
|
-
import * as
|
|
661
|
+
import * as React8 from "react";
|
|
669
662
|
import { Separator as SeparatorPrimitive } from "@base-ui/react/separator";
|
|
670
|
-
import { jsx as
|
|
671
|
-
var Separator2 =
|
|
672
|
-
({ className, orientation = "horizontal", ...props }, ref) => /* @__PURE__ */
|
|
663
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
664
|
+
var Separator2 = React8.forwardRef(
|
|
665
|
+
({ className, orientation = "horizontal", ...props }, ref) => /* @__PURE__ */ jsx8(
|
|
673
666
|
SeparatorPrimitive,
|
|
674
667
|
{
|
|
675
668
|
ref,
|
|
@@ -686,9 +679,9 @@ var Separator2 = React7.forwardRef(
|
|
|
686
679
|
Separator2.displayName = "Separator";
|
|
687
680
|
|
|
688
681
|
// src/components/ui/field.tsx
|
|
689
|
-
import { jsx as
|
|
682
|
+
import { jsx as jsx9, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
690
683
|
function FieldSet({ className, ...props }) {
|
|
691
|
-
return /* @__PURE__ */
|
|
684
|
+
return /* @__PURE__ */ jsx9(
|
|
692
685
|
"fieldset",
|
|
693
686
|
{
|
|
694
687
|
"data-slot": "field-set",
|
|
@@ -706,7 +699,7 @@ function FieldLegend({
|
|
|
706
699
|
variant = "legend",
|
|
707
700
|
...props
|
|
708
701
|
}) {
|
|
709
|
-
return /* @__PURE__ */
|
|
702
|
+
return /* @__PURE__ */ jsx9(
|
|
710
703
|
"legend",
|
|
711
704
|
{
|
|
712
705
|
"data-slot": "field-legend",
|
|
@@ -722,7 +715,7 @@ function FieldLegend({
|
|
|
722
715
|
);
|
|
723
716
|
}
|
|
724
717
|
function FieldGroup({ className, ...props }) {
|
|
725
|
-
return /* @__PURE__ */
|
|
718
|
+
return /* @__PURE__ */ jsx9(
|
|
726
719
|
"div",
|
|
727
720
|
{
|
|
728
721
|
"data-slot": "field-group",
|
|
@@ -762,7 +755,7 @@ function Field({
|
|
|
762
755
|
orientation = "vertical",
|
|
763
756
|
...props
|
|
764
757
|
}) {
|
|
765
|
-
return /* @__PURE__ */
|
|
758
|
+
return /* @__PURE__ */ jsx9(
|
|
766
759
|
"div",
|
|
767
760
|
{
|
|
768
761
|
role: "group",
|
|
@@ -774,7 +767,7 @@ function Field({
|
|
|
774
767
|
);
|
|
775
768
|
}
|
|
776
769
|
function FieldContent({ className, ...props }) {
|
|
777
|
-
return /* @__PURE__ */
|
|
770
|
+
return /* @__PURE__ */ jsx9(
|
|
778
771
|
"div",
|
|
779
772
|
{
|
|
780
773
|
"data-slot": "field-content",
|
|
@@ -790,7 +783,7 @@ function FieldLabel({
|
|
|
790
783
|
className,
|
|
791
784
|
...props
|
|
792
785
|
}) {
|
|
793
|
-
return /* @__PURE__ */
|
|
786
|
+
return /* @__PURE__ */ jsx9(
|
|
794
787
|
Label2,
|
|
795
788
|
{
|
|
796
789
|
"data-slot": "field-label",
|
|
@@ -805,7 +798,7 @@ function FieldLabel({
|
|
|
805
798
|
);
|
|
806
799
|
}
|
|
807
800
|
function FieldTitle({ className, ...props }) {
|
|
808
|
-
return /* @__PURE__ */
|
|
801
|
+
return /* @__PURE__ */ jsx9(
|
|
809
802
|
"div",
|
|
810
803
|
{
|
|
811
804
|
"data-slot": "field-label",
|
|
@@ -818,7 +811,7 @@ function FieldTitle({ className, ...props }) {
|
|
|
818
811
|
);
|
|
819
812
|
}
|
|
820
813
|
function FieldDescription({ className, ...props }) {
|
|
821
|
-
return /* @__PURE__ */
|
|
814
|
+
return /* @__PURE__ */ jsx9(
|
|
822
815
|
"p",
|
|
823
816
|
{
|
|
824
817
|
"data-slot": "field-description",
|
|
@@ -837,7 +830,7 @@ function FieldSeparator({
|
|
|
837
830
|
className,
|
|
838
831
|
...props
|
|
839
832
|
}) {
|
|
840
|
-
return /* @__PURE__ */
|
|
833
|
+
return /* @__PURE__ */ jsxs2(
|
|
841
834
|
"div",
|
|
842
835
|
{
|
|
843
836
|
"data-slot": "field-separator",
|
|
@@ -848,8 +841,8 @@ function FieldSeparator({
|
|
|
848
841
|
),
|
|
849
842
|
...props,
|
|
850
843
|
children: [
|
|
851
|
-
/* @__PURE__ */
|
|
852
|
-
children && /* @__PURE__ */
|
|
844
|
+
/* @__PURE__ */ jsx9(Separator2, { className: "absolute inset-0 top-1/2" }),
|
|
845
|
+
children && /* @__PURE__ */ jsx9(
|
|
853
846
|
"span",
|
|
854
847
|
{
|
|
855
848
|
className: "bg-light text-secondary relative mx-auto block w-fit px-2",
|
|
@@ -877,14 +870,14 @@ function FieldError({
|
|
|
877
870
|
if (errors?.length === 1 && errors[0]?.message) {
|
|
878
871
|
return errors[0].message;
|
|
879
872
|
}
|
|
880
|
-
return /* @__PURE__ */
|
|
881
|
-
(error, index) => error?.message && /* @__PURE__ */
|
|
873
|
+
return /* @__PURE__ */ jsx9("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
|
|
874
|
+
(error, index) => error?.message && /* @__PURE__ */ jsx9("li", { children: error.message }, index)
|
|
882
875
|
) });
|
|
883
876
|
}, [children, errors]);
|
|
884
877
|
if (!content) {
|
|
885
878
|
return null;
|
|
886
879
|
}
|
|
887
|
-
return /* @__PURE__ */
|
|
880
|
+
return /* @__PURE__ */ jsx9(
|
|
888
881
|
"div",
|
|
889
882
|
{
|
|
890
883
|
role: "alert",
|
|
@@ -896,13 +889,136 @@ function FieldError({
|
|
|
896
889
|
);
|
|
897
890
|
}
|
|
898
891
|
|
|
892
|
+
// src/components/ui/dialog.tsx
|
|
893
|
+
import * as React9 from "react";
|
|
894
|
+
import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
|
|
895
|
+
import { jsx as jsx10, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
896
|
+
var DialogChromeContext = React9.createContext(null);
|
|
897
|
+
function useDialogChrome() {
|
|
898
|
+
return React9.useContext(DialogChromeContext) ?? { showCloseButton: false };
|
|
899
|
+
}
|
|
900
|
+
var DialogCloseControl = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs3(
|
|
901
|
+
DialogPrimitive.Close,
|
|
902
|
+
{
|
|
903
|
+
ref,
|
|
904
|
+
type: "button",
|
|
905
|
+
className: cn(
|
|
906
|
+
"shrink-0 rounded-md p-1 text-secondary transition-colors",
|
|
907
|
+
"hover:bg-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-interactive focus-visible:ring-offset-2",
|
|
908
|
+
className
|
|
909
|
+
),
|
|
910
|
+
...props,
|
|
911
|
+
children: [
|
|
912
|
+
/* @__PURE__ */ jsx10(CloseIcon, { size: 16, "aria-hidden": "true" }),
|
|
913
|
+
/* @__PURE__ */ jsx10("span", { className: "sr-only", children: "Close" })
|
|
914
|
+
]
|
|
915
|
+
}
|
|
916
|
+
));
|
|
917
|
+
DialogCloseControl.displayName = "DialogCloseControl";
|
|
918
|
+
var DIALOG_DESKTOP_FRAME = "h-[480px] w-[640px] max-w-[calc(100vw-2rem)] max-h-[calc(100dvh-2rem)]";
|
|
919
|
+
var DIALOG_MOBILE_FRAME = "w-[320px] min-h-[240px] max-w-[calc(100vw-2rem)] max-h-[min(640px,calc(100dvh-2rem))] overflow-x-hidden [&_input]:!min-w-0";
|
|
920
|
+
var Dialog = DialogPrimitive.Root;
|
|
921
|
+
var DialogTrigger = DialogPrimitive.Trigger;
|
|
922
|
+
var DialogOverlay = React9.forwardRef(
|
|
923
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
924
|
+
DialogPrimitive.Backdrop,
|
|
925
|
+
{
|
|
926
|
+
ref,
|
|
927
|
+
className: cn(
|
|
928
|
+
"fixed inset-0 z-40 bg-dark/60 backdrop-blur-sm data-[hidden]:animate-out data-[hidden]:fade-out-0 data-[open]:animate-in data-[open]:fade-in-0",
|
|
929
|
+
className
|
|
930
|
+
),
|
|
931
|
+
...props
|
|
932
|
+
}
|
|
933
|
+
)
|
|
934
|
+
);
|
|
935
|
+
DialogOverlay.displayName = "DialogOverlay";
|
|
936
|
+
var DialogContent = React9.forwardRef(
|
|
937
|
+
({ className, children, showCloseButton = true, size = "desktop", ...props }, ref) => /* @__PURE__ */ jsxs3(DialogPrimitive.Portal, { children: [
|
|
938
|
+
/* @__PURE__ */ jsx10(DialogOverlay, {}),
|
|
939
|
+
/* @__PURE__ */ jsx10(DialogPrimitive.Viewport, { className: "fixed inset-0 z-50 flex items-start justify-center overflow-y-auto p-4 sm:items-center sm:p-6", children: /* @__PURE__ */ jsx10(
|
|
940
|
+
DialogPrimitive.Popup,
|
|
941
|
+
{
|
|
942
|
+
ref,
|
|
943
|
+
"data-slot": "dialog",
|
|
944
|
+
className: cn(
|
|
945
|
+
"relative my-auto flex flex-col overflow-hidden rounded-[10px] border border-default surface-default shadow-lg outline-none focus-visible:ring-2 focus-visible:ring-interactive focus-visible:ring-offset-2",
|
|
946
|
+
size === "desktop" && DIALOG_DESKTOP_FRAME,
|
|
947
|
+
size === "mobile" && DIALOG_MOBILE_FRAME,
|
|
948
|
+
className
|
|
949
|
+
),
|
|
950
|
+
...props,
|
|
951
|
+
children: /* @__PURE__ */ jsx10(DialogChromeContext.Provider, { value: { showCloseButton }, children })
|
|
952
|
+
}
|
|
953
|
+
) })
|
|
954
|
+
] })
|
|
955
|
+
);
|
|
956
|
+
DialogContent.displayName = "DialogContent";
|
|
957
|
+
var DialogBody = React9.forwardRef(
|
|
958
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
959
|
+
"div",
|
|
960
|
+
{
|
|
961
|
+
ref,
|
|
962
|
+
"data-slot": "dialog-body",
|
|
963
|
+
className: cn(
|
|
964
|
+
"min-h-0 flex-1 overflow-y-auto overscroll-contain p-6",
|
|
965
|
+
className
|
|
966
|
+
),
|
|
967
|
+
...props
|
|
968
|
+
}
|
|
969
|
+
)
|
|
970
|
+
);
|
|
971
|
+
DialogBody.displayName = "DialogBody";
|
|
972
|
+
var DialogFooter = React9.forwardRef(
|
|
973
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
974
|
+
"div",
|
|
975
|
+
{
|
|
976
|
+
ref,
|
|
977
|
+
className: cn(
|
|
978
|
+
"shrink-0 flex flex-col-reverse gap-2 p-4 sm:flex-row sm:justify-end sm:gap-2",
|
|
979
|
+
className
|
|
980
|
+
),
|
|
981
|
+
...props
|
|
982
|
+
}
|
|
983
|
+
)
|
|
984
|
+
);
|
|
985
|
+
DialogFooter.displayName = "DialogFooter";
|
|
986
|
+
var DialogTitle = React9.forwardRef(
|
|
987
|
+
({ className, children, ...props }, ref) => {
|
|
988
|
+
const { showCloseButton } = useDialogChrome();
|
|
989
|
+
return /* @__PURE__ */ jsxs3("div", { className: "shrink-0 flex items-center justify-between p-4", children: [
|
|
990
|
+
/* @__PURE__ */ jsx10(
|
|
991
|
+
DialogPrimitive.Title,
|
|
992
|
+
{
|
|
993
|
+
ref,
|
|
994
|
+
className: cn("type-h4-medium text-default", className),
|
|
995
|
+
...props,
|
|
996
|
+
children
|
|
997
|
+
}
|
|
998
|
+
),
|
|
999
|
+
showCloseButton ? /* @__PURE__ */ jsx10(DialogCloseControl, {}) : null
|
|
1000
|
+
] });
|
|
1001
|
+
}
|
|
1002
|
+
);
|
|
1003
|
+
DialogTitle.displayName = "DialogTitle";
|
|
1004
|
+
var DialogDescription = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
1005
|
+
DialogPrimitive.Description,
|
|
1006
|
+
{
|
|
1007
|
+
ref,
|
|
1008
|
+
className: cn("type-body-sm-regular text-secondary", className),
|
|
1009
|
+
...props
|
|
1010
|
+
}
|
|
1011
|
+
));
|
|
1012
|
+
DialogDescription.displayName = "DialogDescription";
|
|
1013
|
+
var DialogClose = DialogPrimitive.Close;
|
|
1014
|
+
|
|
899
1015
|
// src/components/ui/breadcrumb.tsx
|
|
900
|
-
import * as
|
|
1016
|
+
import * as React10 from "react";
|
|
901
1017
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
902
1018
|
import { useRender } from "@base-ui/react/use-render";
|
|
903
|
-
import { jsx as
|
|
904
|
-
var Breadcrumb =
|
|
905
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
1019
|
+
import { jsx as jsx11, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1020
|
+
var Breadcrumb = React10.forwardRef(
|
|
1021
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
906
1022
|
"nav",
|
|
907
1023
|
{
|
|
908
1024
|
"aria-label": "breadcrumb",
|
|
@@ -914,8 +1030,8 @@ var Breadcrumb = React8.forwardRef(
|
|
|
914
1030
|
)
|
|
915
1031
|
);
|
|
916
1032
|
Breadcrumb.displayName = "Breadcrumb";
|
|
917
|
-
var BreadcrumbList =
|
|
918
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
1033
|
+
var BreadcrumbList = React10.forwardRef(
|
|
1034
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
919
1035
|
"ol",
|
|
920
1036
|
{
|
|
921
1037
|
"data-slot": "breadcrumb-list",
|
|
@@ -929,8 +1045,8 @@ var BreadcrumbList = React8.forwardRef(
|
|
|
929
1045
|
)
|
|
930
1046
|
);
|
|
931
1047
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
932
|
-
var BreadcrumbItem =
|
|
933
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
1048
|
+
var BreadcrumbItem = React10.forwardRef(
|
|
1049
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
934
1050
|
"li",
|
|
935
1051
|
{
|
|
936
1052
|
"data-slot": "breadcrumb-item",
|
|
@@ -941,7 +1057,7 @@ var BreadcrumbItem = React8.forwardRef(
|
|
|
941
1057
|
)
|
|
942
1058
|
);
|
|
943
1059
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
944
|
-
var BreadcrumbLink =
|
|
1060
|
+
var BreadcrumbLink = React10.forwardRef(
|
|
945
1061
|
({ className, render, ...props }, ref) => useRender({
|
|
946
1062
|
ref,
|
|
947
1063
|
defaultTagName: "a",
|
|
@@ -958,8 +1074,8 @@ var BreadcrumbLink = React8.forwardRef(
|
|
|
958
1074
|
})
|
|
959
1075
|
);
|
|
960
1076
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
961
|
-
var BreadcrumbPage =
|
|
962
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
1077
|
+
var BreadcrumbPage = React10.forwardRef(
|
|
1078
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
963
1079
|
"span",
|
|
964
1080
|
{
|
|
965
1081
|
"data-slot": "breadcrumb-page",
|
|
@@ -973,7 +1089,7 @@ var BreadcrumbPage = React8.forwardRef(
|
|
|
973
1089
|
)
|
|
974
1090
|
);
|
|
975
1091
|
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
976
|
-
var BreadcrumbSeparator =
|
|
1092
|
+
var BreadcrumbSeparator = React10.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
977
1093
|
"li",
|
|
978
1094
|
{
|
|
979
1095
|
"data-slot": "breadcrumb-separator",
|
|
@@ -982,11 +1098,11 @@ var BreadcrumbSeparator = React8.forwardRef(({ children, className, ...props },
|
|
|
982
1098
|
className: cn("[&>svg]:size-3.5", className),
|
|
983
1099
|
ref,
|
|
984
1100
|
...props,
|
|
985
|
-
children: children ?? /* @__PURE__ */
|
|
1101
|
+
children: children ?? /* @__PURE__ */ jsx11(CaretRightIcon, { className: "cn-rtl-flip" })
|
|
986
1102
|
}
|
|
987
1103
|
));
|
|
988
1104
|
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
989
|
-
var BreadcrumbEllipsis =
|
|
1105
|
+
var BreadcrumbEllipsis = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs4(
|
|
990
1106
|
"span",
|
|
991
1107
|
{
|
|
992
1108
|
"data-slot": "breadcrumb-ellipsis",
|
|
@@ -999,22 +1115,22 @@ var BreadcrumbEllipsis = React8.forwardRef(({ className, ...props }, ref) => /*
|
|
|
999
1115
|
ref,
|
|
1000
1116
|
...props,
|
|
1001
1117
|
children: [
|
|
1002
|
-
/* @__PURE__ */
|
|
1003
|
-
/* @__PURE__ */
|
|
1118
|
+
/* @__PURE__ */ jsx11(MoreMenuIcon, {}),
|
|
1119
|
+
/* @__PURE__ */ jsx11("span", { className: "sr-only", children: "More" })
|
|
1004
1120
|
]
|
|
1005
1121
|
}
|
|
1006
1122
|
));
|
|
1007
1123
|
BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
|
|
1008
1124
|
|
|
1009
1125
|
// src/components/ui/tooltip.tsx
|
|
1010
|
-
import * as
|
|
1126
|
+
import * as React11 from "react";
|
|
1011
1127
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
1012
|
-
import { jsx as
|
|
1128
|
+
import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1013
1129
|
function TooltipProvider({
|
|
1014
1130
|
delayDuration = 0,
|
|
1015
1131
|
...props
|
|
1016
1132
|
}) {
|
|
1017
|
-
return /* @__PURE__ */
|
|
1133
|
+
return /* @__PURE__ */ jsx12(
|
|
1018
1134
|
TooltipPrimitive.Provider,
|
|
1019
1135
|
{
|
|
1020
1136
|
"data-slot": "tooltip-provider",
|
|
@@ -1025,11 +1141,11 @@ function TooltipProvider({
|
|
|
1025
1141
|
}
|
|
1026
1142
|
TooltipProvider.displayName = "TooltipProvider";
|
|
1027
1143
|
function Tooltip({ delayDuration, ...props }) {
|
|
1028
|
-
return /* @__PURE__ */
|
|
1144
|
+
return /* @__PURE__ */ jsx12(TooltipProvider, { delayDuration, children: /* @__PURE__ */ jsx12(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
|
|
1029
1145
|
}
|
|
1030
1146
|
Tooltip.displayName = "Tooltip";
|
|
1031
|
-
var TooltipTrigger =
|
|
1032
|
-
return /* @__PURE__ */
|
|
1147
|
+
var TooltipTrigger = React11.forwardRef(({ ...props }, ref) => {
|
|
1148
|
+
return /* @__PURE__ */ jsx12(
|
|
1033
1149
|
TooltipPrimitive.Trigger,
|
|
1034
1150
|
{
|
|
1035
1151
|
ref,
|
|
@@ -1039,8 +1155,8 @@ var TooltipTrigger = React9.forwardRef(({ ...props }, ref) => {
|
|
|
1039
1155
|
);
|
|
1040
1156
|
});
|
|
1041
1157
|
TooltipTrigger.displayName = "TooltipTrigger";
|
|
1042
|
-
var TooltipContent =
|
|
1043
|
-
return /* @__PURE__ */
|
|
1158
|
+
var TooltipContent = React11.forwardRef(({ className, sideOffset = 2, children, ...props }, ref) => {
|
|
1159
|
+
return /* @__PURE__ */ jsx12(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs5(
|
|
1044
1160
|
TooltipPrimitive.Content,
|
|
1045
1161
|
{
|
|
1046
1162
|
ref,
|
|
@@ -1052,7 +1168,7 @@ var TooltipContent = React9.forwardRef(({ className, sideOffset = 2, children, .
|
|
|
1052
1168
|
),
|
|
1053
1169
|
...props,
|
|
1054
1170
|
children: [
|
|
1055
|
-
/* @__PURE__ */
|
|
1171
|
+
/* @__PURE__ */ jsx12(TooltipPrimitive.Arrow, { className: "fill-dark", width: 10, height: 9 }),
|
|
1056
1172
|
children
|
|
1057
1173
|
]
|
|
1058
1174
|
}
|
|
@@ -1061,21 +1177,21 @@ var TooltipContent = React9.forwardRef(({ className, sideOffset = 2, children, .
|
|
|
1061
1177
|
TooltipContent.displayName = "TooltipContent";
|
|
1062
1178
|
|
|
1063
1179
|
// src/components/ui/sidebar.tsx
|
|
1064
|
-
import * as
|
|
1065
|
-
import { jsx as
|
|
1180
|
+
import * as React12 from "react";
|
|
1181
|
+
import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1066
1182
|
var SIDEBAR_CONSTANTS = {
|
|
1067
1183
|
WIDTH: "144px",
|
|
1068
1184
|
WIDTH_ICON: "48px"
|
|
1069
1185
|
};
|
|
1070
|
-
var SidebarContext =
|
|
1186
|
+
var SidebarContext = React12.createContext(null);
|
|
1071
1187
|
function useSidebar() {
|
|
1072
|
-
const context =
|
|
1188
|
+
const context = React12.useContext(SidebarContext);
|
|
1073
1189
|
if (!context) {
|
|
1074
1190
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
1075
1191
|
}
|
|
1076
1192
|
return context;
|
|
1077
1193
|
}
|
|
1078
|
-
var SidebarProvider =
|
|
1194
|
+
var SidebarProvider = React12.forwardRef(
|
|
1079
1195
|
({
|
|
1080
1196
|
defaultOpen = true,
|
|
1081
1197
|
open: openProp,
|
|
@@ -1085,9 +1201,9 @@ var SidebarProvider = React10.forwardRef(
|
|
|
1085
1201
|
children,
|
|
1086
1202
|
...props
|
|
1087
1203
|
}, ref) => {
|
|
1088
|
-
const [_open, _setOpen] =
|
|
1204
|
+
const [_open, _setOpen] = React12.useState(defaultOpen);
|
|
1089
1205
|
const open = openProp ?? _open;
|
|
1090
|
-
const setOpen =
|
|
1206
|
+
const setOpen = React12.useCallback(
|
|
1091
1207
|
(value) => {
|
|
1092
1208
|
const openState = typeof value === "function" ? value(open) : value;
|
|
1093
1209
|
if (setOpenProp) {
|
|
@@ -1098,11 +1214,11 @@ var SidebarProvider = React10.forwardRef(
|
|
|
1098
1214
|
},
|
|
1099
1215
|
[setOpenProp, open]
|
|
1100
1216
|
);
|
|
1101
|
-
const toggleSidebar =
|
|
1217
|
+
const toggleSidebar = React12.useCallback(() => {
|
|
1102
1218
|
return setOpen((open2) => !open2);
|
|
1103
1219
|
}, [setOpen]);
|
|
1104
1220
|
const state = open ? "expanded" : "collapsed";
|
|
1105
|
-
const contextValue =
|
|
1221
|
+
const contextValue = React12.useMemo(
|
|
1106
1222
|
() => ({
|
|
1107
1223
|
state,
|
|
1108
1224
|
open,
|
|
@@ -1111,7 +1227,7 @@ var SidebarProvider = React10.forwardRef(
|
|
|
1111
1227
|
}),
|
|
1112
1228
|
[state, open, setOpen, toggleSidebar]
|
|
1113
1229
|
);
|
|
1114
|
-
return /* @__PURE__ */
|
|
1230
|
+
return /* @__PURE__ */ jsx13(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx13(
|
|
1115
1231
|
"div",
|
|
1116
1232
|
{
|
|
1117
1233
|
style: {
|
|
@@ -1131,7 +1247,7 @@ var SidebarProvider = React10.forwardRef(
|
|
|
1131
1247
|
}
|
|
1132
1248
|
);
|
|
1133
1249
|
SidebarProvider.displayName = "SidebarProvider";
|
|
1134
|
-
var Sidebar =
|
|
1250
|
+
var Sidebar = React12.forwardRef(
|
|
1135
1251
|
({ collapsible = "icon", className, children, ...props }, ref) => {
|
|
1136
1252
|
const { state } = useSidebar();
|
|
1137
1253
|
return /* @__PURE__ */ jsxs6(
|
|
@@ -1145,7 +1261,7 @@ var Sidebar = React10.forwardRef(
|
|
|
1145
1261
|
"aria-expanded": state === "expanded",
|
|
1146
1262
|
role: "navigation",
|
|
1147
1263
|
children: [
|
|
1148
|
-
/* @__PURE__ */
|
|
1264
|
+
/* @__PURE__ */ jsx13(
|
|
1149
1265
|
"div",
|
|
1150
1266
|
{
|
|
1151
1267
|
className: cn(
|
|
@@ -1154,7 +1270,7 @@ var Sidebar = React10.forwardRef(
|
|
|
1154
1270
|
)
|
|
1155
1271
|
}
|
|
1156
1272
|
),
|
|
1157
|
-
/* @__PURE__ */
|
|
1273
|
+
/* @__PURE__ */ jsx13(
|
|
1158
1274
|
"div",
|
|
1159
1275
|
{
|
|
1160
1276
|
className: cn(
|
|
@@ -1163,7 +1279,7 @@ var Sidebar = React10.forwardRef(
|
|
|
1163
1279
|
className
|
|
1164
1280
|
),
|
|
1165
1281
|
...props,
|
|
1166
|
-
children: /* @__PURE__ */
|
|
1282
|
+
children: /* @__PURE__ */ jsx13(
|
|
1167
1283
|
"div",
|
|
1168
1284
|
{
|
|
1169
1285
|
"data-sidebar": "sidebar",
|
|
@@ -1179,9 +1295,9 @@ var Sidebar = React10.forwardRef(
|
|
|
1179
1295
|
}
|
|
1180
1296
|
);
|
|
1181
1297
|
Sidebar.displayName = "Sidebar";
|
|
1182
|
-
var SidebarInset =
|
|
1298
|
+
var SidebarInset = React12.forwardRef(
|
|
1183
1299
|
({ className, ...props }, ref) => {
|
|
1184
|
-
return /* @__PURE__ */
|
|
1300
|
+
return /* @__PURE__ */ jsx13(
|
|
1185
1301
|
"main",
|
|
1186
1302
|
{
|
|
1187
1303
|
ref,
|
|
@@ -1195,9 +1311,9 @@ var SidebarInset = React10.forwardRef(
|
|
|
1195
1311
|
}
|
|
1196
1312
|
);
|
|
1197
1313
|
SidebarInset.displayName = "SidebarInset";
|
|
1198
|
-
var SidebarHeader =
|
|
1314
|
+
var SidebarHeader = React12.forwardRef(
|
|
1199
1315
|
({ className, ...props }, ref) => {
|
|
1200
|
-
return /* @__PURE__ */
|
|
1316
|
+
return /* @__PURE__ */ jsx13(
|
|
1201
1317
|
"div",
|
|
1202
1318
|
{
|
|
1203
1319
|
ref,
|
|
@@ -1213,9 +1329,9 @@ var SidebarHeader = React10.forwardRef(
|
|
|
1213
1329
|
}
|
|
1214
1330
|
);
|
|
1215
1331
|
SidebarHeader.displayName = "SidebarHeader";
|
|
1216
|
-
var SidebarFooter =
|
|
1332
|
+
var SidebarFooter = React12.forwardRef(
|
|
1217
1333
|
({ className, ...props }, ref) => {
|
|
1218
|
-
return /* @__PURE__ */
|
|
1334
|
+
return /* @__PURE__ */ jsx13(
|
|
1219
1335
|
"div",
|
|
1220
1336
|
{
|
|
1221
1337
|
ref,
|
|
@@ -1227,9 +1343,9 @@ var SidebarFooter = React10.forwardRef(
|
|
|
1227
1343
|
}
|
|
1228
1344
|
);
|
|
1229
1345
|
SidebarFooter.displayName = "SidebarFooter";
|
|
1230
|
-
var SidebarContent =
|
|
1346
|
+
var SidebarContent = React12.forwardRef(
|
|
1231
1347
|
({ className, ...props }, ref) => {
|
|
1232
|
-
return /* @__PURE__ */
|
|
1348
|
+
return /* @__PURE__ */ jsx13(
|
|
1233
1349
|
"div",
|
|
1234
1350
|
{
|
|
1235
1351
|
ref,
|
|
@@ -1244,9 +1360,9 @@ var SidebarContent = React10.forwardRef(
|
|
|
1244
1360
|
}
|
|
1245
1361
|
);
|
|
1246
1362
|
SidebarContent.displayName = "SidebarContent";
|
|
1247
|
-
var SidebarGroup =
|
|
1363
|
+
var SidebarGroup = React12.forwardRef(
|
|
1248
1364
|
({ className, ...props }, ref) => {
|
|
1249
|
-
return /* @__PURE__ */
|
|
1365
|
+
return /* @__PURE__ */ jsx13(
|
|
1250
1366
|
"div",
|
|
1251
1367
|
{
|
|
1252
1368
|
ref,
|
|
@@ -1258,7 +1374,7 @@ var SidebarGroup = React10.forwardRef(
|
|
|
1258
1374
|
}
|
|
1259
1375
|
);
|
|
1260
1376
|
SidebarGroup.displayName = "SidebarGroup";
|
|
1261
|
-
var SidebarGroupContent =
|
|
1377
|
+
var SidebarGroupContent = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
1262
1378
|
"div",
|
|
1263
1379
|
{
|
|
1264
1380
|
ref,
|
|
@@ -1268,8 +1384,8 @@ var SidebarGroupContent = React10.forwardRef(({ className, ...props }, ref) => /
|
|
|
1268
1384
|
}
|
|
1269
1385
|
));
|
|
1270
1386
|
SidebarGroupContent.displayName = "SidebarGroupContent";
|
|
1271
|
-
var SidebarMenu =
|
|
1272
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
1387
|
+
var SidebarMenu = React12.forwardRef(
|
|
1388
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
1273
1389
|
"ul",
|
|
1274
1390
|
{
|
|
1275
1391
|
ref,
|
|
@@ -1280,8 +1396,8 @@ var SidebarMenu = React10.forwardRef(
|
|
|
1280
1396
|
)
|
|
1281
1397
|
);
|
|
1282
1398
|
SidebarMenu.displayName = "SidebarMenu";
|
|
1283
|
-
var SidebarMenuItem =
|
|
1284
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
1399
|
+
var SidebarMenuItem = React12.forwardRef(
|
|
1400
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
1285
1401
|
"li",
|
|
1286
1402
|
{
|
|
1287
1403
|
ref,
|
|
@@ -1292,9 +1408,9 @@ var SidebarMenuItem = React10.forwardRef(
|
|
|
1292
1408
|
)
|
|
1293
1409
|
);
|
|
1294
1410
|
SidebarMenuItem.displayName = "SidebarMenuItem";
|
|
1295
|
-
var SidebarMenuButton =
|
|
1411
|
+
var SidebarMenuButton = React12.forwardRef(({ isActive = false, tooltip, className, children, ...props }, ref) => {
|
|
1296
1412
|
const { state } = useSidebar();
|
|
1297
|
-
const button = /* @__PURE__ */
|
|
1413
|
+
const button = /* @__PURE__ */ jsx13(
|
|
1298
1414
|
"button",
|
|
1299
1415
|
{
|
|
1300
1416
|
ref,
|
|
@@ -1314,21 +1430,21 @@ var SidebarMenuButton = React10.forwardRef(({ isActive = false, tooltip, classNa
|
|
|
1314
1430
|
}
|
|
1315
1431
|
const tooltipProps = typeof tooltip === "string" ? { children: tooltip } : tooltip;
|
|
1316
1432
|
return /* @__PURE__ */ jsxs6(Tooltip, { delayDuration: 0, children: [
|
|
1317
|
-
/* @__PURE__ */
|
|
1318
|
-
/* @__PURE__ */
|
|
1433
|
+
/* @__PURE__ */ jsx13(TooltipTrigger, { asChild: true, children: button }),
|
|
1434
|
+
/* @__PURE__ */ jsx13(TooltipContent, { side: "right", align: "center", ...tooltipProps })
|
|
1319
1435
|
] });
|
|
1320
1436
|
});
|
|
1321
1437
|
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
1322
1438
|
|
|
1323
1439
|
// src/components/ui/date-picker.tsx
|
|
1324
|
-
import * as
|
|
1440
|
+
import * as React14 from "react";
|
|
1325
1441
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
1326
1442
|
|
|
1327
1443
|
// src/components/ui/input.tsx
|
|
1328
|
-
import * as
|
|
1329
|
-
import { jsx as
|
|
1444
|
+
import * as React13 from "react";
|
|
1445
|
+
import { jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1330
1446
|
var inputBaseStyles = "flex h-10 py-2 w-full border bg-light text-dark focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 transition-colors rounded-md px-3 min-w-80 placeholder:text-secondary read-only:bg-gray read-only:cursor-default read-only:border-transparent read-only:text-secondary read-only:focus-visible:border-transparent border-secondary focus-visible:border-2 focus-visible:border-strong disabled:border-secondary aria-invalid:border-error aria-invalid:focus-visible:border-error";
|
|
1331
|
-
var Input =
|
|
1447
|
+
var Input = React13.forwardRef(
|
|
1332
1448
|
({
|
|
1333
1449
|
className,
|
|
1334
1450
|
style,
|
|
@@ -1339,7 +1455,7 @@ var Input = React11.forwardRef(
|
|
|
1339
1455
|
readOnly,
|
|
1340
1456
|
...props
|
|
1341
1457
|
}, ref) => {
|
|
1342
|
-
const [internalValue, setInternalValue] =
|
|
1458
|
+
const [internalValue, setInternalValue] = React13.useState(value || "");
|
|
1343
1459
|
const isControlled = value !== void 0;
|
|
1344
1460
|
const currentValue = isControlled ? value : internalValue;
|
|
1345
1461
|
const showClear = showClearProp !== false && currentValue && currentValue.toString().length > 0 && !readOnly;
|
|
@@ -1370,7 +1486,7 @@ var Input = React11.forwardRef(
|
|
|
1370
1486
|
onClear?.();
|
|
1371
1487
|
};
|
|
1372
1488
|
return /* @__PURE__ */ jsxs7("div", { className: "relative", children: [
|
|
1373
|
-
/* @__PURE__ */
|
|
1489
|
+
/* @__PURE__ */ jsx14(
|
|
1374
1490
|
"input",
|
|
1375
1491
|
{
|
|
1376
1492
|
className: cn(
|
|
@@ -1386,23 +1502,23 @@ var Input = React11.forwardRef(
|
|
|
1386
1502
|
...props
|
|
1387
1503
|
}
|
|
1388
1504
|
),
|
|
1389
|
-
showClear && /* @__PURE__ */
|
|
1505
|
+
showClear && /* @__PURE__ */ jsx14(
|
|
1390
1506
|
"button",
|
|
1391
1507
|
{
|
|
1392
1508
|
type: "button",
|
|
1393
1509
|
onClick: handleClear,
|
|
1394
1510
|
className: "absolute right-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-secondary hover:text-dark transition-colors",
|
|
1395
|
-
children: /* @__PURE__ */
|
|
1511
|
+
children: /* @__PURE__ */ jsx14(CloseIcon, {})
|
|
1396
1512
|
}
|
|
1397
1513
|
),
|
|
1398
|
-
showLock && /* @__PURE__ */
|
|
1514
|
+
showLock && /* @__PURE__ */ jsx14(LockIcon, { className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-secondary" })
|
|
1399
1515
|
] });
|
|
1400
1516
|
}
|
|
1401
1517
|
);
|
|
1402
1518
|
Input.displayName = "Input";
|
|
1403
1519
|
|
|
1404
1520
|
// src/components/ui/date-picker.tsx
|
|
1405
|
-
import { jsx as
|
|
1521
|
+
import { jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1406
1522
|
var getDayNames = () => {
|
|
1407
1523
|
const days = [];
|
|
1408
1524
|
for (let i = 0; i < 7; i++) {
|
|
@@ -1438,7 +1554,7 @@ var formatDateInput = (date) => {
|
|
|
1438
1554
|
day: "2-digit"
|
|
1439
1555
|
});
|
|
1440
1556
|
};
|
|
1441
|
-
var DatePicker =
|
|
1557
|
+
var DatePicker = React14.forwardRef(
|
|
1442
1558
|
({
|
|
1443
1559
|
value,
|
|
1444
1560
|
onValueChange,
|
|
@@ -1457,19 +1573,19 @@ var DatePicker = React12.forwardRef(
|
|
|
1457
1573
|
if (isNaN(parsed.getTime())) return void 0;
|
|
1458
1574
|
return parsed;
|
|
1459
1575
|
};
|
|
1460
|
-
const [selectedDate, setSelectedDate] =
|
|
1576
|
+
const [selectedDate, setSelectedDate] = React14.useState(
|
|
1461
1577
|
value || parseDate(defaultValue)
|
|
1462
1578
|
);
|
|
1463
|
-
const [currentMonth, setCurrentMonth] =
|
|
1579
|
+
const [currentMonth, setCurrentMonth] = React14.useState(() => {
|
|
1464
1580
|
const date = value || parseDate(defaultValue) || /* @__PURE__ */ new Date();
|
|
1465
1581
|
return new Date(date.getFullYear(), date.getMonth());
|
|
1466
1582
|
});
|
|
1467
|
-
const [open, setOpen] =
|
|
1468
|
-
const [inputValue, setInputValue] =
|
|
1583
|
+
const [open, setOpen] = React14.useState(false);
|
|
1584
|
+
const [inputValue, setInputValue] = React14.useState(() => {
|
|
1469
1585
|
const initialDate = value || parseDate(defaultValue);
|
|
1470
1586
|
return initialDate ? formatDateInput(initialDate) : "";
|
|
1471
1587
|
});
|
|
1472
|
-
|
|
1588
|
+
React14.useEffect(() => {
|
|
1473
1589
|
setSelectedDate(value);
|
|
1474
1590
|
if (value) {
|
|
1475
1591
|
setCurrentMonth(new Date(value.getFullYear(), value.getMonth()));
|
|
@@ -1480,7 +1596,7 @@ var DatePicker = React12.forwardRef(
|
|
|
1480
1596
|
setInputValue("");
|
|
1481
1597
|
}
|
|
1482
1598
|
}, [value]);
|
|
1483
|
-
|
|
1599
|
+
React14.useEffect(() => {
|
|
1484
1600
|
if (value) return;
|
|
1485
1601
|
const parsedDefault = parseDate(defaultValue);
|
|
1486
1602
|
if (!parsedDefault) return;
|
|
@@ -1610,7 +1726,7 @@ var DatePicker = React12.forwardRef(
|
|
|
1610
1726
|
onOpenChange: disabled ? void 0 : setOpen,
|
|
1611
1727
|
children: [
|
|
1612
1728
|
/* @__PURE__ */ jsxs8("div", { className: "relative", children: [
|
|
1613
|
-
/* @__PURE__ */
|
|
1729
|
+
/* @__PURE__ */ jsx15(
|
|
1614
1730
|
Input,
|
|
1615
1731
|
{
|
|
1616
1732
|
ref,
|
|
@@ -1623,7 +1739,7 @@ var DatePicker = React12.forwardRef(
|
|
|
1623
1739
|
...props
|
|
1624
1740
|
}
|
|
1625
1741
|
),
|
|
1626
|
-
/* @__PURE__ */
|
|
1742
|
+
/* @__PURE__ */ jsx15(PopoverPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ jsx15("button", { className: "absolute right-3 top-1/2 transform -translate-y-1/2 hover:bg-gray rounded p-0.5 transition-colors", children: /* @__PURE__ */ jsx15(
|
|
1627
1743
|
CalendarIcon,
|
|
1628
1744
|
{
|
|
1629
1745
|
size: 20,
|
|
@@ -1634,7 +1750,7 @@ var DatePicker = React12.forwardRef(
|
|
|
1634
1750
|
}
|
|
1635
1751
|
) }) })
|
|
1636
1752
|
] }),
|
|
1637
|
-
/* @__PURE__ */
|
|
1753
|
+
/* @__PURE__ */ jsx15(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx15(
|
|
1638
1754
|
PopoverPrimitive.Content,
|
|
1639
1755
|
{
|
|
1640
1756
|
className: "z-50 w-80 rounded-lg border border-secondary bg-light text-dark shadow-lg animate-in fade-in-0 zoom-in-95 duration-200",
|
|
@@ -1645,12 +1761,12 @@ var DatePicker = React12.forwardRef(
|
|
|
1645
1761
|
sticky: "always",
|
|
1646
1762
|
children: /* @__PURE__ */ jsxs8("div", { className: "p-4", children: [
|
|
1647
1763
|
/* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between mb-4 gap-1", children: [
|
|
1648
|
-
/* @__PURE__ */
|
|
1764
|
+
/* @__PURE__ */ jsx15(
|
|
1649
1765
|
"button",
|
|
1650
1766
|
{
|
|
1651
1767
|
onClick: () => handleMonthChange("prev"),
|
|
1652
1768
|
className: "p-1 hover:bg-gray rounded transition-colors flex-shrink-0",
|
|
1653
|
-
children: /* @__PURE__ */
|
|
1769
|
+
children: /* @__PURE__ */ jsx15(ArrowLeftIcon, {})
|
|
1654
1770
|
}
|
|
1655
1771
|
),
|
|
1656
1772
|
/* @__PURE__ */ jsxs8("div", { className: "flex gap-1 flex-1 min-w-0", children: [
|
|
@@ -1660,8 +1776,8 @@ var DatePicker = React12.forwardRef(
|
|
|
1660
1776
|
value: currentMonth.getMonth().toString(),
|
|
1661
1777
|
onValueChange: handleMonthSelect,
|
|
1662
1778
|
children: [
|
|
1663
|
-
/* @__PURE__ */
|
|
1664
|
-
/* @__PURE__ */
|
|
1779
|
+
/* @__PURE__ */ jsx15(SelectTrigger, { className: "min-w-fit h-8 text-sm", children: /* @__PURE__ */ jsx15(SelectValue, {}) }),
|
|
1780
|
+
/* @__PURE__ */ jsx15(SelectContent, { children: months.map((month, index) => /* @__PURE__ */ jsx15(SelectItem, { value: index.toString(), children: month }, month)) })
|
|
1665
1781
|
]
|
|
1666
1782
|
}
|
|
1667
1783
|
),
|
|
@@ -1671,23 +1787,23 @@ var DatePicker = React12.forwardRef(
|
|
|
1671
1787
|
value: currentMonth.getFullYear().toString(),
|
|
1672
1788
|
onValueChange: handleYearSelect,
|
|
1673
1789
|
children: [
|
|
1674
|
-
/* @__PURE__ */
|
|
1675
|
-
/* @__PURE__ */
|
|
1790
|
+
/* @__PURE__ */ jsx15(SelectTrigger, { className: "min-w-fit h-8 text-sm", children: /* @__PURE__ */ jsx15(SelectValue, {}) }),
|
|
1791
|
+
/* @__PURE__ */ jsx15(SelectContent, { children: years.map((year) => /* @__PURE__ */ jsx15(SelectItem, { value: year.toString(), children: year }, year)) })
|
|
1676
1792
|
]
|
|
1677
1793
|
}
|
|
1678
1794
|
)
|
|
1679
1795
|
] }),
|
|
1680
|
-
/* @__PURE__ */
|
|
1796
|
+
/* @__PURE__ */ jsx15(
|
|
1681
1797
|
"button",
|
|
1682
1798
|
{
|
|
1683
1799
|
onClick: () => handleMonthChange("next"),
|
|
1684
1800
|
className: "p-1 hover:bg-gray rounded transition-colors flex-shrink-0",
|
|
1685
|
-
children: /* @__PURE__ */
|
|
1801
|
+
children: /* @__PURE__ */ jsx15(ArrowRightIcon, {})
|
|
1686
1802
|
}
|
|
1687
1803
|
)
|
|
1688
1804
|
] }),
|
|
1689
1805
|
/* @__PURE__ */ jsxs8("div", { className: "space-y-1", children: [
|
|
1690
|
-
/* @__PURE__ */
|
|
1806
|
+
/* @__PURE__ */ jsx15("div", { className: "grid grid-cols-7 gap-1 mb-2", children: dayNames.map((day) => /* @__PURE__ */ jsx15(
|
|
1691
1807
|
Typography,
|
|
1692
1808
|
{
|
|
1693
1809
|
variant: "label-xs-bold",
|
|
@@ -1697,11 +1813,11 @@ var DatePicker = React12.forwardRef(
|
|
|
1697
1813
|
},
|
|
1698
1814
|
day
|
|
1699
1815
|
)) }),
|
|
1700
|
-
/* @__PURE__ */
|
|
1816
|
+
/* @__PURE__ */ jsx15("div", { className: "grid grid-cols-7 gap-1", children: days.map((date, index) => /* @__PURE__ */ jsx15(
|
|
1701
1817
|
"div",
|
|
1702
1818
|
{
|
|
1703
1819
|
className: "h-8 w-8 flex items-center justify-center",
|
|
1704
|
-
children: date && /* @__PURE__ */
|
|
1820
|
+
children: date && /* @__PURE__ */ jsx15(
|
|
1705
1821
|
"button",
|
|
1706
1822
|
{
|
|
1707
1823
|
onClick: () => handleDateSelect(date),
|
|
@@ -1715,7 +1831,7 @@ var DatePicker = React12.forwardRef(
|
|
|
1715
1831
|
isToday(date) && !isDateSelected(date) && !isDateDisabled(date) && "text-blue-600 after:content-[''] after:absolute after:bottom-1 after:left-1/2 after:-translate-x-1/2 after:w-1 after:h-1 after:bg-blue-600 after:rounded-full",
|
|
1716
1832
|
isDateDisabled(date) && "text-secondary/40 cursor-not-allowed opacity-50"
|
|
1717
1833
|
),
|
|
1718
|
-
children: /* @__PURE__ */
|
|
1834
|
+
children: /* @__PURE__ */ jsx15(Typography, { variant: "label-sm", as: "span", children: date.getDate() })
|
|
1719
1835
|
}
|
|
1720
1836
|
)
|
|
1721
1837
|
},
|
|
@@ -1733,9 +1849,9 @@ var DatePicker = React12.forwardRef(
|
|
|
1733
1849
|
DatePicker.displayName = "DatePicker";
|
|
1734
1850
|
|
|
1735
1851
|
// src/components/ui/upload.tsx
|
|
1736
|
-
import * as
|
|
1852
|
+
import * as React15 from "react";
|
|
1737
1853
|
import { cva as cva7 } from "class-variance-authority";
|
|
1738
|
-
import { jsx as
|
|
1854
|
+
import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1739
1855
|
var DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
1740
1856
|
var uploadVariants = cva7(
|
|
1741
1857
|
"relative flex flex-col items-center justify-center rounded-lg transition-all duration-200 ease-in-out overflow-hidden",
|
|
@@ -1759,7 +1875,7 @@ var uploadVariants = cva7(
|
|
|
1759
1875
|
}
|
|
1760
1876
|
}
|
|
1761
1877
|
);
|
|
1762
|
-
var Upload =
|
|
1878
|
+
var Upload = React15.forwardRef(
|
|
1763
1879
|
({
|
|
1764
1880
|
className,
|
|
1765
1881
|
onFileSelect,
|
|
@@ -1772,8 +1888,8 @@ var Upload = React13.forwardRef(
|
|
|
1772
1888
|
selectedFiles = [],
|
|
1773
1889
|
...props
|
|
1774
1890
|
}, ref) => {
|
|
1775
|
-
const fileInputRef =
|
|
1776
|
-
const [isDragOver, setIsDragOver] =
|
|
1891
|
+
const fileInputRef = React15.useRef(null);
|
|
1892
|
+
const [isDragOver, setIsDragOver] = React15.useState(false);
|
|
1777
1893
|
const getFileTypeDisplay = () => {
|
|
1778
1894
|
const typeMap = {
|
|
1779
1895
|
"application/pdf": "PDF",
|
|
@@ -1844,10 +1960,10 @@ var Upload = React13.forwardRef(
|
|
|
1844
1960
|
style: { gap: "32px" },
|
|
1845
1961
|
children: [
|
|
1846
1962
|
/* @__PURE__ */ jsxs9("div", { className: "space-y-4", children: [
|
|
1847
|
-
/* @__PURE__ */
|
|
1848
|
-
/* @__PURE__ */
|
|
1963
|
+
/* @__PURE__ */ jsx16(Typography, { variant: "heading-lg", children: "Upload fail" }),
|
|
1964
|
+
/* @__PURE__ */ jsx16(Typography, { variant: "body-md", className: "text-error", children: errorMessage })
|
|
1849
1965
|
] }),
|
|
1850
|
-
/* @__PURE__ */
|
|
1966
|
+
/* @__PURE__ */ jsx16(
|
|
1851
1967
|
Button,
|
|
1852
1968
|
{
|
|
1853
1969
|
variant: "destructive",
|
|
@@ -1867,9 +1983,9 @@ var Upload = React13.forwardRef(
|
|
|
1867
1983
|
className: "flex flex-col items-center text-center max-w-[289px]",
|
|
1868
1984
|
style: { gap: "32px" },
|
|
1869
1985
|
children: [
|
|
1870
|
-
/* @__PURE__ */
|
|
1986
|
+
/* @__PURE__ */ jsx16(Typography, { variant: "heading-lg", className: "text-dark", children: "Uploading files" }),
|
|
1871
1987
|
/* @__PURE__ */ jsxs9("div", { className: "w-full max-w-[720px] space-y-2", children: [
|
|
1872
|
-
/* @__PURE__ */
|
|
1988
|
+
/* @__PURE__ */ jsx16("div", { className: "w-full bg-gray rounded-full h-2", children: /* @__PURE__ */ jsx16(
|
|
1873
1989
|
"div",
|
|
1874
1990
|
{
|
|
1875
1991
|
className: "bg-canvas-primary h-2 rounded-full transition-all duration-300 ease-in-out",
|
|
@@ -1892,14 +2008,14 @@ var Upload = React13.forwardRef(
|
|
|
1892
2008
|
}
|
|
1893
2009
|
);
|
|
1894
2010
|
case "success":
|
|
1895
|
-
return /* @__PURE__ */
|
|
2011
|
+
return /* @__PURE__ */ jsx16(
|
|
1896
2012
|
"div",
|
|
1897
2013
|
{
|
|
1898
2014
|
className: "flex flex-col items-center text-center max-w-[289px]",
|
|
1899
2015
|
style: { gap: "32px" },
|
|
1900
2016
|
children: /* @__PURE__ */ jsxs9("div", { className: "space-y-4", children: [
|
|
1901
|
-
/* @__PURE__ */
|
|
1902
|
-
selectedFiles.length > 0 && /* @__PURE__ */
|
|
2017
|
+
/* @__PURE__ */ jsx16(Typography, { variant: "heading-lg", className: "text-success", children: "Upload successful!" }),
|
|
2018
|
+
selectedFiles.length > 0 && /* @__PURE__ */ jsx16("div", { className: "text-center", children: selectedFiles.map((file, index) => /* @__PURE__ */ jsx16(Typography, { variant: "body-sm", children: file.name }, index)) })
|
|
1903
2019
|
] })
|
|
1904
2020
|
}
|
|
1905
2021
|
);
|
|
@@ -1911,10 +2027,10 @@ var Upload = React13.forwardRef(
|
|
|
1911
2027
|
style: { gap: "32px" },
|
|
1912
2028
|
children: [
|
|
1913
2029
|
/* @__PURE__ */ jsxs9("div", { className: "space-y-4", children: [
|
|
1914
|
-
/* @__PURE__ */
|
|
1915
|
-
/* @__PURE__ */
|
|
2030
|
+
/* @__PURE__ */ jsx16(Typography, { variant: "heading-lg", className: "text-dark", children: "Drag & drop files here" }),
|
|
2031
|
+
/* @__PURE__ */ jsx16(Typography, { variant: "body-md", className: "text-secondary", children: "or click to browse from your computer" })
|
|
1916
2032
|
] }),
|
|
1917
|
-
/* @__PURE__ */
|
|
2033
|
+
/* @__PURE__ */ jsx16(
|
|
1918
2034
|
Button,
|
|
1919
2035
|
{
|
|
1920
2036
|
variant: "default",
|
|
@@ -1931,7 +2047,7 @@ var Upload = React13.forwardRef(
|
|
|
1931
2047
|
/* @__PURE__ */ jsxs9(Typography, { variant: "body-sm", className: "text-secondary", children: [
|
|
1932
2048
|
"Supported file: ",
|
|
1933
2049
|
getFileTypeDisplay(),
|
|
1934
|
-
/* @__PURE__ */
|
|
2050
|
+
/* @__PURE__ */ jsx16("br", {}),
|
|
1935
2051
|
"Max: ",
|
|
1936
2052
|
Math.round(maxFileSize / 1024 / 1024),
|
|
1937
2053
|
" MB each"
|
|
@@ -1965,7 +2081,7 @@ var Upload = React13.forwardRef(
|
|
|
1965
2081
|
"aria-disabled": disabled,
|
|
1966
2082
|
...props,
|
|
1967
2083
|
children: [
|
|
1968
|
-
/* @__PURE__ */
|
|
2084
|
+
/* @__PURE__ */ jsx16(
|
|
1969
2085
|
"input",
|
|
1970
2086
|
{
|
|
1971
2087
|
ref: fileInputRef,
|
|
@@ -1985,29 +2101,75 @@ var Upload = React13.forwardRef(
|
|
|
1985
2101
|
Upload.displayName = "Upload";
|
|
1986
2102
|
|
|
1987
2103
|
// src/components/ui/checkbox.tsx
|
|
1988
|
-
import * as
|
|
1989
|
-
import
|
|
2104
|
+
import * as React16 from "react";
|
|
2105
|
+
import { Checkbox as CheckboxPrimitive } from "@base-ui/react/checkbox";
|
|
1990
2106
|
import { cva as cva8 } from "class-variance-authority";
|
|
1991
|
-
import { jsx as
|
|
1992
|
-
var checkboxVariants = cva8(
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2107
|
+
import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
2108
|
+
var checkboxVariants = cva8([
|
|
2109
|
+
// Base layout & appearance
|
|
2110
|
+
"peer group relative size-4 shrink-0",
|
|
2111
|
+
"rounded-xs border border-default surface-default shadow-xs",
|
|
2112
|
+
// Transitions & hover
|
|
2113
|
+
"transition-colors hover:brightness-[90%]",
|
|
2114
|
+
// Focus
|
|
2115
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-default",
|
|
2116
|
+
// Disabled
|
|
2117
|
+
"data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50",
|
|
2118
|
+
// Checked
|
|
2119
|
+
"data-[checked]:border-0 data-[checked]:focus-visible:border-0",
|
|
2120
|
+
"data-[checked]:interactive-accent data-[checked]:interactive-accent-fg",
|
|
2121
|
+
// Indeterminate
|
|
2122
|
+
"data-[indeterminate]:border-0 data-[indeterminate]:focus-visible:border-0",
|
|
2123
|
+
"data-[indeterminate]:interactive-accent data-[indeterminate]:interactive-accent-fg",
|
|
2124
|
+
// Error (aria-invalid) — only applies to unchecked/checked states.
|
|
2125
|
+
// Indeterminate has no error state per design.
|
|
2126
|
+
"aria-invalid:border-error",
|
|
2127
|
+
"aria-invalid:data-[checked]:border-0 aria-invalid:data-[checked]:interactive-destructive aria-invalid:data-[checked]:interactive-destructive-fg",
|
|
2128
|
+
"aria-invalid:focus-visible:ring-3 aria-invalid:focus-visible:ring-focus-error",
|
|
2129
|
+
// SVG children
|
|
2130
|
+
"[&_svg]:pointer-events-none [&_svg]:shrink-0"
|
|
2131
|
+
]);
|
|
2132
|
+
var Checkbox = React16.forwardRef(({ className, ...props }, ref) => {
|
|
2133
|
+
return /* @__PURE__ */ jsx17(
|
|
2134
|
+
CheckboxPrimitive.Root,
|
|
2135
|
+
{
|
|
2136
|
+
"data-slot": "checkbox",
|
|
2137
|
+
ref,
|
|
2138
|
+
className: cn(checkboxVariants(), className),
|
|
2139
|
+
...props,
|
|
2140
|
+
children: /* @__PURE__ */ jsxs10(
|
|
2141
|
+
CheckboxPrimitive.Indicator,
|
|
2142
|
+
{
|
|
2143
|
+
"data-slot": "checkbox-indicator",
|
|
2144
|
+
className: "absolute inset-0 flex items-center justify-center text-current",
|
|
2145
|
+
children: [
|
|
2146
|
+
/* @__PURE__ */ jsx17(
|
|
2147
|
+
CheckmarkIcon,
|
|
2148
|
+
{
|
|
2149
|
+
size: 14,
|
|
2150
|
+
className: "text-current hidden group-data-[checked]:block"
|
|
2151
|
+
}
|
|
2152
|
+
),
|
|
2153
|
+
/* @__PURE__ */ jsx17(
|
|
2154
|
+
MinusIcon,
|
|
2155
|
+
{
|
|
2156
|
+
size: 14,
|
|
2157
|
+
className: "text-current hidden group-data-[indeterminate]:block"
|
|
2158
|
+
}
|
|
2159
|
+
)
|
|
2160
|
+
]
|
|
2161
|
+
}
|
|
2162
|
+
)
|
|
2163
|
+
}
|
|
2164
|
+
);
|
|
2165
|
+
});
|
|
2166
|
+
Checkbox.displayName = "Checkbox";
|
|
2005
2167
|
|
|
2006
2168
|
// src/components/ui/switch.tsx
|
|
2007
|
-
import * as
|
|
2169
|
+
import * as React17 from "react";
|
|
2008
2170
|
import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
|
|
2009
2171
|
import { cva as cva9 } from "class-variance-authority";
|
|
2010
|
-
import { jsx as
|
|
2172
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
2011
2173
|
var switchVariants = cva9(
|
|
2012
2174
|
"peer inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 relative focus-visible:ring-3 focus-visible:ring-focus-default aria-invalid:border-error aria-invalid:ring-3 aria-invalid:ring-focus-error data-checked:interactive-accent data-unchecked:interactive-secondary data-unchecked:border-default data-disabled:cursor-not-allowed data-disabled:opacity-50",
|
|
2013
2175
|
{
|
|
@@ -2036,16 +2198,16 @@ var switchThumbVariants = cva9(
|
|
|
2036
2198
|
}
|
|
2037
2199
|
}
|
|
2038
2200
|
);
|
|
2039
|
-
var Switch =
|
|
2201
|
+
var Switch = React17.forwardRef(
|
|
2040
2202
|
({ className, size, ...props }, ref) => {
|
|
2041
|
-
return /* @__PURE__ */
|
|
2203
|
+
return /* @__PURE__ */ jsx18(
|
|
2042
2204
|
SwitchPrimitive.Root,
|
|
2043
2205
|
{
|
|
2044
2206
|
ref,
|
|
2045
2207
|
"data-slot": "switch",
|
|
2046
2208
|
className: cn(switchVariants({ size }), className),
|
|
2047
2209
|
...props,
|
|
2048
|
-
children: /* @__PURE__ */
|
|
2210
|
+
children: /* @__PURE__ */ jsx18(
|
|
2049
2211
|
SwitchPrimitive.Thumb,
|
|
2050
2212
|
{
|
|
2051
2213
|
"data-slot": "switch-thumb",
|
|
@@ -2059,22 +2221,18 @@ var Switch = React15.forwardRef(
|
|
|
2059
2221
|
Switch.displayName = "Switch";
|
|
2060
2222
|
|
|
2061
2223
|
// src/components/ui/textarea.tsx
|
|
2062
|
-
import * as
|
|
2063
|
-
import { jsx as
|
|
2064
|
-
var Textarea =
|
|
2224
|
+
import * as React18 from "react";
|
|
2225
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
2226
|
+
var Textarea = React18.forwardRef(
|
|
2065
2227
|
({ className, style, ...props }, ref) => {
|
|
2066
|
-
|
|
2067
|
-
font: "var(--typography-label-md-regular)",
|
|
2068
|
-
...style
|
|
2069
|
-
};
|
|
2070
|
-
return /* @__PURE__ */ jsx17(
|
|
2228
|
+
return /* @__PURE__ */ jsx19(
|
|
2071
2229
|
"textarea",
|
|
2072
2230
|
{
|
|
2073
2231
|
className: cn(
|
|
2074
|
-
"flex min-h-
|
|
2232
|
+
"type-body-sm-regular flex min-h-20 w-full rounded-md border surface-default text-default px-3 pt-3 pb-2 shadow-xs placeholder:text-secondary focus:outline-none disabled:cursor-not-allowed disabled:opacity-30 transition-colors resize-y border-secondary read-only:surface-muted read-only:cursor-default read-only:border-transparent read-only:text-secondary read-only:resize-none focus-visible:ring-2 focus-visible:ring-focus-default focus-visible:border-strong disabled:border-secondary aria-invalid:border-error aria-invalid:focus-visible:ring-3 aria-invalid:focus-visible:ring-focus-error",
|
|
2075
2233
|
className
|
|
2076
2234
|
),
|
|
2077
|
-
style
|
|
2235
|
+
style,
|
|
2078
2236
|
ref,
|
|
2079
2237
|
...props
|
|
2080
2238
|
}
|
|
@@ -2084,65 +2242,285 @@ var Textarea = React16.forwardRef(
|
|
|
2084
2242
|
Textarea.displayName = "Textarea";
|
|
2085
2243
|
|
|
2086
2244
|
// src/components/ui/badge.tsx
|
|
2087
|
-
import * as
|
|
2245
|
+
import * as React19 from "react";
|
|
2088
2246
|
import { cva as cva10 } from "class-variance-authority";
|
|
2089
|
-
import { jsx as
|
|
2247
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
2090
2248
|
var badgeVariants = cva10(
|
|
2091
|
-
"inline-flex items-center justify-center gap-1 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
2249
|
+
"px-2 py-1 inline-flex items-center justify-center gap-1 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-default",
|
|
2092
2250
|
{
|
|
2093
2251
|
variants: {
|
|
2094
2252
|
variant: {
|
|
2095
|
-
primary: "
|
|
2096
|
-
secondary: "
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2253
|
+
primary: "interactive-accent interactive-accent-fg type-label-xs-medium",
|
|
2254
|
+
secondary: "interactive-secondary interactive-secondary-fg type-label-xs-medium",
|
|
2255
|
+
outline: "interactive-default interactive-default-fg border border-default type-label-xs-medium",
|
|
2256
|
+
ghost: "interactive-default interactive-default-fg type-label-xs-medium",
|
|
2257
|
+
destructive: "interactive-destructive interactive-destructive-fg type-label-xs-medium focus-visible:ring-3 focus-visible:ring-focus-error"
|
|
2258
|
+
},
|
|
2259
|
+
rounded: {
|
|
2260
|
+
true: "rounded-full",
|
|
2261
|
+
false: "rounded-md"
|
|
2102
2262
|
}
|
|
2103
2263
|
},
|
|
2104
2264
|
defaultVariants: {
|
|
2105
|
-
variant: "primary"
|
|
2265
|
+
variant: "primary",
|
|
2266
|
+
rounded: false
|
|
2106
2267
|
}
|
|
2107
2268
|
}
|
|
2108
2269
|
);
|
|
2109
|
-
function
|
|
2110
|
-
|
|
2270
|
+
function isSingleDisplayCharacter(node) {
|
|
2271
|
+
if (node == null || typeof node === "boolean") return false;
|
|
2272
|
+
if (typeof node === "string" || typeof node === "number") {
|
|
2273
|
+
const trimmed = String(node).trim();
|
|
2274
|
+
return trimmed.length === 1;
|
|
2275
|
+
}
|
|
2276
|
+
if (Array.isArray(node)) {
|
|
2277
|
+
const parts = node.filter((x) => x != null && typeof x !== "boolean");
|
|
2278
|
+
if (parts.length !== 1) return false;
|
|
2279
|
+
return isSingleDisplayCharacter(parts[0]);
|
|
2280
|
+
}
|
|
2281
|
+
if (React19.isValidElement(node)) {
|
|
2282
|
+
return isSingleDisplayCharacter(
|
|
2283
|
+
node.props.children
|
|
2284
|
+
);
|
|
2285
|
+
}
|
|
2286
|
+
return false;
|
|
2111
2287
|
}
|
|
2112
|
-
var Badge =
|
|
2113
|
-
({ className, variant, style, ...props }, ref) => {
|
|
2288
|
+
var Badge = React19.forwardRef(
|
|
2289
|
+
({ className, variant, rounded, style, children, ...props }, ref) => {
|
|
2114
2290
|
if (!variant) {
|
|
2115
2291
|
return null;
|
|
2116
2292
|
}
|
|
2117
|
-
const
|
|
2118
|
-
|
|
2119
|
-
...typographyStyles,
|
|
2120
|
-
...style
|
|
2121
|
-
};
|
|
2122
|
-
return /* @__PURE__ */ jsx18(
|
|
2293
|
+
const circle = isSingleDisplayCharacter(children);
|
|
2294
|
+
return /* @__PURE__ */ jsx20(
|
|
2123
2295
|
"span",
|
|
2124
2296
|
{
|
|
2125
2297
|
className: cn(
|
|
2126
|
-
badgeVariants({ variant }),
|
|
2127
|
-
"
|
|
2298
|
+
badgeVariants({ variant, rounded }),
|
|
2299
|
+
circle ? "size-5 shrink-0 p-0" : "",
|
|
2128
2300
|
className
|
|
2129
2301
|
),
|
|
2130
|
-
style
|
|
2302
|
+
style,
|
|
2131
2303
|
ref,
|
|
2132
|
-
...props
|
|
2304
|
+
...props,
|
|
2305
|
+
children
|
|
2133
2306
|
}
|
|
2134
2307
|
);
|
|
2135
2308
|
}
|
|
2136
2309
|
);
|
|
2137
2310
|
Badge.displayName = "Badge";
|
|
2138
2311
|
|
|
2312
|
+
// src/components/ui/item.tsx
|
|
2313
|
+
import * as React20 from "react";
|
|
2314
|
+
import { mergeProps as mergeProps2 } from "@base-ui/react/merge-props";
|
|
2315
|
+
import { useRender as useRender2 } from "@base-ui/react/use-render";
|
|
2316
|
+
import { cva as cva11 } from "class-variance-authority";
|
|
2317
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
2318
|
+
var ItemGroupContext = React20.createContext(false);
|
|
2319
|
+
var ItemGroup = React20.forwardRef(
|
|
2320
|
+
({ className, ...props }, ref) => {
|
|
2321
|
+
return /* @__PURE__ */ jsx21(ItemGroupContext.Provider, { value: true, children: /* @__PURE__ */ jsx21(
|
|
2322
|
+
"div",
|
|
2323
|
+
{
|
|
2324
|
+
ref,
|
|
2325
|
+
role: "list",
|
|
2326
|
+
"data-slot": "item-group",
|
|
2327
|
+
className: cn(
|
|
2328
|
+
"gap-4 has-data-[size=sm]:gap-2.5 group/item-group flex w-full flex-col",
|
|
2329
|
+
className
|
|
2330
|
+
),
|
|
2331
|
+
...props
|
|
2332
|
+
}
|
|
2333
|
+
) });
|
|
2334
|
+
}
|
|
2335
|
+
);
|
|
2336
|
+
var ItemSeparator = React20.forwardRef(({ className, ...props }, ref) => {
|
|
2337
|
+
return /* @__PURE__ */ jsx21(
|
|
2338
|
+
Separator2,
|
|
2339
|
+
{
|
|
2340
|
+
ref,
|
|
2341
|
+
"data-slot": "item-separator",
|
|
2342
|
+
orientation: "horizontal",
|
|
2343
|
+
className: cn("my-2", className),
|
|
2344
|
+
...props
|
|
2345
|
+
}
|
|
2346
|
+
);
|
|
2347
|
+
});
|
|
2348
|
+
var itemVariants = cva11(
|
|
2349
|
+
"surface-default rounded-md border group/item flex w-full flex-wrap transition-colors duration-100 outline-none [a]:relative [a]:isolate [a]:after:absolute [a]:after:inset-0 [a]:after:rounded-[inherit] [a]:after:-z-10 [a]:after:pointer-events-none [a]:after:transition-colors",
|
|
2350
|
+
{
|
|
2351
|
+
variants: {
|
|
2352
|
+
variant: {
|
|
2353
|
+
default: "border-transparent [a]:hover:after:bg-black/10",
|
|
2354
|
+
outline: "border-default [a]:hover:after:bg-black/10",
|
|
2355
|
+
muted: "surface-secondary border-transparent"
|
|
2356
|
+
},
|
|
2357
|
+
size: {
|
|
2358
|
+
default: "items-start gap-4 p-4",
|
|
2359
|
+
sm: "items-center gap-2 px-4 py-3"
|
|
2360
|
+
}
|
|
2361
|
+
},
|
|
2362
|
+
defaultVariants: {
|
|
2363
|
+
variant: "default",
|
|
2364
|
+
size: "default"
|
|
2365
|
+
}
|
|
2366
|
+
}
|
|
2367
|
+
);
|
|
2368
|
+
var Item2 = ({
|
|
2369
|
+
className,
|
|
2370
|
+
variant = "default",
|
|
2371
|
+
size = "default",
|
|
2372
|
+
render,
|
|
2373
|
+
...props
|
|
2374
|
+
}) => {
|
|
2375
|
+
const insideGroup = React20.useContext(ItemGroupContext);
|
|
2376
|
+
return useRender2({
|
|
2377
|
+
defaultTagName: "div",
|
|
2378
|
+
props: mergeProps2(
|
|
2379
|
+
{
|
|
2380
|
+
role: insideGroup ? "listitem" : void 0,
|
|
2381
|
+
className: cn(itemVariants({ variant, size, className }))
|
|
2382
|
+
},
|
|
2383
|
+
props
|
|
2384
|
+
),
|
|
2385
|
+
render,
|
|
2386
|
+
state: {
|
|
2387
|
+
slot: "item",
|
|
2388
|
+
variant,
|
|
2389
|
+
size
|
|
2390
|
+
}
|
|
2391
|
+
});
|
|
2392
|
+
};
|
|
2393
|
+
var itemMediaVariants = cva11(
|
|
2394
|
+
"gap-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none",
|
|
2395
|
+
{
|
|
2396
|
+
variants: {
|
|
2397
|
+
variant: {
|
|
2398
|
+
default: "bg-transparent",
|
|
2399
|
+
icon: "[&_svg:not([class*='size-'])]:size-5",
|
|
2400
|
+
iconBadge: "size-8 overflow-hidden rounded bg-surface-secondary p-2 [&_svg:not([class*='size-'])]:size-4",
|
|
2401
|
+
image: "size-10 overflow-hidden rounded-md group-data-[size=sm]/item:size-8 [&_img]:size-full [&_img]:object-cover"
|
|
2402
|
+
}
|
|
2403
|
+
},
|
|
2404
|
+
defaultVariants: {
|
|
2405
|
+
variant: "default"
|
|
2406
|
+
}
|
|
2407
|
+
}
|
|
2408
|
+
);
|
|
2409
|
+
var ItemMedia = React20.forwardRef(
|
|
2410
|
+
({ className, variant = "default", ...props }, ref) => {
|
|
2411
|
+
return /* @__PURE__ */ jsx21(
|
|
2412
|
+
"div",
|
|
2413
|
+
{
|
|
2414
|
+
ref,
|
|
2415
|
+
"data-slot": "item-media",
|
|
2416
|
+
"data-variant": variant,
|
|
2417
|
+
className: cn(itemMediaVariants({ variant, className })),
|
|
2418
|
+
...props
|
|
2419
|
+
}
|
|
2420
|
+
);
|
|
2421
|
+
}
|
|
2422
|
+
);
|
|
2423
|
+
var ItemContent = React20.forwardRef(({ className, ...props }, ref) => {
|
|
2424
|
+
return /* @__PURE__ */ jsx21(
|
|
2425
|
+
"div",
|
|
2426
|
+
{
|
|
2427
|
+
ref,
|
|
2428
|
+
"data-slot": "item-content",
|
|
2429
|
+
className: cn(
|
|
2430
|
+
"gap-1 group-data-[size=sm]/item:gap-0 flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none",
|
|
2431
|
+
className
|
|
2432
|
+
),
|
|
2433
|
+
...props
|
|
2434
|
+
}
|
|
2435
|
+
);
|
|
2436
|
+
});
|
|
2437
|
+
var ItemTitle = React20.forwardRef(
|
|
2438
|
+
({ className, ...props }, ref) => {
|
|
2439
|
+
return /* @__PURE__ */ jsx21(
|
|
2440
|
+
"div",
|
|
2441
|
+
{
|
|
2442
|
+
ref,
|
|
2443
|
+
"data-slot": "item-title",
|
|
2444
|
+
className: cn(
|
|
2445
|
+
"type-label-sm-medium gap-2 text-default underline-offset-4 line-clamp-1 flex w-full items-center",
|
|
2446
|
+
className
|
|
2447
|
+
),
|
|
2448
|
+
...props
|
|
2449
|
+
}
|
|
2450
|
+
);
|
|
2451
|
+
}
|
|
2452
|
+
);
|
|
2453
|
+
var ItemDescription = React20.forwardRef(({ className, ...props }, ref) => {
|
|
2454
|
+
return /* @__PURE__ */ jsx21(
|
|
2455
|
+
"p",
|
|
2456
|
+
{
|
|
2457
|
+
ref,
|
|
2458
|
+
"data-slot": "item-description",
|
|
2459
|
+
className: cn(
|
|
2460
|
+
"type-body-sm-regular text-secondary text-left line-clamp-2 [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
2461
|
+
className
|
|
2462
|
+
),
|
|
2463
|
+
...props
|
|
2464
|
+
}
|
|
2465
|
+
);
|
|
2466
|
+
});
|
|
2467
|
+
var ItemActions = React20.forwardRef(({ className, ...props }, ref) => {
|
|
2468
|
+
return /* @__PURE__ */ jsx21(
|
|
2469
|
+
"div",
|
|
2470
|
+
{
|
|
2471
|
+
ref,
|
|
2472
|
+
"data-slot": "item-actions",
|
|
2473
|
+
className: cn("gap-2 flex items-center", className),
|
|
2474
|
+
...props
|
|
2475
|
+
}
|
|
2476
|
+
);
|
|
2477
|
+
});
|
|
2478
|
+
var ItemHeader = React20.forwardRef(({ className, ...props }, ref) => {
|
|
2479
|
+
return /* @__PURE__ */ jsx21(
|
|
2480
|
+
"div",
|
|
2481
|
+
{
|
|
2482
|
+
ref,
|
|
2483
|
+
"data-slot": "item-header",
|
|
2484
|
+
className: cn(
|
|
2485
|
+
"gap-2 flex basis-full items-center justify-between",
|
|
2486
|
+
className
|
|
2487
|
+
),
|
|
2488
|
+
...props
|
|
2489
|
+
}
|
|
2490
|
+
);
|
|
2491
|
+
});
|
|
2492
|
+
var ItemFooter = React20.forwardRef(({ className, ...props }, ref) => {
|
|
2493
|
+
return /* @__PURE__ */ jsx21(
|
|
2494
|
+
"div",
|
|
2495
|
+
{
|
|
2496
|
+
ref,
|
|
2497
|
+
"data-slot": "item-footer",
|
|
2498
|
+
className: cn(
|
|
2499
|
+
"gap-2 flex basis-full items-center justify-between",
|
|
2500
|
+
className
|
|
2501
|
+
),
|
|
2502
|
+
...props
|
|
2503
|
+
}
|
|
2504
|
+
);
|
|
2505
|
+
});
|
|
2506
|
+
Item2.displayName = "Item";
|
|
2507
|
+
ItemMedia.displayName = "ItemMedia";
|
|
2508
|
+
ItemGroup.displayName = "ItemGroup";
|
|
2509
|
+
ItemSeparator.displayName = "ItemSeparator";
|
|
2510
|
+
ItemContent.displayName = "ItemContent";
|
|
2511
|
+
ItemTitle.displayName = "ItemTitle";
|
|
2512
|
+
ItemDescription.displayName = "ItemDescription";
|
|
2513
|
+
ItemActions.displayName = "ItemActions";
|
|
2514
|
+
ItemHeader.displayName = "ItemHeader";
|
|
2515
|
+
ItemFooter.displayName = "ItemFooter";
|
|
2516
|
+
|
|
2139
2517
|
// src/components/pdf-viewer/index.tsx
|
|
2140
|
-
import * as
|
|
2518
|
+
import * as React30 from "react";
|
|
2141
2519
|
import "react-pdf/dist/Page/TextLayer.css";
|
|
2142
2520
|
|
|
2143
2521
|
// src/components/pdf-viewer/components/CustomScrollbar.tsx
|
|
2144
|
-
import * as
|
|
2145
|
-
import { Fragment, jsx as
|
|
2522
|
+
import * as React21 from "react";
|
|
2523
|
+
import { Fragment, jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2146
2524
|
var scrollbarStyles = `
|
|
2147
2525
|
.custom-scrollbar-content {
|
|
2148
2526
|
overflow: auto;
|
|
@@ -2210,15 +2588,15 @@ function CustomScrollbar({
|
|
|
2210
2588
|
backgroundColor = "#F5F5F5",
|
|
2211
2589
|
className
|
|
2212
2590
|
}) {
|
|
2213
|
-
const internalContainerRef =
|
|
2591
|
+
const internalContainerRef = React21.useRef(null);
|
|
2214
2592
|
const containerRef = externalContainerRef || internalContainerRef;
|
|
2215
|
-
const wrapperRef =
|
|
2216
|
-
const thumbVerticalRef =
|
|
2217
|
-
const thumbHorizontalRef =
|
|
2218
|
-
const lastScrollPosRef =
|
|
2219
|
-
const scrollTimeoutsRef =
|
|
2593
|
+
const wrapperRef = React21.useRef(null);
|
|
2594
|
+
const thumbVerticalRef = React21.useRef(null);
|
|
2595
|
+
const thumbHorizontalRef = React21.useRef(null);
|
|
2596
|
+
const lastScrollPosRef = React21.useRef({ top: 0, left: 0 });
|
|
2597
|
+
const scrollTimeoutsRef = React21.useRef({ vertical: null, horizontal: null });
|
|
2220
2598
|
const WHEEL_LINE_HEIGHT_PX = 16;
|
|
2221
|
-
const showScrollbar =
|
|
2599
|
+
const showScrollbar = React21.useCallback(
|
|
2222
2600
|
(direction) => {
|
|
2223
2601
|
const wrapper = wrapperRef.current;
|
|
2224
2602
|
if (!wrapper) return;
|
|
@@ -2232,7 +2610,7 @@ function CustomScrollbar({
|
|
|
2232
2610
|
},
|
|
2233
2611
|
[autoHideDelay]
|
|
2234
2612
|
);
|
|
2235
|
-
const updateScrollbarThumbPosition =
|
|
2613
|
+
const updateScrollbarThumbPosition = React21.useCallback(() => {
|
|
2236
2614
|
const container = containerRef.current;
|
|
2237
2615
|
const thumbVertical = thumbVerticalRef.current;
|
|
2238
2616
|
const thumbHorizontal = thumbHorizontalRef.current;
|
|
@@ -2270,7 +2648,7 @@ function CustomScrollbar({
|
|
|
2270
2648
|
}
|
|
2271
2649
|
}
|
|
2272
2650
|
}, [containerRef]);
|
|
2273
|
-
|
|
2651
|
+
React21.useEffect(() => {
|
|
2274
2652
|
const container = containerRef.current;
|
|
2275
2653
|
if (!container) return;
|
|
2276
2654
|
lastScrollPosRef.current = {
|
|
@@ -2303,7 +2681,7 @@ function CustomScrollbar({
|
|
|
2303
2681
|
if (rafId) cancelAnimationFrame(rafId);
|
|
2304
2682
|
};
|
|
2305
2683
|
}, [containerRef, showScrollbar, updateScrollbarThumbPosition]);
|
|
2306
|
-
|
|
2684
|
+
React21.useEffect(() => {
|
|
2307
2685
|
const container = containerRef.current;
|
|
2308
2686
|
if (!container) return;
|
|
2309
2687
|
const normalizeWheelDelta = (delta, deltaMode, axisSize) => {
|
|
@@ -2359,7 +2737,7 @@ function CustomScrollbar({
|
|
|
2359
2737
|
container.removeEventListener("wheel", handleWheel);
|
|
2360
2738
|
};
|
|
2361
2739
|
}, [containerRef, showScrollbar]);
|
|
2362
|
-
|
|
2740
|
+
React21.useEffect(() => {
|
|
2363
2741
|
const thumbVertical = thumbVerticalRef.current;
|
|
2364
2742
|
const thumbHorizontal = thumbHorizontalRef.current;
|
|
2365
2743
|
const container = containerRef.current;
|
|
@@ -2419,19 +2797,19 @@ function CustomScrollbar({
|
|
|
2419
2797
|
document.removeEventListener("mouseup", handleMouseUp);
|
|
2420
2798
|
};
|
|
2421
2799
|
}, [containerRef, showScrollbar]);
|
|
2422
|
-
|
|
2800
|
+
React21.useEffect(() => {
|
|
2423
2801
|
updateScrollbarThumbPosition();
|
|
2424
2802
|
}, [children, updateScrollbarThumbPosition]);
|
|
2425
|
-
return /* @__PURE__ */
|
|
2426
|
-
/* @__PURE__ */
|
|
2427
|
-
/* @__PURE__ */
|
|
2803
|
+
return /* @__PURE__ */ jsxs11(Fragment, { children: [
|
|
2804
|
+
/* @__PURE__ */ jsx22("style", { children: scrollbarStyles }),
|
|
2805
|
+
/* @__PURE__ */ jsxs11(
|
|
2428
2806
|
"div",
|
|
2429
2807
|
{
|
|
2430
2808
|
ref: wrapperRef,
|
|
2431
2809
|
className: `flex-1 min-w-0 custom-scrollbar-wrapper ${className || ""}`,
|
|
2432
2810
|
style: { background: backgroundColor },
|
|
2433
2811
|
children: [
|
|
2434
|
-
/* @__PURE__ */
|
|
2812
|
+
/* @__PURE__ */ jsx22(
|
|
2435
2813
|
"div",
|
|
2436
2814
|
{
|
|
2437
2815
|
ref: containerRef,
|
|
@@ -2440,8 +2818,8 @@ function CustomScrollbar({
|
|
|
2440
2818
|
children
|
|
2441
2819
|
}
|
|
2442
2820
|
),
|
|
2443
|
-
/* @__PURE__ */
|
|
2444
|
-
/* @__PURE__ */
|
|
2821
|
+
/* @__PURE__ */ jsx22("div", { className: "scrollbar-track-vertical", children: /* @__PURE__ */ jsx22("div", { ref: thumbVerticalRef, className: "scrollbar-thumb-vertical" }) }),
|
|
2822
|
+
/* @__PURE__ */ jsx22("div", { className: "scrollbar-track-horizontal", children: /* @__PURE__ */ jsx22(
|
|
2445
2823
|
"div",
|
|
2446
2824
|
{
|
|
2447
2825
|
ref: thumbHorizontalRef,
|
|
@@ -2455,7 +2833,7 @@ function CustomScrollbar({
|
|
|
2455
2833
|
}
|
|
2456
2834
|
|
|
2457
2835
|
// src/components/pdf-viewer/components/PdfControls.tsx
|
|
2458
|
-
import * as
|
|
2836
|
+
import * as React22 from "react";
|
|
2459
2837
|
|
|
2460
2838
|
// src/components/pdf-viewer/utils/types.ts
|
|
2461
2839
|
var DEFAULT_BOUNDING_BOX_STYLE = {
|
|
@@ -2471,7 +2849,7 @@ var PDF_ZOOM = {
|
|
|
2471
2849
|
};
|
|
2472
2850
|
|
|
2473
2851
|
// src/components/pdf-viewer/components/PdfControls.tsx
|
|
2474
|
-
import { jsx as
|
|
2852
|
+
import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
2475
2853
|
var PdfControls = ({
|
|
2476
2854
|
currentPage,
|
|
2477
2855
|
totalPages,
|
|
@@ -2485,11 +2863,11 @@ var PdfControls = ({
|
|
|
2485
2863
|
const canGoNext = currentPage < totalPages;
|
|
2486
2864
|
const canZoomIn = zoom < PDF_ZOOM.MAX;
|
|
2487
2865
|
const canZoomOut = zoom > PDF_ZOOM.MIN;
|
|
2488
|
-
const [pageInputValue, setPageInputValue] =
|
|
2866
|
+
const [pageInputValue, setPageInputValue] = React22.useState(
|
|
2489
2867
|
String(currentPage)
|
|
2490
2868
|
);
|
|
2491
|
-
const isEscapeRef =
|
|
2492
|
-
|
|
2869
|
+
const isEscapeRef = React22.useRef(false);
|
|
2870
|
+
React22.useEffect(() => {
|
|
2493
2871
|
setPageInputValue(String(currentPage));
|
|
2494
2872
|
}, [currentPage]);
|
|
2495
2873
|
const handlePageInputChange = (e) => {
|
|
@@ -2525,14 +2903,14 @@ var PdfControls = ({
|
|
|
2525
2903
|
const newZoom = Math.max(zoom - PDF_ZOOM.STEP, PDF_ZOOM.MIN);
|
|
2526
2904
|
onZoomChange(newZoom);
|
|
2527
2905
|
};
|
|
2528
|
-
return /* @__PURE__ */
|
|
2906
|
+
return /* @__PURE__ */ jsxs12(
|
|
2529
2907
|
"div",
|
|
2530
2908
|
{
|
|
2531
2909
|
className: "flex flex-col items-center justify-end py-2 px-1 gap-4",
|
|
2532
2910
|
style: { background: "#DEDEDE" },
|
|
2533
2911
|
children: [
|
|
2534
|
-
/* @__PURE__ */
|
|
2535
|
-
/* @__PURE__ */
|
|
2912
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex flex-col items-center gap-1", children: [
|
|
2913
|
+
/* @__PURE__ */ jsx23(
|
|
2536
2914
|
"button",
|
|
2537
2915
|
{
|
|
2538
2916
|
onClick: onPreviousPage,
|
|
@@ -2540,10 +2918,10 @@ var PdfControls = ({
|
|
|
2540
2918
|
className: "p-1.5 rounded transition-colors hover:bg-neutral-400 disabled:opacity-40 disabled:cursor-not-allowed",
|
|
2541
2919
|
"aria-label": "Previous page",
|
|
2542
2920
|
type: "button",
|
|
2543
|
-
children: /* @__PURE__ */
|
|
2921
|
+
children: /* @__PURE__ */ jsx23(CaretUpIcon, { size: 16, style: { color: "#666666" } })
|
|
2544
2922
|
}
|
|
2545
2923
|
),
|
|
2546
|
-
/* @__PURE__ */
|
|
2924
|
+
/* @__PURE__ */ jsx23("div", { className: "flex flex-col items-center", children: totalPages > 0 ? /* @__PURE__ */ jsx23(
|
|
2547
2925
|
"input",
|
|
2548
2926
|
{
|
|
2549
2927
|
type: "text",
|
|
@@ -2559,8 +2937,8 @@ var PdfControls = ({
|
|
|
2559
2937
|
},
|
|
2560
2938
|
"aria-label": "Current page"
|
|
2561
2939
|
}
|
|
2562
|
-
) : /* @__PURE__ */
|
|
2563
|
-
/* @__PURE__ */
|
|
2940
|
+
) : /* @__PURE__ */ jsx23("span", { className: "text-sm", style: { color: "#666666" }, children: "-" }) }),
|
|
2941
|
+
/* @__PURE__ */ jsx23(
|
|
2564
2942
|
"button",
|
|
2565
2943
|
{
|
|
2566
2944
|
onClick: onNextPage,
|
|
@@ -2568,12 +2946,12 @@ var PdfControls = ({
|
|
|
2568
2946
|
className: "p-1.5 rounded transition-colors hover:bg-neutral-400 disabled:opacity-40 disabled:cursor-not-allowed",
|
|
2569
2947
|
"aria-label": "Next page",
|
|
2570
2948
|
type: "button",
|
|
2571
|
-
children: /* @__PURE__ */
|
|
2949
|
+
children: /* @__PURE__ */ jsx23(CaretDownIcon, { size: 16, style: { color: "#666666" } })
|
|
2572
2950
|
}
|
|
2573
2951
|
)
|
|
2574
2952
|
] }),
|
|
2575
|
-
/* @__PURE__ */
|
|
2576
|
-
/* @__PURE__ */
|
|
2953
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex flex-col items-center gap-1", children: [
|
|
2954
|
+
/* @__PURE__ */ jsx23(
|
|
2577
2955
|
"button",
|
|
2578
2956
|
{
|
|
2579
2957
|
onClick: handleZoomIn,
|
|
@@ -2581,10 +2959,10 @@ var PdfControls = ({
|
|
|
2581
2959
|
className: "p-1.5 rounded transition-colors hover:bg-neutral-400 disabled:opacity-40 disabled:cursor-not-allowed",
|
|
2582
2960
|
"aria-label": "Zoom in",
|
|
2583
2961
|
type: "button",
|
|
2584
|
-
children: /* @__PURE__ */
|
|
2962
|
+
children: /* @__PURE__ */ jsx23(ZoomInIcon, { size: 16, style: { color: "#666666" } })
|
|
2585
2963
|
}
|
|
2586
2964
|
),
|
|
2587
|
-
/* @__PURE__ */
|
|
2965
|
+
/* @__PURE__ */ jsx23(
|
|
2588
2966
|
"button",
|
|
2589
2967
|
{
|
|
2590
2968
|
onClick: handleZoomOut,
|
|
@@ -2592,7 +2970,7 @@ var PdfControls = ({
|
|
|
2592
2970
|
className: "p-1.5 rounded transition-colors hover:bg-neutral-400 disabled:opacity-40 disabled:cursor-not-allowed",
|
|
2593
2971
|
"aria-label": "Zoom out",
|
|
2594
2972
|
type: "button",
|
|
2595
|
-
children: /* @__PURE__ */
|
|
2973
|
+
children: /* @__PURE__ */ jsx23(ZoomOutIcon, { size: 16, style: { color: "#666666" } })
|
|
2596
2974
|
}
|
|
2597
2975
|
)
|
|
2598
2976
|
] })
|
|
@@ -2603,7 +2981,7 @@ var PdfControls = ({
|
|
|
2603
2981
|
PdfControls.displayName = "PdfControls";
|
|
2604
2982
|
|
|
2605
2983
|
// src/components/pdf-viewer/components/PdfDocument.tsx
|
|
2606
|
-
import * as
|
|
2984
|
+
import * as React24 from "react";
|
|
2607
2985
|
import { Document, Page } from "react-pdf";
|
|
2608
2986
|
|
|
2609
2987
|
// src/components/pdf-viewer/utils/constants.ts
|
|
@@ -2629,7 +3007,7 @@ var INTERSECTION_OBSERVER_CONFIG = {
|
|
|
2629
3007
|
};
|
|
2630
3008
|
|
|
2631
3009
|
// src/components/pdf-viewer/components/BoundingBoxOverlay.tsx
|
|
2632
|
-
import * as
|
|
3010
|
+
import * as React23 from "react";
|
|
2633
3011
|
|
|
2634
3012
|
// src/components/pdf-viewer/utils/boundingBoxUtils.ts
|
|
2635
3013
|
function clamp01(value) {
|
|
@@ -2656,7 +3034,7 @@ function normalizeBoundingBox(box) {
|
|
|
2656
3034
|
}
|
|
2657
3035
|
|
|
2658
3036
|
// src/components/pdf-viewer/components/BoundingBoxOverlay.tsx
|
|
2659
|
-
import { jsx as
|
|
3037
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
2660
3038
|
var BoundingBoxOverlayInner = ({
|
|
2661
3039
|
boxes,
|
|
2662
3040
|
highlightedIds,
|
|
@@ -2666,11 +3044,11 @@ var BoundingBoxOverlayInner = ({
|
|
|
2666
3044
|
onBoxMouseEnter,
|
|
2667
3045
|
onBoxMouseLeave
|
|
2668
3046
|
}) => {
|
|
2669
|
-
const validBoxes =
|
|
3047
|
+
const validBoxes = React23.useMemo(
|
|
2670
3048
|
() => boxes.map(normalizeBoundingBox).filter((b) => b !== null),
|
|
2671
3049
|
[boxes]
|
|
2672
3050
|
);
|
|
2673
|
-
const sortedBoxes =
|
|
3051
|
+
const sortedBoxes = React23.useMemo(
|
|
2674
3052
|
() => [...validBoxes].sort((a, b) => {
|
|
2675
3053
|
const aHighlighted = highlightedIds.has(a.id);
|
|
2676
3054
|
const bHighlighted = highlightedIds.has(b.id);
|
|
@@ -2681,7 +3059,7 @@ var BoundingBoxOverlayInner = ({
|
|
|
2681
3059
|
[validBoxes, highlightedIds]
|
|
2682
3060
|
);
|
|
2683
3061
|
if (sortedBoxes.length === 0) return null;
|
|
2684
|
-
return /* @__PURE__ */
|
|
3062
|
+
return /* @__PURE__ */ jsx24(
|
|
2685
3063
|
"svg",
|
|
2686
3064
|
{
|
|
2687
3065
|
viewBox: "0 0 1 1",
|
|
@@ -2701,7 +3079,7 @@ var BoundingBoxOverlayInner = ({
|
|
|
2701
3079
|
const baseStyle = isHighlighted ? { ...DEFAULT_BOUNDING_BOX_STYLE, ...highlightStyle } : { ...DEFAULT_BOUNDING_BOX_STYLE, ...defaultStyle };
|
|
2702
3080
|
const style = { ...baseStyle, ...box.style };
|
|
2703
3081
|
const isInteractive = !!(onBoxClick || onBoxMouseEnter);
|
|
2704
|
-
return /* @__PURE__ */
|
|
3082
|
+
return /* @__PURE__ */ jsx24(
|
|
2705
3083
|
"rect",
|
|
2706
3084
|
{
|
|
2707
3085
|
x: box.x1,
|
|
@@ -2721,7 +3099,7 @@ var BoundingBoxOverlayInner = ({
|
|
|
2721
3099
|
onMouseLeave: onBoxMouseLeave ? (e) => onBoxMouseLeave(box, e) : void 0,
|
|
2722
3100
|
"aria-label": box.label,
|
|
2723
3101
|
role: onBoxClick ? "button" : void 0,
|
|
2724
|
-
children: box.label && /* @__PURE__ */
|
|
3102
|
+
children: box.label && /* @__PURE__ */ jsx24("title", { children: box.label })
|
|
2725
3103
|
},
|
|
2726
3104
|
box.id
|
|
2727
3105
|
);
|
|
@@ -2729,11 +3107,11 @@ var BoundingBoxOverlayInner = ({
|
|
|
2729
3107
|
}
|
|
2730
3108
|
);
|
|
2731
3109
|
};
|
|
2732
|
-
var BoundingBoxOverlay =
|
|
3110
|
+
var BoundingBoxOverlay = React23.memo(BoundingBoxOverlayInner);
|
|
2733
3111
|
BoundingBoxOverlay.displayName = "BoundingBoxOverlay";
|
|
2734
3112
|
|
|
2735
3113
|
// src/components/pdf-viewer/components/PdfDocument.tsx
|
|
2736
|
-
import { jsx as
|
|
3114
|
+
import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2737
3115
|
var PdfDocument = ({
|
|
2738
3116
|
file,
|
|
2739
3117
|
pageWidth,
|
|
@@ -2755,14 +3133,14 @@ var PdfDocument = ({
|
|
|
2755
3133
|
onBoxMouseEnter,
|
|
2756
3134
|
onBoxMouseLeave
|
|
2757
3135
|
}) => {
|
|
2758
|
-
const mountedRef =
|
|
2759
|
-
|
|
3136
|
+
const mountedRef = React24.useRef(true);
|
|
3137
|
+
React24.useEffect(() => {
|
|
2760
3138
|
mountedRef.current = true;
|
|
2761
3139
|
return () => {
|
|
2762
3140
|
mountedRef.current = false;
|
|
2763
3141
|
};
|
|
2764
3142
|
}, []);
|
|
2765
|
-
const boxesByPage =
|
|
3143
|
+
const boxesByPage = React24.useMemo(() => {
|
|
2766
3144
|
const map = /* @__PURE__ */ new Map();
|
|
2767
3145
|
boundingBoxes?.forEach((box) => {
|
|
2768
3146
|
const pageBoxes = map.get(box.page) || [];
|
|
@@ -2771,7 +3149,7 @@ var PdfDocument = ({
|
|
|
2771
3149
|
});
|
|
2772
3150
|
return map;
|
|
2773
3151
|
}, [boundingBoxes]);
|
|
2774
|
-
const highlightedIdsSet =
|
|
3152
|
+
const highlightedIdsSet = React24.useMemo(
|
|
2775
3153
|
() => new Set(highlightedBoxIds),
|
|
2776
3154
|
[highlightedBoxIds]
|
|
2777
3155
|
);
|
|
@@ -2810,14 +3188,14 @@ var PdfDocument = ({
|
|
|
2810
3188
|
function renderCurrentPage() {
|
|
2811
3189
|
const placeholderHeight = getPlaceholderHeight(currentPage);
|
|
2812
3190
|
const boxesForPage = boxesByPage.get(currentPage) ?? [];
|
|
2813
|
-
return /* @__PURE__ */
|
|
3191
|
+
return /* @__PURE__ */ jsx25(
|
|
2814
3192
|
"div",
|
|
2815
3193
|
{
|
|
2816
3194
|
ref: (el) => registerPageRef(currentPage, el),
|
|
2817
3195
|
"data-page-num": currentPage,
|
|
2818
3196
|
className: "flex justify-center",
|
|
2819
|
-
children: /* @__PURE__ */
|
|
2820
|
-
/* @__PURE__ */
|
|
3197
|
+
children: /* @__PURE__ */ jsxs13("div", { style: { position: "relative" }, children: [
|
|
3198
|
+
/* @__PURE__ */ jsx25(
|
|
2821
3199
|
Page,
|
|
2822
3200
|
{
|
|
2823
3201
|
pageNumber: currentPage,
|
|
@@ -2825,12 +3203,12 @@ var PdfDocument = ({
|
|
|
2825
3203
|
className: "shadow-sm",
|
|
2826
3204
|
renderTextLayer: enableTextLayer,
|
|
2827
3205
|
renderAnnotationLayer: false,
|
|
2828
|
-
loading: /* @__PURE__ */
|
|
3206
|
+
loading: /* @__PURE__ */ jsx25(
|
|
2829
3207
|
"div",
|
|
2830
3208
|
{
|
|
2831
3209
|
className: "flex items-center justify-center bg-white",
|
|
2832
3210
|
style: { width: pageWidth, height: placeholderHeight },
|
|
2833
|
-
children: /* @__PURE__ */
|
|
3211
|
+
children: /* @__PURE__ */ jsxs13(Typography, { variant: "body-sm", className: "text-secondary", children: [
|
|
2834
3212
|
"Loading page ",
|
|
2835
3213
|
currentPage,
|
|
2836
3214
|
"..."
|
|
@@ -2839,7 +3217,7 @@ var PdfDocument = ({
|
|
|
2839
3217
|
)
|
|
2840
3218
|
}
|
|
2841
3219
|
),
|
|
2842
|
-
/* @__PURE__ */
|
|
3220
|
+
/* @__PURE__ */ jsx25(
|
|
2843
3221
|
BoundingBoxOverlay,
|
|
2844
3222
|
{
|
|
2845
3223
|
boxes: boxesForPage,
|
|
@@ -2862,7 +3240,7 @@ var PdfDocument = ({
|
|
|
2862
3240
|
const shouldRender = visiblePages.has(pageNum);
|
|
2863
3241
|
const placeholderHeight = getPlaceholderHeight(pageNum);
|
|
2864
3242
|
const boxesForPage = boxesByPage.get(pageNum) ?? [];
|
|
2865
|
-
return /* @__PURE__ */
|
|
3243
|
+
return /* @__PURE__ */ jsx25(
|
|
2866
3244
|
"div",
|
|
2867
3245
|
{
|
|
2868
3246
|
ref: (el) => registerPageRef(pageNum, el),
|
|
@@ -2871,8 +3249,8 @@ var PdfDocument = ({
|
|
|
2871
3249
|
style: {
|
|
2872
3250
|
minHeight: shouldRender ? void 0 : placeholderHeight
|
|
2873
3251
|
},
|
|
2874
|
-
children: shouldRender ? /* @__PURE__ */
|
|
2875
|
-
/* @__PURE__ */
|
|
3252
|
+
children: shouldRender ? /* @__PURE__ */ jsxs13("div", { style: { position: "relative" }, children: [
|
|
3253
|
+
/* @__PURE__ */ jsx25(
|
|
2876
3254
|
Page,
|
|
2877
3255
|
{
|
|
2878
3256
|
pageNumber: pageNum,
|
|
@@ -2880,12 +3258,12 @@ var PdfDocument = ({
|
|
|
2880
3258
|
className: "shadow-sm",
|
|
2881
3259
|
renderTextLayer: enableTextLayer,
|
|
2882
3260
|
renderAnnotationLayer: false,
|
|
2883
|
-
loading: /* @__PURE__ */
|
|
3261
|
+
loading: /* @__PURE__ */ jsx25(
|
|
2884
3262
|
"div",
|
|
2885
3263
|
{
|
|
2886
3264
|
className: "flex items-center justify-center bg-white",
|
|
2887
3265
|
style: { width: pageWidth, height: placeholderHeight },
|
|
2888
|
-
children: /* @__PURE__ */
|
|
3266
|
+
children: /* @__PURE__ */ jsxs13(Typography, { variant: "body-sm", className: "text-secondary", children: [
|
|
2889
3267
|
"Loading page ",
|
|
2890
3268
|
pageNum,
|
|
2891
3269
|
"..."
|
|
@@ -2894,7 +3272,7 @@ var PdfDocument = ({
|
|
|
2894
3272
|
)
|
|
2895
3273
|
}
|
|
2896
3274
|
),
|
|
2897
|
-
/* @__PURE__ */
|
|
3275
|
+
/* @__PURE__ */ jsx25(
|
|
2898
3276
|
BoundingBoxOverlay,
|
|
2899
3277
|
{
|
|
2900
3278
|
boxes: boxesForPage,
|
|
@@ -2906,7 +3284,7 @@ var PdfDocument = ({
|
|
|
2906
3284
|
onBoxMouseLeave
|
|
2907
3285
|
}
|
|
2908
3286
|
)
|
|
2909
|
-
] }) : /* @__PURE__ */
|
|
3287
|
+
] }) : /* @__PURE__ */ jsx25(
|
|
2910
3288
|
"div",
|
|
2911
3289
|
{
|
|
2912
3290
|
className: "flex items-center justify-center bg-white shadow-sm",
|
|
@@ -2914,7 +3292,7 @@ var PdfDocument = ({
|
|
|
2914
3292
|
width: pageWidth,
|
|
2915
3293
|
height: placeholderHeight
|
|
2916
3294
|
},
|
|
2917
|
-
children: /* @__PURE__ */
|
|
3295
|
+
children: /* @__PURE__ */ jsxs13(Typography, { variant: "body-sm", className: "text-secondary", children: [
|
|
2918
3296
|
"Page ",
|
|
2919
3297
|
pageNum
|
|
2920
3298
|
] })
|
|
@@ -2926,16 +3304,16 @@ var PdfDocument = ({
|
|
|
2926
3304
|
});
|
|
2927
3305
|
}
|
|
2928
3306
|
if (!file) {
|
|
2929
|
-
return /* @__PURE__ */
|
|
3307
|
+
return /* @__PURE__ */ jsx25("div", { className: "flex items-center justify-center h-64", children: /* @__PURE__ */ jsx25(Typography, { variant: "body-md", className: "text-secondary", children: "No PDF available" }) });
|
|
2930
3308
|
}
|
|
2931
|
-
return /* @__PURE__ */
|
|
3309
|
+
return /* @__PURE__ */ jsx25(
|
|
2932
3310
|
Document,
|
|
2933
3311
|
{
|
|
2934
3312
|
file,
|
|
2935
3313
|
onLoadSuccess: handleDocumentLoadSuccess,
|
|
2936
3314
|
onLoadError,
|
|
2937
|
-
loading: /* @__PURE__ */
|
|
2938
|
-
error: /* @__PURE__ */
|
|
3315
|
+
loading: /* @__PURE__ */ jsx25("div", { className: "flex items-center justify-center h-64", children: /* @__PURE__ */ jsx25(Typography, { variant: "body-md", className: "text-secondary", children: "Rendering PDF..." }) }),
|
|
3316
|
+
error: /* @__PURE__ */ jsx25("div", { className: "flex items-center justify-center h-64", children: /* @__PURE__ */ jsx25(Typography, { variant: "body-md", className: "text-error", children: "Failed to render PDF" }) }),
|
|
2939
3317
|
className: "flex flex-col items-center p-4 min-w-fit",
|
|
2940
3318
|
children: numPages > 0 && pageWidth > 0 && (viewMode === "single" ? renderCurrentPage() : renderPagesWithVirtualization())
|
|
2941
3319
|
}
|
|
@@ -2944,19 +3322,19 @@ var PdfDocument = ({
|
|
|
2944
3322
|
PdfDocument.displayName = "PdfDocument";
|
|
2945
3323
|
|
|
2946
3324
|
// src/components/pdf-viewer/components/PdfHeader.tsx
|
|
2947
|
-
import { jsx as
|
|
3325
|
+
import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2948
3326
|
var PdfHeader = ({
|
|
2949
3327
|
title,
|
|
2950
3328
|
onDownload,
|
|
2951
3329
|
onPrint
|
|
2952
3330
|
}) => {
|
|
2953
|
-
return /* @__PURE__ */
|
|
3331
|
+
return /* @__PURE__ */ jsxs14(
|
|
2954
3332
|
"div",
|
|
2955
3333
|
{
|
|
2956
3334
|
className: "flex items-center justify-between gap-4 px-4 py-1",
|
|
2957
3335
|
style: { background: "#B5B5B5" },
|
|
2958
3336
|
children: [
|
|
2959
|
-
/* @__PURE__ */
|
|
3337
|
+
/* @__PURE__ */ jsx26("div", { className: "flex-shrink min-w-0", children: /* @__PURE__ */ jsx26(
|
|
2960
3338
|
Typography,
|
|
2961
3339
|
{
|
|
2962
3340
|
variant: "label-md-bold",
|
|
@@ -2965,25 +3343,25 @@ var PdfHeader = ({
|
|
|
2965
3343
|
children: title || "Untitled Document"
|
|
2966
3344
|
}
|
|
2967
3345
|
) }),
|
|
2968
|
-
/* @__PURE__ */
|
|
2969
|
-
/* @__PURE__ */
|
|
3346
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 flex-shrink-0", children: [
|
|
3347
|
+
/* @__PURE__ */ jsx26(
|
|
2970
3348
|
"button",
|
|
2971
3349
|
{
|
|
2972
3350
|
onClick: onDownload,
|
|
2973
3351
|
className: "p-1 hover:bg-neutral-500 rounded transition-colors",
|
|
2974
3352
|
"aria-label": "Download PDF",
|
|
2975
3353
|
type: "button",
|
|
2976
|
-
children: /* @__PURE__ */
|
|
3354
|
+
children: /* @__PURE__ */ jsx26(DownloadIcon, { variant: "dark", size: 16 })
|
|
2977
3355
|
}
|
|
2978
3356
|
),
|
|
2979
|
-
/* @__PURE__ */
|
|
3357
|
+
/* @__PURE__ */ jsx26(
|
|
2980
3358
|
"button",
|
|
2981
3359
|
{
|
|
2982
3360
|
onClick: onPrint,
|
|
2983
3361
|
className: "p-1 hover:bg-neutral-500 rounded transition-colors",
|
|
2984
3362
|
"aria-label": "Print PDF",
|
|
2985
3363
|
type: "button",
|
|
2986
|
-
children: /* @__PURE__ */
|
|
3364
|
+
children: /* @__PURE__ */ jsx26(PrintIcon, { variant: "dark", size: 16 })
|
|
2987
3365
|
}
|
|
2988
3366
|
)
|
|
2989
3367
|
] })
|
|
@@ -2994,12 +3372,12 @@ var PdfHeader = ({
|
|
|
2994
3372
|
PdfHeader.displayName = "PdfHeader";
|
|
2995
3373
|
|
|
2996
3374
|
// src/components/pdf-viewer/hooks/useContainerWidth.ts
|
|
2997
|
-
import * as
|
|
3375
|
+
import * as React25 from "react";
|
|
2998
3376
|
function useContainerWidth(padding = 32) {
|
|
2999
|
-
const [containerWidth, setContainerWidth] =
|
|
3000
|
-
const containerRef =
|
|
3001
|
-
const lastWidthRef =
|
|
3002
|
-
|
|
3377
|
+
const [containerWidth, setContainerWidth] = React25.useState(0);
|
|
3378
|
+
const containerRef = React25.useRef(null);
|
|
3379
|
+
const lastWidthRef = React25.useRef(0);
|
|
3380
|
+
React25.useEffect(() => {
|
|
3003
3381
|
const element = containerRef.current;
|
|
3004
3382
|
if (!element) return;
|
|
3005
3383
|
const resizeObserver = new ResizeObserver((entries) => {
|
|
@@ -3023,9 +3401,9 @@ function useContainerWidth(padding = 32) {
|
|
|
3023
3401
|
}
|
|
3024
3402
|
|
|
3025
3403
|
// src/components/pdf-viewer/hooks/usePdfDownload.ts
|
|
3026
|
-
import * as
|
|
3404
|
+
import * as React26 from "react";
|
|
3027
3405
|
function usePdfDownload(file, title) {
|
|
3028
|
-
const download =
|
|
3406
|
+
const download = React26.useCallback(async () => {
|
|
3029
3407
|
if (!file) return;
|
|
3030
3408
|
try {
|
|
3031
3409
|
let blob;
|
|
@@ -3057,11 +3435,11 @@ function usePdfDownload(file, title) {
|
|
|
3057
3435
|
}
|
|
3058
3436
|
|
|
3059
3437
|
// src/components/pdf-viewer/hooks/usePdfPrint.ts
|
|
3060
|
-
import * as
|
|
3438
|
+
import * as React27 from "react";
|
|
3061
3439
|
function usePdfPrint(file) {
|
|
3062
|
-
const [printBlobUrl, setPrintBlobUrl] =
|
|
3063
|
-
const printFrameRef =
|
|
3064
|
-
const preparePrint =
|
|
3440
|
+
const [printBlobUrl, setPrintBlobUrl] = React27.useState(null);
|
|
3441
|
+
const printFrameRef = React27.useRef(null);
|
|
3442
|
+
const preparePrint = React27.useCallback(async () => {
|
|
3065
3443
|
if (!file) return;
|
|
3066
3444
|
try {
|
|
3067
3445
|
let blob;
|
|
@@ -3077,14 +3455,14 @@ function usePdfPrint(file) {
|
|
|
3077
3455
|
console.error("Failed to prepare PDF for printing:", error);
|
|
3078
3456
|
}
|
|
3079
3457
|
}, [file]);
|
|
3080
|
-
|
|
3458
|
+
React27.useEffect(() => {
|
|
3081
3459
|
return () => {
|
|
3082
3460
|
if (printBlobUrl) {
|
|
3083
3461
|
URL.revokeObjectURL(printBlobUrl);
|
|
3084
3462
|
}
|
|
3085
3463
|
};
|
|
3086
3464
|
}, [printBlobUrl]);
|
|
3087
|
-
const print =
|
|
3465
|
+
const print = React27.useCallback(() => {
|
|
3088
3466
|
if (printFrameRef.current?.contentWindow) {
|
|
3089
3467
|
printFrameRef.current.contentWindow.print();
|
|
3090
3468
|
}
|
|
@@ -3093,7 +3471,7 @@ function usePdfPrint(file) {
|
|
|
3093
3471
|
}
|
|
3094
3472
|
|
|
3095
3473
|
// src/components/pdf-viewer/hooks/usePdfScroll.ts
|
|
3096
|
-
import * as
|
|
3474
|
+
import * as React28 from "react";
|
|
3097
3475
|
function usePdfScroll({
|
|
3098
3476
|
containerRef,
|
|
3099
3477
|
numPages,
|
|
@@ -3104,30 +3482,30 @@ function usePdfScroll({
|
|
|
3104
3482
|
effectiveWidth,
|
|
3105
3483
|
viewportBuffer
|
|
3106
3484
|
}) {
|
|
3107
|
-
const [internalPage, setInternalPage] =
|
|
3485
|
+
const [internalPage, setInternalPage] = React28.useState(1);
|
|
3108
3486
|
const isControlled = scrollTo !== void 0;
|
|
3109
3487
|
const currentPage = isControlled ? scrollTo.page : internalPage;
|
|
3110
|
-
const scrollOperationRef =
|
|
3488
|
+
const scrollOperationRef = React28.useRef({
|
|
3111
3489
|
isProgrammatic: false,
|
|
3112
3490
|
targetPage: null,
|
|
3113
3491
|
lastReportedPage: 1,
|
|
3114
3492
|
notifyOnComplete: false
|
|
3115
3493
|
});
|
|
3116
|
-
const [visibleRange, setVisibleRange] =
|
|
3494
|
+
const [visibleRange, setVisibleRange] = React28.useState({
|
|
3117
3495
|
start: 1,
|
|
3118
3496
|
end: Math.min(1 + viewportBuffer, numPages || 1 + viewportBuffer)
|
|
3119
3497
|
});
|
|
3120
|
-
const visiblePages =
|
|
3498
|
+
const visiblePages = React28.useMemo(() => {
|
|
3121
3499
|
const pages = /* @__PURE__ */ new Set();
|
|
3122
3500
|
for (let i = visibleRange.start; i <= visibleRange.end; i++) {
|
|
3123
3501
|
pages.add(i);
|
|
3124
3502
|
}
|
|
3125
3503
|
return pages;
|
|
3126
3504
|
}, [visibleRange.start, visibleRange.end]);
|
|
3127
|
-
const observerRef =
|
|
3128
|
-
const intersectionRatiosRef =
|
|
3129
|
-
const pageRefsMapRef =
|
|
3130
|
-
const cumulativeOffsets =
|
|
3505
|
+
const observerRef = React28.useRef(null);
|
|
3506
|
+
const intersectionRatiosRef = React28.useRef(/* @__PURE__ */ new Map());
|
|
3507
|
+
const pageRefsMapRef = React28.useRef(/* @__PURE__ */ new Map());
|
|
3508
|
+
const cumulativeOffsets = React28.useMemo(() => {
|
|
3131
3509
|
if (!pageDimensions?.size) return null;
|
|
3132
3510
|
const offsets = [CONTAINER_PADDING];
|
|
3133
3511
|
let cumulative = CONTAINER_PADDING;
|
|
@@ -3139,7 +3517,7 @@ function usePdfScroll({
|
|
|
3139
3517
|
}
|
|
3140
3518
|
return offsets;
|
|
3141
3519
|
}, [pageDimensions, effectiveWidth]);
|
|
3142
|
-
const calculatePageOffset =
|
|
3520
|
+
const calculatePageOffset = React28.useCallback(
|
|
3143
3521
|
(pageNum) => {
|
|
3144
3522
|
if (cumulativeOffsets && pageNum <= cumulativeOffsets.length) {
|
|
3145
3523
|
return cumulativeOffsets[pageNum - 1];
|
|
@@ -3154,11 +3532,11 @@ function usePdfScroll({
|
|
|
3154
3532
|
},
|
|
3155
3533
|
[cumulativeOffsets, pageDimensions, effectiveWidth]
|
|
3156
3534
|
);
|
|
3157
|
-
const onPageChangeRef =
|
|
3158
|
-
|
|
3535
|
+
const onPageChangeRef = React28.useRef(onPageChange);
|
|
3536
|
+
React28.useEffect(() => {
|
|
3159
3537
|
onPageChangeRef.current = onPageChange;
|
|
3160
3538
|
}, [onPageChange]);
|
|
3161
|
-
const updatePage =
|
|
3539
|
+
const updatePage = React28.useCallback(
|
|
3162
3540
|
(pageNum) => {
|
|
3163
3541
|
scrollOperationRef.current.lastReportedPage = pageNum;
|
|
3164
3542
|
if (isControlled) {
|
|
@@ -3170,7 +3548,7 @@ function usePdfScroll({
|
|
|
3170
3548
|
[isControlled]
|
|
3171
3549
|
// Removed onPageChange - now uses ref
|
|
3172
3550
|
);
|
|
3173
|
-
const onProgrammaticScrollComplete =
|
|
3551
|
+
const onProgrammaticScrollComplete = React28.useCallback((pageNum) => {
|
|
3174
3552
|
const shouldNotify = scrollOperationRef.current.notifyOnComplete;
|
|
3175
3553
|
scrollOperationRef.current.isProgrammatic = false;
|
|
3176
3554
|
scrollOperationRef.current.targetPage = null;
|
|
@@ -3180,7 +3558,7 @@ function usePdfScroll({
|
|
|
3180
3558
|
onPageChangeRef.current?.(pageNum);
|
|
3181
3559
|
}
|
|
3182
3560
|
}, []);
|
|
3183
|
-
const scrollToPage =
|
|
3561
|
+
const scrollToPage = React28.useCallback(
|
|
3184
3562
|
(pageNum) => {
|
|
3185
3563
|
const container = containerRef.current;
|
|
3186
3564
|
if (!container || !pageDimensions?.size) return;
|
|
@@ -3211,7 +3589,7 @@ function usePdfScroll({
|
|
|
3211
3589
|
onProgrammaticScrollComplete
|
|
3212
3590
|
]
|
|
3213
3591
|
);
|
|
3214
|
-
const scrollToPosition =
|
|
3592
|
+
const scrollToPosition = React28.useCallback(
|
|
3215
3593
|
(target) => {
|
|
3216
3594
|
const container = containerRef.current;
|
|
3217
3595
|
if (!container || !pageDimensions?.size) return;
|
|
@@ -3252,7 +3630,7 @@ function usePdfScroll({
|
|
|
3252
3630
|
onProgrammaticScrollComplete
|
|
3253
3631
|
]
|
|
3254
3632
|
);
|
|
3255
|
-
const handlePageChange =
|
|
3633
|
+
const handlePageChange = React28.useCallback(
|
|
3256
3634
|
(pageNum) => {
|
|
3257
3635
|
const clampedPage = Math.max(1, Math.min(pageNum, numPages));
|
|
3258
3636
|
scrollOperationRef.current.lastReportedPage = clampedPage;
|
|
@@ -3266,12 +3644,12 @@ function usePdfScroll({
|
|
|
3266
3644
|
},
|
|
3267
3645
|
[numPages, scrollToPage, isControlled, onPageChange]
|
|
3268
3646
|
);
|
|
3269
|
-
const updatePageRef =
|
|
3270
|
-
|
|
3647
|
+
const updatePageRef = React28.useRef(updatePage);
|
|
3648
|
+
React28.useEffect(() => {
|
|
3271
3649
|
updatePageRef.current = updatePage;
|
|
3272
3650
|
}, [updatePage]);
|
|
3273
|
-
const lastBufferRef =
|
|
3274
|
-
|
|
3651
|
+
const lastBufferRef = React28.useRef({ start: 1, end: 1 + viewportBuffer });
|
|
3652
|
+
React28.useEffect(() => {
|
|
3275
3653
|
const container = containerRef.current;
|
|
3276
3654
|
if (!container) return;
|
|
3277
3655
|
const observer = new IntersectionObserver(
|
|
@@ -3331,7 +3709,7 @@ function usePdfScroll({
|
|
|
3331
3709
|
ratiosMap.clear();
|
|
3332
3710
|
};
|
|
3333
3711
|
}, [containerRef, numPages, viewportBuffer]);
|
|
3334
|
-
const observePage =
|
|
3712
|
+
const observePage = React28.useCallback(
|
|
3335
3713
|
(pageNum, element) => {
|
|
3336
3714
|
const prevElement = pageRefsMapRef.current.get(pageNum);
|
|
3337
3715
|
if (element) {
|
|
@@ -3352,7 +3730,7 @@ function usePdfScroll({
|
|
|
3352
3730
|
},
|
|
3353
3731
|
[]
|
|
3354
3732
|
);
|
|
3355
|
-
|
|
3733
|
+
React28.useEffect(() => {
|
|
3356
3734
|
const container = containerRef.current;
|
|
3357
3735
|
if (!container) return;
|
|
3358
3736
|
const handleUserScroll = () => {
|
|
@@ -3410,9 +3788,9 @@ function usePdfScroll({
|
|
|
3410
3788
|
}
|
|
3411
3789
|
};
|
|
3412
3790
|
}, [containerRef, onProgrammaticScrollComplete]);
|
|
3413
|
-
const lastScrollTargetRef =
|
|
3414
|
-
const prevEffectiveWidthRef =
|
|
3415
|
-
|
|
3791
|
+
const lastScrollTargetRef = React28.useRef(null);
|
|
3792
|
+
const prevEffectiveWidthRef = React28.useRef(effectiveWidth);
|
|
3793
|
+
React28.useEffect(() => {
|
|
3416
3794
|
if (prevEffectiveWidthRef.current !== effectiveWidth) {
|
|
3417
3795
|
prevEffectiveWidthRef.current = effectiveWidth;
|
|
3418
3796
|
const lastScrollTarget = lastScrollTargetRef.current;
|
|
@@ -3421,7 +3799,7 @@ function usePdfScroll({
|
|
|
3421
3799
|
}
|
|
3422
3800
|
}
|
|
3423
3801
|
}, [effectiveWidth]);
|
|
3424
|
-
|
|
3802
|
+
React28.useEffect(() => {
|
|
3425
3803
|
if (!isControlled || !scrollTo || numPages <= 0) return;
|
|
3426
3804
|
if (!pageDimensions?.size) return;
|
|
3427
3805
|
const lastScrollTarget = lastScrollTargetRef.current;
|
|
@@ -3454,7 +3832,7 @@ function usePdfScroll({
|
|
|
3454
3832
|
pageDimensions,
|
|
3455
3833
|
effectiveWidth
|
|
3456
3834
|
]);
|
|
3457
|
-
|
|
3835
|
+
React28.useEffect(() => {
|
|
3458
3836
|
const pageRefs = pageRefsMapRef.current;
|
|
3459
3837
|
const ratios = intersectionRatiosRef.current;
|
|
3460
3838
|
for (const pageNum of pageRefs.keys()) {
|
|
@@ -3478,14 +3856,14 @@ function usePdfScroll({
|
|
|
3478
3856
|
}
|
|
3479
3857
|
|
|
3480
3858
|
// src/components/pdf-viewer/hooks/useZoomControl.ts
|
|
3481
|
-
import * as
|
|
3859
|
+
import * as React29 from "react";
|
|
3482
3860
|
function useZoomControl({
|
|
3483
3861
|
containerRef,
|
|
3484
3862
|
initialZoom = PDF_ZOOM.DEFAULT
|
|
3485
3863
|
}) {
|
|
3486
|
-
const [zoom, setZoom] =
|
|
3487
|
-
const scrollRatioRef =
|
|
3488
|
-
const handleZoomChange =
|
|
3864
|
+
const [zoom, setZoom] = React29.useState(initialZoom);
|
|
3865
|
+
const scrollRatioRef = React29.useRef({ x: 0.5, y: 0 });
|
|
3866
|
+
const handleZoomChange = React29.useCallback(
|
|
3489
3867
|
(newZoom) => {
|
|
3490
3868
|
const container = containerRef.current;
|
|
3491
3869
|
if (container) {
|
|
@@ -3506,7 +3884,7 @@ function useZoomControl({
|
|
|
3506
3884
|
},
|
|
3507
3885
|
[containerRef]
|
|
3508
3886
|
);
|
|
3509
|
-
|
|
3887
|
+
React29.useEffect(() => {
|
|
3510
3888
|
const container = containerRef.current;
|
|
3511
3889
|
if (!container) return;
|
|
3512
3890
|
requestAnimationFrame(() => {
|
|
@@ -3531,9 +3909,9 @@ function initializePdfWorker(workerUrl) {
|
|
|
3531
3909
|
}
|
|
3532
3910
|
|
|
3533
3911
|
// src/components/pdf-viewer/index.tsx
|
|
3534
|
-
import { jsx as
|
|
3912
|
+
import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
3535
3913
|
var DEFAULT_VIEWPORT_BUFFER = 1;
|
|
3536
|
-
var PdfViewer =
|
|
3914
|
+
var PdfViewer = React30.forwardRef(
|
|
3537
3915
|
({
|
|
3538
3916
|
file,
|
|
3539
3917
|
title,
|
|
@@ -3560,15 +3938,15 @@ var PdfViewer = React27.forwardRef(
|
|
|
3560
3938
|
className,
|
|
3561
3939
|
...props
|
|
3562
3940
|
}, ref) => {
|
|
3563
|
-
const [numPages, setNumPages] =
|
|
3564
|
-
const [pageDimensions, setPageDimensions] =
|
|
3941
|
+
const [numPages, setNumPages] = React30.useState(0);
|
|
3942
|
+
const [pageDimensions, setPageDimensions] = React30.useState(null);
|
|
3565
3943
|
const { containerWidth, containerRef } = useContainerWidth();
|
|
3566
3944
|
const { zoom, handleZoomChange } = useZoomControl({ containerRef });
|
|
3567
3945
|
const { printFrameRef, printBlobUrl, preparePrint, print } = usePdfPrint(file);
|
|
3568
3946
|
const download = usePdfDownload(file, title);
|
|
3569
3947
|
const baseWidth = Math.min(pageWidth || containerWidth, 800);
|
|
3570
3948
|
const effectiveWidth = Math.round(baseWidth * (zoom / 100));
|
|
3571
|
-
const handleDimensionsLoaded =
|
|
3949
|
+
const handleDimensionsLoaded = React30.useCallback(
|
|
3572
3950
|
(dimensions) => {
|
|
3573
3951
|
setPageDimensions(dimensions);
|
|
3574
3952
|
onDimensionsReady?.(dimensions);
|
|
@@ -3585,7 +3963,7 @@ var PdfViewer = React27.forwardRef(
|
|
|
3585
3963
|
effectiveWidth,
|
|
3586
3964
|
viewportBuffer
|
|
3587
3965
|
});
|
|
3588
|
-
const handleLoadSuccess =
|
|
3966
|
+
const handleLoadSuccess = React30.useCallback(
|
|
3589
3967
|
async (pages) => {
|
|
3590
3968
|
setNumPages(pages);
|
|
3591
3969
|
onLoadSuccess?.(pages);
|
|
@@ -3593,28 +3971,28 @@ var PdfViewer = React27.forwardRef(
|
|
|
3593
3971
|
},
|
|
3594
3972
|
[onLoadSuccess, preparePrint]
|
|
3595
3973
|
);
|
|
3596
|
-
const handleDownload =
|
|
3974
|
+
const handleDownload = React30.useCallback(() => {
|
|
3597
3975
|
if (onDownload) {
|
|
3598
3976
|
onDownload();
|
|
3599
3977
|
return;
|
|
3600
3978
|
}
|
|
3601
3979
|
download();
|
|
3602
3980
|
}, [onDownload, download]);
|
|
3603
|
-
const handlePrint =
|
|
3981
|
+
const handlePrint = React30.useCallback(() => {
|
|
3604
3982
|
if (onPrint) {
|
|
3605
3983
|
onPrint();
|
|
3606
3984
|
return;
|
|
3607
3985
|
}
|
|
3608
3986
|
print();
|
|
3609
3987
|
}, [onPrint, print]);
|
|
3610
|
-
return /* @__PURE__ */
|
|
3988
|
+
return /* @__PURE__ */ jsxs15(
|
|
3611
3989
|
"div",
|
|
3612
3990
|
{
|
|
3613
3991
|
ref,
|
|
3614
3992
|
className: cn("h-full flex flex-col", className),
|
|
3615
3993
|
...props,
|
|
3616
3994
|
children: [
|
|
3617
|
-
printBlobUrl && /* @__PURE__ */
|
|
3995
|
+
printBlobUrl && /* @__PURE__ */ jsx27(
|
|
3618
3996
|
"iframe",
|
|
3619
3997
|
{
|
|
3620
3998
|
ref: printFrameRef,
|
|
@@ -3623,7 +4001,7 @@ var PdfViewer = React27.forwardRef(
|
|
|
3623
4001
|
title: "PDF for printing"
|
|
3624
4002
|
}
|
|
3625
4003
|
),
|
|
3626
|
-
/* @__PURE__ */
|
|
4004
|
+
/* @__PURE__ */ jsx27(
|
|
3627
4005
|
PdfHeader,
|
|
3628
4006
|
{
|
|
3629
4007
|
title,
|
|
@@ -3631,8 +4009,8 @@ var PdfViewer = React27.forwardRef(
|
|
|
3631
4009
|
onPrint: handlePrint
|
|
3632
4010
|
}
|
|
3633
4011
|
),
|
|
3634
|
-
/* @__PURE__ */
|
|
3635
|
-
/* @__PURE__ */
|
|
4012
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex-1 flex overflow-hidden min-h-0", children: [
|
|
4013
|
+
/* @__PURE__ */ jsx27(CustomScrollbar, { containerRef, children: /* @__PURE__ */ jsx27(
|
|
3636
4014
|
PdfDocument,
|
|
3637
4015
|
{
|
|
3638
4016
|
file,
|
|
@@ -3656,7 +4034,7 @@ var PdfViewer = React27.forwardRef(
|
|
|
3656
4034
|
onBoxMouseLeave
|
|
3657
4035
|
}
|
|
3658
4036
|
) }),
|
|
3659
|
-
showControls && /* @__PURE__ */
|
|
4037
|
+
showControls && /* @__PURE__ */ jsx27(
|
|
3660
4038
|
PdfControls,
|
|
3661
4039
|
{
|
|
3662
4040
|
currentPage,
|
|
@@ -3677,10 +4055,10 @@ var PdfViewer = React27.forwardRef(
|
|
|
3677
4055
|
PdfViewer.displayName = "PdfViewer";
|
|
3678
4056
|
|
|
3679
4057
|
// src/components/ui/tabs.tsx
|
|
3680
|
-
import * as
|
|
3681
|
-
import { cva as
|
|
3682
|
-
import { jsx as
|
|
3683
|
-
var tabsVariants =
|
|
4058
|
+
import * as React31 from "react";
|
|
4059
|
+
import { cva as cva12 } from "class-variance-authority";
|
|
4060
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
4061
|
+
var tabsVariants = cva12(
|
|
3684
4062
|
"inline-flex items-center justify-start whitespace-nowrap transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-interactive focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 h-10",
|
|
3685
4063
|
{
|
|
3686
4064
|
variants: {
|
|
@@ -3693,17 +4071,17 @@ var tabsVariants = cva11(
|
|
|
3693
4071
|
}
|
|
3694
4072
|
}
|
|
3695
4073
|
);
|
|
3696
|
-
var TabsContext =
|
|
4074
|
+
var TabsContext = React31.createContext(
|
|
3697
4075
|
void 0
|
|
3698
4076
|
);
|
|
3699
4077
|
function useTabsContext() {
|
|
3700
|
-
const context =
|
|
4078
|
+
const context = React31.useContext(TabsContext);
|
|
3701
4079
|
if (!context) {
|
|
3702
4080
|
throw new Error("Tabs components must be used within a Tabs provider");
|
|
3703
4081
|
}
|
|
3704
4082
|
return context;
|
|
3705
4083
|
}
|
|
3706
|
-
var Tabs =
|
|
4084
|
+
var Tabs = React31.forwardRef((props, ref) => {
|
|
3707
4085
|
const {
|
|
3708
4086
|
className,
|
|
3709
4087
|
value,
|
|
@@ -3712,7 +4090,7 @@ var Tabs = React28.forwardRef((props, ref) => {
|
|
|
3712
4090
|
children,
|
|
3713
4091
|
...restProps
|
|
3714
4092
|
} = props;
|
|
3715
|
-
const contextValue =
|
|
4093
|
+
const contextValue = React31.useMemo(
|
|
3716
4094
|
() => ({
|
|
3717
4095
|
activeTab: value,
|
|
3718
4096
|
setActiveTab: onValueChange,
|
|
@@ -3720,13 +4098,13 @@ var Tabs = React28.forwardRef((props, ref) => {
|
|
|
3720
4098
|
}),
|
|
3721
4099
|
[value, onValueChange, variant]
|
|
3722
4100
|
);
|
|
3723
|
-
return /* @__PURE__ */
|
|
4101
|
+
return /* @__PURE__ */ jsx28(TabsContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx28("div", { ref, className: cn("w-full", className), ...restProps, children }) });
|
|
3724
4102
|
});
|
|
3725
4103
|
Tabs.displayName = "Tabs";
|
|
3726
|
-
var TabsList =
|
|
4104
|
+
var TabsList = React31.forwardRef(
|
|
3727
4105
|
(props, ref) => {
|
|
3728
4106
|
const { className, children, ...restProps } = props;
|
|
3729
|
-
return /* @__PURE__ */
|
|
4107
|
+
return /* @__PURE__ */ jsx28(
|
|
3730
4108
|
"div",
|
|
3731
4109
|
{
|
|
3732
4110
|
ref,
|
|
@@ -3742,7 +4120,7 @@ TabsList.displayName = "TabsList";
|
|
|
3742
4120
|
var getTabTypographyStyles = (isActive) => ({
|
|
3743
4121
|
font: isActive ? "var(--typography-label-sm-bold)" : "var(--typography-label-sm-regular)"
|
|
3744
4122
|
});
|
|
3745
|
-
var TabsTrigger =
|
|
4123
|
+
var TabsTrigger = React31.forwardRef(
|
|
3746
4124
|
(props, ref) => {
|
|
3747
4125
|
const { className, value, disabled, style, children, ...restProps } = props;
|
|
3748
4126
|
const { activeTab, setActiveTab, variant } = useTabsContext();
|
|
@@ -3750,22 +4128,22 @@ var TabsTrigger = React28.forwardRef(
|
|
|
3750
4128
|
throw new Error("TabsTrigger must have a value prop");
|
|
3751
4129
|
}
|
|
3752
4130
|
const isActive = activeTab === value;
|
|
3753
|
-
const tokenStyles =
|
|
4131
|
+
const tokenStyles = React31.useMemo(
|
|
3754
4132
|
() => ({
|
|
3755
4133
|
...getTabTypographyStyles(isActive),
|
|
3756
4134
|
...style
|
|
3757
4135
|
}),
|
|
3758
4136
|
[isActive, style]
|
|
3759
4137
|
);
|
|
3760
|
-
const triggerClassName =
|
|
4138
|
+
const triggerClassName = React31.useMemo(
|
|
3761
4139
|
() => cn(tabsVariants({ variant }), className),
|
|
3762
4140
|
[variant, className]
|
|
3763
4141
|
);
|
|
3764
|
-
const handleClick =
|
|
4142
|
+
const handleClick = React31.useCallback(() => {
|
|
3765
4143
|
if (disabled) return;
|
|
3766
4144
|
setActiveTab(value);
|
|
3767
4145
|
}, [disabled, setActiveTab, value]);
|
|
3768
|
-
return /* @__PURE__ */
|
|
4146
|
+
return /* @__PURE__ */ jsx28(
|
|
3769
4147
|
"button",
|
|
3770
4148
|
{
|
|
3771
4149
|
ref,
|
|
@@ -3779,13 +4157,13 @@ var TabsTrigger = React28.forwardRef(
|
|
|
3779
4157
|
disabled,
|
|
3780
4158
|
onClick: handleClick,
|
|
3781
4159
|
...restProps,
|
|
3782
|
-
children: /* @__PURE__ */
|
|
4160
|
+
children: /* @__PURE__ */ jsx28("span", { className: "pl-3 pr-6 py-2", children })
|
|
3783
4161
|
}
|
|
3784
4162
|
);
|
|
3785
4163
|
}
|
|
3786
4164
|
);
|
|
3787
4165
|
TabsTrigger.displayName = "TabsTrigger";
|
|
3788
|
-
var TabsContent =
|
|
4166
|
+
var TabsContent = React31.forwardRef(
|
|
3789
4167
|
(props, ref) => {
|
|
3790
4168
|
const { className, value, children, ...restProps } = props;
|
|
3791
4169
|
const { activeTab } = useTabsContext();
|
|
@@ -3796,7 +4174,7 @@ var TabsContent = React28.forwardRef(
|
|
|
3796
4174
|
if (!isActive) {
|
|
3797
4175
|
return null;
|
|
3798
4176
|
}
|
|
3799
|
-
return /* @__PURE__ */
|
|
4177
|
+
return /* @__PURE__ */ jsx28(
|
|
3800
4178
|
"div",
|
|
3801
4179
|
{
|
|
3802
4180
|
ref,
|
|
@@ -3814,11 +4192,11 @@ var TabsContent = React28.forwardRef(
|
|
|
3814
4192
|
TabsContent.displayName = "TabsContent";
|
|
3815
4193
|
|
|
3816
4194
|
// src/components/ui/dropdown-menu.tsx
|
|
3817
|
-
import * as
|
|
4195
|
+
import * as React32 from "react";
|
|
3818
4196
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
3819
|
-
import { jsx as
|
|
4197
|
+
import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
3820
4198
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
3821
|
-
var DropdownMenuTrigger =
|
|
4199
|
+
var DropdownMenuTrigger = React32.forwardRef(({ className, icon, children, ...props }, ref) => /* @__PURE__ */ jsxs16(
|
|
3822
4200
|
DropdownMenuPrimitive.Trigger,
|
|
3823
4201
|
{
|
|
3824
4202
|
ref,
|
|
@@ -3828,7 +4206,7 @@ var DropdownMenuTrigger = React29.forwardRef(({ className, icon, children, ...pr
|
|
|
3828
4206
|
),
|
|
3829
4207
|
...props,
|
|
3830
4208
|
children: [
|
|
3831
|
-
icon || /* @__PURE__ */
|
|
4209
|
+
icon || /* @__PURE__ */ jsx29(MoreMenuIcon, {}),
|
|
3832
4210
|
children
|
|
3833
4211
|
]
|
|
3834
4212
|
}
|
|
@@ -3838,7 +4216,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
|
3838
4216
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
3839
4217
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
3840
4218
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
3841
|
-
var DropdownMenuSubTrigger =
|
|
4219
|
+
var DropdownMenuSubTrigger = React32.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs16(
|
|
3842
4220
|
DropdownMenuPrimitive.SubTrigger,
|
|
3843
4221
|
{
|
|
3844
4222
|
ref,
|
|
@@ -3851,12 +4229,12 @@ var DropdownMenuSubTrigger = React29.forwardRef(({ className, inset, children, .
|
|
|
3851
4229
|
...props,
|
|
3852
4230
|
children: [
|
|
3853
4231
|
children,
|
|
3854
|
-
/* @__PURE__ */
|
|
4232
|
+
/* @__PURE__ */ jsx29(ArrowRightIcon, { className: "ml-auto" })
|
|
3855
4233
|
]
|
|
3856
4234
|
}
|
|
3857
4235
|
));
|
|
3858
4236
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
3859
|
-
var DropdownMenuSubContent =
|
|
4237
|
+
var DropdownMenuSubContent = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
|
|
3860
4238
|
DropdownMenuPrimitive.SubContent,
|
|
3861
4239
|
{
|
|
3862
4240
|
ref,
|
|
@@ -3868,7 +4246,7 @@ var DropdownMenuSubContent = React29.forwardRef(({ className, ...props }, ref) =
|
|
|
3868
4246
|
}
|
|
3869
4247
|
));
|
|
3870
4248
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
3871
|
-
var DropdownMenuContent =
|
|
4249
|
+
var DropdownMenuContent = React32.forwardRef(({ className, sideOffset = 4, align = "end", ...props }, ref) => /* @__PURE__ */ jsx29(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx29(
|
|
3872
4250
|
DropdownMenuPrimitive.Content,
|
|
3873
4251
|
{
|
|
3874
4252
|
ref,
|
|
@@ -3882,7 +4260,7 @@ var DropdownMenuContent = React29.forwardRef(({ className, sideOffset = 4, align
|
|
|
3882
4260
|
}
|
|
3883
4261
|
) }));
|
|
3884
4262
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
3885
|
-
var DropdownMenuItem =
|
|
4263
|
+
var DropdownMenuItem = React32.forwardRef(({ className, inset, style, ...props }, ref) => /* @__PURE__ */ jsx29(
|
|
3886
4264
|
DropdownMenuPrimitive.Item,
|
|
3887
4265
|
{
|
|
3888
4266
|
ref,
|
|
@@ -3899,7 +4277,7 @@ var DropdownMenuItem = React29.forwardRef(({ className, inset, style, ...props }
|
|
|
3899
4277
|
}
|
|
3900
4278
|
));
|
|
3901
4279
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
3902
|
-
var DropdownMenuCheckboxItem =
|
|
4280
|
+
var DropdownMenuCheckboxItem = React32.forwardRef(({ className, children, style, checked, ...props }, ref) => /* @__PURE__ */ jsxs16(
|
|
3903
4281
|
DropdownMenuPrimitive.CheckboxItem,
|
|
3904
4282
|
{
|
|
3905
4283
|
ref,
|
|
@@ -3914,7 +4292,7 @@ var DropdownMenuCheckboxItem = React29.forwardRef(({ className, children, style,
|
|
|
3914
4292
|
},
|
|
3915
4293
|
...props,
|
|
3916
4294
|
children: [
|
|
3917
|
-
/* @__PURE__ */
|
|
4295
|
+
/* @__PURE__ */ jsx29(
|
|
3918
4296
|
Checkbox,
|
|
3919
4297
|
{
|
|
3920
4298
|
checked: checked === true,
|
|
@@ -3922,12 +4300,12 @@ var DropdownMenuCheckboxItem = React29.forwardRef(({ className, children, style,
|
|
|
3922
4300
|
"aria-hidden": "true"
|
|
3923
4301
|
}
|
|
3924
4302
|
),
|
|
3925
|
-
/* @__PURE__ */
|
|
4303
|
+
/* @__PURE__ */ jsx29("span", { className: "flex-1", children })
|
|
3926
4304
|
]
|
|
3927
4305
|
}
|
|
3928
4306
|
));
|
|
3929
4307
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
3930
|
-
var DropdownMenuRadioItem =
|
|
4308
|
+
var DropdownMenuRadioItem = React32.forwardRef(({ className, children, style, ...props }, ref) => /* @__PURE__ */ jsxs16(
|
|
3931
4309
|
DropdownMenuPrimitive.RadioItem,
|
|
3932
4310
|
{
|
|
3933
4311
|
ref,
|
|
@@ -3941,13 +4319,13 @@ var DropdownMenuRadioItem = React29.forwardRef(({ className, children, style, ..
|
|
|
3941
4319
|
},
|
|
3942
4320
|
...props,
|
|
3943
4321
|
children: [
|
|
3944
|
-
/* @__PURE__ */
|
|
4322
|
+
/* @__PURE__ */ jsx29("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx29(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx29("span", { className: "h-2 w-2 rounded-full bg-current" }) }) }),
|
|
3945
4323
|
children
|
|
3946
4324
|
]
|
|
3947
4325
|
}
|
|
3948
4326
|
));
|
|
3949
4327
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
3950
|
-
var DropdownMenuLabel =
|
|
4328
|
+
var DropdownMenuLabel = React32.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx29(
|
|
3951
4329
|
DropdownMenuPrimitive.Label,
|
|
3952
4330
|
{
|
|
3953
4331
|
ref,
|
|
@@ -3960,7 +4338,7 @@ var DropdownMenuLabel = React29.forwardRef(({ className, inset, ...props }, ref)
|
|
|
3960
4338
|
}
|
|
3961
4339
|
));
|
|
3962
4340
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
3963
|
-
var DropdownMenuSeparator =
|
|
4341
|
+
var DropdownMenuSeparator = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
|
|
3964
4342
|
DropdownMenuPrimitive.Separator,
|
|
3965
4343
|
{
|
|
3966
4344
|
ref,
|
|
@@ -3973,7 +4351,7 @@ var DropdownMenuShortcut = ({
|
|
|
3973
4351
|
className,
|
|
3974
4352
|
...props
|
|
3975
4353
|
}) => {
|
|
3976
|
-
return /* @__PURE__ */
|
|
4354
|
+
return /* @__PURE__ */ jsx29(
|
|
3977
4355
|
"span",
|
|
3978
4356
|
{
|
|
3979
4357
|
className: cn("ml-auto text-xs tracking-widest opacity-60", className),
|
|
@@ -3984,21 +4362,21 @@ var DropdownMenuShortcut = ({
|
|
|
3984
4362
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
3985
4363
|
|
|
3986
4364
|
// src/components/ui/charts/chart-legend.tsx
|
|
3987
|
-
import { jsx as
|
|
4365
|
+
import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3988
4366
|
function ChartLegend({
|
|
3989
4367
|
items,
|
|
3990
4368
|
x = 0,
|
|
3991
4369
|
y = 550,
|
|
3992
4370
|
className = ""
|
|
3993
4371
|
}) {
|
|
3994
|
-
return /* @__PURE__ */
|
|
4372
|
+
return /* @__PURE__ */ jsx30("foreignObject", { x, y, width: "100%", height: "40", children: /* @__PURE__ */ jsx30(
|
|
3995
4373
|
"div",
|
|
3996
4374
|
{
|
|
3997
4375
|
className: `flex justify-center items-center gap-6 ${className}`,
|
|
3998
4376
|
style: { height: "100%" },
|
|
3999
|
-
children: items.map(({ key, color, label }) => /* @__PURE__ */
|
|
4000
|
-
/* @__PURE__ */
|
|
4001
|
-
/* @__PURE__ */
|
|
4377
|
+
children: items.map(({ key, color, label }) => /* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-2", children: [
|
|
4378
|
+
/* @__PURE__ */ jsx30("div", { className: "w-3 h-3", style: { backgroundColor: color } }),
|
|
4379
|
+
/* @__PURE__ */ jsx30(Typography, { variant: "body-xs", children: label || key })
|
|
4002
4380
|
] }, key))
|
|
4003
4381
|
}
|
|
4004
4382
|
) });
|
|
@@ -4116,12 +4494,12 @@ var formatLargeNumber = (value) => {
|
|
|
4116
4494
|
};
|
|
4117
4495
|
|
|
4118
4496
|
// src/components/ui/charts/chart-labels.tsx
|
|
4119
|
-
import { jsx as
|
|
4497
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
4120
4498
|
var createCustomXAxisLabel = (text, yOffset = 40) => {
|
|
4121
4499
|
const CustomXAxisLabel = ({ viewBox }) => {
|
|
4122
4500
|
if (!viewBox) return null;
|
|
4123
4501
|
const { x, y, width } = viewBox;
|
|
4124
|
-
return /* @__PURE__ */
|
|
4502
|
+
return /* @__PURE__ */ jsx31("g", { children: /* @__PURE__ */ jsx31("foreignObject", { x, y: y + yOffset, width, height: 20, children: /* @__PURE__ */ jsx31("div", { className: "flex justify-center w-full", children: /* @__PURE__ */ jsx31(Typography, { variant: "label-xs-bold", className: "text-secondary", children: text }) }) }) });
|
|
4125
4503
|
};
|
|
4126
4504
|
CustomXAxisLabel.displayName = "CustomXAxisLabel";
|
|
4127
4505
|
return CustomXAxisLabel;
|
|
@@ -4131,7 +4509,7 @@ var createCustomYAxisLabel = (text, leftMargin) => {
|
|
|
4131
4509
|
if (!viewBox) return null;
|
|
4132
4510
|
const { x, y, height } = viewBox;
|
|
4133
4511
|
const offset = leftMargin ? leftMargin + 10 : 110;
|
|
4134
|
-
return /* @__PURE__ */
|
|
4512
|
+
return /* @__PURE__ */ jsx31("g", { children: /* @__PURE__ */ jsx31("foreignObject", { x: x - offset, y, width: 100, height, children: /* @__PURE__ */ jsx31("div", { className: "flex items-center justify-center h-full transform -rotate-90 whitespace-nowrap", children: /* @__PURE__ */ jsx31(Typography, { variant: "label-xs-bold", className: "text-secondary", children: text }) }) }) });
|
|
4135
4513
|
};
|
|
4136
4514
|
CustomYAxisLabel.displayName = "CustomYAxisLabel";
|
|
4137
4515
|
return CustomYAxisLabel;
|
|
@@ -4140,14 +4518,14 @@ var createCustomYAxisRightLabel = (text) => {
|
|
|
4140
4518
|
const CustomYAxisRightLabel = ({ viewBox }) => {
|
|
4141
4519
|
if (!viewBox) return null;
|
|
4142
4520
|
const { x, y, width, height } = viewBox;
|
|
4143
|
-
return /* @__PURE__ */
|
|
4521
|
+
return /* @__PURE__ */ jsx31("g", { children: /* @__PURE__ */ jsx31("foreignObject", { x: x + width - 70, y, width: 120, height, children: /* @__PURE__ */ jsx31("div", { className: "flex items-center justify-center h-full transform rotate-90 whitespace-nowrap", children: /* @__PURE__ */ jsx31(Typography, { variant: "label-xs-bold", className: "text-secondary", children: text }) }) }) });
|
|
4144
4522
|
};
|
|
4145
4523
|
CustomYAxisRightLabel.displayName = "CustomYAxisRightLabel";
|
|
4146
4524
|
return CustomYAxisRightLabel;
|
|
4147
4525
|
};
|
|
4148
4526
|
var customXAxisTick = (props) => {
|
|
4149
4527
|
const { x, y, payload } = props;
|
|
4150
|
-
return /* @__PURE__ */
|
|
4528
|
+
return /* @__PURE__ */ jsx31("g", { transform: `translate(${x},${y})`, children: /* @__PURE__ */ jsx31(
|
|
4151
4529
|
"foreignObject",
|
|
4152
4530
|
{
|
|
4153
4531
|
x: -20,
|
|
@@ -4155,12 +4533,12 @@ var customXAxisTick = (props) => {
|
|
|
4155
4533
|
width: 40,
|
|
4156
4534
|
height: 20,
|
|
4157
4535
|
style: { overflow: "visible" },
|
|
4158
|
-
children: /* @__PURE__ */
|
|
4536
|
+
children: /* @__PURE__ */ jsx31(
|
|
4159
4537
|
"div",
|
|
4160
4538
|
{
|
|
4161
4539
|
className: "flex items-start justify-center h-full",
|
|
4162
4540
|
style: { overflow: "visible" },
|
|
4163
|
-
children: /* @__PURE__ */
|
|
4541
|
+
children: /* @__PURE__ */ jsx31(
|
|
4164
4542
|
Typography,
|
|
4165
4543
|
{
|
|
4166
4544
|
variant: "body-xs",
|
|
@@ -4175,7 +4553,7 @@ var customXAxisTick = (props) => {
|
|
|
4175
4553
|
};
|
|
4176
4554
|
var customXAxisTickRotated = (props) => {
|
|
4177
4555
|
const { x, y, payload } = props;
|
|
4178
|
-
return /* @__PURE__ */
|
|
4556
|
+
return /* @__PURE__ */ jsx31("g", { transform: `translate(${x},${y})`, children: /* @__PURE__ */ jsx31(
|
|
4179
4557
|
"text",
|
|
4180
4558
|
{
|
|
4181
4559
|
x: 0,
|
|
@@ -4194,25 +4572,25 @@ var customYAxisTick = (props) => {
|
|
|
4194
4572
|
const { x, y, payload } = props;
|
|
4195
4573
|
const text = String(payload.value);
|
|
4196
4574
|
const estimatedWidth = Math.max(text.length * 8, 80);
|
|
4197
|
-
return /* @__PURE__ */
|
|
4575
|
+
return /* @__PURE__ */ jsx31(
|
|
4198
4576
|
"foreignObject",
|
|
4199
4577
|
{
|
|
4200
4578
|
x: x - estimatedWidth + 5,
|
|
4201
4579
|
y: y - 6,
|
|
4202
4580
|
width: estimatedWidth,
|
|
4203
4581
|
height: 15,
|
|
4204
|
-
children: /* @__PURE__ */
|
|
4582
|
+
children: /* @__PURE__ */ jsx31("div", { className: "flex justify-end w-full", children: /* @__PURE__ */ jsx31(Typography, { variant: "body-xs", className: "text-secondary", children: payload.value }) })
|
|
4205
4583
|
}
|
|
4206
4584
|
);
|
|
4207
4585
|
};
|
|
4208
4586
|
|
|
4209
4587
|
// src/components/ui/charts/chart-tooltip.tsx
|
|
4210
|
-
import { Fragment as Fragment2, jsx as
|
|
4588
|
+
import { Fragment as Fragment2, jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
4211
4589
|
function TooltipContainer({
|
|
4212
4590
|
children,
|
|
4213
4591
|
className = ""
|
|
4214
4592
|
}) {
|
|
4215
|
-
return /* @__PURE__ */
|
|
4593
|
+
return /* @__PURE__ */ jsx32(
|
|
4216
4594
|
"div",
|
|
4217
4595
|
{
|
|
4218
4596
|
className: `bg-light border border-subtle rounded p-2.5 text-dark ${className}`,
|
|
@@ -4226,10 +4604,10 @@ function TooltipItem({
|
|
|
4226
4604
|
value,
|
|
4227
4605
|
className = ""
|
|
4228
4606
|
}) {
|
|
4229
|
-
return /* @__PURE__ */
|
|
4230
|
-
/* @__PURE__ */
|
|
4231
|
-
/* @__PURE__ */
|
|
4232
|
-
/* @__PURE__ */
|
|
4607
|
+
return /* @__PURE__ */ jsxs18(Fragment2, { children: [
|
|
4608
|
+
/* @__PURE__ */ jsx32("br", {}),
|
|
4609
|
+
/* @__PURE__ */ jsxs18(Typography, { variant: "label-sm", className, children: [
|
|
4610
|
+
/* @__PURE__ */ jsx32(
|
|
4233
4611
|
"span",
|
|
4234
4612
|
{
|
|
4235
4613
|
className: "inline-block w-3 h-3 mr-1.5",
|
|
@@ -4247,9 +4625,9 @@ function GenericTooltip({
|
|
|
4247
4625
|
items,
|
|
4248
4626
|
className = ""
|
|
4249
4627
|
}) {
|
|
4250
|
-
return /* @__PURE__ */
|
|
4251
|
-
title && /* @__PURE__ */
|
|
4252
|
-
items.map((item, index) => /* @__PURE__ */
|
|
4628
|
+
return /* @__PURE__ */ jsxs18(TooltipContainer, { className, children: [
|
|
4629
|
+
title && /* @__PURE__ */ jsx32(Typography, { variant: "label-sm-bold", children: title }),
|
|
4630
|
+
items.map((item, index) => /* @__PURE__ */ jsx32(
|
|
4253
4631
|
TooltipItem,
|
|
4254
4632
|
{
|
|
4255
4633
|
color: item.color,
|
|
@@ -4262,7 +4640,7 @@ function GenericTooltip({
|
|
|
4262
4640
|
}
|
|
4263
4641
|
|
|
4264
4642
|
// src/components/ui/charts/bar-chart.tsx
|
|
4265
|
-
import { forwardRef as
|
|
4643
|
+
import { forwardRef as forwardRef24 } from "react";
|
|
4266
4644
|
import {
|
|
4267
4645
|
BarChart as RechartsBarChart,
|
|
4268
4646
|
Bar,
|
|
@@ -4271,8 +4649,8 @@ import {
|
|
|
4271
4649
|
Tooltip as Tooltip2,
|
|
4272
4650
|
ResponsiveContainer
|
|
4273
4651
|
} from "recharts";
|
|
4274
|
-
import { jsx as
|
|
4275
|
-
var BarChart =
|
|
4652
|
+
import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
4653
|
+
var BarChart = forwardRef24(
|
|
4276
4654
|
({
|
|
4277
4655
|
data,
|
|
4278
4656
|
xAxisKey,
|
|
@@ -4298,19 +4676,19 @@ var BarChart = forwardRef21(
|
|
|
4298
4676
|
};
|
|
4299
4677
|
const defaultLegendItems = showLegend && legendItems.length === 0 ? [{ key: yAxisKey, color: barColor, label: yAxisKey }] : legendItems;
|
|
4300
4678
|
const hasData = data && data.length > 0;
|
|
4301
|
-
return /* @__PURE__ */
|
|
4679
|
+
return /* @__PURE__ */ jsxs19(
|
|
4302
4680
|
"div",
|
|
4303
4681
|
{
|
|
4304
4682
|
ref,
|
|
4305
4683
|
className: `bg-light border border-subtle mx-6 ${className}`,
|
|
4306
4684
|
children: [
|
|
4307
|
-
/* @__PURE__ */
|
|
4308
|
-
/* @__PURE__ */
|
|
4685
|
+
/* @__PURE__ */ jsx33("div", { className: "flex items-center justify-between px-3 py-2 border-b border-subtle", children: /* @__PURE__ */ jsx33(Typography, { variant: "label-sm-bold", children: title }) }),
|
|
4686
|
+
/* @__PURE__ */ jsx33("div", { className: "pt-2 px-2", children: hasData ? /* @__PURE__ */ jsx33(
|
|
4309
4687
|
ResponsiveContainer,
|
|
4310
4688
|
{
|
|
4311
4689
|
width: "100%",
|
|
4312
4690
|
height: CHART_CONSTANTS.STANDARD_HEIGHT,
|
|
4313
|
-
children: /* @__PURE__ */
|
|
4691
|
+
children: /* @__PURE__ */ jsxs19(
|
|
4314
4692
|
RechartsBarChart,
|
|
4315
4693
|
{
|
|
4316
4694
|
data,
|
|
@@ -4322,7 +4700,7 @@ var BarChart = forwardRef21(
|
|
|
4322
4700
|
onClick: handleClick,
|
|
4323
4701
|
layout,
|
|
4324
4702
|
children: [
|
|
4325
|
-
/* @__PURE__ */
|
|
4703
|
+
/* @__PURE__ */ jsx33(
|
|
4326
4704
|
XAxis,
|
|
4327
4705
|
{
|
|
4328
4706
|
dataKey: xAxisKey,
|
|
@@ -4336,7 +4714,7 @@ var BarChart = forwardRef21(
|
|
|
4336
4714
|
label: xAxisLabel ? createCustomXAxisLabel(xAxisLabel, 80) : void 0
|
|
4337
4715
|
}
|
|
4338
4716
|
),
|
|
4339
|
-
/* @__PURE__ */
|
|
4717
|
+
/* @__PURE__ */ jsx33(
|
|
4340
4718
|
YAxis,
|
|
4341
4719
|
{
|
|
4342
4720
|
axisLine: false,
|
|
@@ -4347,7 +4725,7 @@ var BarChart = forwardRef21(
|
|
|
4347
4725
|
type: yAxisType
|
|
4348
4726
|
}
|
|
4349
4727
|
),
|
|
4350
|
-
/* @__PURE__ */
|
|
4728
|
+
/* @__PURE__ */ jsx33(
|
|
4351
4729
|
Tooltip2,
|
|
4352
4730
|
{
|
|
4353
4731
|
content: ({
|
|
@@ -4356,7 +4734,7 @@ var BarChart = forwardRef21(
|
|
|
4356
4734
|
label
|
|
4357
4735
|
}) => {
|
|
4358
4736
|
if (active && payload && payload.length) {
|
|
4359
|
-
return /* @__PURE__ */
|
|
4737
|
+
return /* @__PURE__ */ jsx33(
|
|
4360
4738
|
GenericTooltip,
|
|
4361
4739
|
{
|
|
4362
4740
|
title: label?.toString(),
|
|
@@ -4372,7 +4750,7 @@ var BarChart = forwardRef21(
|
|
|
4372
4750
|
}
|
|
4373
4751
|
}
|
|
4374
4752
|
),
|
|
4375
|
-
/* @__PURE__ */
|
|
4753
|
+
/* @__PURE__ */ jsx33(
|
|
4376
4754
|
Bar,
|
|
4377
4755
|
{
|
|
4378
4756
|
dataKey: barDataKey || yAxisKey,
|
|
@@ -4380,12 +4758,12 @@ var BarChart = forwardRef21(
|
|
|
4380
4758
|
name: barDataKey || yAxisKey
|
|
4381
4759
|
}
|
|
4382
4760
|
),
|
|
4383
|
-
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */
|
|
4761
|
+
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */ jsx33(ChartLegend, { items: defaultLegendItems })
|
|
4384
4762
|
]
|
|
4385
4763
|
}
|
|
4386
4764
|
)
|
|
4387
4765
|
}
|
|
4388
|
-
) : /* @__PURE__ */
|
|
4766
|
+
) : /* @__PURE__ */ jsx33("div", { className: "flex items-center justify-center h-[500px]", children: /* @__PURE__ */ jsx33(Typography, { variant: "body-md", className: "text-secondary", children: "No data is available" }) }) })
|
|
4389
4767
|
]
|
|
4390
4768
|
}
|
|
4391
4769
|
);
|
|
@@ -4394,7 +4772,7 @@ var BarChart = forwardRef21(
|
|
|
4394
4772
|
BarChart.displayName = "BarChart";
|
|
4395
4773
|
|
|
4396
4774
|
// src/components/ui/charts/line-chart.tsx
|
|
4397
|
-
import { forwardRef as
|
|
4775
|
+
import { forwardRef as forwardRef25 } from "react";
|
|
4398
4776
|
import {
|
|
4399
4777
|
LineChart as RechartsLineChart,
|
|
4400
4778
|
Line,
|
|
@@ -4403,8 +4781,8 @@ import {
|
|
|
4403
4781
|
Tooltip as Tooltip3,
|
|
4404
4782
|
ResponsiveContainer as ResponsiveContainer2
|
|
4405
4783
|
} from "recharts";
|
|
4406
|
-
import { jsx as
|
|
4407
|
-
var LineChart =
|
|
4784
|
+
import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
4785
|
+
var LineChart = forwardRef25(
|
|
4408
4786
|
({
|
|
4409
4787
|
data,
|
|
4410
4788
|
xAxisKey,
|
|
@@ -4432,19 +4810,19 @@ var LineChart = forwardRef22(
|
|
|
4432
4810
|
)
|
|
4433
4811
|
);
|
|
4434
4812
|
const hasData = data && data.length > 0;
|
|
4435
|
-
return /* @__PURE__ */
|
|
4813
|
+
return /* @__PURE__ */ jsxs20(
|
|
4436
4814
|
"div",
|
|
4437
4815
|
{
|
|
4438
4816
|
ref,
|
|
4439
4817
|
className: `bg-light border border-subtle mx-6 ${className}`,
|
|
4440
4818
|
children: [
|
|
4441
|
-
/* @__PURE__ */
|
|
4442
|
-
/* @__PURE__ */
|
|
4819
|
+
/* @__PURE__ */ jsx34("div", { className: "flex items-center justify-between px-3 py-2 border-b border-subtle", children: /* @__PURE__ */ jsx34(Typography, { variant: "label-sm-bold", children: title }) }),
|
|
4820
|
+
/* @__PURE__ */ jsx34("div", { className: "pt-2 px-2", children: hasData ? /* @__PURE__ */ jsx34(
|
|
4443
4821
|
ResponsiveContainer2,
|
|
4444
4822
|
{
|
|
4445
4823
|
width: "100%",
|
|
4446
4824
|
height: CHART_CONSTANTS.STANDARD_HEIGHT,
|
|
4447
|
-
children: /* @__PURE__ */
|
|
4825
|
+
children: /* @__PURE__ */ jsxs20(
|
|
4448
4826
|
RechartsLineChart,
|
|
4449
4827
|
{
|
|
4450
4828
|
data,
|
|
@@ -4455,7 +4833,7 @@ var LineChart = forwardRef22(
|
|
|
4455
4833
|
},
|
|
4456
4834
|
onClick: handleClick,
|
|
4457
4835
|
children: [
|
|
4458
|
-
/* @__PURE__ */
|
|
4836
|
+
/* @__PURE__ */ jsx34(
|
|
4459
4837
|
XAxis2,
|
|
4460
4838
|
{
|
|
4461
4839
|
dataKey: xAxisKey,
|
|
@@ -4467,7 +4845,7 @@ var LineChart = forwardRef22(
|
|
|
4467
4845
|
label: xAxisLabel ? createCustomXAxisLabel(xAxisLabel) : void 0
|
|
4468
4846
|
}
|
|
4469
4847
|
),
|
|
4470
|
-
/* @__PURE__ */
|
|
4848
|
+
/* @__PURE__ */ jsx34(
|
|
4471
4849
|
YAxis2,
|
|
4472
4850
|
{
|
|
4473
4851
|
axisLine: false,
|
|
@@ -4476,7 +4854,7 @@ var LineChart = forwardRef22(
|
|
|
4476
4854
|
label: yAxisLabel ? createCustomYAxisLabel(yAxisLabel, 40) : void 0
|
|
4477
4855
|
}
|
|
4478
4856
|
),
|
|
4479
|
-
/* @__PURE__ */
|
|
4857
|
+
/* @__PURE__ */ jsx34(
|
|
4480
4858
|
Tooltip3,
|
|
4481
4859
|
{
|
|
4482
4860
|
content: ({
|
|
@@ -4485,7 +4863,7 @@ var LineChart = forwardRef22(
|
|
|
4485
4863
|
label
|
|
4486
4864
|
}) => {
|
|
4487
4865
|
if (active && payload && payload.length) {
|
|
4488
|
-
return /* @__PURE__ */
|
|
4866
|
+
return /* @__PURE__ */ jsx34(
|
|
4489
4867
|
GenericTooltip,
|
|
4490
4868
|
{
|
|
4491
4869
|
title: label?.toString(),
|
|
@@ -4501,7 +4879,7 @@ var LineChart = forwardRef22(
|
|
|
4501
4879
|
}
|
|
4502
4880
|
}
|
|
4503
4881
|
),
|
|
4504
|
-
series.map((s, index) => /* @__PURE__ */
|
|
4882
|
+
series.map((s, index) => /* @__PURE__ */ jsx34(
|
|
4505
4883
|
Line,
|
|
4506
4884
|
{
|
|
4507
4885
|
type: "monotone",
|
|
@@ -4513,12 +4891,12 @@ var LineChart = forwardRef22(
|
|
|
4513
4891
|
},
|
|
4514
4892
|
s.dataKey
|
|
4515
4893
|
)),
|
|
4516
|
-
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */
|
|
4894
|
+
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */ jsx34(ChartLegend, { items: defaultLegendItems })
|
|
4517
4895
|
]
|
|
4518
4896
|
}
|
|
4519
4897
|
)
|
|
4520
4898
|
}
|
|
4521
|
-
) : /* @__PURE__ */
|
|
4899
|
+
) : /* @__PURE__ */ jsx34("div", { className: "flex items-center justify-center h-[500px]", children: /* @__PURE__ */ jsx34(Typography, { variant: "body-md", className: "text-secondary", children: "No data is available" }) }) })
|
|
4522
4900
|
]
|
|
4523
4901
|
}
|
|
4524
4902
|
);
|
|
@@ -4527,10 +4905,10 @@ var LineChart = forwardRef22(
|
|
|
4527
4905
|
LineChart.displayName = "LineChart";
|
|
4528
4906
|
|
|
4529
4907
|
// src/components/ui/charts/pie-chart.tsx
|
|
4530
|
-
import { forwardRef as
|
|
4908
|
+
import { forwardRef as forwardRef26 } from "react";
|
|
4531
4909
|
import { PieChart as RechartsPieChart, Pie, Cell, Tooltip as Tooltip4 } from "recharts";
|
|
4532
|
-
import { jsx as
|
|
4533
|
-
var PieChart =
|
|
4910
|
+
import { jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
4911
|
+
var PieChart = forwardRef26(
|
|
4534
4912
|
({
|
|
4535
4913
|
data,
|
|
4536
4914
|
title,
|
|
@@ -4557,20 +4935,20 @@ var PieChart = forwardRef23(
|
|
|
4557
4935
|
)
|
|
4558
4936
|
);
|
|
4559
4937
|
const hasData = data && data.length > 0;
|
|
4560
|
-
return /* @__PURE__ */
|
|
4938
|
+
return /* @__PURE__ */ jsxs21(
|
|
4561
4939
|
"div",
|
|
4562
4940
|
{
|
|
4563
4941
|
ref,
|
|
4564
4942
|
className: `bg-light border border-subtle mx-6 ${className}`,
|
|
4565
4943
|
children: [
|
|
4566
|
-
/* @__PURE__ */
|
|
4567
|
-
/* @__PURE__ */
|
|
4944
|
+
/* @__PURE__ */ jsx35("div", { className: "flex items-center justify-between px-3 py-2 border-b border-subtle", children: /* @__PURE__ */ jsx35(Typography, { variant: "label-sm-bold", children: title }) }),
|
|
4945
|
+
/* @__PURE__ */ jsx35("div", { className: "pt-2 px-2", children: hasData ? /* @__PURE__ */ jsx35("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxs21(
|
|
4568
4946
|
RechartsPieChart,
|
|
4569
4947
|
{
|
|
4570
4948
|
width: 600,
|
|
4571
4949
|
height: CHART_CONSTANTS.LARGE_HEIGHT,
|
|
4572
4950
|
children: [
|
|
4573
|
-
/* @__PURE__ */
|
|
4951
|
+
/* @__PURE__ */ jsx35(
|
|
4574
4952
|
Pie,
|
|
4575
4953
|
{
|
|
4576
4954
|
data,
|
|
@@ -4582,7 +4960,7 @@ var PieChart = forwardRef23(
|
|
|
4582
4960
|
label: showLabels,
|
|
4583
4961
|
labelLine: false,
|
|
4584
4962
|
onClick: handleClick,
|
|
4585
|
-
children: data.map((entry, index) => /* @__PURE__ */
|
|
4963
|
+
children: data.map((entry, index) => /* @__PURE__ */ jsx35(
|
|
4586
4964
|
Cell,
|
|
4587
4965
|
{
|
|
4588
4966
|
fill: entry.color || getSeriesColor(index)
|
|
@@ -4591,7 +4969,7 @@ var PieChart = forwardRef23(
|
|
|
4591
4969
|
))
|
|
4592
4970
|
}
|
|
4593
4971
|
),
|
|
4594
|
-
/* @__PURE__ */
|
|
4972
|
+
/* @__PURE__ */ jsx35(
|
|
4595
4973
|
Tooltip4,
|
|
4596
4974
|
{
|
|
4597
4975
|
content: ({
|
|
@@ -4600,7 +4978,7 @@ var PieChart = forwardRef23(
|
|
|
4600
4978
|
}) => {
|
|
4601
4979
|
if (active && payload && payload.length && payload[0]) {
|
|
4602
4980
|
const data2 = payload[0].payload;
|
|
4603
|
-
return /* @__PURE__ */
|
|
4981
|
+
return /* @__PURE__ */ jsx35(
|
|
4604
4982
|
GenericTooltip,
|
|
4605
4983
|
{
|
|
4606
4984
|
title: data2.name,
|
|
@@ -4618,10 +4996,10 @@ var PieChart = forwardRef23(
|
|
|
4618
4996
|
}
|
|
4619
4997
|
}
|
|
4620
4998
|
),
|
|
4621
|
-
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */
|
|
4999
|
+
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */ jsx35(ChartLegend, { items: defaultLegendItems, y: 400 })
|
|
4622
5000
|
]
|
|
4623
5001
|
}
|
|
4624
|
-
) }) : /* @__PURE__ */
|
|
5002
|
+
) }) : /* @__PURE__ */ jsx35("div", { className: "flex items-center justify-center h-[500px]", children: /* @__PURE__ */ jsx35(Typography, { variant: "body-md", className: "text-secondary", children: "No data is available" }) }) })
|
|
4625
5003
|
]
|
|
4626
5004
|
}
|
|
4627
5005
|
);
|
|
@@ -4634,7 +5012,7 @@ import { useCallback as useCallback9 } from "react";
|
|
|
4634
5012
|
import {
|
|
4635
5013
|
flexRender
|
|
4636
5014
|
} from "@tanstack/react-table";
|
|
4637
|
-
import { Fragment as Fragment3, jsx as
|
|
5015
|
+
import { Fragment as Fragment3, jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
4638
5016
|
function Table({
|
|
4639
5017
|
table,
|
|
4640
5018
|
className,
|
|
@@ -4664,15 +5042,15 @@ function Table({
|
|
|
4664
5042
|
},
|
|
4665
5043
|
[table]
|
|
4666
5044
|
);
|
|
4667
|
-
return /* @__PURE__ */
|
|
4668
|
-
/* @__PURE__ */
|
|
4669
|
-
/* @__PURE__ */
|
|
5045
|
+
return /* @__PURE__ */ jsxs22("div", { children: [
|
|
5046
|
+
/* @__PURE__ */ jsx36("div", { className: cn("overflow-x-auto", className), children: /* @__PURE__ */ jsxs22("table", { className: "min-w-full divide-y divide-border", children: [
|
|
5047
|
+
/* @__PURE__ */ jsx36("thead", { className: "bg-dark text-light", children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx36("tr", { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx36("th", { className: "px-6 py-3 text-left", children: /* @__PURE__ */ jsxs22(
|
|
4670
5048
|
"div",
|
|
4671
5049
|
{
|
|
4672
5050
|
className: `flex items-center space-x-1 ${header.column.getCanSort() ? "cursor-pointer select-none" : ""}`,
|
|
4673
5051
|
onClick: header.column.getToggleSortingHandler(),
|
|
4674
5052
|
children: [
|
|
4675
|
-
/* @__PURE__ */
|
|
5053
|
+
/* @__PURE__ */ jsx36(
|
|
4676
5054
|
Typography,
|
|
4677
5055
|
{
|
|
4678
5056
|
variant: "label-xs",
|
|
@@ -4683,19 +5061,19 @@ function Table({
|
|
|
4683
5061
|
)
|
|
4684
5062
|
}
|
|
4685
5063
|
),
|
|
4686
|
-
header.column.getCanSort() && /* @__PURE__ */
|
|
4687
|
-
header.column.getIsSorted() === "asc" && /* @__PURE__ */
|
|
4688
|
-
header.column.getIsSorted() === "desc" && /* @__PURE__ */
|
|
5064
|
+
header.column.getCanSort() && /* @__PURE__ */ jsxs22("span", { className: "ml-1", children: [
|
|
5065
|
+
header.column.getIsSorted() === "asc" && /* @__PURE__ */ jsx36(CaretUpIcon, { className: "text-light" }),
|
|
5066
|
+
header.column.getIsSorted() === "desc" && /* @__PURE__ */ jsx36(CaretDownIcon, { className: "text-light" })
|
|
4689
5067
|
] })
|
|
4690
5068
|
]
|
|
4691
5069
|
}
|
|
4692
5070
|
) }, header.id)) }, headerGroup.id)) }),
|
|
4693
|
-
/* @__PURE__ */
|
|
5071
|
+
/* @__PURE__ */ jsx36("tbody", { className: "bg-light divide-y divide-border", children: table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx36("tr", { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx36("td", { className: "px-6 py-4 whitespace-nowrap", children: /* @__PURE__ */ jsx36(Typography, { variant: "body-sm", children: flexRender(
|
|
4694
5072
|
cell.column.columnDef.cell,
|
|
4695
5073
|
cell.getContext()
|
|
4696
5074
|
) }) }, cell.id)) }, row.id)) })
|
|
4697
5075
|
] }) }),
|
|
4698
|
-
showPagination && /* @__PURE__ */
|
|
5076
|
+
showPagination && /* @__PURE__ */ jsxs22(
|
|
4699
5077
|
"div",
|
|
4700
5078
|
{
|
|
4701
5079
|
className: cn(
|
|
@@ -4703,9 +5081,9 @@ function Table({
|
|
|
4703
5081
|
paginationClassName
|
|
4704
5082
|
),
|
|
4705
5083
|
children: [
|
|
4706
|
-
/* @__PURE__ */
|
|
4707
|
-
/* @__PURE__ */
|
|
4708
|
-
/* @__PURE__ */
|
|
5084
|
+
/* @__PURE__ */ jsx36("div", { className: "flex items-center", children: /* @__PURE__ */ jsx36(Typography, { variant: "body-sm", className: "text-secondary", children: showingText }) }),
|
|
5085
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex items-center space-x-1", children: [
|
|
5086
|
+
/* @__PURE__ */ jsx36(
|
|
4709
5087
|
Button,
|
|
4710
5088
|
{
|
|
4711
5089
|
variant: "ghost",
|
|
@@ -4713,7 +5091,7 @@ function Table({
|
|
|
4713
5091
|
onClick: handlePreviousPage,
|
|
4714
5092
|
disabled: !table.getCanPreviousPage(),
|
|
4715
5093
|
className: "p-2",
|
|
4716
|
-
children: /* @__PURE__ */
|
|
5094
|
+
children: /* @__PURE__ */ jsx36(ArrowLeftIcon, {})
|
|
4717
5095
|
}
|
|
4718
5096
|
),
|
|
4719
5097
|
Array.from(
|
|
@@ -4730,7 +5108,7 @@ function Table({
|
|
|
4730
5108
|
pageNumber = currentPage - 2 + i;
|
|
4731
5109
|
}
|
|
4732
5110
|
const isActive = pageNumber === currentPage;
|
|
4733
|
-
return /* @__PURE__ */
|
|
5111
|
+
return /* @__PURE__ */ jsx36(
|
|
4734
5112
|
Button,
|
|
4735
5113
|
{
|
|
4736
5114
|
variant: isActive ? "default" : "ghost",
|
|
@@ -4743,11 +5121,11 @@ function Table({
|
|
|
4743
5121
|
);
|
|
4744
5122
|
}
|
|
4745
5123
|
),
|
|
4746
|
-
table.getPageCount() > 5 && currentPage < totalPages - 3 && /* @__PURE__ */
|
|
4747
|
-
/* @__PURE__ */
|
|
4748
|
-
/* @__PURE__ */
|
|
5124
|
+
table.getPageCount() > 5 && currentPage < totalPages - 3 && /* @__PURE__ */ jsxs22(Fragment3, { children: [
|
|
5125
|
+
/* @__PURE__ */ jsx36("span", { className: "px-1 text-secondary", children: "..." }),
|
|
5126
|
+
/* @__PURE__ */ jsx36(Typography, { variant: "body-sm", className: "text-secondary", children: totalPages })
|
|
4749
5127
|
] }),
|
|
4750
|
-
/* @__PURE__ */
|
|
5128
|
+
/* @__PURE__ */ jsx36(
|
|
4751
5129
|
Button,
|
|
4752
5130
|
{
|
|
4753
5131
|
variant: "ghost",
|
|
@@ -4755,12 +5133,12 @@ function Table({
|
|
|
4755
5133
|
onClick: handleNextPage,
|
|
4756
5134
|
disabled: !table.getCanNextPage(),
|
|
4757
5135
|
className: "p-2",
|
|
4758
|
-
children: /* @__PURE__ */
|
|
5136
|
+
children: /* @__PURE__ */ jsx36(ArrowRightIcon, {})
|
|
4759
5137
|
}
|
|
4760
5138
|
)
|
|
4761
5139
|
] }),
|
|
4762
|
-
/* @__PURE__ */
|
|
4763
|
-
/* @__PURE__ */
|
|
5140
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-3 w-48", children: [
|
|
5141
|
+
/* @__PURE__ */ jsx36(
|
|
4764
5142
|
Typography,
|
|
4765
5143
|
{
|
|
4766
5144
|
variant: "body-sm",
|
|
@@ -4768,14 +5146,14 @@ function Table({
|
|
|
4768
5146
|
children: "Rows per page:"
|
|
4769
5147
|
}
|
|
4770
5148
|
),
|
|
4771
|
-
/* @__PURE__ */
|
|
5149
|
+
/* @__PURE__ */ jsxs22(
|
|
4772
5150
|
Select,
|
|
4773
5151
|
{
|
|
4774
5152
|
value: table.getState().pagination.pageSize.toString(),
|
|
4775
5153
|
onValueChange: handlePageSizeChange,
|
|
4776
5154
|
children: [
|
|
4777
|
-
/* @__PURE__ */
|
|
4778
|
-
/* @__PURE__ */
|
|
5155
|
+
/* @__PURE__ */ jsx36(SelectTrigger, { className: "min-w-0 h-8", children: /* @__PURE__ */ jsx36(SelectValue, {}) }),
|
|
5156
|
+
/* @__PURE__ */ jsx36(SelectContent, { children: [10, 20, 50, 100].map((size) => /* @__PURE__ */ jsx36(SelectItem, { value: size.toString(), children: size }, size)) })
|
|
4779
5157
|
]
|
|
4780
5158
|
}
|
|
4781
5159
|
)
|
|
@@ -4827,6 +5205,15 @@ export {
|
|
|
4827
5205
|
CogIcon,
|
|
4828
5206
|
CredentialsIcon,
|
|
4829
5207
|
DatePicker,
|
|
5208
|
+
Dialog,
|
|
5209
|
+
DialogBody,
|
|
5210
|
+
DialogClose,
|
|
5211
|
+
DialogContent,
|
|
5212
|
+
DialogDescription,
|
|
5213
|
+
DialogFooter,
|
|
5214
|
+
DialogOverlay,
|
|
5215
|
+
DialogTitle,
|
|
5216
|
+
DialogTrigger,
|
|
4830
5217
|
DocumentIcon,
|
|
4831
5218
|
DollarIcon,
|
|
4832
5219
|
DownloadIcon,
|
|
@@ -4871,6 +5258,16 @@ export {
|
|
|
4871
5258
|
HomeIcon,
|
|
4872
5259
|
InformationIcon,
|
|
4873
5260
|
Input,
|
|
5261
|
+
Item2 as Item,
|
|
5262
|
+
ItemActions,
|
|
5263
|
+
ItemContent,
|
|
5264
|
+
ItemDescription,
|
|
5265
|
+
ItemFooter,
|
|
5266
|
+
ItemGroup,
|
|
5267
|
+
ItemHeader,
|
|
5268
|
+
ItemMedia,
|
|
5269
|
+
ItemSeparator,
|
|
5270
|
+
ItemTitle,
|
|
4874
5271
|
Label2 as Label,
|
|
4875
5272
|
LineChart,
|
|
4876
5273
|
LocationIcon,
|
|
@@ -4950,6 +5347,8 @@ export {
|
|
|
4950
5347
|
getPerformanceColor,
|
|
4951
5348
|
getSeriesColor,
|
|
4952
5349
|
initializePdfWorker,
|
|
5350
|
+
itemMediaVariants,
|
|
5351
|
+
itemVariants,
|
|
4953
5352
|
selectTriggerVariants,
|
|
4954
5353
|
switchVariants,
|
|
4955
5354
|
tabsVariants,
|