@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.js CHANGED
@@ -732,7 +732,7 @@ var Button = React4.forwardRef(
732
732
  const composed = cn(
733
733
  baseClasses2,
734
734
  isPill ? "rounded-full" : "",
735
- variantClasses[colorBase],
735
+ variant ? variantClasses[colorBase] : "",
736
736
  // Link never carries the size scale's own padding/height — it reads as inline text.
737
737
  isLink ? "h-auto p-0" : isPill ? pillSizeClasses[finalSize] : sizeClasses[finalSize],
738
738
  isPill ? selected ? pillSelected : pillUnselected : selected ? selectedGradient : "",
@@ -743,15 +743,19 @@ var Button = React4.forwardRef(
743
743
  buttonVariants({ variant: finalVariant, size: finalSize, shape, className })
744
744
  );
745
745
  const mergedStyle = {
746
- ...variantStyles[colorBase],
746
+ ...variant ? variantStyles[colorBase] : void 0,
747
747
  ...isPill && selected ? { ["--pill-selected-bg"]: `${color3.text.blue}24` } : void 0,
748
748
  ...style
749
749
  };
750
+ const accessibleProps = {
751
+ "aria-label": props["aria-label"] ?? tooltipText,
752
+ ...props
753
+ };
750
754
  const element = asChild && React4.isValidElement(children) ? React4.cloneElement(children, {
751
755
  className: cn(composed, children.props?.className),
752
756
  ref,
753
- ...props
754
- }) : /* @__PURE__ */ jsx4("button", { className: cn(composed), ref, style: mergedStyle, ...props, children });
757
+ ...accessibleProps
758
+ }) : /* @__PURE__ */ jsx4("button", { className: cn(composed), ref, style: mergedStyle, ...accessibleProps, children });
755
759
  if (!tooltipText) {
756
760
  return element;
757
761
  }
