@vectramindnpm/unified-design-system 0.2.2 → 0.2.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/dist/index.cjs +253 -189
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +256 -192
- package/dist/index.js.map +1 -1
- package/package.json +3 -1
package/dist/index.cjs
CHANGED
|
@@ -850,7 +850,7 @@ var Button = React4.forwardRef(
|
|
|
850
850
|
const composed = cn(
|
|
851
851
|
baseClasses2,
|
|
852
852
|
isPill ? "rounded-full" : "",
|
|
853
|
-
variantClasses[colorBase],
|
|
853
|
+
variant ? variantClasses[colorBase] : "",
|
|
854
854
|
// Link never carries the size scale's own padding/height — it reads as inline text.
|
|
855
855
|
isLink ? "h-auto p-0" : isPill ? pillSizeClasses[finalSize] : sizeClasses[finalSize],
|
|
856
856
|
isPill ? selected ? pillSelected : pillUnselected : selected ? selectedGradient : "",
|
|
@@ -861,15 +861,19 @@ var Button = React4.forwardRef(
|
|
|
861
861
|
buttonVariants({ variant: finalVariant, size: finalSize, shape, className })
|
|
862
862
|
);
|
|
863
863
|
const mergedStyle = {
|
|
864
|
-
...variantStyles[colorBase],
|
|
864
|
+
...variant ? variantStyles[colorBase] : void 0,
|
|
865
865
|
...isPill && selected ? { ["--pill-selected-bg"]: `${color3.text.blue}24` } : void 0,
|
|
866
866
|
...style
|
|
867
867
|
};
|
|
868
|
+
const accessibleProps = {
|
|
869
|
+
"aria-label": props["aria-label"] ?? tooltipText,
|
|
870
|
+
...props
|
|
871
|
+
};
|
|
868
872
|
const element = asChild && React4.isValidElement(children) ? React4.cloneElement(children, {
|
|
869
873
|
className: cn(composed, children.props?.className),
|
|
870
874
|
ref,
|
|
871
|
-
...
|
|
872
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: cn(composed), ref, style: mergedStyle, ...
|
|
875
|
+
...accessibleProps
|
|
876
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { className: cn(composed), ref, style: mergedStyle, ...accessibleProps, children });
|
|
873
877
|
if (!tooltipText) {
|
|
874
878
|
return element;
|
|
875
879
|
}
|
|
@@ -992,13 +996,14 @@ var ButtonIcon = React5.forwardRef(
|
|
|
992
996
|
name,
|
|
993
997
|
variant,
|
|
994
998
|
size,
|
|
995
|
-
color: color6
|
|
999
|
+
color: color6,
|
|
996
1000
|
hoverColor,
|
|
997
1001
|
bgColor,
|
|
998
1002
|
bgHoverColor,
|
|
999
1003
|
actionColor,
|
|
1000
1004
|
tooltipText,
|
|
1001
1005
|
showTooltip = false,
|
|
1006
|
+
label,
|
|
1002
1007
|
disabled,
|
|
1003
1008
|
className,
|
|
1004
1009
|
type = "button",
|
|
@@ -1009,12 +1014,13 @@ var ButtonIcon = React5.forwardRef(
|
|
|
1009
1014
|
}, ref) => {
|
|
1010
1015
|
const isModalClose = variant === "modalClose";
|
|
1011
1016
|
const isRefresh = variant === "refresh";
|
|
1017
|
+
const isFilled = variant === "filled";
|
|
1012
1018
|
const resolvedBg = bgColor ? { base: bgColor, hover: bgHoverColor } : actionColor ? actionColorTokens[actionColor] : void 0;
|
|
1013
1019
|
const effectiveSize = isRefresh ? "sm" : size;
|
|
1014
|
-
const effectiveColor = isRefresh ? "primary" : color6;
|
|
1020
|
+
const effectiveColor = isRefresh ? "primary" : color6 ?? (isFilled ? "white" : "primary");
|
|
1015
1021
|
const effectiveHoverColor = isRefresh ? "primary" : isModalClose ? "danger" : hoverColor;
|
|
1016
1022
|
const effectiveShowTooltip = isRefresh ? true : showTooltip;
|
|
1017
|
-
const effectiveTooltipText = tooltipText;
|
|
1023
|
+
const effectiveTooltipText = tooltipText ?? label ?? props["aria-label"];
|
|
1018
1024
|
const colorProps = getIconColorProps(effectiveColor, effectiveHoverColor, resolvedBg);
|
|
1019
1025
|
const icon = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1020
1026
|
"button",
|
|
@@ -1253,77 +1259,24 @@ Checkbox.displayName = "Checkbox";
|
|
|
1253
1259
|
|
|
1254
1260
|
// src/components/ui/delete-action.tsx
|
|
1255
1261
|
var import_react = require("react");
|
|
1262
|
+
var import_react_i18next = require("react-i18next");
|
|
1256
1263
|
|
|
1257
|
-
// src/
|
|
1258
|
-
var
|
|
1259
|
-
var import_class_variance_authority5 = require("class-variance-authority");
|
|
1260
|
-
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1261
|
-
var Icon = React8.forwardRef(
|
|
1262
|
-
({
|
|
1263
|
-
name,
|
|
1264
|
-
variant,
|
|
1265
|
-
size,
|
|
1266
|
-
color: color6 = "primary",
|
|
1267
|
-
hoverColor,
|
|
1268
|
-
tooltipText,
|
|
1269
|
-
showTooltip = false,
|
|
1270
|
-
disabled,
|
|
1271
|
-
className,
|
|
1272
|
-
onClick,
|
|
1273
|
-
style,
|
|
1274
|
-
...props
|
|
1275
|
-
}, ref) => {
|
|
1276
|
-
const colorProps = getIconColorProps(color6, hoverColor);
|
|
1277
|
-
const icon = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1278
|
-
"i",
|
|
1279
|
-
{
|
|
1280
|
-
ref,
|
|
1281
|
-
className: cn(
|
|
1282
|
-
`${name}`,
|
|
1283
|
-
iconVariants({ variant, size }),
|
|
1284
|
-
colorProps.className,
|
|
1285
|
-
onClick && !disabled && "cursor-pointer",
|
|
1286
|
-
className
|
|
1287
|
-
),
|
|
1288
|
-
onClick,
|
|
1289
|
-
style: { ...colorProps.style, ...style },
|
|
1290
|
-
role: onClick ? "button" : void 0,
|
|
1291
|
-
tabIndex: onClick ? 0 : void 0,
|
|
1292
|
-
"aria-label": tooltipText || name,
|
|
1293
|
-
onKeyDown: (e) => {
|
|
1294
|
-
if (!onClick) return;
|
|
1295
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
1296
|
-
e.preventDefault();
|
|
1297
|
-
onClick(
|
|
1298
|
-
e
|
|
1299
|
-
);
|
|
1300
|
-
}
|
|
1301
|
-
},
|
|
1302
|
-
...props
|
|
1303
|
-
}
|
|
1304
|
-
);
|
|
1305
|
-
if (!showTooltip) {
|
|
1306
|
-
return icon;
|
|
1307
|
-
}
|
|
1308
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Tooltip, { children: [
|
|
1309
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(TooltipTrigger, { asChild: true, children: icon }),
|
|
1310
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("small", { children: tooltipText || name }) })
|
|
1311
|
-
] });
|
|
1312
|
-
}
|
|
1313
|
-
);
|
|
1314
|
-
Icon.displayName = "Icon";
|
|
1264
|
+
// src/helpers/helpersIndex.ts
|
|
1265
|
+
var getTranslationKey = () => "translations";
|
|
1315
1266
|
|
|
1316
1267
|
// src/components/ui/delete-action.tsx
|
|
1317
|
-
var
|
|
1268
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1318
1269
|
var DeleteAction = ({ onClick, tooltipText, showTooltip = true, className }) => {
|
|
1319
|
-
|
|
1320
|
-
|
|
1270
|
+
const translationKey = getTranslationKey();
|
|
1271
|
+
const { t } = (0, import_react_i18next.useTranslation)(translationKey);
|
|
1272
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1273
|
+
ButtonIcon,
|
|
1321
1274
|
{
|
|
1322
1275
|
name: "icon-neo-trash",
|
|
1323
1276
|
hoverColor: "danger",
|
|
1324
1277
|
onClick,
|
|
1325
1278
|
showTooltip,
|
|
1326
|
-
tooltipText: tooltipText || "
|
|
1279
|
+
tooltipText: tooltipText || t("ActionNames.delete"),
|
|
1327
1280
|
className
|
|
1328
1281
|
}
|
|
1329
1282
|
);
|
|
@@ -1331,25 +1284,28 @@ var DeleteAction = ({ onClick, tooltipText, showTooltip = true, className }) =>
|
|
|
1331
1284
|
var delete_action_default = DeleteAction;
|
|
1332
1285
|
|
|
1333
1286
|
// src/components/ui/dialog.tsx
|
|
1334
|
-
var
|
|
1335
|
-
var
|
|
1336
|
-
var
|
|
1287
|
+
var React9 = __toESM(require("react"), 1);
|
|
1288
|
+
var import_react_i18next2 = require("react-i18next");
|
|
1289
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1290
|
+
var DialogContext = React9.createContext(void 0);
|
|
1337
1291
|
function useDialog() {
|
|
1338
|
-
const context =
|
|
1292
|
+
const context = React9.useContext(DialogContext);
|
|
1339
1293
|
if (!context) {
|
|
1340
1294
|
throw new Error("Dialog components must be used within Dialog");
|
|
1341
1295
|
}
|
|
1342
1296
|
return context;
|
|
1343
1297
|
}
|
|
1344
1298
|
var Dialog = ({ open: controlledOpen, onOpenChange, children }) => {
|
|
1345
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
1299
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React9.useState(false);
|
|
1300
|
+
const [titleId, setTitleId] = React9.useState(void 0);
|
|
1301
|
+
const [descriptionId, setDescriptionId] = React9.useState(void 0);
|
|
1346
1302
|
const open = controlledOpen !== void 0 ? controlledOpen : uncontrolledOpen;
|
|
1347
1303
|
const setOpen = onOpenChange || setUncontrolledOpen;
|
|
1348
|
-
return /* @__PURE__ */ (0,
|
|
1304
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogContext.Provider, { value: { open, onOpenChange: setOpen, titleId, descriptionId, setTitleId, setDescriptionId }, children });
|
|
1349
1305
|
};
|
|
1350
|
-
var DialogTrigger =
|
|
1306
|
+
var DialogTrigger = React9.forwardRef(({ onClick, ...props }, ref) => {
|
|
1351
1307
|
const { onOpenChange } = useDialog();
|
|
1352
|
-
return /* @__PURE__ */ (0,
|
|
1308
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1353
1309
|
Button,
|
|
1354
1310
|
{
|
|
1355
1311
|
ref,
|
|
@@ -1367,11 +1323,11 @@ DialogTrigger.displayName = "DialogTrigger";
|
|
|
1367
1323
|
var DialogPortal = ({ children }) => {
|
|
1368
1324
|
const { open } = useDialog();
|
|
1369
1325
|
if (!open) return null;
|
|
1370
|
-
return /* @__PURE__ */ (0,
|
|
1326
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_jsx_runtime9.Fragment, { children });
|
|
1371
1327
|
};
|
|
1372
|
-
var DialogClose =
|
|
1328
|
+
var DialogClose = React9.forwardRef(({ onClick, ...props }, ref) => {
|
|
1373
1329
|
const { onOpenChange } = useDialog();
|
|
1374
|
-
return /* @__PURE__ */ (0,
|
|
1330
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1375
1331
|
Button,
|
|
1376
1332
|
{
|
|
1377
1333
|
ref,
|
|
@@ -1386,9 +1342,9 @@ var DialogClose = React10.forwardRef(({ onClick, ...props }, ref) => {
|
|
|
1386
1342
|
);
|
|
1387
1343
|
});
|
|
1388
1344
|
DialogClose.displayName = "DialogClose";
|
|
1389
|
-
var DialogOverlay =
|
|
1345
|
+
var DialogOverlay = React9.forwardRef(({ className, onClick, closeOnClick = true, ...props }, ref) => {
|
|
1390
1346
|
const { onOpenChange } = useDialog();
|
|
1391
|
-
return /* @__PURE__ */ (0,
|
|
1347
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1392
1348
|
"div",
|
|
1393
1349
|
{
|
|
1394
1350
|
ref,
|
|
@@ -1405,9 +1361,10 @@ var DialogOverlay = React10.forwardRef(({ className, onClick, closeOnClick = tru
|
|
|
1405
1361
|
);
|
|
1406
1362
|
});
|
|
1407
1363
|
DialogOverlay.displayName = "DialogOverlay";
|
|
1408
|
-
var DialogContent =
|
|
1409
|
-
const { onOpenChange } = useDialog();
|
|
1410
|
-
|
|
1364
|
+
var DialogContent = React9.forwardRef(({ className, children, showCloseButton = true, closeOnEscape = true, closeOnOverlayClick = true, ...props }, ref) => {
|
|
1365
|
+
const { onOpenChange, titleId, descriptionId } = useDialog();
|
|
1366
|
+
const { t } = (0, import_react_i18next2.useTranslation)("translations");
|
|
1367
|
+
React9.useEffect(() => {
|
|
1411
1368
|
if (!closeOnEscape) return;
|
|
1412
1369
|
const handleEscape = (e) => {
|
|
1413
1370
|
if (e.key === "Escape") {
|
|
@@ -1417,12 +1374,16 @@ var DialogContent = React10.forwardRef(({ className, children, showCloseButton =
|
|
|
1417
1374
|
document.addEventListener("keydown", handleEscape);
|
|
1418
1375
|
return () => document.removeEventListener("keydown", handleEscape);
|
|
1419
1376
|
}, [onOpenChange, closeOnEscape]);
|
|
1420
|
-
return /* @__PURE__ */ (0,
|
|
1421
|
-
/* @__PURE__ */ (0,
|
|
1422
|
-
/* @__PURE__ */ (0,
|
|
1377
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogPortal, { children: [
|
|
1378
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogOverlay, { closeOnClick: closeOnOverlayClick }),
|
|
1379
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
1423
1380
|
"div",
|
|
1424
1381
|
{
|
|
1425
1382
|
ref,
|
|
1383
|
+
role: "dialog",
|
|
1384
|
+
"aria-modal": "true",
|
|
1385
|
+
"aria-labelledby": titleId,
|
|
1386
|
+
"aria-describedby": descriptionId,
|
|
1426
1387
|
className: cn(
|
|
1427
1388
|
"fixed left-[50%] top-[50%] z-[var(--zindex-modal)] grid w-full max-w-6xl translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 animate-in fade-in-0 zoom-in-95 rounded-lg",
|
|
1428
1389
|
className
|
|
@@ -1431,14 +1392,15 @@ var DialogContent = React10.forwardRef(({ className, children, showCloseButton =
|
|
|
1431
1392
|
...props,
|
|
1432
1393
|
children: [
|
|
1433
1394
|
children,
|
|
1434
|
-
showCloseButton && /* @__PURE__ */ (0,
|
|
1395
|
+
showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1435
1396
|
ButtonIcon,
|
|
1436
1397
|
{
|
|
1437
1398
|
type: "button",
|
|
1438
1399
|
name: "icon-neo-close",
|
|
1439
1400
|
variant: "modalClose",
|
|
1440
1401
|
className: "absolute right-4 top-4",
|
|
1441
|
-
onClick: () => onOpenChange(false)
|
|
1402
|
+
onClick: () => onOpenChange(false),
|
|
1403
|
+
tooltipText: t("ActionNames.close")
|
|
1442
1404
|
}
|
|
1443
1405
|
)
|
|
1444
1406
|
]
|
|
@@ -1450,7 +1412,7 @@ DialogContent.displayName = "DialogContent";
|
|
|
1450
1412
|
var DialogHeader = ({
|
|
1451
1413
|
className,
|
|
1452
1414
|
...props
|
|
1453
|
-
}) => /* @__PURE__ */ (0,
|
|
1415
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1454
1416
|
"div",
|
|
1455
1417
|
{
|
|
1456
1418
|
className: cn(
|
|
@@ -1464,7 +1426,7 @@ DialogHeader.displayName = "DialogHeader";
|
|
|
1464
1426
|
var DialogFooter = ({
|
|
1465
1427
|
className,
|
|
1466
1428
|
...props
|
|
1467
|
-
}) => /* @__PURE__ */ (0,
|
|
1429
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1468
1430
|
"div",
|
|
1469
1431
|
{
|
|
1470
1432
|
className: cn(
|
|
@@ -1475,52 +1437,72 @@ var DialogFooter = ({
|
|
|
1475
1437
|
}
|
|
1476
1438
|
);
|
|
1477
1439
|
DialogFooter.displayName = "DialogFooter";
|
|
1478
|
-
var DialogTitle =
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1440
|
+
var DialogTitle = React9.forwardRef(({ className, id, ...props }, ref) => {
|
|
1441
|
+
const generatedId = React9.useId();
|
|
1442
|
+
const resolvedId = id ?? generatedId;
|
|
1443
|
+
const { setTitleId } = useDialog();
|
|
1444
|
+
React9.useEffect(() => {
|
|
1445
|
+
setTitleId(resolvedId);
|
|
1446
|
+
return () => setTitleId(void 0);
|
|
1447
|
+
}, [resolvedId, setTitleId]);
|
|
1448
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1449
|
+
"h2",
|
|
1450
|
+
{
|
|
1451
|
+
ref,
|
|
1452
|
+
id: resolvedId,
|
|
1453
|
+
className: cn(
|
|
1454
|
+
"text-heading font-semibold leading-none tracking-tight",
|
|
1455
|
+
className
|
|
1456
|
+
),
|
|
1457
|
+
...props
|
|
1458
|
+
}
|
|
1459
|
+
);
|
|
1460
|
+
});
|
|
1489
1461
|
DialogTitle.displayName = "DialogTitle";
|
|
1490
|
-
var DialogDescription =
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
)
|
|
1462
|
+
var DialogDescription = React9.forwardRef(({ className, id, ...props }, ref) => {
|
|
1463
|
+
const generatedId = React9.useId();
|
|
1464
|
+
const resolvedId = id ?? generatedId;
|
|
1465
|
+
const { setDescriptionId } = useDialog();
|
|
1466
|
+
React9.useEffect(() => {
|
|
1467
|
+
setDescriptionId(resolvedId);
|
|
1468
|
+
return () => setDescriptionId(void 0);
|
|
1469
|
+
}, [resolvedId, setDescriptionId]);
|
|
1470
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1471
|
+
"p",
|
|
1472
|
+
{
|
|
1473
|
+
ref,
|
|
1474
|
+
id: resolvedId,
|
|
1475
|
+
className: cn("text-body text-muted-foreground", className),
|
|
1476
|
+
...props
|
|
1477
|
+
}
|
|
1478
|
+
);
|
|
1479
|
+
});
|
|
1498
1480
|
DialogDescription.displayName = "DialogDescription";
|
|
1499
1481
|
|
|
1500
1482
|
// src/components/ui/dropdown-menu.tsx
|
|
1501
|
-
var
|
|
1483
|
+
var React10 = __toESM(require("react"), 1);
|
|
1502
1484
|
var import_react_dom2 = require("react-dom");
|
|
1503
1485
|
var import_lucide_react = require("lucide-react");
|
|
1504
|
-
var
|
|
1505
|
-
var DropdownMenuContext =
|
|
1486
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1487
|
+
var DropdownMenuContext = React10.createContext(void 0);
|
|
1506
1488
|
function useDropdownMenu() {
|
|
1507
|
-
const context =
|
|
1489
|
+
const context = React10.useContext(DropdownMenuContext);
|
|
1508
1490
|
if (!context) {
|
|
1509
1491
|
throw new Error("DropdownMenu components must be used within DropdownMenu");
|
|
1510
1492
|
}
|
|
1511
1493
|
return context;
|
|
1512
1494
|
}
|
|
1513
1495
|
var DropdownMenu = ({ open: controlledOpen, onOpenChange, children }) => {
|
|
1514
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
1496
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React10.useState(false);
|
|
1515
1497
|
const open = controlledOpen !== void 0 ? controlledOpen : uncontrolledOpen;
|
|
1516
1498
|
const setOpen = onOpenChange || setUncontrolledOpen;
|
|
1517
|
-
const triggerRef =
|
|
1518
|
-
return /* @__PURE__ */ (0,
|
|
1499
|
+
const triggerRef = React10.useRef(null);
|
|
1500
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DropdownMenuContext.Provider, { value: { open, setOpen, triggerRef }, children });
|
|
1519
1501
|
};
|
|
1520
|
-
var DropdownMenuTrigger =
|
|
1502
|
+
var DropdownMenuTrigger = React10.forwardRef(({ onClick, children, asChild, ...props }, ref) => {
|
|
1521
1503
|
const { setOpen, open, triggerRef } = useDropdownMenu();
|
|
1522
|
-
if (asChild &&
|
|
1523
|
-
return
|
|
1504
|
+
if (asChild && React10.isValidElement(children)) {
|
|
1505
|
+
return React10.cloneElement(children, {
|
|
1524
1506
|
ref: (node) => {
|
|
1525
1507
|
triggerRef.current = node;
|
|
1526
1508
|
if (ref) {
|
|
@@ -1539,7 +1521,7 @@ var DropdownMenuTrigger = React11.forwardRef(({ onClick, children, asChild, ...p
|
|
|
1539
1521
|
}
|
|
1540
1522
|
});
|
|
1541
1523
|
}
|
|
1542
|
-
return /* @__PURE__ */ (0,
|
|
1524
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1543
1525
|
Button,
|
|
1544
1526
|
{
|
|
1545
1527
|
ref: (node) => {
|
|
@@ -1564,19 +1546,19 @@ var DropdownMenuTrigger = React11.forwardRef(({ onClick, children, asChild, ...p
|
|
|
1564
1546
|
});
|
|
1565
1547
|
DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
|
|
1566
1548
|
var DropdownMenuGroup = ({ children }) => {
|
|
1567
|
-
return /* @__PURE__ */ (0,
|
|
1549
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { role: "group", children });
|
|
1568
1550
|
};
|
|
1569
1551
|
var DropdownMenuPortal = ({ children }) => {
|
|
1570
1552
|
const portalRoot = document.getElementById("fpneo") || document.body;
|
|
1571
1553
|
return (0, import_react_dom2.createPortal)(children, portalRoot);
|
|
1572
1554
|
};
|
|
1573
1555
|
var DropdownMenuSub = ({ children }) => {
|
|
1574
|
-
return /* @__PURE__ */ (0,
|
|
1556
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children });
|
|
1575
1557
|
};
|
|
1576
1558
|
var DropdownMenuRadioGroup = ({ children }) => {
|
|
1577
|
-
return /* @__PURE__ */ (0,
|
|
1559
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { role: "radiogroup", children });
|
|
1578
1560
|
};
|
|
1579
|
-
var DropdownMenuSubTrigger =
|
|
1561
|
+
var DropdownMenuSubTrigger = React10.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1580
1562
|
"div",
|
|
1581
1563
|
{
|
|
1582
1564
|
ref,
|
|
@@ -1588,12 +1570,12 @@ var DropdownMenuSubTrigger = React11.forwardRef(({ className, inset, children, .
|
|
|
1588
1570
|
...props,
|
|
1589
1571
|
children: [
|
|
1590
1572
|
children,
|
|
1591
|
-
/* @__PURE__ */ (0,
|
|
1573
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react.ChevronRight, { className: "ml-auto h-4 w-4" })
|
|
1592
1574
|
]
|
|
1593
1575
|
}
|
|
1594
1576
|
));
|
|
1595
1577
|
DropdownMenuSubTrigger.displayName = "DropdownMenuSubTrigger";
|
|
1596
|
-
var DropdownMenuSubContent =
|
|
1578
|
+
var DropdownMenuSubContent = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1597
1579
|
"div",
|
|
1598
1580
|
{
|
|
1599
1581
|
ref,
|
|
@@ -1605,13 +1587,13 @@ var DropdownMenuSubContent = React11.forwardRef(({ className, ...props }, ref) =
|
|
|
1605
1587
|
}
|
|
1606
1588
|
));
|
|
1607
1589
|
DropdownMenuSubContent.displayName = "DropdownMenuSubContent";
|
|
1608
|
-
var DropdownMenuContent =
|
|
1590
|
+
var DropdownMenuContent = React10.forwardRef(({ className, sideOffset = 4, align = "end", ...props }, ref) => {
|
|
1609
1591
|
const { open, setOpen, triggerRef } = useDropdownMenu();
|
|
1610
|
-
const contentRef =
|
|
1611
|
-
const [position, setPosition] =
|
|
1612
|
-
const [isPositioned, setIsPositioned] =
|
|
1613
|
-
|
|
1614
|
-
|
|
1592
|
+
const contentRef = React10.useRef(null);
|
|
1593
|
+
const [position, setPosition] = React10.useState({ top: 0, left: 0 });
|
|
1594
|
+
const [isPositioned, setIsPositioned] = React10.useState(false);
|
|
1595
|
+
React10.useImperativeHandle(ref, () => contentRef.current);
|
|
1596
|
+
React10.useEffect(() => {
|
|
1615
1597
|
if (!open || !triggerRef.current) {
|
|
1616
1598
|
setIsPositioned(false);
|
|
1617
1599
|
return;
|
|
@@ -1666,7 +1648,7 @@ var DropdownMenuContent = React11.forwardRef(({ className, sideOffset = 4, align
|
|
|
1666
1648
|
window.removeEventListener("resize", updatePosition);
|
|
1667
1649
|
};
|
|
1668
1650
|
}, [open, sideOffset, align, triggerRef]);
|
|
1669
|
-
|
|
1651
|
+
React10.useEffect(() => {
|
|
1670
1652
|
if (!open) return;
|
|
1671
1653
|
const handleClickOutside = (e) => {
|
|
1672
1654
|
if (contentRef.current && !contentRef.current.contains(e.target) && triggerRef.current && !triggerRef.current.contains(e.target)) {
|
|
@@ -1686,7 +1668,7 @@ var DropdownMenuContent = React11.forwardRef(({ className, sideOffset = 4, align
|
|
|
1686
1668
|
};
|
|
1687
1669
|
}, [open, setOpen, triggerRef]);
|
|
1688
1670
|
if (!open) return null;
|
|
1689
|
-
return /* @__PURE__ */ (0,
|
|
1671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DropdownMenuPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1690
1672
|
"div",
|
|
1691
1673
|
{
|
|
1692
1674
|
ref: contentRef,
|
|
@@ -1704,9 +1686,9 @@ var DropdownMenuContent = React11.forwardRef(({ className, sideOffset = 4, align
|
|
|
1704
1686
|
) });
|
|
1705
1687
|
});
|
|
1706
1688
|
DropdownMenuContent.displayName = "DropdownMenuContent";
|
|
1707
|
-
var DropdownMenuItem =
|
|
1689
|
+
var DropdownMenuItem = React10.forwardRef(({ className, inset, onClick, ...props }, ref) => {
|
|
1708
1690
|
const { setOpen } = useDropdownMenu();
|
|
1709
|
-
return /* @__PURE__ */ (0,
|
|
1691
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1710
1692
|
"div",
|
|
1711
1693
|
{
|
|
1712
1694
|
ref,
|
|
@@ -1724,7 +1706,7 @@ var DropdownMenuItem = React11.forwardRef(({ className, inset, onClick, ...props
|
|
|
1724
1706
|
);
|
|
1725
1707
|
});
|
|
1726
1708
|
DropdownMenuItem.displayName = "DropdownMenuItem";
|
|
1727
|
-
var DropdownMenuCheckboxItem =
|
|
1709
|
+
var DropdownMenuCheckboxItem = React10.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1728
1710
|
"div",
|
|
1729
1711
|
{
|
|
1730
1712
|
ref,
|
|
@@ -1734,13 +1716,13 @@ var DropdownMenuCheckboxItem = React11.forwardRef(({ className, children, checke
|
|
|
1734
1716
|
),
|
|
1735
1717
|
...props,
|
|
1736
1718
|
children: [
|
|
1737
|
-
/* @__PURE__ */ (0,
|
|
1719
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: checked && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react.Check, { className: "h-4 w-4" }) }),
|
|
1738
1720
|
children
|
|
1739
1721
|
]
|
|
1740
1722
|
}
|
|
1741
1723
|
));
|
|
1742
1724
|
DropdownMenuCheckboxItem.displayName = "DropdownMenuCheckboxItem";
|
|
1743
|
-
var DropdownMenuRadioItem =
|
|
1725
|
+
var DropdownMenuRadioItem = React10.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1744
1726
|
"div",
|
|
1745
1727
|
{
|
|
1746
1728
|
ref,
|
|
@@ -1750,13 +1732,13 @@ var DropdownMenuRadioItem = React11.forwardRef(({ className, children, ...props
|
|
|
1750
1732
|
),
|
|
1751
1733
|
...props,
|
|
1752
1734
|
children: [
|
|
1753
|
-
/* @__PURE__ */ (0,
|
|
1735
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react.Circle, { className: "h-2 w-2 fill-current" }) }),
|
|
1754
1736
|
children
|
|
1755
1737
|
]
|
|
1756
1738
|
}
|
|
1757
1739
|
));
|
|
1758
1740
|
DropdownMenuRadioItem.displayName = "DropdownMenuRadioItem";
|
|
1759
|
-
var DropdownMenuLabel =
|
|
1741
|
+
var DropdownMenuLabel = React10.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1760
1742
|
"div",
|
|
1761
1743
|
{
|
|
1762
1744
|
ref,
|
|
@@ -1769,7 +1751,7 @@ var DropdownMenuLabel = React11.forwardRef(({ className, inset, ...props }, ref)
|
|
|
1769
1751
|
}
|
|
1770
1752
|
));
|
|
1771
1753
|
DropdownMenuLabel.displayName = "DropdownMenuLabel";
|
|
1772
|
-
var DropdownMenuSeparator =
|
|
1754
|
+
var DropdownMenuSeparator = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1773
1755
|
"div",
|
|
1774
1756
|
{
|
|
1775
1757
|
ref,
|
|
@@ -1782,7 +1764,7 @@ var DropdownMenuShortcut = ({
|
|
|
1782
1764
|
className,
|
|
1783
1765
|
...props
|
|
1784
1766
|
}) => {
|
|
1785
|
-
return /* @__PURE__ */ (0,
|
|
1767
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1786
1768
|
"span",
|
|
1787
1769
|
{
|
|
1788
1770
|
className: cn("ml-auto text-label tracking-widest opacity-60", className),
|
|
@@ -1796,9 +1778,9 @@ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
|
1796
1778
|
var import_react2 = require("react");
|
|
1797
1779
|
|
|
1798
1780
|
// src/components/ui/input.tsx
|
|
1799
|
-
var
|
|
1781
|
+
var React11 = __toESM(require("react"), 1);
|
|
1800
1782
|
var import_formik = require("formik");
|
|
1801
|
-
var
|
|
1783
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1802
1784
|
var baseClasses = [
|
|
1803
1785
|
"flex h-[2.571rem] w-full items-center rounded-[0.65rem] px-4 py-0",
|
|
1804
1786
|
"text-[0.8125rem] text-[var(--color-neutral-800)]",
|
|
@@ -1815,7 +1797,7 @@ var baseClasses = [
|
|
|
1815
1797
|
"disabled:cursor-not-allowed",
|
|
1816
1798
|
"disabled:opacity-50"
|
|
1817
1799
|
].join(" ");
|
|
1818
|
-
var Input =
|
|
1800
|
+
var Input = React11.forwardRef(
|
|
1819
1801
|
({
|
|
1820
1802
|
as = "input",
|
|
1821
1803
|
className,
|
|
@@ -1826,10 +1808,10 @@ var Input = React12.forwardRef(
|
|
|
1826
1808
|
innerRef,
|
|
1827
1809
|
...props
|
|
1828
1810
|
}, ref) => {
|
|
1829
|
-
const internalRef =
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1811
|
+
const internalRef = React11.useRef(null);
|
|
1812
|
+
React11.useImperativeHandle(ref, () => internalRef.current);
|
|
1813
|
+
React11.useImperativeHandle(innerRef, () => internalRef.current);
|
|
1814
|
+
React11.useEffect(() => {
|
|
1833
1815
|
if (autoFocus) {
|
|
1834
1816
|
internalRef.current?.focus();
|
|
1835
1817
|
}
|
|
@@ -1840,7 +1822,7 @@ var Input = React12.forwardRef(
|
|
|
1840
1822
|
className
|
|
1841
1823
|
);
|
|
1842
1824
|
if (as === "field") {
|
|
1843
|
-
return /* @__PURE__ */ (0,
|
|
1825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1844
1826
|
import_formik.Field,
|
|
1845
1827
|
{
|
|
1846
1828
|
innerRef: internalRef,
|
|
@@ -1852,7 +1834,7 @@ var Input = React12.forwardRef(
|
|
|
1852
1834
|
}
|
|
1853
1835
|
);
|
|
1854
1836
|
}
|
|
1855
|
-
return /* @__PURE__ */ (0,
|
|
1837
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1856
1838
|
"input",
|
|
1857
1839
|
{
|
|
1858
1840
|
ref: internalRef,
|
|
@@ -1868,7 +1850,7 @@ var Input = React12.forwardRef(
|
|
|
1868
1850
|
Input.displayName = "Input";
|
|
1869
1851
|
|
|
1870
1852
|
// src/components/ui/expandable-search.tsx
|
|
1871
|
-
var
|
|
1853
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1872
1854
|
var ExpandableSearch = ({ onSearch, placeholder = "Search...", className = "" }) => {
|
|
1873
1855
|
const [isExpanded, setIsExpanded] = (0, import_react2.useState)(false);
|
|
1874
1856
|
const [searchValue, setSearchValue] = (0, import_react2.useState)("");
|
|
@@ -1897,9 +1879,9 @@ var ExpandableSearch = ({ onSearch, placeholder = "Search...", className = "" })
|
|
|
1897
1879
|
inputRef.current.focus();
|
|
1898
1880
|
}
|
|
1899
1881
|
};
|
|
1900
|
-
return /* @__PURE__ */ (0,
|
|
1901
|
-
/* @__PURE__ */ (0,
|
|
1902
|
-
/* @__PURE__ */ (0,
|
|
1882
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `flex items-center ${className}`, children: isExpanded ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center gap-2 transition-all duration-300 ease-in-out", children: [
|
|
1883
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "relative flex justify-center items-center", children: [
|
|
1884
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1903
1885
|
Input,
|
|
1904
1886
|
{
|
|
1905
1887
|
ref: inputRef,
|
|
@@ -1910,25 +1892,25 @@ var ExpandableSearch = ({ onSearch, placeholder = "Search...", className = "" })
|
|
|
1910
1892
|
className: "formfield__search"
|
|
1911
1893
|
}
|
|
1912
1894
|
),
|
|
1913
|
-
searchValue && /* @__PURE__ */ (0,
|
|
1895
|
+
searchValue && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1914
1896
|
Button,
|
|
1915
1897
|
{
|
|
1916
1898
|
onClick: handleClear,
|
|
1917
1899
|
variant: "ghost",
|
|
1918
1900
|
size: "icon",
|
|
1919
1901
|
className: "absolute right-3 top-1/2 -translate-y-1/2 text-neutral-600 hover:text-[var(--color-ext-4b5563)] transition-colors",
|
|
1920
|
-
children: /* @__PURE__ */ (0,
|
|
1902
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("i", { className: "icon-neo-close text-[0.875rem]" })
|
|
1921
1903
|
}
|
|
1922
1904
|
)
|
|
1923
1905
|
] }),
|
|
1924
|
-
/* @__PURE__ */ (0,
|
|
1925
|
-
] }) : /* @__PURE__ */ (0,
|
|
1906
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Button, { variant: "ghost", size: "icon", onClick: handleToggle, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("i", { className: "icon-neo-close text-[0.875rem]" }) })
|
|
1907
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Button, { variant: "ghost", size: "icon", onClick: handleToggle, className: "header__round-btn", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("i", { className: "icon-neo-search" }) }) });
|
|
1926
1908
|
};
|
|
1927
1909
|
|
|
1928
1910
|
// src/components/ui/file-input.tsx
|
|
1929
|
-
var
|
|
1930
|
-
var
|
|
1931
|
-
var FileInput =
|
|
1911
|
+
var React13 = __toESM(require("react"), 1);
|
|
1912
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1913
|
+
var FileInput = React13.forwardRef(
|
|
1932
1914
|
({
|
|
1933
1915
|
id,
|
|
1934
1916
|
className,
|
|
@@ -1940,10 +1922,10 @@ var FileInput = React14.forwardRef(
|
|
|
1940
1922
|
disabled,
|
|
1941
1923
|
...props
|
|
1942
1924
|
}, ref) => {
|
|
1943
|
-
const generatedId =
|
|
1925
|
+
const generatedId = React13.useId();
|
|
1944
1926
|
const inputId = id ?? generatedId;
|
|
1945
|
-
const content = /* @__PURE__ */ (0,
|
|
1946
|
-
/* @__PURE__ */ (0,
|
|
1927
|
+
const content = /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
|
|
1928
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1947
1929
|
"input",
|
|
1948
1930
|
{
|
|
1949
1931
|
ref,
|
|
@@ -1954,17 +1936,18 @@ var FileInput = React14.forwardRef(
|
|
|
1954
1936
|
...props
|
|
1955
1937
|
}
|
|
1956
1938
|
),
|
|
1957
|
-
children && /* @__PURE__ */ (0,
|
|
1939
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("label", { htmlFor: inputId, className: labelClassName, style: labelStyle, ...labelProps, children })
|
|
1958
1940
|
] });
|
|
1959
|
-
return wrapperClassName ? /* @__PURE__ */ (0,
|
|
1941
|
+
return wrapperClassName ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: wrapperClassName, children: content }) : content;
|
|
1960
1942
|
}
|
|
1961
1943
|
);
|
|
1962
1944
|
FileInput.displayName = "FileInput";
|
|
1963
1945
|
|
|
1964
1946
|
// src/components/ui/form-field.tsx
|
|
1965
|
-
var import_react3 = require("react");
|
|
1947
|
+
var import_react3 = __toESM(require("react"), 1);
|
|
1966
1948
|
var import_formik2 = require("formik");
|
|
1967
|
-
var
|
|
1949
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1950
|
+
var LABELABLE_TAGS = /* @__PURE__ */ new Set(["input", "select", "textarea"]);
|
|
1968
1951
|
var FormField = ({
|
|
1969
1952
|
label,
|
|
1970
1953
|
required,
|
|
@@ -1972,19 +1955,87 @@ var FormField = ({
|
|
|
1972
1955
|
error,
|
|
1973
1956
|
hint,
|
|
1974
1957
|
children,
|
|
1975
|
-
className
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
children
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1958
|
+
className,
|
|
1959
|
+
id
|
|
1960
|
+
}) => {
|
|
1961
|
+
const generatedId = import_react3.default.useId();
|
|
1962
|
+
const fieldId = id ?? generatedId;
|
|
1963
|
+
let renderedChildren = children;
|
|
1964
|
+
if (label && import_react3.default.isValidElement(children) && (children.type === import_formik2.Field || typeof children.type === "string" && LABELABLE_TAGS.has(children.type)) && !children.props.id) {
|
|
1965
|
+
renderedChildren = import_react3.default.cloneElement(children, { id: fieldId });
|
|
1966
|
+
}
|
|
1967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: cn("form__field", className), children: [
|
|
1968
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("label", { className: "formfield__label", htmlFor: fieldId, children: [
|
|
1969
|
+
label,
|
|
1970
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "required-field", children: "*" })
|
|
1971
|
+
] }),
|
|
1972
|
+
renderedChildren,
|
|
1973
|
+
hint && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "text-[0.75rem] text-neutral-600 mt-1", children: hint }),
|
|
1974
|
+
errorName && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_formik2.ErrorMessage, { name: errorName, component: "p", className: "form-error" }),
|
|
1975
|
+
!errorName && error && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "form-error", children: error })
|
|
1976
|
+
] });
|
|
1977
|
+
};
|
|
1986
1978
|
var form_field_default = FormField;
|
|
1987
1979
|
|
|
1980
|
+
// src/components/ui/icon.tsx
|
|
1981
|
+
var React15 = __toESM(require("react"), 1);
|
|
1982
|
+
var import_class_variance_authority5 = require("class-variance-authority");
|
|
1983
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1984
|
+
var Icon = React15.forwardRef(
|
|
1985
|
+
({
|
|
1986
|
+
name,
|
|
1987
|
+
variant,
|
|
1988
|
+
size,
|
|
1989
|
+
color: color6 = "primary",
|
|
1990
|
+
hoverColor,
|
|
1991
|
+
tooltipText,
|
|
1992
|
+
showTooltip = false,
|
|
1993
|
+
disabled,
|
|
1994
|
+
className,
|
|
1995
|
+
onClick,
|
|
1996
|
+
style,
|
|
1997
|
+
...props
|
|
1998
|
+
}, ref) => {
|
|
1999
|
+
const colorProps = getIconColorProps(color6, hoverColor);
|
|
2000
|
+
const icon = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2001
|
+
"i",
|
|
2002
|
+
{
|
|
2003
|
+
ref,
|
|
2004
|
+
className: cn(
|
|
2005
|
+
`${name}`,
|
|
2006
|
+
iconVariants({ variant, size }),
|
|
2007
|
+
colorProps.className,
|
|
2008
|
+
onClick && !disabled && "cursor-pointer",
|
|
2009
|
+
className
|
|
2010
|
+
),
|
|
2011
|
+
onClick,
|
|
2012
|
+
style: { ...colorProps.style, ...style },
|
|
2013
|
+
role: onClick ? "button" : void 0,
|
|
2014
|
+
tabIndex: onClick ? 0 : void 0,
|
|
2015
|
+
"aria-hidden": onClick ? "true" : "false",
|
|
2016
|
+
onKeyDown: (e) => {
|
|
2017
|
+
if (!onClick) return;
|
|
2018
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
2019
|
+
e.preventDefault();
|
|
2020
|
+
onClick(
|
|
2021
|
+
e
|
|
2022
|
+
);
|
|
2023
|
+
}
|
|
2024
|
+
},
|
|
2025
|
+
...props
|
|
2026
|
+
}
|
|
2027
|
+
);
|
|
2028
|
+
if (!showTooltip) {
|
|
2029
|
+
return icon;
|
|
2030
|
+
}
|
|
2031
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Tooltip, { children: [
|
|
2032
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(TooltipTrigger, { asChild: true, children: icon }),
|
|
2033
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("small", { children: tooltipText || name }) })
|
|
2034
|
+
] });
|
|
2035
|
+
}
|
|
2036
|
+
);
|
|
2037
|
+
Icon.displayName = "Icon";
|
|
2038
|
+
|
|
1988
2039
|
// src/components/ui/list.tsx
|
|
1989
2040
|
var React16 = __toESM(require("react"), 1);
|
|
1990
2041
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
@@ -2283,6 +2334,7 @@ var ScrollArea = React20.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
2283
2334
|
"div",
|
|
2284
2335
|
{
|
|
2285
2336
|
ref,
|
|
2337
|
+
tabIndex: 0,
|
|
2286
2338
|
className: cn(
|
|
2287
2339
|
"relative overflow-y-auto overflow-x-hidden",
|
|
2288
2340
|
"[&::-webkit-scrollbar]:w-[0.375rem]",
|
|
@@ -2456,8 +2508,12 @@ var Tab = React22.forwardRef(
|
|
|
2456
2508
|
variant,
|
|
2457
2509
|
size,
|
|
2458
2510
|
disabled,
|
|
2459
|
-
onClick
|
|
2511
|
+
onClick,
|
|
2512
|
+
id,
|
|
2513
|
+
panelId
|
|
2460
2514
|
}, ref) => {
|
|
2515
|
+
const generatedId = React22.useId();
|
|
2516
|
+
const resolvedId = id ?? generatedId;
|
|
2461
2517
|
const handleKeyDown = (e) => {
|
|
2462
2518
|
if (disabled) return;
|
|
2463
2519
|
if (e.key === "Enter" || e.key === " ") {
|
|
@@ -2469,9 +2525,11 @@ var Tab = React22.forwardRef(
|
|
|
2469
2525
|
"div",
|
|
2470
2526
|
{
|
|
2471
2527
|
ref,
|
|
2528
|
+
id: resolvedId,
|
|
2472
2529
|
role: "tab",
|
|
2473
2530
|
"aria-selected": active,
|
|
2474
2531
|
"aria-disabled": disabled,
|
|
2532
|
+
"aria-controls": panelId,
|
|
2475
2533
|
tabIndex: disabled ? -1 : active ? 0 : -1,
|
|
2476
2534
|
onClick: !disabled ? onClick : void 0,
|
|
2477
2535
|
onKeyDown: handleKeyDown,
|
|
@@ -2843,7 +2901,8 @@ var TimePicker = ({
|
|
|
2843
2901
|
},
|
|
2844
2902
|
name: "icon-neo-close",
|
|
2845
2903
|
color: "muted",
|
|
2846
|
-
size: "xs"
|
|
2904
|
+
size: "xs",
|
|
2905
|
+
tooltipText: "Clear time"
|
|
2847
2906
|
}
|
|
2848
2907
|
),
|
|
2849
2908
|
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("i", { className: "icon-neo-time-four shared-time-picker__icon" })
|
|
@@ -3011,6 +3070,7 @@ var TruncatedTextByWidth = ({ text, className }) => {
|
|
|
3011
3070
|
|
|
3012
3071
|
// src/components/ui/view-toggle.tsx
|
|
3013
3072
|
var React28 = __toESM(require("react"), 1);
|
|
3073
|
+
var import_react_i18next3 = require("react-i18next");
|
|
3014
3074
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
3015
3075
|
var VIEW_MODE_KEY = "fp_view_mode";
|
|
3016
3076
|
var useViewMode = () => {
|
|
@@ -3026,6 +3086,8 @@ var useViewMode = () => {
|
|
|
3026
3086
|
return [viewMode, setAndPersist];
|
|
3027
3087
|
};
|
|
3028
3088
|
var ViewToggle = ({ viewMode = "grid" /* GRID */, onViewModeChange }) => {
|
|
3089
|
+
const translationKey = getTranslationKey();
|
|
3090
|
+
const { t } = (0, import_react_i18next3.useTranslation)(translationKey);
|
|
3029
3091
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "view-toggle", children: [
|
|
3030
3092
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Tooltip, { children: [
|
|
3031
3093
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
@@ -3036,10 +3098,11 @@ var ViewToggle = ({ viewMode = "grid" /* GRID */, onViewModeChange }) => {
|
|
|
3036
3098
|
className: `view-toggle__btn${viewMode === "grid" /* GRID */ ? " view-toggle__btn--active" : ""}`,
|
|
3037
3099
|
variant: "ghost",
|
|
3038
3100
|
size: "icon",
|
|
3039
|
-
|
|
3101
|
+
"aria-label": t("ActionNames.gridView") || "Grid view",
|
|
3102
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("i", { className: "icon-neo-grid", "aria-hidden": "true" })
|
|
3040
3103
|
}
|
|
3041
3104
|
) }),
|
|
3042
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(TooltipContent, { children: "Grid view" })
|
|
3105
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(TooltipContent, { children: t("ActionNames.gridView") || "Grid view" })
|
|
3043
3106
|
] }),
|
|
3044
3107
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Tooltip, { children: [
|
|
3045
3108
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
@@ -3050,10 +3113,11 @@ var ViewToggle = ({ viewMode = "grid" /* GRID */, onViewModeChange }) => {
|
|
|
3050
3113
|
className: `view-toggle__btn${viewMode === "list" /* LIST */ ? " view-toggle__btn--active" : ""}`,
|
|
3051
3114
|
variant: "ghost",
|
|
3052
3115
|
size: "icon",
|
|
3053
|
-
|
|
3116
|
+
"aria-label": t("ActionNames.listView") || "List view",
|
|
3117
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("i", { className: "icon-neo-list", "aria-hidden": "true" })
|
|
3054
3118
|
}
|
|
3055
3119
|
) }),
|
|
3056
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(TooltipContent, { children: "List view" })
|
|
3120
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(TooltipContent, { children: t("ActionNames.listView") || "List view" })
|
|
3057
3121
|
] })
|
|
3058
3122
|
] });
|
|
3059
3123
|
};
|