@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.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
|
-
...
|
|
754
|
-
}) : /* @__PURE__ */ jsx4("button", { className: cn(composed), ref, style: mergedStyle, ...
|
|
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
|
|
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/
|
|
1140
|
-
|
|
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
|
|
1150
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
1200
1151
|
var DeleteAction = ({ onClick, tooltipText, showTooltip = true, className }) => {
|
|
1201
|
-
|
|
1202
|
-
|
|
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 || "
|
|
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
|
|
1217
|
-
import {
|
|
1218
|
-
|
|
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 =
|
|
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] =
|
|
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__ */
|
|
1186
|
+
return /* @__PURE__ */ jsx9(DialogContext.Provider, { value: { open, onOpenChange: setOpen, titleId, descriptionId, setTitleId, setDescriptionId }, children });
|
|
1231
1187
|
};
|
|
1232
|
-
var DialogTrigger =
|
|
1188
|
+
var DialogTrigger = React9.forwardRef(({ onClick, ...props }, ref) => {
|
|
1233
1189
|
const { onOpenChange } = useDialog();
|
|
1234
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
1208
|
+
return /* @__PURE__ */ jsx9(Fragment2, { children });
|
|
1253
1209
|
};
|
|
1254
|
-
var DialogClose =
|
|
1210
|
+
var DialogClose = React9.forwardRef(({ onClick, ...props }, ref) => {
|
|
1255
1211
|
const { onOpenChange } = useDialog();
|
|
1256
|
-
return /* @__PURE__ */
|
|
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 =
|
|
1227
|
+
var DialogOverlay = React9.forwardRef(({ className, onClick, closeOnClick = true, ...props }, ref) => {
|
|
1272
1228
|
const { onOpenChange } = useDialog();
|
|
1273
|
-
return /* @__PURE__ */
|
|
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 =
|
|
1291
|
-
const { onOpenChange } = useDialog();
|
|
1292
|
-
|
|
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__ */
|
|
1303
|
-
/* @__PURE__ */
|
|
1304
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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 =
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
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 =
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
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
|
|
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
|
|
1387
|
-
var DropdownMenuContext =
|
|
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 =
|
|
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] =
|
|
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 =
|
|
1400
|
-
return /* @__PURE__ */
|
|
1381
|
+
const triggerRef = React10.useRef(null);
|
|
1382
|
+
return /* @__PURE__ */ jsx10(DropdownMenuContext.Provider, { value: { open, setOpen, triggerRef }, children });
|
|
1401
1383
|
};
|
|
1402
|
-
var DropdownMenuTrigger =
|
|
1384
|
+
var DropdownMenuTrigger = React10.forwardRef(({ onClick, children, asChild, ...props }, ref) => {
|
|
1403
1385
|
const { setOpen, open, triggerRef } = useDropdownMenu();
|
|
1404
|
-
if (asChild &&
|
|
1405
|
-
return
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1438
|
+
return /* @__PURE__ */ jsx10(Fragment3, { children });
|
|
1457
1439
|
};
|
|
1458
1440
|
var DropdownMenuRadioGroup = ({ children }) => {
|
|
1459
|
-
return /* @__PURE__ */
|
|
1441
|
+
return /* @__PURE__ */ jsx10("div", { role: "radiogroup", children });
|
|
1460
1442
|
};
|
|
1461
|
-
var DropdownMenuSubTrigger =
|
|
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__ */
|
|
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 =
|
|
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 =
|
|
1472
|
+
var DropdownMenuContent = React10.forwardRef(({ className, sideOffset = 4, align = "end", ...props }, ref) => {
|
|
1491
1473
|
const { open, setOpen, triggerRef } = useDropdownMenu();
|
|
1492
|
-
const contentRef =
|
|
1493
|
-
const [position, setPosition] =
|
|
1494
|
-
const [isPositioned, setIsPositioned] =
|
|
1495
|
-
|
|
1496
|
-
|
|
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
|
-
|
|
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__ */
|
|
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 =
|
|
1571
|
+
var DropdownMenuItem = React10.forwardRef(({ className, inset, onClick, ...props }, ref) => {
|
|
1590
1572
|
const { setOpen } = useDropdownMenu();
|
|
1591
|
-
return /* @__PURE__ */
|
|
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 =
|
|
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__ */
|
|
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 =
|
|
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__ */
|
|
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 =
|
|
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 =
|
|
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__ */
|
|
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
|
|
1663
|
+
import * as React11 from "react";
|
|
1682
1664
|
import { Field } from "formik";
|
|
1683
|
-
import { jsx as
|
|
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 =
|
|
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 =
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
1783
|
-
/* @__PURE__ */
|
|
1784
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
1784
|
+
children: /* @__PURE__ */ jsx12("i", { className: "icon-neo-close text-[0.875rem]" })
|
|
1803
1785
|
}
|
|
1804
1786
|
)
|
|
1805
1787
|
] }),
|
|
1806
|
-
/* @__PURE__ */
|
|
1807
|
-
] }) : /* @__PURE__ */
|
|
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
|
|
1812
|
-
import { Fragment as Fragment4, jsx as
|
|
1813
|
-
var FileInput =
|
|
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 =
|
|
1807
|
+
const generatedId = React13.useId();
|
|
1826
1808
|
const inputId = id ?? generatedId;
|
|
1827
|
-
const content = /* @__PURE__ */
|
|
1828
|
-
/* @__PURE__ */
|
|
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__ */
|
|
1821
|
+
children && /* @__PURE__ */ jsx13("label", { htmlFor: inputId, className: labelClassName, style: labelStyle, ...labelProps, children })
|
|
1840
1822
|
] });
|
|
1841
|
-
return wrapperClassName ? /* @__PURE__ */
|
|
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
|
|
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
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
children
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
};
|