@northslopetech/altitude-ui 3.0.0-alpha.2 → 3.0.0-alpha.3
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 +20 -20
- package/dist/index.d.ts +20 -20
- package/dist/index.js +249 -245
- package/dist/index.mjs +554 -550
- package/package.json +12 -4
package/dist/index.js
CHANGED
|
@@ -224,68 +224,62 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
|
|
|
224
224
|
{
|
|
225
225
|
variants: {
|
|
226
226
|
variant: {
|
|
227
|
-
default: "
|
|
228
|
-
|
|
229
|
-
destructive: "
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
link: "bg-light text-dark underline underline-offset-4 hover:cursor-pointer active:text-info"
|
|
227
|
+
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",
|
|
228
|
+
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",
|
|
229
|
+
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",
|
|
230
|
+
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",
|
|
231
|
+
link: "h-6 px-0 py-0 rounded-sm text-default underline underline-offset-2 focus-visible:ring-2 focus-visible:ring-focus-default"
|
|
233
232
|
},
|
|
234
233
|
size: {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
234
|
+
default: "h-9 rounded-md px-4 py-2 type-label-sm-medium",
|
|
235
|
+
lg: "h-10 rounded-md px-4 py-2.5 type-label-md-medium",
|
|
236
|
+
sm: "h-8 rounded-sm px-3 py-1.5 type-label-sm-medium",
|
|
237
|
+
mini: "h-6 rounded-sm px-2 py-1 type-label-xs-medium"
|
|
239
238
|
}
|
|
240
239
|
},
|
|
241
|
-
compoundVariants: [
|
|
240
|
+
compoundVariants: [
|
|
241
|
+
{
|
|
242
|
+
variant: "link",
|
|
243
|
+
size: ["default", "sm"],
|
|
244
|
+
className: "type-body-sm-regular hover:type-body-sm-semibold active:type-body-sm-semibold"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
variant: "link",
|
|
248
|
+
size: "lg",
|
|
249
|
+
className: "type-body-md-regular hover:type-body-md-semibold active:type-body-md-semibold"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
variant: "link",
|
|
253
|
+
size: "mini",
|
|
254
|
+
className: "type-body-xs-regular hover:type-body-xs-semibold active:type-body-xs-semibold"
|
|
255
|
+
}
|
|
256
|
+
],
|
|
242
257
|
defaultVariants: {
|
|
243
258
|
variant: "default",
|
|
244
259
|
size: "default"
|
|
245
260
|
}
|
|
246
261
|
}
|
|
247
262
|
);
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
return { font: "var(--typography-label-sm-bold)" };
|
|
252
|
-
case "lg":
|
|
253
|
-
return { font: "var(--typography-label-lg-bold)" };
|
|
254
|
-
case "icon":
|
|
255
|
-
case "default":
|
|
256
|
-
default:
|
|
257
|
-
return { font: "var(--typography-label-md-bold)" };
|
|
258
|
-
}
|
|
259
|
-
}
|
|
263
|
+
var hasTextChildren = (children) => React.Children.toArray(children).some(
|
|
264
|
+
(child) => typeof child === "string" && child.trim().length > 0
|
|
265
|
+
);
|
|
260
266
|
var Button = React.forwardRef(
|
|
261
|
-
({
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
size,
|
|
266
|
-
icon,
|
|
267
|
-
iconPosition = "left",
|
|
268
|
-
children,
|
|
269
|
-
...props
|
|
270
|
-
}, ref) => {
|
|
271
|
-
const typographyStyles = getButtonTypographyStyles(size);
|
|
272
|
-
const tokenStyles = {
|
|
273
|
-
...typographyStyles,
|
|
274
|
-
...style
|
|
275
|
-
};
|
|
276
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
267
|
+
({ className, style, variant, size, children, ...props }, ref) => {
|
|
268
|
+
const isIconOnly = !hasTextChildren(children);
|
|
269
|
+
const iconOnlyClasses = isIconOnly ? "aspect-square px-0 py-0" : void 0;
|
|
270
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
277
271
|
import_button.Button,
|
|
278
272
|
{
|
|
279
273
|
"data-slot": "button",
|
|
280
|
-
className: cn(
|
|
281
|
-
|
|
274
|
+
className: cn(
|
|
275
|
+
buttonVariants({ variant, size }),
|
|
276
|
+
iconOnlyClasses,
|
|
277
|
+
className
|
|
278
|
+
),
|
|
279
|
+
style,
|
|
282
280
|
ref,
|
|
283
281
|
...props,
|
|
284
|
-
children
|
|
285
|
-
icon && iconPosition === "left" && icon,
|
|
286
|
-
children,
|
|
287
|
-
icon && iconPosition === "right" && icon
|
|
288
|
-
]
|
|
282
|
+
children
|
|
289
283
|
}
|
|
290
284
|
);
|
|
291
285
|
}
|
|
@@ -851,30 +845,29 @@ var import_react = require("react");
|
|
|
851
845
|
var import_class_variance_authority6 = require("class-variance-authority");
|
|
852
846
|
|
|
853
847
|
// src/components/ui/label.tsx
|
|
854
|
-
var
|
|
848
|
+
var React7 = __toESM(require("react"));
|
|
855
849
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
...props
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
}
|
|
850
|
+
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";
|
|
851
|
+
var Label2 = React7.forwardRef(
|
|
852
|
+
({ className, ...props }, ref) => {
|
|
853
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
854
|
+
"label",
|
|
855
|
+
{
|
|
856
|
+
ref,
|
|
857
|
+
"data-slot": "label",
|
|
858
|
+
className: cn(labelClasses, className),
|
|
859
|
+
...props
|
|
860
|
+
}
|
|
861
|
+
);
|
|
862
|
+
}
|
|
863
|
+
);
|
|
864
|
+
Label2.displayName = "Label";
|
|
872
865
|
|
|
873
866
|
// src/components/ui/separator.tsx
|
|
874
|
-
var
|
|
867
|
+
var React8 = __toESM(require("react"));
|
|
875
868
|
var import_separator = require("@base-ui/react/separator");
|
|
876
869
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
877
|
-
var Separator2 =
|
|
870
|
+
var Separator2 = React8.forwardRef(
|
|
878
871
|
({ className, orientation = "horizontal", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
879
872
|
import_separator.Separator,
|
|
880
873
|
{
|
|
@@ -1103,11 +1096,11 @@ function FieldError({
|
|
|
1103
1096
|
}
|
|
1104
1097
|
|
|
1105
1098
|
// src/components/ui/breadcrumb.tsx
|
|
1106
|
-
var
|
|
1099
|
+
var React9 = __toESM(require("react"));
|
|
1107
1100
|
var import_merge_props = require("@base-ui/react/merge-props");
|
|
1108
1101
|
var import_use_render = require("@base-ui/react/use-render");
|
|
1109
1102
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1110
|
-
var Breadcrumb =
|
|
1103
|
+
var Breadcrumb = React9.forwardRef(
|
|
1111
1104
|
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1112
1105
|
"nav",
|
|
1113
1106
|
{
|
|
@@ -1120,7 +1113,7 @@ var Breadcrumb = React8.forwardRef(
|
|
|
1120
1113
|
)
|
|
1121
1114
|
);
|
|
1122
1115
|
Breadcrumb.displayName = "Breadcrumb";
|
|
1123
|
-
var BreadcrumbList =
|
|
1116
|
+
var BreadcrumbList = React9.forwardRef(
|
|
1124
1117
|
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1125
1118
|
"ol",
|
|
1126
1119
|
{
|
|
@@ -1135,7 +1128,7 @@ var BreadcrumbList = React8.forwardRef(
|
|
|
1135
1128
|
)
|
|
1136
1129
|
);
|
|
1137
1130
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
1138
|
-
var BreadcrumbItem =
|
|
1131
|
+
var BreadcrumbItem = React9.forwardRef(
|
|
1139
1132
|
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1140
1133
|
"li",
|
|
1141
1134
|
{
|
|
@@ -1147,7 +1140,7 @@ var BreadcrumbItem = React8.forwardRef(
|
|
|
1147
1140
|
)
|
|
1148
1141
|
);
|
|
1149
1142
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
1150
|
-
var BreadcrumbLink =
|
|
1143
|
+
var BreadcrumbLink = React9.forwardRef(
|
|
1151
1144
|
({ className, render, ...props }, ref) => (0, import_use_render.useRender)({
|
|
1152
1145
|
ref,
|
|
1153
1146
|
defaultTagName: "a",
|
|
@@ -1164,7 +1157,7 @@ var BreadcrumbLink = React8.forwardRef(
|
|
|
1164
1157
|
})
|
|
1165
1158
|
);
|
|
1166
1159
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
1167
|
-
var BreadcrumbPage =
|
|
1160
|
+
var BreadcrumbPage = React9.forwardRef(
|
|
1168
1161
|
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1169
1162
|
"span",
|
|
1170
1163
|
{
|
|
@@ -1179,7 +1172,7 @@ var BreadcrumbPage = React8.forwardRef(
|
|
|
1179
1172
|
)
|
|
1180
1173
|
);
|
|
1181
1174
|
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
1182
|
-
var BreadcrumbSeparator =
|
|
1175
|
+
var BreadcrumbSeparator = React9.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1183
1176
|
"li",
|
|
1184
1177
|
{
|
|
1185
1178
|
"data-slot": "breadcrumb-separator",
|
|
@@ -1192,7 +1185,7 @@ var BreadcrumbSeparator = React8.forwardRef(({ children, className, ...props },
|
|
|
1192
1185
|
}
|
|
1193
1186
|
));
|
|
1194
1187
|
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
1195
|
-
var BreadcrumbEllipsis =
|
|
1188
|
+
var BreadcrumbEllipsis = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1196
1189
|
"span",
|
|
1197
1190
|
{
|
|
1198
1191
|
"data-slot": "breadcrumb-ellipsis",
|
|
@@ -1213,7 +1206,7 @@ var BreadcrumbEllipsis = React8.forwardRef(({ className, ...props }, ref) => /*
|
|
|
1213
1206
|
BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
|
|
1214
1207
|
|
|
1215
1208
|
// src/components/ui/tooltip.tsx
|
|
1216
|
-
var
|
|
1209
|
+
var React10 = __toESM(require("react"));
|
|
1217
1210
|
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
|
|
1218
1211
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1219
1212
|
function TooltipProvider({
|
|
@@ -1234,7 +1227,7 @@ function Tooltip({ delayDuration, ...props }) {
|
|
|
1234
1227
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TooltipProvider, { delayDuration, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
|
|
1235
1228
|
}
|
|
1236
1229
|
Tooltip.displayName = "Tooltip";
|
|
1237
|
-
var TooltipTrigger =
|
|
1230
|
+
var TooltipTrigger = React10.forwardRef(({ ...props }, ref) => {
|
|
1238
1231
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1239
1232
|
TooltipPrimitive.Trigger,
|
|
1240
1233
|
{
|
|
@@ -1245,7 +1238,7 @@ var TooltipTrigger = React9.forwardRef(({ ...props }, ref) => {
|
|
|
1245
1238
|
);
|
|
1246
1239
|
});
|
|
1247
1240
|
TooltipTrigger.displayName = "TooltipTrigger";
|
|
1248
|
-
var TooltipContent =
|
|
1241
|
+
var TooltipContent = React10.forwardRef(({ className, sideOffset = 2, children, ...props }, ref) => {
|
|
1249
1242
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
1250
1243
|
TooltipPrimitive.Content,
|
|
1251
1244
|
{
|
|
@@ -1267,21 +1260,21 @@ var TooltipContent = React9.forwardRef(({ className, sideOffset = 2, children, .
|
|
|
1267
1260
|
TooltipContent.displayName = "TooltipContent";
|
|
1268
1261
|
|
|
1269
1262
|
// src/components/ui/sidebar.tsx
|
|
1270
|
-
var
|
|
1263
|
+
var React11 = __toESM(require("react"));
|
|
1271
1264
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1272
1265
|
var SIDEBAR_CONSTANTS = {
|
|
1273
1266
|
WIDTH: "144px",
|
|
1274
1267
|
WIDTH_ICON: "48px"
|
|
1275
1268
|
};
|
|
1276
|
-
var SidebarContext =
|
|
1269
|
+
var SidebarContext = React11.createContext(null);
|
|
1277
1270
|
function useSidebar() {
|
|
1278
|
-
const context =
|
|
1271
|
+
const context = React11.useContext(SidebarContext);
|
|
1279
1272
|
if (!context) {
|
|
1280
1273
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
1281
1274
|
}
|
|
1282
1275
|
return context;
|
|
1283
1276
|
}
|
|
1284
|
-
var SidebarProvider =
|
|
1277
|
+
var SidebarProvider = React11.forwardRef(
|
|
1285
1278
|
({
|
|
1286
1279
|
defaultOpen = true,
|
|
1287
1280
|
open: openProp,
|
|
@@ -1291,9 +1284,9 @@ var SidebarProvider = React10.forwardRef(
|
|
|
1291
1284
|
children,
|
|
1292
1285
|
...props
|
|
1293
1286
|
}, ref) => {
|
|
1294
|
-
const [_open, _setOpen] =
|
|
1287
|
+
const [_open, _setOpen] = React11.useState(defaultOpen);
|
|
1295
1288
|
const open = openProp ?? _open;
|
|
1296
|
-
const setOpen =
|
|
1289
|
+
const setOpen = React11.useCallback(
|
|
1297
1290
|
(value) => {
|
|
1298
1291
|
const openState = typeof value === "function" ? value(open) : value;
|
|
1299
1292
|
if (setOpenProp) {
|
|
@@ -1304,11 +1297,11 @@ var SidebarProvider = React10.forwardRef(
|
|
|
1304
1297
|
},
|
|
1305
1298
|
[setOpenProp, open]
|
|
1306
1299
|
);
|
|
1307
|
-
const toggleSidebar =
|
|
1300
|
+
const toggleSidebar = React11.useCallback(() => {
|
|
1308
1301
|
return setOpen((open2) => !open2);
|
|
1309
1302
|
}, [setOpen]);
|
|
1310
1303
|
const state = open ? "expanded" : "collapsed";
|
|
1311
|
-
const contextValue =
|
|
1304
|
+
const contextValue = React11.useMemo(
|
|
1312
1305
|
() => ({
|
|
1313
1306
|
state,
|
|
1314
1307
|
open,
|
|
@@ -1337,7 +1330,7 @@ var SidebarProvider = React10.forwardRef(
|
|
|
1337
1330
|
}
|
|
1338
1331
|
);
|
|
1339
1332
|
SidebarProvider.displayName = "SidebarProvider";
|
|
1340
|
-
var Sidebar =
|
|
1333
|
+
var Sidebar = React11.forwardRef(
|
|
1341
1334
|
({ collapsible = "icon", className, children, ...props }, ref) => {
|
|
1342
1335
|
const { state } = useSidebar();
|
|
1343
1336
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
@@ -1385,7 +1378,7 @@ var Sidebar = React10.forwardRef(
|
|
|
1385
1378
|
}
|
|
1386
1379
|
);
|
|
1387
1380
|
Sidebar.displayName = "Sidebar";
|
|
1388
|
-
var SidebarInset =
|
|
1381
|
+
var SidebarInset = React11.forwardRef(
|
|
1389
1382
|
({ className, ...props }, ref) => {
|
|
1390
1383
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1391
1384
|
"main",
|
|
@@ -1401,7 +1394,7 @@ var SidebarInset = React10.forwardRef(
|
|
|
1401
1394
|
}
|
|
1402
1395
|
);
|
|
1403
1396
|
SidebarInset.displayName = "SidebarInset";
|
|
1404
|
-
var SidebarHeader =
|
|
1397
|
+
var SidebarHeader = React11.forwardRef(
|
|
1405
1398
|
({ className, ...props }, ref) => {
|
|
1406
1399
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1407
1400
|
"div",
|
|
@@ -1419,7 +1412,7 @@ var SidebarHeader = React10.forwardRef(
|
|
|
1419
1412
|
}
|
|
1420
1413
|
);
|
|
1421
1414
|
SidebarHeader.displayName = "SidebarHeader";
|
|
1422
|
-
var SidebarFooter =
|
|
1415
|
+
var SidebarFooter = React11.forwardRef(
|
|
1423
1416
|
({ className, ...props }, ref) => {
|
|
1424
1417
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1425
1418
|
"div",
|
|
@@ -1433,7 +1426,7 @@ var SidebarFooter = React10.forwardRef(
|
|
|
1433
1426
|
}
|
|
1434
1427
|
);
|
|
1435
1428
|
SidebarFooter.displayName = "SidebarFooter";
|
|
1436
|
-
var SidebarContent =
|
|
1429
|
+
var SidebarContent = React11.forwardRef(
|
|
1437
1430
|
({ className, ...props }, ref) => {
|
|
1438
1431
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1439
1432
|
"div",
|
|
@@ -1450,7 +1443,7 @@ var SidebarContent = React10.forwardRef(
|
|
|
1450
1443
|
}
|
|
1451
1444
|
);
|
|
1452
1445
|
SidebarContent.displayName = "SidebarContent";
|
|
1453
|
-
var SidebarGroup =
|
|
1446
|
+
var SidebarGroup = React11.forwardRef(
|
|
1454
1447
|
({ className, ...props }, ref) => {
|
|
1455
1448
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1456
1449
|
"div",
|
|
@@ -1464,7 +1457,7 @@ var SidebarGroup = React10.forwardRef(
|
|
|
1464
1457
|
}
|
|
1465
1458
|
);
|
|
1466
1459
|
SidebarGroup.displayName = "SidebarGroup";
|
|
1467
|
-
var SidebarGroupContent =
|
|
1460
|
+
var SidebarGroupContent = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1468
1461
|
"div",
|
|
1469
1462
|
{
|
|
1470
1463
|
ref,
|
|
@@ -1474,7 +1467,7 @@ var SidebarGroupContent = React10.forwardRef(({ className, ...props }, ref) => /
|
|
|
1474
1467
|
}
|
|
1475
1468
|
));
|
|
1476
1469
|
SidebarGroupContent.displayName = "SidebarGroupContent";
|
|
1477
|
-
var SidebarMenu =
|
|
1470
|
+
var SidebarMenu = React11.forwardRef(
|
|
1478
1471
|
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1479
1472
|
"ul",
|
|
1480
1473
|
{
|
|
@@ -1486,7 +1479,7 @@ var SidebarMenu = React10.forwardRef(
|
|
|
1486
1479
|
)
|
|
1487
1480
|
);
|
|
1488
1481
|
SidebarMenu.displayName = "SidebarMenu";
|
|
1489
|
-
var SidebarMenuItem =
|
|
1482
|
+
var SidebarMenuItem = React11.forwardRef(
|
|
1490
1483
|
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1491
1484
|
"li",
|
|
1492
1485
|
{
|
|
@@ -1498,7 +1491,7 @@ var SidebarMenuItem = React10.forwardRef(
|
|
|
1498
1491
|
)
|
|
1499
1492
|
);
|
|
1500
1493
|
SidebarMenuItem.displayName = "SidebarMenuItem";
|
|
1501
|
-
var SidebarMenuButton =
|
|
1494
|
+
var SidebarMenuButton = React11.forwardRef(({ isActive = false, tooltip, className, children, ...props }, ref) => {
|
|
1502
1495
|
const { state } = useSidebar();
|
|
1503
1496
|
const button = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1504
1497
|
"button",
|
|
@@ -1527,14 +1520,14 @@ var SidebarMenuButton = React10.forwardRef(({ isActive = false, tooltip, classNa
|
|
|
1527
1520
|
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
1528
1521
|
|
|
1529
1522
|
// src/components/ui/date-picker.tsx
|
|
1530
|
-
var
|
|
1523
|
+
var React13 = __toESM(require("react"));
|
|
1531
1524
|
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"));
|
|
1532
1525
|
|
|
1533
1526
|
// src/components/ui/input.tsx
|
|
1534
|
-
var
|
|
1527
|
+
var React12 = __toESM(require("react"));
|
|
1535
1528
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1536
1529
|
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";
|
|
1537
|
-
var Input =
|
|
1530
|
+
var Input = React12.forwardRef(
|
|
1538
1531
|
({
|
|
1539
1532
|
className,
|
|
1540
1533
|
style,
|
|
@@ -1545,7 +1538,7 @@ var Input = React11.forwardRef(
|
|
|
1545
1538
|
readOnly,
|
|
1546
1539
|
...props
|
|
1547
1540
|
}, ref) => {
|
|
1548
|
-
const [internalValue, setInternalValue] =
|
|
1541
|
+
const [internalValue, setInternalValue] = React12.useState(value || "");
|
|
1549
1542
|
const isControlled = value !== void 0;
|
|
1550
1543
|
const currentValue = isControlled ? value : internalValue;
|
|
1551
1544
|
const showClear = showClearProp !== false && currentValue && currentValue.toString().length > 0 && !readOnly;
|
|
@@ -1644,7 +1637,7 @@ var formatDateInput = (date) => {
|
|
|
1644
1637
|
day: "2-digit"
|
|
1645
1638
|
});
|
|
1646
1639
|
};
|
|
1647
|
-
var DatePicker =
|
|
1640
|
+
var DatePicker = React13.forwardRef(
|
|
1648
1641
|
({
|
|
1649
1642
|
value,
|
|
1650
1643
|
onValueChange,
|
|
@@ -1663,19 +1656,19 @@ var DatePicker = React12.forwardRef(
|
|
|
1663
1656
|
if (isNaN(parsed.getTime())) return void 0;
|
|
1664
1657
|
return parsed;
|
|
1665
1658
|
};
|
|
1666
|
-
const [selectedDate, setSelectedDate] =
|
|
1659
|
+
const [selectedDate, setSelectedDate] = React13.useState(
|
|
1667
1660
|
value || parseDate(defaultValue)
|
|
1668
1661
|
);
|
|
1669
|
-
const [currentMonth, setCurrentMonth] =
|
|
1662
|
+
const [currentMonth, setCurrentMonth] = React13.useState(() => {
|
|
1670
1663
|
const date = value || parseDate(defaultValue) || /* @__PURE__ */ new Date();
|
|
1671
1664
|
return new Date(date.getFullYear(), date.getMonth());
|
|
1672
1665
|
});
|
|
1673
|
-
const [open, setOpen] =
|
|
1674
|
-
const [inputValue, setInputValue] =
|
|
1666
|
+
const [open, setOpen] = React13.useState(false);
|
|
1667
|
+
const [inputValue, setInputValue] = React13.useState(() => {
|
|
1675
1668
|
const initialDate = value || parseDate(defaultValue);
|
|
1676
1669
|
return initialDate ? formatDateInput(initialDate) : "";
|
|
1677
1670
|
});
|
|
1678
|
-
|
|
1671
|
+
React13.useEffect(() => {
|
|
1679
1672
|
setSelectedDate(value);
|
|
1680
1673
|
if (value) {
|
|
1681
1674
|
setCurrentMonth(new Date(value.getFullYear(), value.getMonth()));
|
|
@@ -1686,7 +1679,7 @@ var DatePicker = React12.forwardRef(
|
|
|
1686
1679
|
setInputValue("");
|
|
1687
1680
|
}
|
|
1688
1681
|
}, [value]);
|
|
1689
|
-
|
|
1682
|
+
React13.useEffect(() => {
|
|
1690
1683
|
if (value) return;
|
|
1691
1684
|
const parsedDefault = parseDate(defaultValue);
|
|
1692
1685
|
if (!parsedDefault) return;
|
|
@@ -1939,7 +1932,7 @@ var DatePicker = React12.forwardRef(
|
|
|
1939
1932
|
DatePicker.displayName = "DatePicker";
|
|
1940
1933
|
|
|
1941
1934
|
// src/components/ui/upload.tsx
|
|
1942
|
-
var
|
|
1935
|
+
var React14 = __toESM(require("react"));
|
|
1943
1936
|
var import_class_variance_authority7 = require("class-variance-authority");
|
|
1944
1937
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1945
1938
|
var DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
@@ -1965,7 +1958,7 @@ var uploadVariants = (0, import_class_variance_authority7.cva)(
|
|
|
1965
1958
|
}
|
|
1966
1959
|
}
|
|
1967
1960
|
);
|
|
1968
|
-
var Upload =
|
|
1961
|
+
var Upload = React14.forwardRef(
|
|
1969
1962
|
({
|
|
1970
1963
|
className,
|
|
1971
1964
|
onFileSelect,
|
|
@@ -1978,8 +1971,8 @@ var Upload = React13.forwardRef(
|
|
|
1978
1971
|
selectedFiles = [],
|
|
1979
1972
|
...props
|
|
1980
1973
|
}, ref) => {
|
|
1981
|
-
const fileInputRef =
|
|
1982
|
-
const [isDragOver, setIsDragOver] =
|
|
1974
|
+
const fileInputRef = React14.useRef(null);
|
|
1975
|
+
const [isDragOver, setIsDragOver] = React14.useState(false);
|
|
1983
1976
|
const getFileTypeDisplay = () => {
|
|
1984
1977
|
const typeMap = {
|
|
1985
1978
|
"application/pdf": "PDF",
|
|
@@ -2191,14 +2184,14 @@ var Upload = React13.forwardRef(
|
|
|
2191
2184
|
Upload.displayName = "Upload";
|
|
2192
2185
|
|
|
2193
2186
|
// src/components/ui/checkbox.tsx
|
|
2194
|
-
var
|
|
2187
|
+
var React15 = __toESM(require("react"));
|
|
2195
2188
|
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"));
|
|
2196
2189
|
var import_class_variance_authority8 = require("class-variance-authority");
|
|
2197
2190
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
2198
2191
|
var checkboxVariants = (0, import_class_variance_authority8.cva)(
|
|
2199
2192
|
"peer size-4 shrink-0 rounded-[4px] border bg-light hover:bg-info-subtle transition-colors focus-visible:outline-none focus-visible:border-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-light [&_svg]:pointer-events-none [&_svg]:shrink-0 border-strong focus-visible:border-interactive aria-invalid:border-error aria-invalid:focus-visible:border-error"
|
|
2200
2193
|
);
|
|
2201
|
-
var Checkbox =
|
|
2194
|
+
var Checkbox = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
2202
2195
|
CheckboxPrimitive.Root,
|
|
2203
2196
|
{
|
|
2204
2197
|
ref,
|
|
@@ -2210,7 +2203,7 @@ var Checkbox = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
2210
2203
|
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
2211
2204
|
|
|
2212
2205
|
// src/components/ui/switch.tsx
|
|
2213
|
-
var
|
|
2206
|
+
var React16 = __toESM(require("react"));
|
|
2214
2207
|
var import_switch = require("@base-ui/react/switch");
|
|
2215
2208
|
var import_class_variance_authority9 = require("class-variance-authority");
|
|
2216
2209
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
@@ -2242,7 +2235,7 @@ var switchThumbVariants = (0, import_class_variance_authority9.cva)(
|
|
|
2242
2235
|
}
|
|
2243
2236
|
}
|
|
2244
2237
|
);
|
|
2245
|
-
var Switch =
|
|
2238
|
+
var Switch = React16.forwardRef(
|
|
2246
2239
|
({ className, size, ...props }, ref) => {
|
|
2247
2240
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
2248
2241
|
import_switch.Switch.Root,
|
|
@@ -2265,22 +2258,18 @@ var Switch = React15.forwardRef(
|
|
|
2265
2258
|
Switch.displayName = "Switch";
|
|
2266
2259
|
|
|
2267
2260
|
// src/components/ui/textarea.tsx
|
|
2268
|
-
var
|
|
2261
|
+
var React17 = __toESM(require("react"));
|
|
2269
2262
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
2270
|
-
var Textarea =
|
|
2263
|
+
var Textarea = React17.forwardRef(
|
|
2271
2264
|
({ className, style, ...props }, ref) => {
|
|
2272
|
-
const tokenStyles = {
|
|
2273
|
-
font: "var(--typography-label-md-regular)",
|
|
2274
|
-
...style
|
|
2275
|
-
};
|
|
2276
2265
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2277
2266
|
"textarea",
|
|
2278
2267
|
{
|
|
2279
2268
|
className: cn(
|
|
2280
|
-
"flex min-h-
|
|
2269
|
+
"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",
|
|
2281
2270
|
className
|
|
2282
2271
|
),
|
|
2283
|
-
style
|
|
2272
|
+
style,
|
|
2284
2273
|
ref,
|
|
2285
2274
|
...props
|
|
2286
2275
|
}
|
|
@@ -2290,52 +2279,67 @@ var Textarea = React16.forwardRef(
|
|
|
2290
2279
|
Textarea.displayName = "Textarea";
|
|
2291
2280
|
|
|
2292
2281
|
// src/components/ui/badge.tsx
|
|
2293
|
-
var
|
|
2282
|
+
var React18 = __toESM(require("react"));
|
|
2294
2283
|
var import_class_variance_authority10 = require("class-variance-authority");
|
|
2295
2284
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2296
2285
|
var badgeVariants = (0, import_class_variance_authority10.cva)(
|
|
2297
|
-
"inline-flex items-center justify-center gap-1 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
2286
|
+
"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",
|
|
2298
2287
|
{
|
|
2299
2288
|
variants: {
|
|
2300
2289
|
variant: {
|
|
2301
|
-
primary: "
|
|
2302
|
-
secondary: "
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2290
|
+
primary: "interactive-accent interactive-accent-fg type-label-xs-medium",
|
|
2291
|
+
secondary: "interactive-secondary interactive-secondary-fg type-label-xs-medium",
|
|
2292
|
+
outline: "interactive-default interactive-default-fg border border-default type-label-xs-medium",
|
|
2293
|
+
ghost: "interactive-default interactive-default-fg type-label-xs-medium",
|
|
2294
|
+
destructive: "interactive-destructive interactive-destructive-fg type-label-xs-medium focus-visible:ring-3 focus-visible:ring-focus-error"
|
|
2295
|
+
},
|
|
2296
|
+
rounded: {
|
|
2297
|
+
true: "rounded-full",
|
|
2298
|
+
false: "rounded-md"
|
|
2308
2299
|
}
|
|
2309
2300
|
},
|
|
2310
2301
|
defaultVariants: {
|
|
2311
|
-
variant: "primary"
|
|
2302
|
+
variant: "primary",
|
|
2303
|
+
rounded: false
|
|
2312
2304
|
}
|
|
2313
2305
|
}
|
|
2314
2306
|
);
|
|
2315
|
-
function
|
|
2316
|
-
|
|
2307
|
+
function isSingleDisplayCharacter(node) {
|
|
2308
|
+
if (node == null || typeof node === "boolean") return false;
|
|
2309
|
+
if (typeof node === "string" || typeof node === "number") {
|
|
2310
|
+
const trimmed = String(node).trim();
|
|
2311
|
+
return trimmed.length === 1;
|
|
2312
|
+
}
|
|
2313
|
+
if (Array.isArray(node)) {
|
|
2314
|
+
const parts = node.filter((x) => x != null && typeof x !== "boolean");
|
|
2315
|
+
if (parts.length !== 1) return false;
|
|
2316
|
+
return isSingleDisplayCharacter(parts[0]);
|
|
2317
|
+
}
|
|
2318
|
+
if (React18.isValidElement(node)) {
|
|
2319
|
+
return isSingleDisplayCharacter(
|
|
2320
|
+
node.props.children
|
|
2321
|
+
);
|
|
2322
|
+
}
|
|
2323
|
+
return false;
|
|
2317
2324
|
}
|
|
2318
|
-
var Badge =
|
|
2319
|
-
({ className, variant, style, ...props }, ref) => {
|
|
2325
|
+
var Badge = React18.forwardRef(
|
|
2326
|
+
({ className, variant, rounded, style, children, ...props }, ref) => {
|
|
2320
2327
|
if (!variant) {
|
|
2321
2328
|
return null;
|
|
2322
2329
|
}
|
|
2323
|
-
const
|
|
2324
|
-
const tokenStyles = {
|
|
2325
|
-
...typographyStyles,
|
|
2326
|
-
...style
|
|
2327
|
-
};
|
|
2330
|
+
const circle = isSingleDisplayCharacter(children);
|
|
2328
2331
|
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2329
2332
|
"span",
|
|
2330
2333
|
{
|
|
2331
2334
|
className: cn(
|
|
2332
|
-
badgeVariants({ variant }),
|
|
2333
|
-
"
|
|
2335
|
+
badgeVariants({ variant, rounded }),
|
|
2336
|
+
circle ? "size-5 shrink-0 p-0" : "",
|
|
2334
2337
|
className
|
|
2335
2338
|
),
|
|
2336
|
-
style
|
|
2339
|
+
style,
|
|
2337
2340
|
ref,
|
|
2338
|
-
...props
|
|
2341
|
+
...props,
|
|
2342
|
+
children
|
|
2339
2343
|
}
|
|
2340
2344
|
);
|
|
2341
2345
|
}
|
|
@@ -2343,11 +2347,11 @@ var Badge = React17.forwardRef(
|
|
|
2343
2347
|
Badge.displayName = "Badge";
|
|
2344
2348
|
|
|
2345
2349
|
// src/components/pdf-viewer/index.tsx
|
|
2346
|
-
var
|
|
2350
|
+
var React28 = __toESM(require("react"));
|
|
2347
2351
|
var import_TextLayer = require("react-pdf/dist/Page/TextLayer.css");
|
|
2348
2352
|
|
|
2349
2353
|
// src/components/pdf-viewer/components/CustomScrollbar.tsx
|
|
2350
|
-
var
|
|
2354
|
+
var React19 = __toESM(require("react"));
|
|
2351
2355
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2352
2356
|
var scrollbarStyles = `
|
|
2353
2357
|
.custom-scrollbar-content {
|
|
@@ -2416,15 +2420,15 @@ function CustomScrollbar({
|
|
|
2416
2420
|
backgroundColor = "#F5F5F5",
|
|
2417
2421
|
className
|
|
2418
2422
|
}) {
|
|
2419
|
-
const internalContainerRef =
|
|
2423
|
+
const internalContainerRef = React19.useRef(null);
|
|
2420
2424
|
const containerRef = externalContainerRef || internalContainerRef;
|
|
2421
|
-
const wrapperRef =
|
|
2422
|
-
const thumbVerticalRef =
|
|
2423
|
-
const thumbHorizontalRef =
|
|
2424
|
-
const lastScrollPosRef =
|
|
2425
|
-
const scrollTimeoutsRef =
|
|
2425
|
+
const wrapperRef = React19.useRef(null);
|
|
2426
|
+
const thumbVerticalRef = React19.useRef(null);
|
|
2427
|
+
const thumbHorizontalRef = React19.useRef(null);
|
|
2428
|
+
const lastScrollPosRef = React19.useRef({ top: 0, left: 0 });
|
|
2429
|
+
const scrollTimeoutsRef = React19.useRef({ vertical: null, horizontal: null });
|
|
2426
2430
|
const WHEEL_LINE_HEIGHT_PX = 16;
|
|
2427
|
-
const showScrollbar =
|
|
2431
|
+
const showScrollbar = React19.useCallback(
|
|
2428
2432
|
(direction) => {
|
|
2429
2433
|
const wrapper = wrapperRef.current;
|
|
2430
2434
|
if (!wrapper) return;
|
|
@@ -2438,7 +2442,7 @@ function CustomScrollbar({
|
|
|
2438
2442
|
},
|
|
2439
2443
|
[autoHideDelay]
|
|
2440
2444
|
);
|
|
2441
|
-
const updateScrollbarThumbPosition =
|
|
2445
|
+
const updateScrollbarThumbPosition = React19.useCallback(() => {
|
|
2442
2446
|
const container = containerRef.current;
|
|
2443
2447
|
const thumbVertical = thumbVerticalRef.current;
|
|
2444
2448
|
const thumbHorizontal = thumbHorizontalRef.current;
|
|
@@ -2476,7 +2480,7 @@ function CustomScrollbar({
|
|
|
2476
2480
|
}
|
|
2477
2481
|
}
|
|
2478
2482
|
}, [containerRef]);
|
|
2479
|
-
|
|
2483
|
+
React19.useEffect(() => {
|
|
2480
2484
|
const container = containerRef.current;
|
|
2481
2485
|
if (!container) return;
|
|
2482
2486
|
lastScrollPosRef.current = {
|
|
@@ -2509,7 +2513,7 @@ function CustomScrollbar({
|
|
|
2509
2513
|
if (rafId) cancelAnimationFrame(rafId);
|
|
2510
2514
|
};
|
|
2511
2515
|
}, [containerRef, showScrollbar, updateScrollbarThumbPosition]);
|
|
2512
|
-
|
|
2516
|
+
React19.useEffect(() => {
|
|
2513
2517
|
const container = containerRef.current;
|
|
2514
2518
|
if (!container) return;
|
|
2515
2519
|
const normalizeWheelDelta = (delta, deltaMode, axisSize) => {
|
|
@@ -2565,7 +2569,7 @@ function CustomScrollbar({
|
|
|
2565
2569
|
container.removeEventListener("wheel", handleWheel);
|
|
2566
2570
|
};
|
|
2567
2571
|
}, [containerRef, showScrollbar]);
|
|
2568
|
-
|
|
2572
|
+
React19.useEffect(() => {
|
|
2569
2573
|
const thumbVertical = thumbVerticalRef.current;
|
|
2570
2574
|
const thumbHorizontal = thumbHorizontalRef.current;
|
|
2571
2575
|
const container = containerRef.current;
|
|
@@ -2625,7 +2629,7 @@ function CustomScrollbar({
|
|
|
2625
2629
|
document.removeEventListener("mouseup", handleMouseUp);
|
|
2626
2630
|
};
|
|
2627
2631
|
}, [containerRef, showScrollbar]);
|
|
2628
|
-
|
|
2632
|
+
React19.useEffect(() => {
|
|
2629
2633
|
updateScrollbarThumbPosition();
|
|
2630
2634
|
}, [children, updateScrollbarThumbPosition]);
|
|
2631
2635
|
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
|
|
@@ -2661,7 +2665,7 @@ function CustomScrollbar({
|
|
|
2661
2665
|
}
|
|
2662
2666
|
|
|
2663
2667
|
// src/components/pdf-viewer/components/PdfControls.tsx
|
|
2664
|
-
var
|
|
2668
|
+
var React20 = __toESM(require("react"));
|
|
2665
2669
|
|
|
2666
2670
|
// src/components/pdf-viewer/utils/types.ts
|
|
2667
2671
|
var DEFAULT_BOUNDING_BOX_STYLE = {
|
|
@@ -2691,11 +2695,11 @@ var PdfControls = ({
|
|
|
2691
2695
|
const canGoNext = currentPage < totalPages;
|
|
2692
2696
|
const canZoomIn = zoom < PDF_ZOOM.MAX;
|
|
2693
2697
|
const canZoomOut = zoom > PDF_ZOOM.MIN;
|
|
2694
|
-
const [pageInputValue, setPageInputValue] =
|
|
2698
|
+
const [pageInputValue, setPageInputValue] = React20.useState(
|
|
2695
2699
|
String(currentPage)
|
|
2696
2700
|
);
|
|
2697
|
-
const isEscapeRef =
|
|
2698
|
-
|
|
2701
|
+
const isEscapeRef = React20.useRef(false);
|
|
2702
|
+
React20.useEffect(() => {
|
|
2699
2703
|
setPageInputValue(String(currentPage));
|
|
2700
2704
|
}, [currentPage]);
|
|
2701
2705
|
const handlePageInputChange = (e) => {
|
|
@@ -2809,7 +2813,7 @@ var PdfControls = ({
|
|
|
2809
2813
|
PdfControls.displayName = "PdfControls";
|
|
2810
2814
|
|
|
2811
2815
|
// src/components/pdf-viewer/components/PdfDocument.tsx
|
|
2812
|
-
var
|
|
2816
|
+
var React22 = __toESM(require("react"));
|
|
2813
2817
|
var import_react_pdf = require("react-pdf");
|
|
2814
2818
|
|
|
2815
2819
|
// src/components/pdf-viewer/utils/constants.ts
|
|
@@ -2835,7 +2839,7 @@ var INTERSECTION_OBSERVER_CONFIG = {
|
|
|
2835
2839
|
};
|
|
2836
2840
|
|
|
2837
2841
|
// src/components/pdf-viewer/components/BoundingBoxOverlay.tsx
|
|
2838
|
-
var
|
|
2842
|
+
var React21 = __toESM(require("react"));
|
|
2839
2843
|
|
|
2840
2844
|
// src/components/pdf-viewer/utils/boundingBoxUtils.ts
|
|
2841
2845
|
function clamp01(value) {
|
|
@@ -2872,11 +2876,11 @@ var BoundingBoxOverlayInner = ({
|
|
|
2872
2876
|
onBoxMouseEnter,
|
|
2873
2877
|
onBoxMouseLeave
|
|
2874
2878
|
}) => {
|
|
2875
|
-
const validBoxes =
|
|
2879
|
+
const validBoxes = React21.useMemo(
|
|
2876
2880
|
() => boxes.map(normalizeBoundingBox).filter((b) => b !== null),
|
|
2877
2881
|
[boxes]
|
|
2878
2882
|
);
|
|
2879
|
-
const sortedBoxes =
|
|
2883
|
+
const sortedBoxes = React21.useMemo(
|
|
2880
2884
|
() => [...validBoxes].sort((a, b) => {
|
|
2881
2885
|
const aHighlighted = highlightedIds.has(a.id);
|
|
2882
2886
|
const bHighlighted = highlightedIds.has(b.id);
|
|
@@ -2935,7 +2939,7 @@ var BoundingBoxOverlayInner = ({
|
|
|
2935
2939
|
}
|
|
2936
2940
|
);
|
|
2937
2941
|
};
|
|
2938
|
-
var BoundingBoxOverlay =
|
|
2942
|
+
var BoundingBoxOverlay = React21.memo(BoundingBoxOverlayInner);
|
|
2939
2943
|
BoundingBoxOverlay.displayName = "BoundingBoxOverlay";
|
|
2940
2944
|
|
|
2941
2945
|
// src/components/pdf-viewer/components/PdfDocument.tsx
|
|
@@ -2961,14 +2965,14 @@ var PdfDocument = ({
|
|
|
2961
2965
|
onBoxMouseEnter,
|
|
2962
2966
|
onBoxMouseLeave
|
|
2963
2967
|
}) => {
|
|
2964
|
-
const mountedRef =
|
|
2965
|
-
|
|
2968
|
+
const mountedRef = React22.useRef(true);
|
|
2969
|
+
React22.useEffect(() => {
|
|
2966
2970
|
mountedRef.current = true;
|
|
2967
2971
|
return () => {
|
|
2968
2972
|
mountedRef.current = false;
|
|
2969
2973
|
};
|
|
2970
2974
|
}, []);
|
|
2971
|
-
const boxesByPage =
|
|
2975
|
+
const boxesByPage = React22.useMemo(() => {
|
|
2972
2976
|
const map = /* @__PURE__ */ new Map();
|
|
2973
2977
|
boundingBoxes?.forEach((box) => {
|
|
2974
2978
|
const pageBoxes = map.get(box.page) || [];
|
|
@@ -2977,7 +2981,7 @@ var PdfDocument = ({
|
|
|
2977
2981
|
});
|
|
2978
2982
|
return map;
|
|
2979
2983
|
}, [boundingBoxes]);
|
|
2980
|
-
const highlightedIdsSet =
|
|
2984
|
+
const highlightedIdsSet = React22.useMemo(
|
|
2981
2985
|
() => new Set(highlightedBoxIds),
|
|
2982
2986
|
[highlightedBoxIds]
|
|
2983
2987
|
);
|
|
@@ -3200,12 +3204,12 @@ var PdfHeader = ({
|
|
|
3200
3204
|
PdfHeader.displayName = "PdfHeader";
|
|
3201
3205
|
|
|
3202
3206
|
// src/components/pdf-viewer/hooks/useContainerWidth.ts
|
|
3203
|
-
var
|
|
3207
|
+
var React23 = __toESM(require("react"));
|
|
3204
3208
|
function useContainerWidth(padding = 32) {
|
|
3205
|
-
const [containerWidth, setContainerWidth] =
|
|
3206
|
-
const containerRef =
|
|
3207
|
-
const lastWidthRef =
|
|
3208
|
-
|
|
3209
|
+
const [containerWidth, setContainerWidth] = React23.useState(0);
|
|
3210
|
+
const containerRef = React23.useRef(null);
|
|
3211
|
+
const lastWidthRef = React23.useRef(0);
|
|
3212
|
+
React23.useEffect(() => {
|
|
3209
3213
|
const element = containerRef.current;
|
|
3210
3214
|
if (!element) return;
|
|
3211
3215
|
const resizeObserver = new ResizeObserver((entries) => {
|
|
@@ -3229,9 +3233,9 @@ function useContainerWidth(padding = 32) {
|
|
|
3229
3233
|
}
|
|
3230
3234
|
|
|
3231
3235
|
// src/components/pdf-viewer/hooks/usePdfDownload.ts
|
|
3232
|
-
var
|
|
3236
|
+
var React24 = __toESM(require("react"));
|
|
3233
3237
|
function usePdfDownload(file, title) {
|
|
3234
|
-
const download =
|
|
3238
|
+
const download = React24.useCallback(async () => {
|
|
3235
3239
|
if (!file) return;
|
|
3236
3240
|
try {
|
|
3237
3241
|
let blob;
|
|
@@ -3263,11 +3267,11 @@ function usePdfDownload(file, title) {
|
|
|
3263
3267
|
}
|
|
3264
3268
|
|
|
3265
3269
|
// src/components/pdf-viewer/hooks/usePdfPrint.ts
|
|
3266
|
-
var
|
|
3270
|
+
var React25 = __toESM(require("react"));
|
|
3267
3271
|
function usePdfPrint(file) {
|
|
3268
|
-
const [printBlobUrl, setPrintBlobUrl] =
|
|
3269
|
-
const printFrameRef =
|
|
3270
|
-
const preparePrint =
|
|
3272
|
+
const [printBlobUrl, setPrintBlobUrl] = React25.useState(null);
|
|
3273
|
+
const printFrameRef = React25.useRef(null);
|
|
3274
|
+
const preparePrint = React25.useCallback(async () => {
|
|
3271
3275
|
if (!file) return;
|
|
3272
3276
|
try {
|
|
3273
3277
|
let blob;
|
|
@@ -3283,14 +3287,14 @@ function usePdfPrint(file) {
|
|
|
3283
3287
|
console.error("Failed to prepare PDF for printing:", error);
|
|
3284
3288
|
}
|
|
3285
3289
|
}, [file]);
|
|
3286
|
-
|
|
3290
|
+
React25.useEffect(() => {
|
|
3287
3291
|
return () => {
|
|
3288
3292
|
if (printBlobUrl) {
|
|
3289
3293
|
URL.revokeObjectURL(printBlobUrl);
|
|
3290
3294
|
}
|
|
3291
3295
|
};
|
|
3292
3296
|
}, [printBlobUrl]);
|
|
3293
|
-
const print =
|
|
3297
|
+
const print = React25.useCallback(() => {
|
|
3294
3298
|
if (printFrameRef.current?.contentWindow) {
|
|
3295
3299
|
printFrameRef.current.contentWindow.print();
|
|
3296
3300
|
}
|
|
@@ -3299,7 +3303,7 @@ function usePdfPrint(file) {
|
|
|
3299
3303
|
}
|
|
3300
3304
|
|
|
3301
3305
|
// src/components/pdf-viewer/hooks/usePdfScroll.ts
|
|
3302
|
-
var
|
|
3306
|
+
var React26 = __toESM(require("react"));
|
|
3303
3307
|
function usePdfScroll({
|
|
3304
3308
|
containerRef,
|
|
3305
3309
|
numPages,
|
|
@@ -3310,30 +3314,30 @@ function usePdfScroll({
|
|
|
3310
3314
|
effectiveWidth,
|
|
3311
3315
|
viewportBuffer
|
|
3312
3316
|
}) {
|
|
3313
|
-
const [internalPage, setInternalPage] =
|
|
3317
|
+
const [internalPage, setInternalPage] = React26.useState(1);
|
|
3314
3318
|
const isControlled = scrollTo !== void 0;
|
|
3315
3319
|
const currentPage = isControlled ? scrollTo.page : internalPage;
|
|
3316
|
-
const scrollOperationRef =
|
|
3320
|
+
const scrollOperationRef = React26.useRef({
|
|
3317
3321
|
isProgrammatic: false,
|
|
3318
3322
|
targetPage: null,
|
|
3319
3323
|
lastReportedPage: 1,
|
|
3320
3324
|
notifyOnComplete: false
|
|
3321
3325
|
});
|
|
3322
|
-
const [visibleRange, setVisibleRange] =
|
|
3326
|
+
const [visibleRange, setVisibleRange] = React26.useState({
|
|
3323
3327
|
start: 1,
|
|
3324
3328
|
end: Math.min(1 + viewportBuffer, numPages || 1 + viewportBuffer)
|
|
3325
3329
|
});
|
|
3326
|
-
const visiblePages =
|
|
3330
|
+
const visiblePages = React26.useMemo(() => {
|
|
3327
3331
|
const pages = /* @__PURE__ */ new Set();
|
|
3328
3332
|
for (let i = visibleRange.start; i <= visibleRange.end; i++) {
|
|
3329
3333
|
pages.add(i);
|
|
3330
3334
|
}
|
|
3331
3335
|
return pages;
|
|
3332
3336
|
}, [visibleRange.start, visibleRange.end]);
|
|
3333
|
-
const observerRef =
|
|
3334
|
-
const intersectionRatiosRef =
|
|
3335
|
-
const pageRefsMapRef =
|
|
3336
|
-
const cumulativeOffsets =
|
|
3337
|
+
const observerRef = React26.useRef(null);
|
|
3338
|
+
const intersectionRatiosRef = React26.useRef(/* @__PURE__ */ new Map());
|
|
3339
|
+
const pageRefsMapRef = React26.useRef(/* @__PURE__ */ new Map());
|
|
3340
|
+
const cumulativeOffsets = React26.useMemo(() => {
|
|
3337
3341
|
if (!pageDimensions?.size) return null;
|
|
3338
3342
|
const offsets = [CONTAINER_PADDING];
|
|
3339
3343
|
let cumulative = CONTAINER_PADDING;
|
|
@@ -3345,7 +3349,7 @@ function usePdfScroll({
|
|
|
3345
3349
|
}
|
|
3346
3350
|
return offsets;
|
|
3347
3351
|
}, [pageDimensions, effectiveWidth]);
|
|
3348
|
-
const calculatePageOffset =
|
|
3352
|
+
const calculatePageOffset = React26.useCallback(
|
|
3349
3353
|
(pageNum) => {
|
|
3350
3354
|
if (cumulativeOffsets && pageNum <= cumulativeOffsets.length) {
|
|
3351
3355
|
return cumulativeOffsets[pageNum - 1];
|
|
@@ -3360,11 +3364,11 @@ function usePdfScroll({
|
|
|
3360
3364
|
},
|
|
3361
3365
|
[cumulativeOffsets, pageDimensions, effectiveWidth]
|
|
3362
3366
|
);
|
|
3363
|
-
const onPageChangeRef =
|
|
3364
|
-
|
|
3367
|
+
const onPageChangeRef = React26.useRef(onPageChange);
|
|
3368
|
+
React26.useEffect(() => {
|
|
3365
3369
|
onPageChangeRef.current = onPageChange;
|
|
3366
3370
|
}, [onPageChange]);
|
|
3367
|
-
const updatePage =
|
|
3371
|
+
const updatePage = React26.useCallback(
|
|
3368
3372
|
(pageNum) => {
|
|
3369
3373
|
scrollOperationRef.current.lastReportedPage = pageNum;
|
|
3370
3374
|
if (isControlled) {
|
|
@@ -3376,7 +3380,7 @@ function usePdfScroll({
|
|
|
3376
3380
|
[isControlled]
|
|
3377
3381
|
// Removed onPageChange - now uses ref
|
|
3378
3382
|
);
|
|
3379
|
-
const onProgrammaticScrollComplete =
|
|
3383
|
+
const onProgrammaticScrollComplete = React26.useCallback((pageNum) => {
|
|
3380
3384
|
const shouldNotify = scrollOperationRef.current.notifyOnComplete;
|
|
3381
3385
|
scrollOperationRef.current.isProgrammatic = false;
|
|
3382
3386
|
scrollOperationRef.current.targetPage = null;
|
|
@@ -3386,7 +3390,7 @@ function usePdfScroll({
|
|
|
3386
3390
|
onPageChangeRef.current?.(pageNum);
|
|
3387
3391
|
}
|
|
3388
3392
|
}, []);
|
|
3389
|
-
const scrollToPage =
|
|
3393
|
+
const scrollToPage = React26.useCallback(
|
|
3390
3394
|
(pageNum) => {
|
|
3391
3395
|
const container = containerRef.current;
|
|
3392
3396
|
if (!container || !pageDimensions?.size) return;
|
|
@@ -3417,7 +3421,7 @@ function usePdfScroll({
|
|
|
3417
3421
|
onProgrammaticScrollComplete
|
|
3418
3422
|
]
|
|
3419
3423
|
);
|
|
3420
|
-
const scrollToPosition =
|
|
3424
|
+
const scrollToPosition = React26.useCallback(
|
|
3421
3425
|
(target) => {
|
|
3422
3426
|
const container = containerRef.current;
|
|
3423
3427
|
if (!container || !pageDimensions?.size) return;
|
|
@@ -3458,7 +3462,7 @@ function usePdfScroll({
|
|
|
3458
3462
|
onProgrammaticScrollComplete
|
|
3459
3463
|
]
|
|
3460
3464
|
);
|
|
3461
|
-
const handlePageChange =
|
|
3465
|
+
const handlePageChange = React26.useCallback(
|
|
3462
3466
|
(pageNum) => {
|
|
3463
3467
|
const clampedPage = Math.max(1, Math.min(pageNum, numPages));
|
|
3464
3468
|
scrollOperationRef.current.lastReportedPage = clampedPage;
|
|
@@ -3472,12 +3476,12 @@ function usePdfScroll({
|
|
|
3472
3476
|
},
|
|
3473
3477
|
[numPages, scrollToPage, isControlled, onPageChange]
|
|
3474
3478
|
);
|
|
3475
|
-
const updatePageRef =
|
|
3476
|
-
|
|
3479
|
+
const updatePageRef = React26.useRef(updatePage);
|
|
3480
|
+
React26.useEffect(() => {
|
|
3477
3481
|
updatePageRef.current = updatePage;
|
|
3478
3482
|
}, [updatePage]);
|
|
3479
|
-
const lastBufferRef =
|
|
3480
|
-
|
|
3483
|
+
const lastBufferRef = React26.useRef({ start: 1, end: 1 + viewportBuffer });
|
|
3484
|
+
React26.useEffect(() => {
|
|
3481
3485
|
const container = containerRef.current;
|
|
3482
3486
|
if (!container) return;
|
|
3483
3487
|
const observer = new IntersectionObserver(
|
|
@@ -3537,7 +3541,7 @@ function usePdfScroll({
|
|
|
3537
3541
|
ratiosMap.clear();
|
|
3538
3542
|
};
|
|
3539
3543
|
}, [containerRef, numPages, viewportBuffer]);
|
|
3540
|
-
const observePage =
|
|
3544
|
+
const observePage = React26.useCallback(
|
|
3541
3545
|
(pageNum, element) => {
|
|
3542
3546
|
const prevElement = pageRefsMapRef.current.get(pageNum);
|
|
3543
3547
|
if (element) {
|
|
@@ -3558,7 +3562,7 @@ function usePdfScroll({
|
|
|
3558
3562
|
},
|
|
3559
3563
|
[]
|
|
3560
3564
|
);
|
|
3561
|
-
|
|
3565
|
+
React26.useEffect(() => {
|
|
3562
3566
|
const container = containerRef.current;
|
|
3563
3567
|
if (!container) return;
|
|
3564
3568
|
const handleUserScroll = () => {
|
|
@@ -3616,9 +3620,9 @@ function usePdfScroll({
|
|
|
3616
3620
|
}
|
|
3617
3621
|
};
|
|
3618
3622
|
}, [containerRef, onProgrammaticScrollComplete]);
|
|
3619
|
-
const lastScrollTargetRef =
|
|
3620
|
-
const prevEffectiveWidthRef =
|
|
3621
|
-
|
|
3623
|
+
const lastScrollTargetRef = React26.useRef(null);
|
|
3624
|
+
const prevEffectiveWidthRef = React26.useRef(effectiveWidth);
|
|
3625
|
+
React26.useEffect(() => {
|
|
3622
3626
|
if (prevEffectiveWidthRef.current !== effectiveWidth) {
|
|
3623
3627
|
prevEffectiveWidthRef.current = effectiveWidth;
|
|
3624
3628
|
const lastScrollTarget = lastScrollTargetRef.current;
|
|
@@ -3627,7 +3631,7 @@ function usePdfScroll({
|
|
|
3627
3631
|
}
|
|
3628
3632
|
}
|
|
3629
3633
|
}, [effectiveWidth]);
|
|
3630
|
-
|
|
3634
|
+
React26.useEffect(() => {
|
|
3631
3635
|
if (!isControlled || !scrollTo || numPages <= 0) return;
|
|
3632
3636
|
if (!pageDimensions?.size) return;
|
|
3633
3637
|
const lastScrollTarget = lastScrollTargetRef.current;
|
|
@@ -3660,7 +3664,7 @@ function usePdfScroll({
|
|
|
3660
3664
|
pageDimensions,
|
|
3661
3665
|
effectiveWidth
|
|
3662
3666
|
]);
|
|
3663
|
-
|
|
3667
|
+
React26.useEffect(() => {
|
|
3664
3668
|
const pageRefs = pageRefsMapRef.current;
|
|
3665
3669
|
const ratios = intersectionRatiosRef.current;
|
|
3666
3670
|
for (const pageNum of pageRefs.keys()) {
|
|
@@ -3684,14 +3688,14 @@ function usePdfScroll({
|
|
|
3684
3688
|
}
|
|
3685
3689
|
|
|
3686
3690
|
// src/components/pdf-viewer/hooks/useZoomControl.ts
|
|
3687
|
-
var
|
|
3691
|
+
var React27 = __toESM(require("react"));
|
|
3688
3692
|
function useZoomControl({
|
|
3689
3693
|
containerRef,
|
|
3690
3694
|
initialZoom = PDF_ZOOM.DEFAULT
|
|
3691
3695
|
}) {
|
|
3692
|
-
const [zoom, setZoom] =
|
|
3693
|
-
const scrollRatioRef =
|
|
3694
|
-
const handleZoomChange =
|
|
3696
|
+
const [zoom, setZoom] = React27.useState(initialZoom);
|
|
3697
|
+
const scrollRatioRef = React27.useRef({ x: 0.5, y: 0 });
|
|
3698
|
+
const handleZoomChange = React27.useCallback(
|
|
3695
3699
|
(newZoom) => {
|
|
3696
3700
|
const container = containerRef.current;
|
|
3697
3701
|
if (container) {
|
|
@@ -3712,7 +3716,7 @@ function useZoomControl({
|
|
|
3712
3716
|
},
|
|
3713
3717
|
[containerRef]
|
|
3714
3718
|
);
|
|
3715
|
-
|
|
3719
|
+
React27.useEffect(() => {
|
|
3716
3720
|
const container = containerRef.current;
|
|
3717
3721
|
if (!container) return;
|
|
3718
3722
|
requestAnimationFrame(() => {
|
|
@@ -3739,7 +3743,7 @@ function initializePdfWorker(workerUrl) {
|
|
|
3739
3743
|
// src/components/pdf-viewer/index.tsx
|
|
3740
3744
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3741
3745
|
var DEFAULT_VIEWPORT_BUFFER = 1;
|
|
3742
|
-
var PdfViewer =
|
|
3746
|
+
var PdfViewer = React28.forwardRef(
|
|
3743
3747
|
({
|
|
3744
3748
|
file,
|
|
3745
3749
|
title,
|
|
@@ -3766,15 +3770,15 @@ var PdfViewer = React27.forwardRef(
|
|
|
3766
3770
|
className,
|
|
3767
3771
|
...props
|
|
3768
3772
|
}, ref) => {
|
|
3769
|
-
const [numPages, setNumPages] =
|
|
3770
|
-
const [pageDimensions, setPageDimensions] =
|
|
3773
|
+
const [numPages, setNumPages] = React28.useState(0);
|
|
3774
|
+
const [pageDimensions, setPageDimensions] = React28.useState(null);
|
|
3771
3775
|
const { containerWidth, containerRef } = useContainerWidth();
|
|
3772
3776
|
const { zoom, handleZoomChange } = useZoomControl({ containerRef });
|
|
3773
3777
|
const { printFrameRef, printBlobUrl, preparePrint, print } = usePdfPrint(file);
|
|
3774
3778
|
const download = usePdfDownload(file, title);
|
|
3775
3779
|
const baseWidth = Math.min(pageWidth || containerWidth, 800);
|
|
3776
3780
|
const effectiveWidth = Math.round(baseWidth * (zoom / 100));
|
|
3777
|
-
const handleDimensionsLoaded =
|
|
3781
|
+
const handleDimensionsLoaded = React28.useCallback(
|
|
3778
3782
|
(dimensions) => {
|
|
3779
3783
|
setPageDimensions(dimensions);
|
|
3780
3784
|
onDimensionsReady?.(dimensions);
|
|
@@ -3791,7 +3795,7 @@ var PdfViewer = React27.forwardRef(
|
|
|
3791
3795
|
effectiveWidth,
|
|
3792
3796
|
viewportBuffer
|
|
3793
3797
|
});
|
|
3794
|
-
const handleLoadSuccess =
|
|
3798
|
+
const handleLoadSuccess = React28.useCallback(
|
|
3795
3799
|
async (pages) => {
|
|
3796
3800
|
setNumPages(pages);
|
|
3797
3801
|
onLoadSuccess?.(pages);
|
|
@@ -3799,14 +3803,14 @@ var PdfViewer = React27.forwardRef(
|
|
|
3799
3803
|
},
|
|
3800
3804
|
[onLoadSuccess, preparePrint]
|
|
3801
3805
|
);
|
|
3802
|
-
const handleDownload =
|
|
3806
|
+
const handleDownload = React28.useCallback(() => {
|
|
3803
3807
|
if (onDownload) {
|
|
3804
3808
|
onDownload();
|
|
3805
3809
|
return;
|
|
3806
3810
|
}
|
|
3807
3811
|
download();
|
|
3808
3812
|
}, [onDownload, download]);
|
|
3809
|
-
const handlePrint =
|
|
3813
|
+
const handlePrint = React28.useCallback(() => {
|
|
3810
3814
|
if (onPrint) {
|
|
3811
3815
|
onPrint();
|
|
3812
3816
|
return;
|
|
@@ -3883,7 +3887,7 @@ var PdfViewer = React27.forwardRef(
|
|
|
3883
3887
|
PdfViewer.displayName = "PdfViewer";
|
|
3884
3888
|
|
|
3885
3889
|
// src/components/ui/tabs.tsx
|
|
3886
|
-
var
|
|
3890
|
+
var React29 = __toESM(require("react"));
|
|
3887
3891
|
var import_class_variance_authority11 = require("class-variance-authority");
|
|
3888
3892
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
3889
3893
|
var tabsVariants = (0, import_class_variance_authority11.cva)(
|
|
@@ -3899,17 +3903,17 @@ var tabsVariants = (0, import_class_variance_authority11.cva)(
|
|
|
3899
3903
|
}
|
|
3900
3904
|
}
|
|
3901
3905
|
);
|
|
3902
|
-
var TabsContext =
|
|
3906
|
+
var TabsContext = React29.createContext(
|
|
3903
3907
|
void 0
|
|
3904
3908
|
);
|
|
3905
3909
|
function useTabsContext() {
|
|
3906
|
-
const context =
|
|
3910
|
+
const context = React29.useContext(TabsContext);
|
|
3907
3911
|
if (!context) {
|
|
3908
3912
|
throw new Error("Tabs components must be used within a Tabs provider");
|
|
3909
3913
|
}
|
|
3910
3914
|
return context;
|
|
3911
3915
|
}
|
|
3912
|
-
var Tabs =
|
|
3916
|
+
var Tabs = React29.forwardRef((props, ref) => {
|
|
3913
3917
|
const {
|
|
3914
3918
|
className,
|
|
3915
3919
|
value,
|
|
@@ -3918,7 +3922,7 @@ var Tabs = React28.forwardRef((props, ref) => {
|
|
|
3918
3922
|
children,
|
|
3919
3923
|
...restProps
|
|
3920
3924
|
} = props;
|
|
3921
|
-
const contextValue =
|
|
3925
|
+
const contextValue = React29.useMemo(
|
|
3922
3926
|
() => ({
|
|
3923
3927
|
activeTab: value,
|
|
3924
3928
|
setActiveTab: onValueChange,
|
|
@@ -3929,7 +3933,7 @@ var Tabs = React28.forwardRef((props, ref) => {
|
|
|
3929
3933
|
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(TabsContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { ref, className: cn("w-full", className), ...restProps, children }) });
|
|
3930
3934
|
});
|
|
3931
3935
|
Tabs.displayName = "Tabs";
|
|
3932
|
-
var TabsList =
|
|
3936
|
+
var TabsList = React29.forwardRef(
|
|
3933
3937
|
(props, ref) => {
|
|
3934
3938
|
const { className, children, ...restProps } = props;
|
|
3935
3939
|
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
@@ -3948,7 +3952,7 @@ TabsList.displayName = "TabsList";
|
|
|
3948
3952
|
var getTabTypographyStyles = (isActive) => ({
|
|
3949
3953
|
font: isActive ? "var(--typography-label-sm-bold)" : "var(--typography-label-sm-regular)"
|
|
3950
3954
|
});
|
|
3951
|
-
var TabsTrigger =
|
|
3955
|
+
var TabsTrigger = React29.forwardRef(
|
|
3952
3956
|
(props, ref) => {
|
|
3953
3957
|
const { className, value, disabled, style, children, ...restProps } = props;
|
|
3954
3958
|
const { activeTab, setActiveTab, variant } = useTabsContext();
|
|
@@ -3956,18 +3960,18 @@ var TabsTrigger = React28.forwardRef(
|
|
|
3956
3960
|
throw new Error("TabsTrigger must have a value prop");
|
|
3957
3961
|
}
|
|
3958
3962
|
const isActive = activeTab === value;
|
|
3959
|
-
const tokenStyles =
|
|
3963
|
+
const tokenStyles = React29.useMemo(
|
|
3960
3964
|
() => ({
|
|
3961
3965
|
...getTabTypographyStyles(isActive),
|
|
3962
3966
|
...style
|
|
3963
3967
|
}),
|
|
3964
3968
|
[isActive, style]
|
|
3965
3969
|
);
|
|
3966
|
-
const triggerClassName =
|
|
3970
|
+
const triggerClassName = React29.useMemo(
|
|
3967
3971
|
() => cn(tabsVariants({ variant }), className),
|
|
3968
3972
|
[variant, className]
|
|
3969
3973
|
);
|
|
3970
|
-
const handleClick =
|
|
3974
|
+
const handleClick = React29.useCallback(() => {
|
|
3971
3975
|
if (disabled) return;
|
|
3972
3976
|
setActiveTab(value);
|
|
3973
3977
|
}, [disabled, setActiveTab, value]);
|
|
@@ -3991,7 +3995,7 @@ var TabsTrigger = React28.forwardRef(
|
|
|
3991
3995
|
}
|
|
3992
3996
|
);
|
|
3993
3997
|
TabsTrigger.displayName = "TabsTrigger";
|
|
3994
|
-
var TabsContent =
|
|
3998
|
+
var TabsContent = React29.forwardRef(
|
|
3995
3999
|
(props, ref) => {
|
|
3996
4000
|
const { className, value, children, ...restProps } = props;
|
|
3997
4001
|
const { activeTab } = useTabsContext();
|
|
@@ -4020,11 +4024,11 @@ var TabsContent = React28.forwardRef(
|
|
|
4020
4024
|
TabsContent.displayName = "TabsContent";
|
|
4021
4025
|
|
|
4022
4026
|
// src/components/ui/dropdown-menu.tsx
|
|
4023
|
-
var
|
|
4027
|
+
var React30 = __toESM(require("react"));
|
|
4024
4028
|
var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"));
|
|
4025
4029
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
4026
4030
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
4027
|
-
var DropdownMenuTrigger =
|
|
4031
|
+
var DropdownMenuTrigger = React30.forwardRef(({ className, icon, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
4028
4032
|
DropdownMenuPrimitive.Trigger,
|
|
4029
4033
|
{
|
|
4030
4034
|
ref,
|
|
@@ -4044,7 +4048,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
|
4044
4048
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
4045
4049
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
4046
4050
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
4047
|
-
var DropdownMenuSubTrigger =
|
|
4051
|
+
var DropdownMenuSubTrigger = React30.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
4048
4052
|
DropdownMenuPrimitive.SubTrigger,
|
|
4049
4053
|
{
|
|
4050
4054
|
ref,
|
|
@@ -4062,7 +4066,7 @@ var DropdownMenuSubTrigger = React29.forwardRef(({ className, inset, children, .
|
|
|
4062
4066
|
}
|
|
4063
4067
|
));
|
|
4064
4068
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
4065
|
-
var DropdownMenuSubContent =
|
|
4069
|
+
var DropdownMenuSubContent = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
4066
4070
|
DropdownMenuPrimitive.SubContent,
|
|
4067
4071
|
{
|
|
4068
4072
|
ref,
|
|
@@ -4074,7 +4078,7 @@ var DropdownMenuSubContent = React29.forwardRef(({ className, ...props }, ref) =
|
|
|
4074
4078
|
}
|
|
4075
4079
|
));
|
|
4076
4080
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
4077
|
-
var DropdownMenuContent =
|
|
4081
|
+
var DropdownMenuContent = React30.forwardRef(({ className, sideOffset = 4, align = "end", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
4078
4082
|
DropdownMenuPrimitive.Content,
|
|
4079
4083
|
{
|
|
4080
4084
|
ref,
|
|
@@ -4088,7 +4092,7 @@ var DropdownMenuContent = React29.forwardRef(({ className, sideOffset = 4, align
|
|
|
4088
4092
|
}
|
|
4089
4093
|
) }));
|
|
4090
4094
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
4091
|
-
var DropdownMenuItem =
|
|
4095
|
+
var DropdownMenuItem = React30.forwardRef(({ className, inset, style, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
4092
4096
|
DropdownMenuPrimitive.Item,
|
|
4093
4097
|
{
|
|
4094
4098
|
ref,
|
|
@@ -4105,7 +4109,7 @@ var DropdownMenuItem = React29.forwardRef(({ className, inset, style, ...props }
|
|
|
4105
4109
|
}
|
|
4106
4110
|
));
|
|
4107
4111
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
4108
|
-
var DropdownMenuCheckboxItem =
|
|
4112
|
+
var DropdownMenuCheckboxItem = React30.forwardRef(({ className, children, style, checked, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
4109
4113
|
DropdownMenuPrimitive.CheckboxItem,
|
|
4110
4114
|
{
|
|
4111
4115
|
ref,
|
|
@@ -4133,7 +4137,7 @@ var DropdownMenuCheckboxItem = React29.forwardRef(({ className, children, style,
|
|
|
4133
4137
|
}
|
|
4134
4138
|
));
|
|
4135
4139
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
4136
|
-
var DropdownMenuRadioItem =
|
|
4140
|
+
var DropdownMenuRadioItem = React30.forwardRef(({ className, children, style, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
4137
4141
|
DropdownMenuPrimitive.RadioItem,
|
|
4138
4142
|
{
|
|
4139
4143
|
ref,
|
|
@@ -4153,7 +4157,7 @@ var DropdownMenuRadioItem = React29.forwardRef(({ className, children, style, ..
|
|
|
4153
4157
|
}
|
|
4154
4158
|
));
|
|
4155
4159
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
4156
|
-
var DropdownMenuLabel =
|
|
4160
|
+
var DropdownMenuLabel = React30.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
4157
4161
|
DropdownMenuPrimitive.Label,
|
|
4158
4162
|
{
|
|
4159
4163
|
ref,
|
|
@@ -4166,7 +4170,7 @@ var DropdownMenuLabel = React29.forwardRef(({ className, inset, ...props }, ref)
|
|
|
4166
4170
|
}
|
|
4167
4171
|
));
|
|
4168
4172
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
4169
|
-
var DropdownMenuSeparator =
|
|
4173
|
+
var DropdownMenuSeparator = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
4170
4174
|
DropdownMenuPrimitive.Separator,
|
|
4171
4175
|
{
|
|
4172
4176
|
ref,
|