@@ -874,13 +878,14 @@ var ButtonIcon = React5.forwardRef(
874
878
  name,
875
879
  variant,
876
880
  size,
877
- color: color6 = "primary",
881
+ color: color6,
878
882
  hoverColor,
879
883
  bgColor,
880
884
  bgHoverColor,
881
885
  actionColor,
882
886
  tooltipText,
883
887
  showTooltip = false,
888
+ label,
884
889
  disabled,
885
890
  className,
886
891
  type = "button",
@@ -891,12 +896,13 @@ var ButtonIcon = React5.forwardRef(
891
896
  }, ref) => {
892
897
  const isModalClose = variant === "modalClose";
893
898
  const isRefresh = variant === "refresh";
899
+ const isFilled = variant === "filled";
894
900
  const resolvedBg = bgColor ? { base: bgColor, hover: bgHoverColor } : actionColor ? actionColorTokens[actionColor] : void 0;
895
901
  const effectiveSize = isRefresh ? "sm" : size;
896
- const effectiveColor = isRefresh ? "primary" : color6;
902
+ const effectiveColor = isRefresh ? "primary" : color6 ?? (isFilled ? "white" : "primary");
897
903
  const effectiveHoverColor = isRefresh ? "primary" : isModalClose ? "danger" : hoverColor;
898
904
  const effectiveShowTooltip = isRefresh ? true : showTooltip;
899
- const effectiveTooltipText = tooltipText;
905
+ const effectiveTooltipText = tooltipText ?? label ?? props["aria-label"];
900
906
  const colorProps = getIconColorProps(effectiveColor, effectiveHoverColor, resolvedBg);
901
907
  const icon = /* @__PURE__ */ jsx5(
902
908
  "button",
@@ -1135,77 +1141,24 @@ Checkbox.displayName = "Checkbox";
1135
1141
 
1136
1142
  // src/components/ui/delete-action.tsx
1137
1143
  import "react";
1144
+ import { useTranslation } from "react-i18next";
1138
1145
 
1139
- // src/components/ui/icon.tsx
1140
- import * as React8 from "react";
1141
- import "class-variance-authority";
1142
- import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
1143
- var Icon = React8.forwardRef(
1144
- ({
1145
- name,
1146
- variant,
1147
- size,
1148
- color: color6 = "primary",
1149
- hoverColor,
1150
- tooltipText,
1151
- showTooltip = false,
1152
- disabled,
1153
- className,
1154
- onClick,
1155
- style,
1156
- ...props
1157
- }, ref) => {
1158
- const colorProps = getIconColorProps(color6, hoverColor);
1159
- const icon = /* @__PURE__ */ jsx8(
1160
- "i",
1161
- {
1162
- ref,
1163
- className: cn(
1164
- `${name}`,
1165
- iconVariants({ variant, size }),
1166
- colorProps.className,
1167
- onClick && !disabled && "cursor-pointer",
1168
- className
1169
- ),
1170
- onClick,
1171
- style: { ...colorProps.style, ...style },
1172
- role: onClick ? "button" : void 0,
1173
- tabIndex: onClick ? 0 : void 0,
1174
- "aria-label": tooltipText || name,
1175
- onKeyDown: (e) => {
1176
- if (!onClick) return;
1177
- if (e.key === "Enter" || e.key === " ") {
1178
- e.preventDefault();
1179
- onClick(
1180
- e
1181
- );
1182
- }
1183
- },
1184
- ...props
1185
- }
1186
- );
1187
- if (!showTooltip) {
1188
- return icon;
1189
- }
1190
- return /* @__PURE__ */ jsxs5(Tooltip, { children: [
1191
- /* @__PURE__ */ jsx8(TooltipTrigger, { asChild: true, children: icon }),
1192
- /* @__PURE__ */ jsx8(TooltipContent, { children: /* @__PURE__ */ jsx8("small", { children: tooltipText || name }) })
1193
- ] });
1194
- }
1195
- );
1196
- Icon.displayName = "Icon";
1146
+ // src/helpers/helpersIndex.ts
1147
+ var getTranslationKey = () => "translations";
1197
1148
 
1198
1149
  // src/components/ui/delete-action.tsx
1199
- import { jsx as jsx9 } from "react/jsx-runtime";
1150
+ import { jsx as jsx8 } from "react/jsx-runtime";
1200
1151
  var DeleteAction = ({ onClick, tooltipText, showTooltip = true, className }) => {
1201
- return /* @__PURE__ */ jsx9(
1202
- Icon,
1152
+ const translationKey = getTranslationKey();
1153
+ const { t } = useTranslation(translationKey);
1154
+ return /* @__PURE__ */ jsx8(
1155
+ ButtonIcon,
1203
1156
  {
1204
1157
  name: "icon-neo-trash",
1205
1158
  hoverColor: "danger",
1206
1159
  onClick,
1207
1160
  showTooltip,
1208
- tooltipText: tooltipText || "Delete",
1161
+ tooltipText: tooltipText || t("ActionNames.delete"),
1209
1162
  className
1210
1163
  }
1211
1164
  );
@@ -1213,25 +1166,28 @@ var DeleteAction = ({ onClick, tooltipText, showTooltip = true, className }) =>
1213
1166
  var delete_action_default = DeleteAction;
1214
1167
 
1215
1168
  // src/components/ui/dialog.tsx
1216
- import * as React10 from "react";
1217
- import { Fragment as Fragment2, jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
1218
- var DialogContext = React10.createContext(void 0);
1169
+ import * as React9 from "react";
1170
+ import { useTranslation as useTranslation2 } from "react-i18next";
1171
+ import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
1172
+ var DialogContext = React9.createContext(void 0);
1219
1173
  function useDialog() {
1220
- const context = React10.useContext(DialogContext);
1174
+ const context = React9.useContext(DialogContext);
1221
1175
  if (!context) {
1222
1176
  throw new Error("Dialog components must be used within Dialog");
1223
1177
  }
1224
1178
  return context;
1225
1179
  }
1226
1180
  var Dialog = ({ open: controlledOpen, onOpenChange, children }) => {
1227
- const [uncontrolledOpen, setUncontrolledOpen] = React10.useState(false);
1181
+ const [uncontrolledOpen, setUncontrolledOpen] = React9.useState(false);
1182
+ const [titleId, setTitleId] = React9.useState(void 0);
1183
+ const [descriptionId, setDescriptionId] = React9.useState(void 0);
1228
1184
  const open = controlledOpen !== void 0 ? controlledOpen : uncontrolledOpen;
1229
1185
  const setOpen = onOpenChange || setUncontrolledOpen;
1230
- return /* @__PURE__ */ jsx10(DialogContext.Provider, { value: { open, onOpenChange: setOpen }, children });
1186
+ return /* @__PURE__ */ jsx9(DialogContext.Provider, { value: { open, onOpenChange: setOpen, titleId, descriptionId, setTitleId, setDescriptionId }, children });
1231
1187
  };
1232
- var DialogTrigger = React10.forwardRef(({ onClick, ...props }, ref) => {
1188
+ var DialogTrigger = React9.forwardRef(({ onClick, ...props }, ref) => {
1233
1189
  const { onOpenChange } = useDialog();
1234
- return /* @__PURE__ */ jsx10(
1190
+ return /* @__PURE__ */ jsx9(
1235
1191
  Button,
1236
1192
  {
1237
1193
  ref,
@@ -1249,11 +1205,11 @@ DialogTrigger.displayName = "DialogTrigger";
1249
1205
  var DialogPortal = ({ children }) => {
1250
1206
  const { open } = useDialog();
1251
1207
  if (!open) return null;
1252
- return /* @__PURE__ */ jsx10(Fragment2, { children });
1208
+ return /* @__PURE__ */ jsx9(Fragment2, { children });
1253
1209
  };
1254
- var DialogClose = React10.forwardRef(({ onClick, ...props }, ref) => {
1210
+ var DialogClose = React9.forwardRef(({ onClick, ...props }, ref) => {
1255
1211
  const { onOpenChange } = useDialog();
1256
- return /* @__PURE__ */ jsx10(
1212
+ return /* @__PURE__ */ jsx9(
1257
1213
  Button,
1258
1214
  {
1259
1215
  ref,
@@ -1268,9 +1224,9 @@ var DialogClose = React10.forwardRef(({ onClick, ...props }, ref) => {
1268
1224
  );
1269
1225
  });
1270
1226
  DialogClose.displayName = "DialogClose";
1271
- var DialogOverlay = React10.forwardRef(({ className, onClick, closeOnClick = true, ...props }, ref) => {
1227
+ var DialogOverlay = React9.forwardRef(({ className, onClick, closeOnClick = true, ...props }, ref) => {
1272
1228
  const { onOpenChange } = useDialog();
1273
- return /* @__PURE__ */ jsx10(
1229
+ return /* @__PURE__ */ jsx9(
1274
1230
  "div",
1275
1231
  {
1276
1232
  ref,
@@ -1287,9 +1243,10 @@ var DialogOverlay = React10.forwardRef(({ className, onClick, closeOnClick = tru
1287
1243
  );
1288
1244
  });
1289
1245
  DialogOverlay.displayName = "DialogOverlay";
1290
- var DialogContent = React10.forwardRef(({ className, children, showCloseButton = true, closeOnEscape = true, closeOnOverlayClick = true, ...props }, ref) => {
1291
- const { onOpenChange } = useDialog();
1292
- React10.useEffect(() => {
1246
+ var DialogContent = React9.forwardRef(({ className, children, showCloseButton = true, closeOnEscape = true, closeOnOverlayClick = true, ...props }, ref) => {
1247
+ const { onOpenChange, titleId, descriptionId } = useDialog();
1248
+ const { t } = useTranslation2("translations");
1249
+ React9.useEffect(() => {
1293
1250
  if (!closeOnEscape) return;
1294
1251
  const handleEscape = (e) => {
1295
1252
  if (e.key === "Escape") {
@@ -1299,12 +1256,16 @@ var DialogContent = React10.forwardRef(({ className, children, showCloseButton =
1299
1256
  document.addEventListener("keydown", handleEscape);
1300
1257
  return () => document.removeEventListener("keydown", handleEscape);
1301
1258
  }, [onOpenChange, closeOnEscape]);
1302
- return /* @__PURE__ */ jsxs6(DialogPortal, { children: [
1303
- /* @__PURE__ */ jsx10(DialogOverlay, { closeOnClick: closeOnOverlayClick }),
1304
- /* @__PURE__ */ jsxs6(
1259
+ return /* @__PURE__ */ jsxs5(DialogPortal, { children: [
1260
+ /* @__PURE__ */ jsx9(DialogOverlay, { closeOnClick: closeOnOverlayClick }),
1261
+ /* @__PURE__ */ jsxs5(
1305
1262
  "div",
1306
1263
  {
1307
1264
  ref,
1265
+ role: "dialog",
1266
+ "aria-modal": "true",
1267
+ "aria-labelledby": titleId,
1268
+ "aria-describedby": descriptionId,
1308
1269
  className: cn(
1309
1270
  "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",
1310
1271
  className
@@ -1313,14 +1274,15 @@ var DialogContent = React10.forwardRef(({ className, children, showCloseButton =
1313
1274
  ...props,
1314
1275
  children: [
1315
1276
  children,
1316
- showCloseButton && /* @__PURE__ */ jsx10(
1277
+ showCloseButton && /* @__PURE__ */ jsx9(
1317
1278
  ButtonIcon,
1318
1279
  {
1319
1280
  type: "button",
1320
1281
  name: "icon-neo-close",
1321
1282
  variant: "modalClose",
1322
1283
  className: "absolute right-4 top-4",
1323
- onClick: () => onOpenChange(false)
1284
+ onClick: () => onOpenChange(false),
1285
+ tooltipText: t("ActionNames.close")
1324
1286
  }
1325
1287
  )
1326
1288
  ]
@@ -1332,7 +1294,7 @@ DialogContent.displayName = "DialogContent";
1332
1294
  var DialogHeader = ({
1333
1295
  className,
1334
1296
  ...props
1335
- }) => /* @__PURE__ */ jsx10(
1297
+ }) => /* @__PURE__ */ jsx9(
1336
1298
  "div",
1337
1299
  {
1338
1300
  className: cn(
@@ -1346,7 +1308,7 @@ DialogHeader.displayName = "DialogHeader";
1346
1308
  var DialogFooter = ({
1347
1309
  className,
1348
1310
  ...props
1349
- }) => /* @__PURE__ */ jsx10(
1311
+ }) => /* @__PURE__ */ jsx9(
1350
1312
  "div",
1351
1313
  {
1352
1314
  className: cn(
@@ -1357,52 +1319,72 @@ var DialogFooter = ({
1357
1319
  }
1358
1320
  );
1359
1321
  DialogFooter.displayName = "DialogFooter";
1360
- var DialogTitle = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
1361
- "h2",
1362
- {
1363
- ref,
1364
- className: cn(
1365
- "text-heading font-semibold leading-none tracking-tight",
1366
- className
1367
- ),
1368
- ...props
1369
- }
1370
- ));
1322
+ var DialogTitle = React9.forwardRef(({ className, id, ...props }, ref) => {
1323
+ const generatedId = React9.useId();
1324
+ const resolvedId = id ?? generatedId;
1325
+ const { setTitleId } = useDialog();
1326
+ React9.useEffect(() => {
1327
+ setTitleId(resolvedId);
1328
+ return () => setTitleId(void 0);
1329
+ }, [resolvedId, setTitleId]);
1330
+ return /* @__PURE__ */ jsx9(
1331
+ "h2",
1332
+ {
1333
+ ref,
1334
+ id: resolvedId,
1335
+ className: cn(
1336
+ "text-heading font-semibold leading-none tracking-tight",
1337
+ className
1338
+ ),
1339
+ ...props
1340
+ }
1341
+ );
1342
+ });
1371
1343
  DialogTitle.displayName = "DialogTitle";
1372
- var DialogDescription = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
1373
- "p",
1374
- {
1375
- ref,
1376
- className: cn("text-body text-muted-foreground", className),
1377
- ...props
1378
- }
1379
- ));
1344
+ var DialogDescription = React9.forwardRef(({ className, id, ...props }, ref) => {
1345
+ const generatedId = React9.useId();
1346
+ const resolvedId = id ?? generatedId;
1347
+ const { setDescriptionId } = useDialog();
1348
+ React9.useEffect(() => {
1349
+ setDescriptionId(resolvedId);
1350
+ return () => setDescriptionId(void 0);
1351
+ }, [resolvedId, setDescriptionId]);
1352
+ return /* @__PURE__ */ jsx9(
1353
+ "p",
1354
+ {
1355
+ ref,
1356
+ id: resolvedId,
1357
+ className: cn("text-body text-muted-foreground", className),
1358
+ ...props
1359
+ }
1360
+ );
1361
+ });
1380
1362
  DialogDescription.displayName = "DialogDescription";
1381
1363
 
1382
1364
  // src/components/ui/dropdown-menu.tsx
1383
- import * as React11 from "react";
1365
+ import * as React10 from "react";
1384
1366
  import { createPortal as createPortal2 } from "react-dom";
1385
1367
  import { Check, ChevronRight, Circle } from "lucide-react";
1386
- import { Fragment as Fragment3, jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
1387
- var DropdownMenuContext = React11.createContext(void 0);
1368
+ import { Fragment as Fragment3, jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
1369
+ var DropdownMenuContext = React10.createContext(void 0);
1388
1370
  function useDropdownMenu() {
1389
- const context = React11.useContext(DropdownMenuContext);
1371
+ const context = React10.useContext(DropdownMenuContext);
1390
1372
  if (!context) {
1391
1373
  throw new Error("DropdownMenu components must be used within DropdownMenu");
1392
1374
  }
1393
1375
  return context;
1394
1376
  }
1395
1377
  var DropdownMenu = ({ open: controlledOpen, onOpenChange, children }) => {
1396
- const [uncontrolledOpen, setUncontrolledOpen] = React11.useState(false);
1378
+ const [uncontrolledOpen, setUncontrolledOpen] = React10.useState(false);
1397
1379
  const open = controlledOpen !== void 0 ? controlledOpen : uncontrolledOpen;
1398
1380
  const setOpen = onOpenChange || setUncontrolledOpen;
1399
- const triggerRef = React11.useRef(null);
1400
- return /* @__PURE__ */ jsx11(DropdownMenuContext.Provider, { value: { open, setOpen, triggerRef }, children });
1381
+ const triggerRef = React10.useRef(null);
1382
+ return /* @__PURE__ */ jsx10(DropdownMenuContext.Provider, { value: { open, setOpen, triggerRef }, children });
1401
1383
  };
1402
- var DropdownMenuTrigger = React11.forwardRef(({ onClick, children, asChild, ...props }, ref) => {
1384
+ var DropdownMenuTrigger = React10.forwardRef(({ onClick, children, asChild, ...props }, ref) => {
1403
1385
  const { setOpen, open, triggerRef } = useDropdownMenu();
1404
- if (asChild && React11.isValidElement(children)) {
1405
- return React11.cloneElement(children, {
1386
+ if (asChild && React10.isValidElement(children)) {
1387
+ return React10.cloneElement(children, {
1406
1388
  ref: (node) => {
1407
1389
  triggerRef.current = node;
1408
1390
  if (ref) {
@@ -1421,7 +1403,7 @@ var DropdownMenuTrigger = React11.forwardRef(({ onClick, children, asChild, ...p
1421
1403
  }
1422
1404
  });
1423
1405
  }
1424
- return /* @__PURE__ */ jsx11(
1406
+ return /* @__PURE__ */ jsx10(
1425
1407
  Button,
1426
1408
  {
1427
1409
  ref: (node) => {
@@ -1446,19 +1428,19 @@ var DropdownMenuTrigger = React11.forwardRef(({ onClick, children, asChild, ...p
1446
1428
  });
1447
1429
  DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
1448
1430
  var DropdownMenuGroup = ({ children }) => {
1449
- return /* @__PURE__ */ jsx11("div", { role: "group", children });
1431
+ return /* @__PURE__ */ jsx10("div", { role: "group", children });
1450
1432
  };
1451
1433
  var DropdownMenuPortal = ({ children }) => {
1452
1434
  const portalRoot = document.getElementById("fpneo") || document.body;
1453
1435
  return createPortal2(children, portalRoot);
1454
1436
  };
1455
1437
  var DropdownMenuSub = ({ children }) => {
1456
- return /* @__PURE__ */ jsx11(Fragment3, { children });
1438
+ return /* @__PURE__ */ jsx10(Fragment3, { children });
1457
1439
  };
1458
1440
  var DropdownMenuRadioGroup = ({ children }) => {
1459
- return /* @__PURE__ */ jsx11("div", { role: "radiogroup", children });
1441
+ return /* @__PURE__ */ jsx10("div", { role: "radiogroup", children });
1460
1442
  };
1461
- var DropdownMenuSubTrigger = React11.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs7(
1443
+ var DropdownMenuSubTrigger = React10.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs6(
1462
1444
  "div",
1463
1445
  {
1464
1446
  ref,
@@ -1470,12 +1452,12 @@ var DropdownMenuSubTrigger = React11.forwardRef(({ className, inset, children, .
1470
1452
  ...props,
1471
1453
  children: [
1472
1454
  children,
1473
- /* @__PURE__ */ jsx11(ChevronRight, { className: "ml-auto h-4 w-4" })
1455
+ /* @__PURE__ */ jsx10(ChevronRight, { className: "ml-auto h-4 w-4" })
1474
1456
  ]
1475
1457
  }
1476
1458
  ));
1477
1459
  DropdownMenuSubTrigger.displayName = "DropdownMenuSubTrigger";
1478
- var DropdownMenuSubContent = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
1460
+ var DropdownMenuSubContent = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
1479
1461
  "div",
1480
1462
  {
1481
1463
  ref,
@@ -1487,13 +1469,13 @@ var DropdownMenuSubContent = React11.forwardRef(({ className, ...props }, ref) =
1487
1469
  }
1488
1470
  ));
1489
1471
  DropdownMenuSubContent.displayName = "DropdownMenuSubContent";
1490
- var DropdownMenuContent = React11.forwardRef(({ className, sideOffset = 4, align = "end", ...props }, ref) => {
1472
+ var DropdownMenuContent = React10.forwardRef(({ className, sideOffset = 4, align = "end", ...props }, ref) => {
1491
1473
  const { open, setOpen, triggerRef } = useDropdownMenu();
1492
- const contentRef = React11.useRef(null);
1493
- const [position, setPosition] = React11.useState({ top: 0, left: 0 });
1494
- const [isPositioned, setIsPositioned] = React11.useState(false);
1495
- React11.useImperativeHandle(ref, () => contentRef.current);
1496
- React11.useEffect(() => {
1474
+ const contentRef = React10.useRef(null);
1475
+ const [position, setPosition] = React10.useState({ top: 0, left: 0 });
1476
+ const [isPositioned, setIsPositioned] = React10.useState(false);
1477
+ React10.useImperativeHandle(ref, () => contentRef.current);
1478
+ React10.useEffect(() => {
1497
1479
  if (!open || !triggerRef.current) {
1498
1480
  setIsPositioned(false);
1499
1481
  return;
@@ -1548,7 +1530,7 @@ var DropdownMenuContent = React11.forwardRef(({ className, sideOffset = 4, align
1548
1530
  window.removeEventListener("resize", updatePosition);
1549
1531
  };
1550
1532
  }, [open, sideOffset, align, triggerRef]);
1551
- React11.useEffect(() => {
1533
+ React10.useEffect(() => {
1552
1534
  if (!open) return;
1553
1535
  const handleClickOutside = (e) => {
1554
1536
  if (contentRef.current && !contentRef.current.contains(e.target) && triggerRef.current && !triggerRef.current.contains(e.target)) {
@@ -1568,7 +1550,7 @@ var DropdownMenuContent = React11.forwardRef(({ className, sideOffset = 4, align
1568
1550
  };
1569
1551
  }, [open, setOpen, triggerRef]);
1570
1552
  if (!open) return null;
1571
- return /* @__PURE__ */ jsx11(DropdownMenuPortal, { children: /* @__PURE__ */ jsx11(
1553
+ return /* @__PURE__ */ jsx10(DropdownMenuPortal, { children: /* @__PURE__ */ jsx10(
1572
1554
  "div",
1573
1555
  {
1574
1556
  ref: contentRef,
@@ -1586,9 +1568,9 @@ var DropdownMenuContent = React11.forwardRef(({ className, sideOffset = 4, align
1586
1568
  ) });
1587
1569
  });
1588
1570
  DropdownMenuContent.displayName = "DropdownMenuContent";
1589
- var DropdownMenuItem = React11.forwardRef(({ className, inset, onClick, ...props }, ref) => {
1571
+ var DropdownMenuItem = React10.forwardRef(({ className, inset, onClick, ...props }, ref) => {
1590
1572
  const { setOpen } = useDropdownMenu();
1591
- return /* @__PURE__ */ jsx11(
1573
+ return /* @__PURE__ */ jsx10(
1592
1574
  "div",
1593
1575
  {
1594
1576
  ref,
@@ -1606,7 +1588,7 @@ var DropdownMenuItem = React11.forwardRef(({ className, inset, onClick, ...props
1606
1588
  );
1607
1589
  });
1608
1590
  DropdownMenuItem.displayName = "DropdownMenuItem";
1609
- var DropdownMenuCheckboxItem = React11.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs7(
1591
+ var DropdownMenuCheckboxItem = React10.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs6(
1610
1592
  "div",
1611
1593
  {
1612
1594
  ref,
@@ -1616,13 +1598,13 @@ var DropdownMenuCheckboxItem = React11.forwardRef(({ className, children, checke
1616
1598
  ),
1617
1599
  ...props,
1618
1600
  children: [
1619
- /* @__PURE__ */ jsx11("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: checked && /* @__PURE__ */ jsx11(Check, { className: "h-4 w-4" }) }),
1601
+ /* @__PURE__ */ jsx10("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: checked && /* @__PURE__ */ jsx10(Check, { className: "h-4 w-4" }) }),
1620
1602
  children
1621
1603
  ]
1622
1604
  }
1623
1605
  ));
1624
1606
  DropdownMenuCheckboxItem.displayName = "DropdownMenuCheckboxItem";
1625
- var DropdownMenuRadioItem = React11.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs7(
1607
+ var DropdownMenuRadioItem = React10.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs6(
1626
1608
  "div",
1627
1609
  {
1628
1610
  ref,
@@ -1632,13 +1614,13 @@ var DropdownMenuRadioItem = React11.forwardRef(({ className, children, ...props
1632
1614
  ),
1633
1615
  ...props,
1634
1616
  children: [
1635
- /* @__PURE__ */ jsx11("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx11(Circle, { className: "h-2 w-2 fill-current" }) }),
1617
+ /* @__PURE__ */ jsx10("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx10(Circle, { className: "h-2 w-2 fill-current" }) }),
1636
1618
  children
1637
1619
  ]
1638
1620
  }
1639
1621
  ));
1640
1622
  DropdownMenuRadioItem.displayName = "DropdownMenuRadioItem";
1641
- var DropdownMenuLabel = React11.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx11(
1623
+ var DropdownMenuLabel = React10.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx10(
1642
1624
  "div",
1643
1625
  {
1644
1626
  ref,
@@ -1651,7 +1633,7 @@ var DropdownMenuLabel = React11.forwardRef(({ className, inset, ...props }, ref)
1651
1633
  }
1652
1634
  ));
1653
1635
  DropdownMenuLabel.displayName = "DropdownMenuLabel";
1654
- var DropdownMenuSeparator = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
1636
+ var DropdownMenuSeparator = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
1655
1637
  "div",
1656
1638
  {
1657
1639
  ref,
@@ -1664,7 +1646,7 @@ var DropdownMenuShortcut = ({
1664
1646
  className,
1665
1647
  ...props
1666
1648
  }) => {
1667
- return /* @__PURE__ */ jsx11(
1649
+ return /* @__PURE__ */ jsx10(
1668
1650
  "span",
1669
1651
  {
1670
1652
  className: cn("ml-auto text-label tracking-widest opacity-60", className),
@@ -1678,9 +1660,9 @@ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1678
1660
  import { useEffect as useEffect6, useRef as useRef5, useState as useState4 } from "react";
1679
1661
 
1680
1662
  // src/components/ui/input.tsx
1681
- import * as React12 from "react";
1663
+ import * as React11 from "react";
1682
1664
  import { Field } from "formik";
1683
- import { jsx as jsx12 } from "react/jsx-runtime";
1665
+ import { jsx as jsx11 } from "react/jsx-runtime";
1684
1666
  var baseClasses = [
1685
1667
  "flex h-[2.571rem] w-full items-center rounded-[0.65rem] px-4 py-0",
1686
1668
  "text-[0.8125rem] text-[var(--color-neutral-800)]",
@@ -1697,7 +1679,7 @@ var baseClasses = [
1697
1679
  "disabled:cursor-not-allowed",
1698
1680
  "disabled:opacity-50"
1699
1681
  ].join(" ");
1700
- var Input = React12.forwardRef(
1682
+ var Input = React11.forwardRef(
1701
1683
  ({
1702
1684
  as = "input",
1703
1685
  className,
@@ -1708,10 +1690,10 @@ var Input = React12.forwardRef(
1708
1690
  innerRef,
1709
1691
  ...props
1710
1692
  }, ref) => {
1711
- const internalRef = React12.useRef(null);
1712
- React12.useImperativeHandle(ref, () => internalRef.current);
1713
- React12.useImperativeHandle(innerRef, () => internalRef.current);
1714
- React12.useEffect(() => {
1693
+ const internalRef = React11.useRef(null);
1694
+ React11.useImperativeHandle(ref, () => internalRef.current);
1695
+ React11.useImperativeHandle(innerRef, () => internalRef.current);
1696
+ React11.useEffect(() => {
1715
1697
  if (autoFocus) {
1716
1698
  internalRef.current?.focus();
1717
1699
  }
@@ -1722,7 +1704,7 @@ var Input = React12.forwardRef(
1722
1704
  className
1723
1705
  );
1724
1706
  if (as === "field") {
1725
- return /* @__PURE__ */ jsx12(
1707
+ return /* @__PURE__ */ jsx11(
1726
1708
  Field,
1727
1709
  {
1728
1710
  innerRef: internalRef,
@@ -1734,7 +1716,7 @@ var Input = React12.forwardRef(
1734
1716
  }
1735
1717
  );
1736
1718
  }
1737
- return /* @__PURE__ */ jsx12(
1719
+ return /* @__PURE__ */ jsx11(
1738
1720
  "input",
1739
1721
  {
1740
1722
  ref: internalRef,
@@ -1750,7 +1732,7 @@ var Input = React12.forwardRef(
1750
1732
  Input.displayName = "Input";
1751
1733
 
1752
1734
  // src/components/ui/expandable-search.tsx
1753
- import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
1735
+ import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
1754
1736
  var ExpandableSearch = ({ onSearch, placeholder = "Search...", className = "" }) => {
1755
1737
  const [isExpanded, setIsExpanded] = useState4(false);
1756
1738
  const [searchValue, setSearchValue] = useState4("");
@@ -1779,9 +1761,9 @@ var ExpandableSearch = ({ onSearch, placeholder = "Search...", className = "" })
1779
1761
  inputRef.current.focus();
1780
1762
  }
1781
1763
  };
1782
- return /* @__PURE__ */ jsx13("div", { className: `flex items-center ${className}`, children: isExpanded ? /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 transition-all duration-300 ease-in-out", children: [
1783
- /* @__PURE__ */ jsxs8("div", { className: "relative flex justify-center items-center", children: [
1784
- /* @__PURE__ */ jsx13(
1764
+ return /* @__PURE__ */ jsx12("div", { className: `flex items-center ${className}`, children: isExpanded ? /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-2 transition-all duration-300 ease-in-out", children: [
1765
+ /* @__PURE__ */ jsxs7("div", { className: "relative flex justify-center items-center", children: [
1766
+ /* @__PURE__ */ jsx12(
1785
1767
  Input,
1786
1768
  {
1787
1769
  ref: inputRef,
@@ -1792,25 +1774,25 @@ var ExpandableSearch = ({ onSearch, placeholder = "Search...", className = "" })
1792
1774
  className: "formfield__search"
1793
1775
  }
1794
1776
  ),
1795
- searchValue && /* @__PURE__ */ jsx13(
1777
+ searchValue && /* @__PURE__ */ jsx12(
1796
1778
  Button,
1797
1779
  {
1798
1780
  onClick: handleClear,
1799
1781
  variant: "ghost",
1800
1782
  size: "icon",
1801
1783
  className: "absolute right-3 top-1/2 -translate-y-1/2 text-neutral-600 hover:text-[var(--color-ext-4b5563)] transition-colors",
1802
- children: /* @__PURE__ */ jsx13("i", { className: "icon-neo-close text-[0.875rem]" })
1784
+ children: /* @__PURE__ */ jsx12("i", { className: "icon-neo-close text-[0.875rem]" })
1803
1785
  }
1804
1786
  )
1805
1787
  ] }),
1806
- /* @__PURE__ */ jsx13(Button, { variant: "ghost", size: "icon", onClick: handleToggle, children: /* @__PURE__ */ jsx13("i", { className: "icon-neo-close text-[0.875rem]" }) })
1807
- ] }) : /* @__PURE__ */ jsx13(Button, { variant: "ghost", size: "icon", onClick: handleToggle, className: "header__round-btn", children: /* @__PURE__ */ jsx13("i", { className: "icon-neo-search" }) }) });
1788
+ /* @__PURE__ */ jsx12(Button, { variant: "ghost", size: "icon", onClick: handleToggle, children: /* @__PURE__ */ jsx12("i", { className: "icon-neo-close text-[0.875rem]" }) })
1789
+ ] }) : /* @__PURE__ */ jsx12(Button, { variant: "ghost", size: "icon", onClick: handleToggle, className: "header__round-btn", children: /* @__PURE__ */ jsx12("i", { className: "icon-neo-search" }) }) });
1808
1790
  };
1809
1791
 
1810
1792
  // src/components/ui/file-input.tsx
1811
- import * as React14 from "react";
1812
- import { Fragment as Fragment4, jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
1813
- var FileInput = React14.forwardRef(
1793
+ import * as React13 from "react";
1794
+ import { Fragment as Fragment4, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
1795
+ var FileInput = React13.forwardRef(
1814
1796
  ({
1815
1797
  id,
1816
1798
  className,
@@ -1822,10 +1804,10 @@ var FileInput = React14.forwardRef(
1822
1804
  disabled,
1823
1805
  ...props
1824
1806
  }, ref) => {
1825
- const generatedId = React14.useId();
1807
+ const generatedId = React13.useId();
1826
1808
  const inputId = id ?? generatedId;
1827
- const content = /* @__PURE__ */ jsxs9(Fragment4, { children: [
1828
- /* @__PURE__ */ jsx14(
1809
+ const content = /* @__PURE__ */ jsxs8(Fragment4, { children: [
1810
+ /* @__PURE__ */ jsx13(
1829
1811
  "input",
1830
1812
  {
1831
1813
  ref,
@@ -1836,17 +1818,18 @@ var FileInput = React14.forwardRef(
1836
1818
  ...props
1837
1819
  }
1838
1820
  ),
1839
- children && /* @__PURE__ */ jsx14("label", { htmlFor: inputId, className: labelClassName, style: labelStyle, ...labelProps, children })
1821
+ children && /* @__PURE__ */ jsx13("label", { htmlFor: inputId, className: labelClassName, style: labelStyle, ...labelProps, children })
1840
1822
  ] });
1841
- return wrapperClassName ? /* @__PURE__ */ jsx14("div", { className: wrapperClassName, children: content }) : content;
1823
+ return wrapperClassName ? /* @__PURE__ */ jsx13("div", { className: wrapperClassName, children: content }) : content;
1842
1824
  }
1843
1825
  );
1844
1826
  FileInput.displayName = "FileInput";
1845
1827
 
1846
1828
  // src/components/ui/form-field.tsx
1847
- import "react";
1848
- import { ErrorMessage } from "formik";
1849
- import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
1829
+ import React14 from "react";
1830
+ import { ErrorMessage, Field as Field2 } from "formik";
1831
+ import { jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
1832
+ var LABELABLE_TAGS = /* @__PURE__ */ new Set(["input", "select", "textarea"]);
1850
1833
  var FormField = ({
1851
1834
  label,
1852
1835
  required,
@@ -1854,19 +1837,87 @@ var FormField = ({
1854
1837
  error,
1855
1838
  hint,
1856
1839
  children,
1857
- className
1858
- }) => /* @__PURE__ */ jsxs10("div", { className: cn("form__field", className), children: [
1859
- label && /* @__PURE__ */ jsxs10("label", { className: "formfield__label", children: [
1860
- label,
1861
- required && /* @__PURE__ */ jsx15("span", { className: "required-field", children: "*" })
1862
- ] }),
1863
- children,
1864
- hint && /* @__PURE__ */ jsx15("p", { className: "text-[0.75rem] text-neutral-600 mt-1", children: hint }),
1865
- errorName && /* @__PURE__ */ jsx15(ErrorMessage, { name: errorName, component: "p", className: "form-error" }),
1866
- !errorName && error && /* @__PURE__ */ jsx15("p", { className: "form-error", children: error })
1867
- ] });
1840
+ className,
1841
+ id
1842
+ }) => {
1843
+ const generatedId = React14.useId();
1844
+ const fieldId = id ?? generatedId;
1845
+ let renderedChildren = children;
1846
+ if (label && React14.isValidElement(children) && (children.type === Field2 || typeof children.type === "string" && LABELABLE_TAGS.has(children.type)) && !children.props.id) {
1847
+ renderedChildren = React14.cloneElement(children, { id: fieldId });
1848
+ }
1849
+ return /* @__PURE__ */ jsxs9("div", { className: cn("form__field", className), children: [
1850
+ label && /* @__PURE__ */ jsxs9("label", { className: "formfield__label", htmlFor: fieldId, children: [
1851
+ label,
1852
+ required && /* @__PURE__ */ jsx14("span", { className: "required-field", children: "*" })
1853
+ ] }),
1854
+ renderedChildren,
1855
+ hint && /* @__PURE__ */ jsx14("p", { className: "text-[0.75rem] text-neutral-600 mt-1", children: hint }),
1856
+ errorName && /* @__PURE__ */ jsx14(ErrorMessage, { name: errorName, component: "p", className: "form-error" }),
1857
+ !errorName && error && /* @__PURE__ */ jsx14("p", { className: "form-error", children: error })
1858
+ ] });
1859
+ };
1868
1860
  var form_field_default = FormField;
1869
1861
 
1862
+ // src/components/ui/icon.tsx
1863
+ import * as React15 from "react";
1864
+ import "class-variance-authority";
1865
+ import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
1866
+ var Icon = React15.forwardRef(
1867
+ ({
1868
+ name,
1869
+ variant,
1870
+ size,
1871
+ color: color6 = "primary",
1872
+ hoverColor,
1873
+ tooltipText,
1874
+ showTooltip = false,
1875
+ disabled,
1876
+ className,
1877
+ onClick,
1878
+ style,
1879
+ ...props
1880
+ }, ref) => {
1881
+ const colorProps = getIconColorProps(color6, hoverColor);
1882
+ const icon = /* @__PURE__ */ jsx15(
1883
+ "i",
1884
+ {
1885
+ ref,
1886
+ className: cn(
1887
+ `${name}`,
1888
+ iconVariants({ variant, size }),
1889
+ colorProps.className,
1890
+ onClick && !disabled && "cursor-pointer",
1891
+ className
1892
+ ),
1893
+ onClick,
1894
+ style: { ...colorProps.style, ...style },
1895
+ role: onClick ? "button" : void 0,
1896
+ tabIndex: onClick ? 0 : void 0,
1897
+ "aria-hidden": onClick ? "true" : "false",
1898
+ onKeyDown: (e) => {
1899
+ if (!onClick) return;
1900
+ if (e.key === "Enter" || e.key === " ") {
1901
+ e.preventDefault();
1902
+ onClick(
1903
+ e
1904
+ );
1905
+ }
1906
+ },
1907
+ ...props
1908
+ }
1909
+ );
1910
+ if (!showTooltip) {
1911
+ return icon;
1912
+ }
1913
+ return /* @__PURE__ */ jsxs10(Tooltip, { children: [
1914
+ /* @__PURE__ */ jsx15(TooltipTrigger, { asChild: true, children: icon }),
1915
+ /* @__PURE__ */ jsx15(TooltipContent, { children: /* @__PURE__ */ jsx15("small", { children: tooltipText || name }) })
1916
+ ] });
1917
+ }
1918
+ );
1919
+ Icon.displayName = "Icon";
1920
+
1870
1921
  // src/components/ui/list.tsx
1871
1922
  import * as React16 from "react";
1872
1923
  import { jsx as jsx16 } from "react/jsx-runtime";
@@ -2165,6 +2216,7 @@ var ScrollArea = React20.forwardRef(({ className, children, ...props }, ref) =>
2165
2216
  "div",
2166
2217
  {
2167
2218
  ref,
2219
+ tabIndex: 0,
2168
2220
  className: cn(
2169
2221
  "relative overflow-y-auto overflow-x-hidden",
2170
2222
  "[&::-webkit-scrollbar]:w-[0.375rem]",
@@ -2338,8 +2390,12 @@ var Tab = React22.forwardRef(
2338
2390
  variant,
2339
2391
  size,
2340
2392
  disabled,
2341
- onClick
2393
+ onClick,
2394
+ id,
2395
+ panelId
2342
2396
  }, ref) => {
2397
+ const generatedId = React22.useId();
2398
+ const resolvedId = id ?? generatedId;
2343
2399
  const handleKeyDown = (e) => {
2344
2400
  if (disabled) return;
2345
2401
  if (e.key === "Enter" || e.key === " ") {
@@ -2351,9 +2407,11 @@ var Tab = React22.forwardRef(
2351
2407
  "div",
2352
2408
  {
2353
2409
  ref,
2410
+ id: resolvedId,
2354
2411
  role: "tab",
2355
2412
  "aria-selected": active,
2356
2413
  "aria-disabled": disabled,
2414
+ "aria-controls": panelId,
2357
2415
  tabIndex: disabled ? -1 : active ? 0 : -1,
2358
2416
  onClick: !disabled ? onClick : void 0,
2359
2417
  onKeyDown: handleKeyDown,
@@ -2568,7 +2626,7 @@ Table.displayName = "Table";
2568
2626
 
2569
2627
  // src/components/ui/textarea.tsx
2570
2628
  import * as React24 from "react";
2571
- import { Field as Field2 } from "formik";
2629
+ import { Field as Field3 } from "formik";
2572
2630
  import { jsx as jsx24 } from "react/jsx-runtime";
2573
2631
  var Textarea = React24.forwardRef(
2574
2632
  ({
@@ -2608,7 +2666,7 @@ var Textarea = React24.forwardRef(
2608
2666
  );
2609
2667
  if (as === "field") {
2610
2668
  return /* @__PURE__ */ jsx24(
2611
- Field2,
2669
+ Field3,
2612
2670
  {
2613
2671
  as: "textarea",
2614
2672
  innerRef: ref,
@@ -2725,7 +2783,8 @@ var TimePicker = ({
2725
2783
  },
2726
2784
  name: "icon-neo-close",
2727
2785
  color: "muted",
2728
- size: "xs"
2786
+ size: "xs",
2787
+ tooltipText: "Clear time"
2729
2788
  }
2730
2789
  ),
2731
2790
  /* @__PURE__ */ jsx25("i", { className: "icon-neo-time-four shared-time-picker__icon" })
@@ -2893,6 +2952,7 @@ var TruncatedTextByWidth = ({ text, className }) => {
2893
2952
 
2894
2953
  // src/components/ui/view-toggle.tsx
2895
2954
  import * as React28 from "react";
2955
+ import { useTranslation as useTranslation3 } from "react-i18next";
2896
2956
  import { jsx as jsx28, jsxs as jsxs18 } from "react/jsx-runtime";
2897
2957
  var VIEW_MODE_KEY = "fp_view_mode";
2898
2958
  var useViewMode = () => {
@@ -2908,6 +2968,8 @@ var useViewMode = () => {
2908
2968
  return [viewMode, setAndPersist];
2909
2969
  };
2910
2970
  var ViewToggle = ({ viewMode = "grid" /* GRID */, onViewModeChange }) => {
2971
+ const translationKey = getTranslationKey();
2972
+ const { t } = useTranslation3(translationKey);
2911
2973
  return /* @__PURE__ */ jsxs18("div", { className: "view-toggle", children: [
2912
2974
  /* @__PURE__ */ jsxs18(Tooltip, { children: [
2913
2975
  /* @__PURE__ */ jsx28(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx28(
@@ -2918,10 +2980,11 @@ var ViewToggle = ({ viewMode = "grid" /* GRID */, onViewModeChange }) => {
2918
2980
  className: `view-toggle__btn${viewMode === "grid" /* GRID */ ? " view-toggle__btn--active" : ""}`,
2919
2981
  variant: "ghost",
2920
2982
  size: "icon",
2921
- children: /* @__PURE__ */ jsx28("i", { className: "icon-neo-grid" })
2983
+ "aria-label": t("ActionNames.gridView") || "Grid view",
2984
+ children: /* @__PURE__ */ jsx28("i", { className: "icon-neo-grid", "aria-hidden": "true" })
2922
2985
  }
2923
2986
  ) }),
2924
- /* @__PURE__ */ jsx28(TooltipContent, { children: "Grid view" })
2987
+ /* @__PURE__ */ jsx28(TooltipContent, { children: t("ActionNames.gridView") || "Grid view" })
2925
2988
  ] }),
2926
2989
  /* @__PURE__ */ jsxs18(Tooltip, { children: [
2927
2990
  /* @__PURE__ */ jsx28(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx28(
@@ -2932,10 +2995,11 @@ var ViewToggle = ({ viewMode = "grid" /* GRID */, onViewModeChange }) => {
2932
2995
  className: `view-toggle__btn${viewMode === "list" /* LIST */ ? " view-toggle__btn--active" : ""}`,
2933
2996
  variant: "ghost",
2934
2997
  size: "icon",
2935
- children: /* @__PURE__ */ jsx28("i", { className: "icon-neo-list" })
2998
+ "aria-label": t("ActionNames.listView") || "List view",
2999
+ children: /* @__PURE__ */ jsx28("i", { className: "icon-neo-list", "aria-hidden": "true" })
2936
3000
  }
2937
3001
  ) }),
2938
- /* @__PURE__ */ jsx28(TooltipContent, { children: "List view" })
3002
+ /* @__PURE__ */ jsx28(TooltipContent, { children: t("ActionNames.listView") || "List view" })
2939
3003
  ] })
2940
3004
  ] });
2941
3005
  };