@dragunio/fe-libs 0.1.8 → 0.1.10

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
@@ -32,14 +32,29 @@ __export(index_exports, {
32
32
  CurrencyInput: () => CurrencyInput,
33
33
  DateTimePicker: () => DateTimePicker,
34
34
  Drawer: () => Drawer,
35
+ DrawerWidths: () => DrawerWidths,
36
+ EmailInput: () => EmailInput,
35
37
  ExpandableSection: () => ExpandableSection,
38
+ EyeIcon: () => EyeIcon,
39
+ EyeOffIcon: () => EyeOffIcon,
40
+ FILE_UPLOAD_ACCEPTS: () => FILE_UPLOAD_ACCEPTS,
41
+ FilePreview: () => FilePreview,
42
+ FileUpload: () => FileUpload,
36
43
  Loading: () => Loading,
44
+ MailboxIcon: () => MailboxIcon,
37
45
  Message: () => Message,
38
46
  Modal: () => Modal,
39
47
  MoreHorizontalIcon: () => MoreHorizontalIcon,
40
48
  MoreVerticalIcon: () => MoreVerticalIcon,
49
+ NotFound: () => NotFound,
50
+ NotFoundCaveman: () => NotFoundCaveman,
51
+ NotFoundLost: () => NotFoundLost,
52
+ NotFoundYeti: () => NotFoundYeti,
41
53
  NumberInput: () => NumberInput,
42
54
  Pagination: () => Pagination,
55
+ PasswordInput: () => PasswordInput,
56
+ PhoneIcon: () => PhoneIcon,
57
+ PhoneNumberInput: () => PhoneNumberInput,
43
58
  PlusIcon: () => PlusIcon,
44
59
  ProgressBar: () => ProgressBar,
45
60
  RadioButton: () => RadioButton,
@@ -71,7 +86,9 @@ __export(index_exports, {
71
86
  chevron_right: () => chevron_right,
72
87
  chevron_up: () => chevron_up,
73
88
  copy: () => copy,
89
+ formatFileSize: () => formatFileSize,
74
90
  formatNumber: () => formatNumber,
91
+ getFilePreviewKind: () => getFilePreviewKind,
75
92
  getIconSize: () => getIconSize,
76
93
  key: () => key,
77
94
  lock: () => lock,
@@ -79,10 +96,14 @@ __export(index_exports, {
79
96
  log_out: () => log_out,
80
97
  message: () => message,
81
98
  minus_square: () => minus_square,
99
+ normalizePhoneNumber: () => normalizePhoneNumber,
82
100
  plus: () => plus,
83
101
  plus_square: () => plus_square,
84
102
  search: () => search,
85
103
  trash: () => trash,
104
+ validateEmail: () => validateEmail,
105
+ validatePassword: () => validatePassword,
106
+ validatePhoneNumber: () => validatePhoneNumber,
86
107
  x_close: () => x_close
87
108
  });
88
109
  module.exports = __toCommonJS(index_exports);
@@ -327,6 +348,82 @@ function SearchIcon(props) {
327
348
  )
328
349
  ] });
329
350
  }
351
+ function MailboxIcon(props) {
352
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { ...iconProps4(props), children: [
353
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
354
+ "rect",
355
+ {
356
+ x: "3.5",
357
+ y: "5.5",
358
+ width: "17",
359
+ height: "13",
360
+ rx: "2",
361
+ stroke: "currentColor",
362
+ strokeWidth: "1.8"
363
+ }
364
+ ),
365
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
366
+ "path",
367
+ {
368
+ d: "m4.5 7 6.04 4.53a2.4 2.4 0 0 0 2.92 0L19.5 7",
369
+ stroke: "currentColor",
370
+ strokeWidth: "1.8",
371
+ strokeLinecap: "round",
372
+ strokeLinejoin: "round"
373
+ }
374
+ )
375
+ ] });
376
+ }
377
+ function PhoneIcon(props) {
378
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { ...iconProps4(props), children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
379
+ "path",
380
+ {
381
+ d: "M8.05 3.75 5.84 4.8c-.76.36-1.15 1.2-.94 2.02 1.55 6.14 6.34 10.93 12.48 12.48.82.21 1.66-.18 2.02-.94l1.05-2.21a1.5 1.5 0 0 0-.57-1.91l-2.41-1.48a1.5 1.5 0 0 0-1.8.18l-1.23 1.06a10.38 10.38 0 0 1-4.45-4.45l1.06-1.23a1.5 1.5 0 0 0 .18-1.8L9.96 4.32a1.5 1.5 0 0 0-1.91-.57Z",
382
+ stroke: "currentColor",
383
+ strokeWidth: "1.8",
384
+ strokeLinecap: "round",
385
+ strokeLinejoin: "round"
386
+ }
387
+ ) });
388
+ }
389
+ function EyeIcon(props) {
390
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { ...iconProps4(props), children: [
391
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
392
+ "path",
393
+ {
394
+ d: "M2.9 12s3.1-5 9.1-5 9.1 5 9.1 5-3.1 5-9.1 5-9.1-5-9.1-5Z",
395
+ stroke: "currentColor",
396
+ strokeWidth: "1.8",
397
+ strokeLinecap: "round",
398
+ strokeLinejoin: "round"
399
+ }
400
+ ),
401
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("circle", { cx: "12", cy: "12", r: "2.4", stroke: "currentColor", strokeWidth: "1.8" })
402
+ ] });
403
+ }
404
+ function EyeOffIcon(props) {
405
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { ...iconProps4(props), children: [
406
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
407
+ "path",
408
+ {
409
+ d: "M10.58 7.16A6.1 6.1 0 0 1 12 7c6 0 9.1 5 9.1 5a16.1 16.1 0 0 1-2.54 2.84M13.28 16.83A6.1 6.1 0 0 1 12 17c-6 0-9.1-5-9.1-5a16.1 16.1 0 0 1 2.59-2.87",
410
+ stroke: "currentColor",
411
+ strokeWidth: "1.8",
412
+ strokeLinecap: "round",
413
+ strokeLinejoin: "round"
414
+ }
415
+ ),
416
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
417
+ "path",
418
+ {
419
+ d: "m3.5 3.5 17 17M10.1 10.1a2.7 2.7 0 0 0 3.8 3.8",
420
+ stroke: "currentColor",
421
+ strokeWidth: "1.8",
422
+ strokeLinecap: "round"
423
+ }
424
+ )
425
+ ] });
426
+ }
330
427
 
331
428
  // packages/button-bar/src/index.tsx
332
429
  var import_jsx_runtime6 = require("react/jsx-runtime");
@@ -926,42 +1023,262 @@ var Toggle = (0, import_react7.forwardRef)(function Toggle2({
926
1023
  Toggle.displayName = "Toggle";
927
1024
 
928
1025
  // packages/drawer/src/index.tsx
929
- var import_react8 = require("react");
1026
+ var import_react9 = require("react");
930
1027
  var import_react_dom = require("react-dom");
931
- var import_jsx_runtime11 = require("react/jsx-runtime");
932
- function Drawer({ open, onClose, title, footer, side = "right", width = 400, fullScreen = false, children, closeOnBackdropClick = true, className, style, ...props }) {
933
- (0, import_react8.useEffect)(() => {
934
- if (!open) return;
1028
+
1029
+ // packages/overlay/src/useModalOverlay.ts
1030
+ var import_react8 = require("react");
1031
+ var FOCUSABLE_SELECTOR = [
1032
+ "a[href]",
1033
+ "area[href]",
1034
+ "input:not([disabled])",
1035
+ "select:not([disabled])",
1036
+ "textarea:not([disabled])",
1037
+ "button:not([disabled])",
1038
+ "iframe",
1039
+ "object",
1040
+ "embed",
1041
+ '[contenteditable="true"]',
1042
+ '[tabindex]:not([tabindex="-1"])'
1043
+ ].join(",");
1044
+ var overlayStack = [];
1045
+ var scrollLockCount = 0;
1046
+ var savedBodyStyles = null;
1047
+ var useIsomorphicLayoutEffect = typeof window === "undefined" ? import_react8.useEffect : import_react8.useLayoutEffect;
1048
+ function lockBodyScroll() {
1049
+ if (typeof document === "undefined" || scrollLockCount++ > 0) return;
1050
+ const { body, documentElement } = document;
1051
+ savedBodyStyles = {
1052
+ overflow: body.style.overflow,
1053
+ overscrollBehavior: body.style.overscrollBehavior,
1054
+ paddingRight: body.style.paddingRight
1055
+ };
1056
+ const scrollbarWidth = Math.max(
1057
+ 0,
1058
+ window.innerWidth - documentElement.clientWidth
1059
+ );
1060
+ const currentPadding = Number.parseFloat(window.getComputedStyle(body).paddingRight) || 0;
1061
+ body.style.overflow = "hidden";
1062
+ body.style.overscrollBehavior = "none";
1063
+ if (scrollbarWidth > 0)
1064
+ body.style.paddingRight = `${currentPadding + scrollbarWidth}px`;
1065
+ }
1066
+ function unlockBodyScroll() {
1067
+ if (typeof document === "undefined" || scrollLockCount === 0) return;
1068
+ scrollLockCount -= 1;
1069
+ if (scrollLockCount > 0 || !savedBodyStyles) return;
1070
+ const { body } = document;
1071
+ body.style.overflow = savedBodyStyles.overflow;
1072
+ body.style.overscrollBehavior = savedBodyStyles.overscrollBehavior;
1073
+ body.style.paddingRight = savedBodyStyles.paddingRight;
1074
+ savedBodyStyles = null;
1075
+ }
1076
+ function getFocusableElements(panel) {
1077
+ return Array.from(
1078
+ panel.querySelectorAll(FOCUSABLE_SELECTOR)
1079
+ ).filter(
1080
+ (element) => element.tabIndex >= 0 && !element.hasAttribute("disabled") && element.getAttribute("aria-hidden") !== "true"
1081
+ );
1082
+ }
1083
+ function getTopOverlay() {
1084
+ return overlayStack.reduce((top, candidate) => {
1085
+ if (!top || candidate.priority > top.priority) return candidate;
1086
+ if (candidate.priority < top.priority) return top;
1087
+ const topNode = top.panelRef.current?.parentElement;
1088
+ const candidateNode = candidate.panelRef.current?.parentElement;
1089
+ if (topNode && candidateNode) {
1090
+ const position = topNode.compareDocumentPosition(candidateNode);
1091
+ if (position & Node.DOCUMENT_POSITION_FOLLOWING) return candidate;
1092
+ if (position & Node.DOCUMENT_POSITION_PRECEDING) return top;
1093
+ }
1094
+ return candidate;
1095
+ }, void 0);
1096
+ }
1097
+ function useModalOverlay(options) {
1098
+ const overlayIdRef = (0, import_react8.useRef)();
1099
+ const previouslyFocusedRef = (0, import_react8.useRef)(null);
1100
+ const optionsRef = (0, import_react8.useRef)(options);
1101
+ optionsRef.current = options;
1102
+ if (!overlayIdRef.current) overlayIdRef.current = /* @__PURE__ */ Symbol("fe-overlay");
1103
+ useIsomorphicLayoutEffect(() => {
1104
+ if (!options.open || typeof document === "undefined") return;
1105
+ const overlayId = overlayIdRef.current;
1106
+ previouslyFocusedRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
1107
+ overlayStack.push({
1108
+ id: overlayId,
1109
+ panelRef: options.panelRef,
1110
+ priority: options.priority ?? 0
1111
+ });
1112
+ lockBodyScroll();
1113
+ const focusInitialElement = () => {
1114
+ const { initialFocusRef, panelRef } = optionsRef.current;
1115
+ const focusTarget = initialFocusRef?.current ?? panelRef.current;
1116
+ focusTarget?.focus();
1117
+ };
1118
+ let cancelled = false;
1119
+ queueMicrotask(() => {
1120
+ if (!cancelled && getTopOverlay()?.id === overlayId)
1121
+ focusInitialElement();
1122
+ });
935
1123
  const onKeyDown = (event) => {
936
- if (event.key === "Escape") onClose();
1124
+ if (getTopOverlay()?.id !== overlayId) return;
1125
+ if (event.key === "Escape") {
1126
+ if (optionsRef.current.closeOnEscape !== false) {
1127
+ event.preventDefault();
1128
+ optionsRef.current.onClose();
1129
+ }
1130
+ return;
1131
+ }
1132
+ if (event.key !== "Tab") return;
1133
+ const panel = optionsRef.current.panelRef.current;
1134
+ if (!panel) return;
1135
+ const focusable = getFocusableElements(panel);
1136
+ if (!focusable.length) {
1137
+ event.preventDefault();
1138
+ panel.focus();
1139
+ return;
1140
+ }
1141
+ const first = focusable[0];
1142
+ const last = focusable[focusable.length - 1];
1143
+ const activeElement = document.activeElement;
1144
+ if (event.shiftKey && (activeElement === first || !panel.contains(activeElement))) {
1145
+ event.preventDefault();
1146
+ last.focus();
1147
+ } else if (!event.shiftKey && (activeElement === last || !panel.contains(activeElement))) {
1148
+ event.preventDefault();
1149
+ first.focus();
1150
+ }
937
1151
  };
938
1152
  document.addEventListener("keydown", onKeyDown);
939
- return () => document.removeEventListener("keydown", onKeyDown);
940
- }, [onClose, open]);
1153
+ return () => {
1154
+ document.removeEventListener("keydown", onKeyDown);
1155
+ cancelled = true;
1156
+ const stackIndex = overlayStack.findIndex(
1157
+ (entry) => entry.id === overlayId
1158
+ );
1159
+ if (stackIndex !== -1) overlayStack.splice(stackIndex, 1);
1160
+ unlockBodyScroll();
1161
+ if (optionsRef.current.restoreFocus !== false) {
1162
+ const nextOverlay = getTopOverlay()?.panelRef.current;
1163
+ if (nextOverlay) nextOverlay.focus();
1164
+ else if (previouslyFocusedRef.current?.isConnected) {
1165
+ previouslyFocusedRef.current.focus();
1166
+ }
1167
+ }
1168
+ };
1169
+ }, [options.open, options.panelRef]);
1170
+ }
1171
+
1172
+ // packages/drawer/src/index.tsx
1173
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1174
+ var DrawerWidths = {
1175
+ small: 360,
1176
+ medium: 400,
1177
+ large: 480
1178
+ };
1179
+ function Drawer({
1180
+ open,
1181
+ onClose,
1182
+ title,
1183
+ description,
1184
+ footer,
1185
+ side = "right",
1186
+ width = DrawerWidths.medium,
1187
+ fullScreen = false,
1188
+ children,
1189
+ closeOnBackdropClick = true,
1190
+ closeOnEscape = true,
1191
+ closeLabel = "Close drawer",
1192
+ initialFocusRef,
1193
+ restoreFocus = true,
1194
+ className,
1195
+ style,
1196
+ "aria-label": ariaLabel,
1197
+ "aria-describedby": ariaDescribedBy,
1198
+ ...props
1199
+ }) {
1200
+ const titleId = (0, import_react9.useId)();
1201
+ const descriptionId = (0, import_react9.useId)();
1202
+ const panelRef = (0, import_react9.useRef)(null);
1203
+ useModalOverlay({
1204
+ open,
1205
+ onClose,
1206
+ panelRef,
1207
+ priority: 1e3,
1208
+ closeOnEscape,
1209
+ initialFocusRef,
1210
+ restoreFocus
1211
+ });
941
1212
  if (!open || typeof document === "undefined") return null;
942
1213
  const panelStyle = !fullScreen && (side === "left" || side === "right") ? { ...style, width: typeof width === "number" ? `${width}px` : width } : style;
943
- return (0, import_react_dom.createPortal)(/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "fe-drawer-backdrop", role: "presentation", onMouseDown: (event) => {
944
- if (event.target === event.currentTarget && closeOnBackdropClick) onClose();
945
- }, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("aside", { className: ["fe-drawer", `fe-drawer--${side}`, fullScreen && "fe-drawer--full-screen", className].filter(Boolean).join(" "), style: panelStyle, role: "dialog", "aria-modal": "true", "aria-label": typeof title === "string" ? title : "Drawer", ...props, children: [
946
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("header", { className: "fe-drawer__header", children: [
947
- title && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h2", { children: title }),
948
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", "aria-label": "Close drawer", onClick: onClose, children: "\xD7" })
949
- ] }),
950
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "fe-drawer__body", children }),
951
- footer && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("footer", { className: "fe-drawer__footer", children: footer })
952
- ] }) }), document.body);
1214
+ const describedBy = [description ? descriptionId : void 0, ariaDescribedBy].filter(Boolean).join(" ") || void 0;
1215
+ return (0, import_react_dom.createPortal)(
1216
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1217
+ "div",
1218
+ {
1219
+ className: "fe-drawer-backdrop",
1220
+ role: "presentation",
1221
+ onMouseDown: (event) => {
1222
+ if (event.target === event.currentTarget && closeOnBackdropClick)
1223
+ onClose();
1224
+ },
1225
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1226
+ "aside",
1227
+ {
1228
+ ref: panelRef,
1229
+ className: [
1230
+ "fe-drawer",
1231
+ `fe-drawer--${side}`,
1232
+ fullScreen && "fe-drawer--full-screen",
1233
+ className
1234
+ ].filter(Boolean).join(" "),
1235
+ style: panelStyle,
1236
+ role: "dialog",
1237
+ "aria-modal": "true",
1238
+ "aria-labelledby": title ? titleId : void 0,
1239
+ "aria-describedby": describedBy,
1240
+ "aria-label": ariaLabel ?? (title ? void 0 : "Drawer"),
1241
+ tabIndex: -1,
1242
+ ...props,
1243
+ children: [
1244
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("header", { className: "fe-drawer__header", children: [
1245
+ (title || description) && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "fe-drawer__heading", children: [
1246
+ title && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h2", { id: titleId, children: title }),
1247
+ description && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { id: descriptionId, children: description })
1248
+ ] }),
1249
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1250
+ Button,
1251
+ {
1252
+ hierarchy: "tertiary-gray",
1253
+ size: "32",
1254
+ iconOnly: true,
1255
+ icon: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CloseIcon, {}),
1256
+ "aria-label": closeLabel,
1257
+ onClick: onClose
1258
+ }
1259
+ )
1260
+ ] }),
1261
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "fe-drawer__body", children }),
1262
+ footer && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("footer", { className: "fe-drawer__footer", children: footer })
1263
+ ]
1264
+ }
1265
+ )
1266
+ }
1267
+ ),
1268
+ document.body
1269
+ );
953
1270
  }
954
1271
 
955
1272
  // packages/form-controls/src/controls/TextInput/text-input.tsx
956
- var import_react10 = require("react");
1273
+ var import_react11 = require("react");
957
1274
 
958
1275
  // packages/tooltip/src/index.tsx
959
- var import_react9 = require("react");
1276
+ var import_react10 = require("react");
960
1277
  var import_jsx_runtime12 = require("react/jsx-runtime");
961
1278
  function Tooltip({ content, children, placement = "top", disabled, className, ...props }) {
962
- const [visible, setVisible] = (0, import_react9.useState)(false);
963
- const id = (0, import_react9.useId)();
964
- const trigger = (0, import_react9.cloneElement)(children, { "aria-describedby": visible ? id : void 0, onMouseEnter: (event) => {
1279
+ const [visible, setVisible] = (0, import_react10.useState)(false);
1280
+ const id = (0, import_react10.useId)();
1281
+ const trigger = (0, import_react10.cloneElement)(children, { "aria-describedby": visible ? id : void 0, onMouseEnter: (event) => {
965
1282
  children.props.onMouseEnter?.(event);
966
1283
  setVisible(true);
967
1284
  }, onMouseLeave: (event) => {
@@ -1036,7 +1353,7 @@ function FieldMessage({
1036
1353
 
1037
1354
  // packages/form-controls/src/controls/TextInput/text-input.tsx
1038
1355
  var import_jsx_runtime14 = require("react/jsx-runtime");
1039
- var TextInput = (0, import_react10.forwardRef)(
1356
+ var TextInput = (0, import_react11.forwardRef)(
1040
1357
  function TextInput2({
1041
1358
  value,
1042
1359
  defaultValue = "",
@@ -1066,12 +1383,12 @@ var TextInput = (0, import_react10.forwardRef)(
1066
1383
  "aria-labelledby": ariaLabelledBy,
1067
1384
  ...props
1068
1385
  }, ref) {
1069
- const generatedId = (0, import_react10.useId)();
1386
+ const generatedId = (0, import_react11.useId)();
1070
1387
  const inputId = id ?? generatedId + "-input";
1071
1388
  const labelId = generatedId + "-label";
1072
1389
  const messageId2 = generatedId + "-message";
1073
1390
  const controlled = value !== void 0;
1074
- const [internalValue, setInternalValue] = (0, import_react10.useState)(defaultValue);
1391
+ const [internalValue, setInternalValue] = (0, import_react11.useState)(defaultValue);
1075
1392
  const currentValue = controlled ? value : internalValue;
1076
1393
  const fieldError = getFieldError(error, errorMessage);
1077
1394
  const hasError = fieldError !== void 0 && fieldError !== false && fieldError !== null;
@@ -1171,10 +1488,257 @@ var TextInput = (0, import_react10.forwardRef)(
1171
1488
  );
1172
1489
  TextInput.displayName = "TextInput";
1173
1490
 
1174
- // packages/form-controls/src/controls/TextArea/text-area.tsx
1175
- var import_react11 = require("react");
1491
+ // packages/form-controls/src/controls/EmailInput/email-input.tsx
1492
+ var import_react13 = require("react");
1493
+
1494
+ // packages/form-controls/src/controls/ValidatedInput/validation.ts
1495
+ var import_react12 = require("react");
1496
+ var invalidValueMessage = "Invalid value.";
1497
+ function toValidationError(result) {
1498
+ if (typeof result === "string") return result || void 0;
1499
+ return result === false ? invalidValueMessage : void 0;
1500
+ }
1501
+ function validateEmail(value, required = false) {
1502
+ const email = value.trim();
1503
+ if (!email) return required ? "Email is required." : void 0;
1504
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email) ? void 0 : "Enter a valid email address.";
1505
+ }
1506
+ function validatePassword(value, required = false) {
1507
+ if (!value) return required ? "Password is required." : void 0;
1508
+ if (value.length < 8) return "Use at least 8 characters.";
1509
+ if (!/[a-z]/.test(value) || !/[A-Z]/.test(value) || !/\d/.test(value))
1510
+ return "Include uppercase, lowercase, and a number.";
1511
+ return void 0;
1512
+ }
1513
+ function validatePhoneNumber(value, required = false) {
1514
+ const phoneNumber = value.trim();
1515
+ if (!phoneNumber) return required ? "Phone number is required." : void 0;
1516
+ if (!/^\+?[\d() ]+$/.test(phoneNumber))
1517
+ return "Use only numbers, spaces, parentheses, and an optional leading +.";
1518
+ const digitCount = phoneNumber.replace(/\D/g, "").length;
1519
+ return digitCount >= 7 && digitCount <= 15 ? void 0 : "Enter a phone number with 7 to 15 digits.";
1520
+ }
1521
+ function normalizePhoneNumber(value) {
1522
+ return value.replace(/[^\d+() ]/g, "");
1523
+ }
1524
+ function useInputValidation({
1525
+ error,
1526
+ errorMessage,
1527
+ isRequired = false,
1528
+ required = false,
1529
+ validate,
1530
+ validateOn = "blur",
1531
+ builtInValidator
1532
+ }) {
1533
+ const [validationError, setValidationError] = (0, import_react12.useState)();
1534
+ const [hasValidated, setHasValidated] = (0, import_react12.useState)(false);
1535
+ const hasExternalError = error !== void 0 || errorMessage !== void 0;
1536
+ const validateValue = (value) => {
1537
+ const builtInError = builtInValidator(value, isRequired || required);
1538
+ const customError = builtInError ? void 0 : toValidationError(validate?.(value));
1539
+ const nextError = builtInError ?? customError;
1540
+ setHasValidated(true);
1541
+ setValidationError(nextError);
1542
+ return nextError;
1543
+ };
1544
+ return {
1545
+ error: hasExternalError ? getFieldError(error, errorMessage) : validationError,
1546
+ onValueChange(value) {
1547
+ if (validateOn === "change" || hasValidated) validateValue(value);
1548
+ },
1549
+ onBlur(value) {
1550
+ if (validateOn === "blur") validateValue(value);
1551
+ }
1552
+ };
1553
+ }
1554
+
1555
+ // packages/form-controls/src/controls/EmailInput/email-input.tsx
1176
1556
  var import_jsx_runtime15 = require("react/jsx-runtime");
1177
- var TextArea = (0, import_react11.forwardRef)(
1557
+ var EmailInput = (0, import_react13.forwardRef)(
1558
+ function EmailInput2({
1559
+ error,
1560
+ errorMessage,
1561
+ isRequired,
1562
+ required,
1563
+ validate,
1564
+ validateOn,
1565
+ onBlur,
1566
+ onValueChange,
1567
+ autoComplete,
1568
+ className,
1569
+ ...props
1570
+ }, ref) {
1571
+ const validation = useInputValidation({
1572
+ error,
1573
+ errorMessage,
1574
+ isRequired,
1575
+ required,
1576
+ validate,
1577
+ validateOn,
1578
+ builtInValidator: validateEmail
1579
+ });
1580
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1581
+ TextInput,
1582
+ {
1583
+ ...props,
1584
+ ref,
1585
+ className: ["fe-email-input", className].filter(Boolean).join(" "),
1586
+ type: "email",
1587
+ inputMode: "email",
1588
+ autoComplete: autoComplete ?? "email",
1589
+ isRequired,
1590
+ required,
1591
+ prefix: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(MailboxIcon, { size: 18 }),
1592
+ error: validation.error,
1593
+ onValueChange: (value) => {
1594
+ validation.onValueChange(value);
1595
+ onValueChange?.(value);
1596
+ },
1597
+ onBlur: (event) => {
1598
+ validation.onBlur(event.currentTarget.value);
1599
+ onBlur?.(event);
1600
+ }
1601
+ }
1602
+ );
1603
+ }
1604
+ );
1605
+ EmailInput.displayName = "EmailInput";
1606
+
1607
+ // packages/form-controls/src/controls/PasswordInput/password-input.tsx
1608
+ var import_react14 = require("react");
1609
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1610
+ var PasswordInput = (0, import_react14.forwardRef)(
1611
+ function PasswordInput2({
1612
+ error,
1613
+ errorMessage,
1614
+ isRequired,
1615
+ required,
1616
+ validate,
1617
+ validateOn,
1618
+ onBlur,
1619
+ onValueChange,
1620
+ autoComplete,
1621
+ className,
1622
+ showPasswordLabel = "Show password",
1623
+ hidePasswordLabel = "Hide password",
1624
+ ...props
1625
+ }, ref) {
1626
+ const [visible, setVisible] = (0, import_react14.useState)(false);
1627
+ const validation = useInputValidation({
1628
+ error,
1629
+ errorMessage,
1630
+ isRequired,
1631
+ required,
1632
+ validate,
1633
+ validateOn,
1634
+ builtInValidator: validatePassword
1635
+ });
1636
+ const toggleLabel = visible ? hidePasswordLabel : showPasswordLabel;
1637
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1638
+ TextInput,
1639
+ {
1640
+ ...props,
1641
+ ref,
1642
+ className: ["fe-password-input", className].filter(Boolean).join(" "),
1643
+ type: visible ? "text" : "password",
1644
+ autoComplete: autoComplete ?? "current-password",
1645
+ isRequired,
1646
+ required,
1647
+ suffix: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1648
+ Button,
1649
+ {
1650
+ hierarchy: "tertiary-gray",
1651
+ size: "24",
1652
+ iconOnly: true,
1653
+ icon: visible ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(EyeOffIcon, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(EyeIcon, { size: 16 }),
1654
+ "aria-label": toggleLabel,
1655
+ "aria-pressed": visible,
1656
+ className: "fe-password-input__toggle",
1657
+ onMouseDown: (event) => event.preventDefault(),
1658
+ onClick: () => setVisible((previous) => !previous)
1659
+ }
1660
+ ),
1661
+ error: validation.error,
1662
+ onValueChange: (value) => {
1663
+ validation.onValueChange(value);
1664
+ onValueChange?.(value);
1665
+ },
1666
+ onBlur: (event) => {
1667
+ validation.onBlur(event.currentTarget.value);
1668
+ onBlur?.(event);
1669
+ }
1670
+ }
1671
+ );
1672
+ }
1673
+ );
1674
+ PasswordInput.displayName = "PasswordInput";
1675
+
1676
+ // packages/form-controls/src/controls/PhoneNumberInput/phone-number-input.tsx
1677
+ var import_react15 = require("react");
1678
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1679
+ var PhoneNumberInput = (0, import_react15.forwardRef)(function PhoneNumberInput2({
1680
+ value,
1681
+ defaultValue = "",
1682
+ error,
1683
+ errorMessage,
1684
+ isRequired,
1685
+ required,
1686
+ validate,
1687
+ validateOn,
1688
+ onBlur,
1689
+ onValueChange,
1690
+ autoComplete,
1691
+ className,
1692
+ ...props
1693
+ }, ref) {
1694
+ const controlled = value !== void 0;
1695
+ const [uncontrolledValue, setUncontrolledValue] = (0, import_react15.useState)(
1696
+ () => normalizePhoneNumber(defaultValue)
1697
+ );
1698
+ const currentValue = controlled ? value : uncontrolledValue;
1699
+ const validation = useInputValidation({
1700
+ error,
1701
+ errorMessage,
1702
+ isRequired,
1703
+ required,
1704
+ validate,
1705
+ validateOn,
1706
+ builtInValidator: validatePhoneNumber
1707
+ });
1708
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1709
+ TextInput,
1710
+ {
1711
+ ...props,
1712
+ ref,
1713
+ className: ["fe-phone-number-input", className].filter(Boolean).join(" "),
1714
+ type: "tel",
1715
+ inputMode: "tel",
1716
+ autoComplete: autoComplete ?? "tel",
1717
+ value: currentValue,
1718
+ isRequired,
1719
+ required,
1720
+ prefix: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PhoneIcon, { size: 18 }),
1721
+ error: validation.error,
1722
+ onValueChange: (nextValue) => {
1723
+ const normalizedValue = normalizePhoneNumber(nextValue);
1724
+ if (!controlled) setUncontrolledValue(normalizedValue);
1725
+ validation.onValueChange(normalizedValue);
1726
+ onValueChange?.(normalizedValue);
1727
+ },
1728
+ onBlur: (event) => {
1729
+ const normalizedValue = normalizePhoneNumber(event.currentTarget.value);
1730
+ validation.onBlur(normalizedValue);
1731
+ onBlur?.(event);
1732
+ }
1733
+ }
1734
+ );
1735
+ });
1736
+ PhoneNumberInput.displayName = "PhoneNumberInput";
1737
+
1738
+ // packages/form-controls/src/controls/TextArea/text-area.tsx
1739
+ var import_react16 = require("react");
1740
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1741
+ var TextArea = (0, import_react16.forwardRef)(
1178
1742
  function TextArea2({
1179
1743
  value,
1180
1744
  defaultValue = "",
@@ -1201,13 +1765,13 @@ var TextArea = (0, import_react11.forwardRef)(
1201
1765
  "aria-labelledby": ariaLabelledBy,
1202
1766
  ...props
1203
1767
  }, ref) {
1204
- const generatedId = (0, import_react11.useId)();
1768
+ const generatedId = (0, import_react16.useId)();
1205
1769
  const inputId = id ?? generatedId + "-input";
1206
1770
  const labelId = generatedId + "-label";
1207
1771
  const messageId2 = generatedId + "-message";
1208
1772
  const controlled = value !== void 0;
1209
- const [internalValue, setInternalValue] = (0, import_react11.useState)(defaultValue);
1210
- const textareaRef = (0, import_react11.useRef)(null);
1773
+ const [internalValue, setInternalValue] = (0, import_react16.useState)(defaultValue);
1774
+ const textareaRef = (0, import_react16.useRef)(null);
1211
1775
  const currentValue = controlled ? value : internalValue;
1212
1776
  const fieldError = getFieldError(error, errorMessage);
1213
1777
  const hasError = fieldError !== void 0 && fieldError !== false && fieldError !== null;
@@ -1225,8 +1789,8 @@ var TextArea = (0, import_react11.forwardRef)(
1225
1789
  textarea.style.height = "auto";
1226
1790
  textarea.style.height = `${textarea.scrollHeight}px`;
1227
1791
  };
1228
- (0, import_react11.useImperativeHandle)(ref, () => textareaRef.current, []);
1229
- (0, import_react11.useLayoutEffect)(() => {
1792
+ (0, import_react16.useImperativeHandle)(ref, () => textareaRef.current, []);
1793
+ (0, import_react16.useLayoutEffect)(() => {
1230
1794
  if (autosize && textareaRef.current) {
1231
1795
  resizeToContent(textareaRef.current);
1232
1796
  }
@@ -1236,7 +1800,7 @@ var TextArea = (0, import_react11.forwardRef)(
1236
1800
  onValueChange?.("");
1237
1801
  onClear?.();
1238
1802
  };
1239
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1803
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1240
1804
  "div",
1241
1805
  {
1242
1806
  className: [
@@ -1246,7 +1810,7 @@ var TextArea = (0, import_react11.forwardRef)(
1246
1810
  className
1247
1811
  ].filter(Boolean).join(" "),
1248
1812
  children: [
1249
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1813
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1250
1814
  FieldLabel,
1251
1815
  {
1252
1816
  id: labelId,
@@ -1256,8 +1820,8 @@ var TextArea = (0, import_react11.forwardRef)(
1256
1820
  isRequired
1257
1821
  }
1258
1822
  ),
1259
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "fe-text-area__control", children: [
1260
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1823
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "fe-text-area__control", children: [
1824
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1261
1825
  "textarea",
1262
1826
  {
1263
1827
  ref: textareaRef,
@@ -1280,24 +1844,24 @@ var TextArea = (0, import_react11.forwardRef)(
1280
1844
  ...props
1281
1845
  }
1282
1846
  ),
1283
- isRequired && placeholder && !currentValue && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "fe-text-area__placeholder", "aria-hidden": "true", children: [
1284
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { children: placeholder }),
1285
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "fe-field__required", children: "*" })
1847
+ isRequired && placeholder && !currentValue && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "fe-text-area__placeholder", "aria-hidden": "true", children: [
1848
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: placeholder }),
1849
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "fe-field__required", children: "*" })
1286
1850
  ] }),
1287
- clearable && currentValue && !disabled && !readOnly && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1851
+ clearable && currentValue && !disabled && !readOnly && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1288
1852
  Button,
1289
1853
  {
1290
1854
  hierarchy: "tertiary-gray",
1291
1855
  size: "24",
1292
1856
  iconOnly: true,
1293
- icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CloseIcon, { size: 14 }),
1857
+ icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CloseIcon, { size: 14 }),
1294
1858
  "aria-label": clearLabel,
1295
1859
  onClick: clear,
1296
1860
  className: "fe-text-area__clear"
1297
1861
  }
1298
1862
  )
1299
1863
  ] }),
1300
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1864
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1301
1865
  FieldMessage,
1302
1866
  {
1303
1867
  id: messageId2,
@@ -1314,10 +1878,25 @@ var TextArea = (0, import_react11.forwardRef)(
1314
1878
  TextArea.displayName = "TextArea";
1315
1879
 
1316
1880
  // packages/form-controls/src/controls/Selection/selection.tsx
1317
- var import_react12 = require("react");
1881
+ var import_react17 = require("react");
1318
1882
  var import_react_dom2 = require("react-dom");
1319
- var import_jsx_runtime16 = require("react/jsx-runtime");
1320
- var Selection = (0, import_react12.forwardRef)(
1883
+
1884
+ // packages/overlay/src/getPortalZIndex.ts
1885
+ var DEFAULT_PORTAL_Z_INDEX = 1e3;
1886
+ function getPortalZIndex(anchor) {
1887
+ if (!anchor || typeof window === "undefined") return DEFAULT_PORTAL_Z_INDEX;
1888
+ let highestAncestorZIndex = DEFAULT_PORTAL_Z_INDEX - 1;
1889
+ for (let element = anchor; element; element = element.parentElement) {
1890
+ const zIndex = Number.parseInt(window.getComputedStyle(element).zIndex, 10);
1891
+ if (Number.isFinite(zIndex))
1892
+ highestAncestorZIndex = Math.max(highestAncestorZIndex, zIndex);
1893
+ }
1894
+ return Math.max(DEFAULT_PORTAL_Z_INDEX, highestAncestorZIndex + 1);
1895
+ }
1896
+
1897
+ // packages/form-controls/src/controls/Selection/selection.tsx
1898
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1899
+ var Selection = (0, import_react17.forwardRef)(
1321
1900
  function Selection2({
1322
1901
  className,
1323
1902
  label,
@@ -1346,7 +1925,7 @@ var Selection = (0, import_react12.forwardRef)(
1346
1925
  "aria-labelledby": ariaLabelledBy,
1347
1926
  ...props
1348
1927
  }, ref) {
1349
- const generatedId = (0, import_react12.useId)();
1928
+ const generatedId = (0, import_react17.useId)();
1350
1929
  const triggerId = id ?? generatedId + "-trigger";
1351
1930
  const listboxId = triggerId + "-listbox";
1352
1931
  const labelId = generatedId + "-label";
@@ -1364,7 +1943,7 @@ var Selection = (0, import_react12.forwardRef)(
1364
1943
  label ? labelId : void 0
1365
1944
  );
1366
1945
  const isControlled = value !== void 0;
1367
- const [internalValue, setInternalValue] = (0, import_react12.useState)(
1946
+ const [internalValue, setInternalValue] = (0, import_react17.useState)(
1368
1947
  defaultValue ?? (multiple ? [] : "")
1369
1948
  );
1370
1949
  const selectedValue = isControlled ? value : internalValue;
@@ -1372,13 +1951,13 @@ var Selection = (0, import_react12.forwardRef)(
1372
1951
  const selectedOptions = options.filter(
1373
1952
  (option) => selectedValues.some((item) => String(item) === String(option.value))
1374
1953
  );
1375
- const [open, setOpen] = (0, import_react12.useState)(false);
1376
- const [query, setQuery] = (0, import_react12.useState)("");
1377
- const [activeIndex, setActiveIndex] = (0, import_react12.useState)(0);
1378
- const rootRef = (0, import_react12.useRef)(null);
1379
- const menuRef = (0, import_react12.useRef)(null);
1380
- const [menuPosition, setMenuPosition] = (0, import_react12.useState)(null);
1381
- (0, import_react12.useEffect)(() => {
1954
+ const [open, setOpen] = (0, import_react17.useState)(false);
1955
+ const [query, setQuery] = (0, import_react17.useState)("");
1956
+ const [activeIndex, setActiveIndex] = (0, import_react17.useState)(0);
1957
+ const rootRef = (0, import_react17.useRef)(null);
1958
+ const menuRef = (0, import_react17.useRef)(null);
1959
+ const [menuPosition, setMenuPosition] = (0, import_react17.useState)(null);
1960
+ (0, import_react17.useEffect)(() => {
1382
1961
  const close = (event) => {
1383
1962
  const target = event.target;
1384
1963
  if (!rootRef.current?.contains(target) && !menuRef.current?.contains(target))
@@ -1387,7 +1966,7 @@ var Selection = (0, import_react12.forwardRef)(
1387
1966
  document.addEventListener("mousedown", close);
1388
1967
  return () => document.removeEventListener("mousedown", close);
1389
1968
  }, []);
1390
- (0, import_react12.useLayoutEffect)(() => {
1969
+ (0, import_react17.useLayoutEffect)(() => {
1391
1970
  if (!open) return;
1392
1971
  const updateMenuPosition = () => {
1393
1972
  const rect = rootRef.current?.getBoundingClientRect();
@@ -1395,7 +1974,8 @@ var Selection = (0, import_react12.forwardRef)(
1395
1974
  setMenuPosition({
1396
1975
  top: rect.bottom + 7,
1397
1976
  left: rect.left,
1398
- width: rect.width
1977
+ width: rect.width,
1978
+ zIndex: getPortalZIndex(rootRef.current)
1399
1979
  });
1400
1980
  };
1401
1981
  updateMenuPosition();
@@ -1464,7 +2044,7 @@ var Selection = (0, import_react12.forwardRef)(
1464
2044
  }
1465
2045
  if (event.key === "Escape") setOpen(false);
1466
2046
  };
1467
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2047
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1468
2048
  "div",
1469
2049
  {
1470
2050
  ref,
@@ -1479,7 +2059,7 @@ var Selection = (0, import_react12.forwardRef)(
1479
2059
  ].filter(Boolean).join(" "),
1480
2060
  ...props,
1481
2061
  children: [
1482
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2062
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1483
2063
  FieldLabel,
1484
2064
  {
1485
2065
  id: labelId,
@@ -1489,8 +2069,8 @@ var Selection = (0, import_react12.forwardRef)(
1489
2069
  isRequired
1490
2070
  }
1491
2071
  ),
1492
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { ref: rootRef, className: "fe-selection__control", children: [
1493
- name && selectedValues.map((item) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2072
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { ref: rootRef, className: "fe-selection__control", children: [
2073
+ name && selectedValues.map((item) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1494
2074
  "input",
1495
2075
  {
1496
2076
  type: "hidden",
@@ -1499,7 +2079,7 @@ var Selection = (0, import_react12.forwardRef)(
1499
2079
  },
1500
2080
  String(item)
1501
2081
  )),
1502
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2082
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1503
2083
  "button",
1504
2084
  {
1505
2085
  id: triggerId,
@@ -1517,7 +2097,7 @@ var Selection = (0, import_react12.forwardRef)(
1517
2097
  onClick: () => setOpen((current) => !current),
1518
2098
  onKeyDown: onTriggerKeyDown,
1519
2099
  children: [
1520
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2100
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1521
2101
  "span",
1522
2102
  {
1523
2103
  className: [
@@ -1525,30 +2105,30 @@ var Selection = (0, import_react12.forwardRef)(
1525
2105
  !selectedOptions.length && "is-placeholder",
1526
2106
  tag && selectedOptions.length > 1 && "is-tags"
1527
2107
  ].filter(Boolean).join(" "),
1528
- children: displayLabel ? tag && multiple ? selectedOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2108
+ children: displayLabel ? tag && multiple ? selectedOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1529
2109
  "span",
1530
2110
  {
1531
2111
  className: "fe-selection__tag",
1532
2112
  children: [
1533
2113
  option.label,
1534
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { "aria-hidden": "true", children: "\xD7" })
2114
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { "aria-hidden": "true", children: "\xD7" })
1535
2115
  ]
1536
2116
  },
1537
2117
  String(option.value)
1538
- )) : displayLabel.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { children: [
2118
+ )) : displayLabel.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("span", { children: [
1539
2119
  item,
1540
2120
  index < displayLabel.length - 1 ? ", " : ""
1541
- ] }, index)) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
1542
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: placeholder }),
1543
- isRequired && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "fe-field__required", "aria-hidden": "true", children: "*" })
2121
+ ] }, index)) : /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
2122
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: placeholder }),
2123
+ isRequired && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fe-field__required", "aria-hidden": "true", children: "*" })
1544
2124
  ] })
1545
2125
  }
1546
2126
  ),
1547
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "fe-selection__actions", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "fe-selection__chevron", "aria-hidden": "true" }) })
2127
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fe-selection__actions", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fe-selection__chevron", "aria-hidden": "true" }) })
1548
2128
  ]
1549
2129
  }
1550
2130
  ),
1551
- clearable && selectedOptions.length > 0 && !disabled && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2131
+ clearable && selectedOptions.length > 0 && !disabled && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1552
2132
  "button",
1553
2133
  {
1554
2134
  type: "button",
@@ -1558,7 +2138,7 @@ var Selection = (0, import_react12.forwardRef)(
1558
2138
  }
1559
2139
  ),
1560
2140
  open && menuPosition && (0, import_react_dom2.createPortal)(
1561
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2141
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1562
2142
  "div",
1563
2143
  {
1564
2144
  ref: menuRef,
@@ -1568,14 +2148,15 @@ var Selection = (0, import_react12.forwardRef)(
1568
2148
  position: "fixed",
1569
2149
  top: menuPosition.top,
1570
2150
  left: menuPosition.left,
1571
- width: menuPosition.width
2151
+ width: menuPosition.width,
2152
+ zIndex: menuPosition.zIndex
1572
2153
  },
1573
2154
  role: "listbox",
1574
2155
  "aria-multiselectable": multiple || void 0,
1575
2156
  children: [
1576
- searchable && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "fe-selection__search", children: [
1577
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { "aria-hidden": "true", children: "\u2315" }),
1578
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2157
+ searchable && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "fe-selection__search", children: [
2158
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { "aria-hidden": "true", children: "\u2315" }),
2159
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1579
2160
  "input",
1580
2161
  {
1581
2162
  autoFocus: true,
@@ -1589,11 +2170,11 @@ var Selection = (0, import_react12.forwardRef)(
1589
2170
  }
1590
2171
  )
1591
2172
  ] }),
1592
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "fe-selection__options", children: filteredOptions.length ? filteredOptions.map((option, index) => {
2173
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "fe-selection__options", children: filteredOptions.length ? filteredOptions.map((option, index) => {
1593
2174
  const isSelected = selectedValues.some(
1594
2175
  (item) => String(item) === String(option.value)
1595
2176
  );
1596
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2177
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1597
2178
  "button",
1598
2179
  {
1599
2180
  type: "button",
@@ -1607,8 +2188,8 @@ var Selection = (0, import_react12.forwardRef)(
1607
2188
  onMouseMove: () => setActiveIndex(index),
1608
2189
  onClick: () => choose(option),
1609
2190
  children: [
1610
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: option.label }),
1611
- isSelected && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2191
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: option.label }),
2192
+ isSelected && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1612
2193
  "span",
1613
2194
  {
1614
2195
  className: "fe-selection__check",
@@ -1620,14 +2201,14 @@ var Selection = (0, import_react12.forwardRef)(
1620
2201
  },
1621
2202
  String(option.value)
1622
2203
  );
1623
- }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "fe-selection__empty", children: "No matching options" }) })
2204
+ }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "fe-selection__empty", children: "No matching options" }) })
1624
2205
  ]
1625
2206
  }
1626
2207
  ),
1627
2208
  document.body
1628
2209
  )
1629
2210
  ] }),
1630
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2211
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1631
2212
  FieldMessage,
1632
2213
  {
1633
2214
  id: messageId2,
@@ -1644,8 +2225,8 @@ var Selection = (0, import_react12.forwardRef)(
1644
2225
  Selection.displayName = "Selection";
1645
2226
 
1646
2227
  // packages/form-controls/src/controls/NumberInput/number-input.tsx
1647
- var import_react13 = require("react");
1648
- var import_jsx_runtime17 = require("react/jsx-runtime");
2228
+ var import_react18 = require("react");
2229
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1649
2230
  function formatNumber(value, decimals = 2, thousandSeparator = ",", decimalSeparator = ".") {
1650
2231
  return new Intl.NumberFormat("en-US", {
1651
2232
  minimumFractionDigits: 0,
@@ -1702,7 +2283,7 @@ function normalizeNumberInput(raw, options) {
1702
2283
  value
1703
2284
  };
1704
2285
  }
1705
- var NumberInput = (0, import_react13.forwardRef)(
2286
+ var NumberInput = (0, import_react18.forwardRef)(
1706
2287
  function NumberInput2({
1707
2288
  value,
1708
2289
  defaultValue = null,
@@ -1739,14 +2320,14 @@ var NumberInput = (0, import_react13.forwardRef)(
1739
2320
  onKeyDown,
1740
2321
  ...props
1741
2322
  }, ref) {
1742
- const inputRef = (0, import_react13.useRef)(null);
1743
- const generatedId = (0, import_react13.useId)();
2323
+ const inputRef = (0, import_react18.useRef)(null);
2324
+ const generatedId = (0, import_react18.useId)();
1744
2325
  const messageId2 = generatedId + "-message";
1745
2326
  const isControlled = value !== void 0;
1746
- const [internalValue, setInternalValue] = (0, import_react13.useState)(defaultValue);
1747
- const [focused, setFocused] = (0, import_react13.useState)(false);
2327
+ const [internalValue, setInternalValue] = (0, import_react18.useState)(defaultValue);
2328
+ const [focused, setFocused] = (0, import_react18.useState)(false);
1748
2329
  const actualValue = isControlled ? value ?? null : internalValue;
1749
- const [text, setText] = (0, import_react13.useState)(
2330
+ const [text, setText] = (0, import_react18.useState)(
1750
2331
  actualValue === null ? "" : formatNumber(
1751
2332
  actualValue,
1752
2333
  decimals,
@@ -1769,7 +2350,7 @@ var NumberInput = (0, import_react13.forwardRef)(
1769
2350
  );
1770
2351
  const resolvedPrefix = prefix ?? Prefix;
1771
2352
  const resolvedSuffix = suffix ?? Suffix;
1772
- (0, import_react13.useEffect)(() => {
2353
+ (0, import_react18.useEffect)(() => {
1773
2354
  if (!focused)
1774
2355
  setText(
1775
2356
  actualValue === null ? "" : formatNumber(
@@ -1823,7 +2404,7 @@ var NumberInput = (0, import_react13.forwardRef)(
1823
2404
  const stepIsUsable = Number.isFinite(step) && step > 0;
1824
2405
  const disableIncrement = Boolean(props.disabled || props.readOnly) || !stepIsUsable || max !== void 0 && actualValue !== null && actualValue >= max;
1825
2406
  const disableDecrement = Boolean(props.disabled || props.readOnly) || !stepIsUsable || min !== void 0 && actualValue !== null && actualValue <= min;
1826
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
2407
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1827
2408
  "div",
1828
2409
  {
1829
2410
  className: [
@@ -1832,7 +2413,7 @@ var NumberInput = (0, import_react13.forwardRef)(
1832
2413
  className
1833
2414
  ].filter(Boolean).join(" "),
1834
2415
  children: [
1835
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2416
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1836
2417
  FieldLabel,
1837
2418
  {
1838
2419
  id: labelId,
@@ -1842,10 +2423,10 @@ var NumberInput = (0, import_react13.forwardRef)(
1842
2423
  isRequired
1843
2424
  }
1844
2425
  ),
1845
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "fe-number-input__control", children: [
1846
- resolvedPrefix && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "fe-number-input__prefix", children: resolvedPrefix }),
1847
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "fe-number-input__input-wrap", children: [
1848
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2426
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { className: "fe-number-input__control", children: [
2427
+ resolvedPrefix && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "fe-number-input__prefix", children: resolvedPrefix }),
2428
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { className: "fe-number-input__input-wrap", children: [
2429
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1849
2430
  "input",
1850
2431
  {
1851
2432
  ref: (node) => {
@@ -1881,41 +2462,41 @@ var NumberInput = (0, import_react13.forwardRef)(
1881
2462
  "aria-describedby": describedBy
1882
2463
  }
1883
2464
  ),
1884
- isRequired && placeholder && !text && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
2465
+ isRequired && placeholder && !text && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1885
2466
  "span",
1886
2467
  {
1887
2468
  className: "fe-number-input__placeholder",
1888
2469
  "aria-hidden": "true",
1889
2470
  children: [
1890
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: placeholder }),
1891
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "fe-field__required", children: "*" })
2471
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { children: placeholder }),
2472
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "fe-field__required", children: "*" })
1892
2473
  ]
1893
2474
  }
1894
2475
  )
1895
2476
  ] }),
1896
- resolvedSuffix && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "fe-number-input__suffix", children: resolvedSuffix }),
2477
+ resolvedSuffix && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "fe-number-input__suffix", children: resolvedSuffix }),
1897
2478
  endAdornment,
1898
- showStepper && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "fe-number-input__stepper", children: [
1899
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2479
+ showStepper && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { className: "fe-number-input__stepper", children: [
2480
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1900
2481
  Button,
1901
2482
  {
1902
2483
  hierarchy: "tertiary-gray",
1903
2484
  size: "24",
1904
2485
  iconOnly: true,
1905
- icon: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ChevronUpIcon, { size: 12 }),
2486
+ icon: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ChevronUpIcon, { size: 12 }),
1906
2487
  "aria-label": incrementLabel,
1907
2488
  disabled: disableIncrement,
1908
2489
  onMouseDown: (event) => event.preventDefault(),
1909
2490
  onClick: () => adjustValue(1)
1910
2491
  }
1911
2492
  ),
1912
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2493
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1913
2494
  Button,
1914
2495
  {
1915
2496
  hierarchy: "tertiary-gray",
1916
2497
  size: "24",
1917
2498
  iconOnly: true,
1918
- icon: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ChevronDownIcon, { size: 12 }),
2499
+ icon: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ChevronDownIcon, { size: 12 }),
1919
2500
  "aria-label": decrementLabel,
1920
2501
  disabled: disableDecrement,
1921
2502
  onMouseDown: (event) => event.preventDefault(),
@@ -1924,7 +2505,7 @@ var NumberInput = (0, import_react13.forwardRef)(
1924
2505
  )
1925
2506
  ] })
1926
2507
  ] }),
1927
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2508
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1928
2509
  FieldMessage,
1929
2510
  {
1930
2511
  id: messageId2,
@@ -1941,8 +2522,8 @@ var NumberInput = (0, import_react13.forwardRef)(
1941
2522
  NumberInput.displayName = "NumberInput";
1942
2523
 
1943
2524
  // packages/form-controls/src/controls/CurrencyInput/currency-input.tsx
1944
- var import_react14 = require("react");
1945
- var import_jsx_runtime18 = require("react/jsx-runtime");
2525
+ var import_react19 = require("react");
2526
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1946
2527
  function CurrencyInput({
1947
2528
  suffix = "VND",
1948
2529
  currencies,
@@ -1953,13 +2534,13 @@ function CurrencyInput({
1953
2534
  disabled,
1954
2535
  ...props
1955
2536
  }) {
1956
- const [internalCurrency, setInternalCurrency] = (0, import_react14.useState)(
2537
+ const [internalCurrency, setInternalCurrency] = (0, import_react19.useState)(
1957
2538
  defaultCurrency ?? currencies?.[0]?.code ?? ""
1958
2539
  );
1959
2540
  const selectedCurrency = currency ?? internalCurrency;
1960
2541
  const current = currencies?.find((item) => item.code === selectedCurrency);
1961
2542
  const currencySuffix = current?.suffix ?? current?.code ?? suffix;
1962
- const endAdornment = currencies?.length ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2543
+ const endAdornment = currencies?.length ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1963
2544
  Selection,
1964
2545
  {
1965
2546
  className: "fe-currency-input__currency",
@@ -1978,8 +2559,8 @@ function CurrencyInput({
1978
2559
  onCurrencyChange?.(next);
1979
2560
  }
1980
2561
  }
1981
- ) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "fe-currency-input__suffix", children: currencySuffix });
1982
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2562
+ ) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "fe-currency-input__suffix", children: currencySuffix });
2563
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1983
2564
  NumberInput,
1984
2565
  {
1985
2566
  ...props,
@@ -1991,8 +2572,8 @@ function CurrencyInput({
1991
2572
  }
1992
2573
 
1993
2574
  // packages/form-controls/src/controls/DateTimePicker/date-time-picker.tsx
1994
- var import_react15 = require("react");
1995
- var import_jsx_runtime19 = require("react/jsx-runtime");
2575
+ var import_react20 = require("react");
2576
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1996
2577
  var pad = (value) => String(value).padStart(2, "0");
1997
2578
  function formatDate(date, format) {
1998
2579
  return format.replace(/yyyy/g, String(date.getFullYear())).replace(/MM/g, pad(date.getMonth() + 1)).replace(/dd/g, pad(date.getDate())).replace(/HH/g, pad(date.getHours())).replace(/mm/g, pad(date.getMinutes()));
@@ -2028,7 +2609,7 @@ function DateTimePicker(props) {
2028
2609
  "aria-describedby": ariaDescribedBy,
2029
2610
  "aria-labelledby": ariaLabelledBy
2030
2611
  } = props;
2031
- const generatedId = (0, import_react15.useId)();
2612
+ const generatedId = (0, import_react20.useId)();
2032
2613
  const triggerId = id ?? generatedId + "-trigger";
2033
2614
  const labelId = generatedId + "-label";
2034
2615
  const messageId2 = generatedId + "-message";
@@ -2046,28 +2627,28 @@ function DateTimePicker(props) {
2046
2627
  );
2047
2628
  const isRange = mode === "range";
2048
2629
  const controlled = props.value !== void 0;
2049
- const [singleInternal, setSingleInternal] = (0, import_react15.useState)(
2630
+ const [singleInternal, setSingleInternal] = (0, import_react20.useState)(
2050
2631
  (!isRange ? props.defaultValue : null) ?? null
2051
2632
  );
2052
- const [rangeInternal, setRangeInternal] = (0, import_react15.useState)(
2633
+ const [rangeInternal, setRangeInternal] = (0, import_react20.useState)(
2053
2634
  (isRange ? props.defaultValue : void 0) ?? [null, null]
2054
2635
  );
2055
2636
  const singleValue = !isRange ? props.value ?? singleInternal : null;
2056
2637
  const rangeValue = isRange ? props.value ?? rangeInternal : [null, null];
2057
- const [open, setOpen] = (0, import_react15.useState)(false);
2058
- const [month, setMonth] = (0, import_react15.useState)(
2638
+ const [open, setOpen] = (0, import_react20.useState)(false);
2639
+ const [month, setMonth] = (0, import_react20.useState)(
2059
2640
  () => new Date((isRange ? rangeValue[0] : singleValue) ?? /* @__PURE__ */ new Date())
2060
2641
  );
2061
- const [editingEnd, setEditingEnd] = (0, import_react15.useState)(false);
2062
- const rootRef = (0, import_react15.useRef)(null);
2063
- (0, import_react15.useEffect)(() => {
2642
+ const [editingEnd, setEditingEnd] = (0, import_react20.useState)(false);
2643
+ const rootRef = (0, import_react20.useRef)(null);
2644
+ (0, import_react20.useEffect)(() => {
2064
2645
  const onPointerDown = (event) => {
2065
2646
  if (!rootRef.current?.contains(event.target)) setOpen(false);
2066
2647
  };
2067
2648
  document.addEventListener("mousedown", onPointerDown);
2068
2649
  return () => document.removeEventListener("mousedown", onPointerDown);
2069
2650
  }, []);
2070
- (0, import_react15.useEffect)(() => {
2651
+ (0, import_react20.useEffect)(() => {
2071
2652
  if (disabled) setOpen(false);
2072
2653
  }, [disabled]);
2073
2654
  const setSingle = (next) => {
@@ -2123,7 +2704,7 @@ function DateTimePicker(props) {
2123
2704
  setRange(editingEnd ? [rangeValue[0], next] : [next, rangeValue[1]]);
2124
2705
  else setSingle(next);
2125
2706
  };
2126
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2707
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2127
2708
  "div",
2128
2709
  {
2129
2710
  ref: rootRef,
@@ -2133,7 +2714,7 @@ function DateTimePicker(props) {
2133
2714
  className
2134
2715
  ].filter(Boolean).join(" "),
2135
2716
  children: [
2136
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2717
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2137
2718
  FieldLabel,
2138
2719
  {
2139
2720
  id: labelId,
@@ -2143,7 +2724,7 @@ function DateTimePicker(props) {
2143
2724
  isRequired
2144
2725
  }
2145
2726
  ),
2146
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2727
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2147
2728
  "button",
2148
2729
  {
2149
2730
  id: triggerId,
@@ -2157,29 +2738,29 @@ function DateTimePicker(props) {
2157
2738
  "aria-expanded": open,
2158
2739
  onClick: () => setOpen((current) => !current),
2159
2740
  children: [
2160
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { "aria-hidden": "true", children: "\u25F7" }),
2161
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2741
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { "aria-hidden": "true", children: "\u25F7" }),
2742
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2162
2743
  "span",
2163
2744
  {
2164
2745
  className: !shownValue && placeholder ? "fe-datetime-picker__value is-placeholder" : "fe-datetime-picker__value",
2165
2746
  children: [
2166
2747
  shownValue || placeholder || (isRange ? "Select date range" : "Select date and time"),
2167
- isRequired && placeholder && !shownValue && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fe-field__required", "aria-hidden": "true", children: "*" })
2748
+ isRequired && placeholder && !shownValue && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "fe-field__required", "aria-hidden": "true", children: "*" })
2168
2749
  ]
2169
2750
  }
2170
2751
  )
2171
2752
  ]
2172
2753
  }
2173
2754
  ),
2174
- open && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2755
+ open && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2175
2756
  "div",
2176
2757
  {
2177
2758
  className: "fe-datetime-picker__popper",
2178
2759
  role: "dialog",
2179
2760
  "aria-label": "Date and time picker",
2180
2761
  children: [
2181
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "fe-datetime-picker__month", children: [
2182
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2762
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "fe-datetime-picker__month", children: [
2763
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2183
2764
  "button",
2184
2765
  {
2185
2766
  type: "button",
@@ -2190,11 +2771,11 @@ function DateTimePicker(props) {
2190
2771
  children: "\u2039"
2191
2772
  }
2192
2773
  ),
2193
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("strong", { children: month.toLocaleDateString(locale, {
2774
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("strong", { children: month.toLocaleDateString(locale, {
2194
2775
  month: "long",
2195
2776
  year: "numeric"
2196
2777
  }) }),
2197
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2778
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2198
2779
  "button",
2199
2780
  {
2200
2781
  type: "button",
@@ -2206,12 +2787,12 @@ function DateTimePicker(props) {
2206
2787
  }
2207
2788
  )
2208
2789
  ] }),
2209
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "fe-datetime-picker__weekdays", children: ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"].map((day) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: day }, day)) }),
2210
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "fe-datetime-picker__days", children: days.map((day) => {
2790
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "fe-datetime-picker__weekdays", children: ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"].map((day) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { children: day }, day)) }),
2791
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "fe-datetime-picker__days", children: days.map((day) => {
2211
2792
  const inMonth = day.getMonth() === month.getMonth();
2212
2793
  const selected = isRange ? sameDay(day, rangeValue[0]) || sameDay(day, rangeValue[1]) : sameDay(day, singleValue);
2213
2794
  const inRange = isRange && rangeValue[0] && rangeValue[1] && day > startOfDay(rangeValue[0]) && day < startOfDay(rangeValue[1]);
2214
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2795
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2215
2796
  "button",
2216
2797
  {
2217
2798
  type: "button",
@@ -2226,8 +2807,8 @@ function DateTimePicker(props) {
2226
2807
  day.toISOString()
2227
2808
  );
2228
2809
  }) }),
2229
- isRange && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "fe-datetime-picker__range-tabs", children: [
2230
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2810
+ isRange && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "fe-datetime-picker__range-tabs", children: [
2811
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2231
2812
  "button",
2232
2813
  {
2233
2814
  type: "button",
@@ -2236,7 +2817,7 @@ function DateTimePicker(props) {
2236
2817
  children: "Start"
2237
2818
  }
2238
2819
  ),
2239
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2820
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2240
2821
  "button",
2241
2822
  {
2242
2823
  type: "button",
@@ -2246,9 +2827,9 @@ function DateTimePicker(props) {
2246
2827
  }
2247
2828
  )
2248
2829
  ] }),
2249
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("label", { className: "fe-datetime-picker__time", children: [
2830
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("label", { className: "fe-datetime-picker__time", children: [
2250
2831
  "Time",
2251
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2832
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2252
2833
  "input",
2253
2834
  {
2254
2835
  type: "time",
@@ -2261,7 +2842,7 @@ function DateTimePicker(props) {
2261
2842
  ]
2262
2843
  }
2263
2844
  ),
2264
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2845
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2265
2846
  FieldMessage,
2266
2847
  {
2267
2848
  id: messageId2,
@@ -2276,9 +2857,9 @@ function DateTimePicker(props) {
2276
2857
  }
2277
2858
 
2278
2859
  // packages/form-controls/src/controls/Checkbox/checkbox.tsx
2279
- var import_react16 = require("react");
2280
- var import_jsx_runtime20 = require("react/jsx-runtime");
2281
- var Checkbox = (0, import_react16.forwardRef)(
2860
+ var import_react21 = require("react");
2861
+ var import_jsx_runtime23 = require("react/jsx-runtime");
2862
+ var Checkbox = (0, import_react21.forwardRef)(
2282
2863
  function Checkbox2({
2283
2864
  label,
2284
2865
  labelPosition = "right",
@@ -2294,10 +2875,10 @@ var Checkbox = (0, import_react16.forwardRef)(
2294
2875
  disabled && "fe-checkbox--disabled",
2295
2876
  className
2296
2877
  ].filter(Boolean).join(" ");
2297
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("label", { className: classes, style, children: [
2298
- label && labelPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "fe-checkbox__label", children: label }),
2299
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { className: "fe-checkbox__content", children: [
2300
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2878
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("label", { className: classes, style, children: [
2879
+ label && labelPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "fe-checkbox__label", children: label }),
2880
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: "fe-checkbox__content", children: [
2881
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2301
2882
  "input",
2302
2883
  {
2303
2884
  ref,
@@ -2308,8 +2889,8 @@ var Checkbox = (0, import_react16.forwardRef)(
2308
2889
  ...props
2309
2890
  }
2310
2891
  ),
2311
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "fe-checkbox__control", "aria-hidden": "true" }),
2312
- label && labelPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "fe-checkbox__label", children: label })
2892
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "fe-checkbox__control", "aria-hidden": "true" }),
2893
+ label && labelPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "fe-checkbox__label", children: label })
2313
2894
  ] })
2314
2895
  ] });
2315
2896
  }
@@ -2317,9 +2898,9 @@ var Checkbox = (0, import_react16.forwardRef)(
2317
2898
  Checkbox.displayName = "Checkbox";
2318
2899
 
2319
2900
  // packages/form-controls/src/controls/RadioButton/radio-button.tsx
2320
- var import_react17 = require("react");
2321
- var import_jsx_runtime21 = require("react/jsx-runtime");
2322
- var RadioButton = (0, import_react17.forwardRef)(
2901
+ var import_react22 = require("react");
2902
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2903
+ var RadioButton = (0, import_react22.forwardRef)(
2323
2904
  function RadioButton2({
2324
2905
  label,
2325
2906
  labelPosition = "right",
@@ -2335,10 +2916,10 @@ var RadioButton = (0, import_react17.forwardRef)(
2335
2916
  disabled && "fe-radio-button--disabled",
2336
2917
  className
2337
2918
  ].filter(Boolean).join(" ");
2338
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("label", { className: classes, style, children: [
2339
- label && labelPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "fe-radio-button__label", children: label }),
2340
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("span", { className: "fe-radio-button__content", children: [
2341
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2919
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("label", { className: classes, style, children: [
2920
+ label && labelPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "fe-radio-button__label", children: label }),
2921
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("span", { className: "fe-radio-button__content", children: [
2922
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2342
2923
  "input",
2343
2924
  {
2344
2925
  ref,
@@ -2349,8 +2930,8 @@ var RadioButton = (0, import_react17.forwardRef)(
2349
2930
  ...props
2350
2931
  }
2351
2932
  ),
2352
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "fe-radio-button__control", "aria-hidden": "true" }),
2353
- label && labelPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "fe-radio-button__label", children: label })
2933
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "fe-radio-button__control", "aria-hidden": "true" }),
2934
+ label && labelPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "fe-radio-button__label", children: label })
2354
2935
  ] })
2355
2936
  ] });
2356
2937
  }
@@ -2358,9 +2939,9 @@ var RadioButton = (0, import_react17.forwardRef)(
2358
2939
  RadioButton.displayName = "RadioButton";
2359
2940
 
2360
2941
  // packages/form-controls/src/controls/RadioGroup/radio-group.tsx
2361
- var import_react18 = require("react");
2362
- var import_jsx_runtime22 = require("react/jsx-runtime");
2363
- var RadioGroup = (0, import_react18.forwardRef)(
2942
+ var import_react23 = require("react");
2943
+ var import_jsx_runtime25 = require("react/jsx-runtime");
2944
+ var RadioGroup = (0, import_react23.forwardRef)(
2364
2945
  function RadioGroup2({
2365
2946
  label,
2366
2947
  labelPosition = "top",
@@ -2378,7 +2959,7 @@ var RadioGroup = (0, import_react18.forwardRef)(
2378
2959
  "aria-labelledby": ariaLabelledBy,
2379
2960
  ...props
2380
2961
  }, ref) {
2381
- const generatedId = (0, import_react18.useId)();
2962
+ const generatedId = (0, import_react23.useId)();
2382
2963
  const groupName = name ?? `fe-radio-group-${generatedId}`;
2383
2964
  const labelId = `${id ?? generatedId}-label`;
2384
2965
  const isControlled = value !== void 0;
@@ -2392,12 +2973,12 @@ var RadioGroup = (0, import_react18.forwardRef)(
2392
2973
  const handleChange = (option, event) => {
2393
2974
  if (event.target.checked) onChange?.(option.value, option, event);
2394
2975
  };
2395
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { ref, className: classes, ...props, children: [
2396
- label && labelPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("span", { id: labelId, className: "fe-radio-group__label", children: [
2976
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { ref, className: classes, ...props, children: [
2977
+ label && labelPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("span", { id: labelId, className: "fe-radio-group__label", children: [
2397
2978
  label,
2398
- isRequired && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "fe-radio-group__required", "aria-hidden": "true", children: "*" })
2979
+ isRequired && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "fe-radio-group__required", "aria-hidden": "true", children: "*" })
2399
2980
  ] }),
2400
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2981
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2401
2982
  "div",
2402
2983
  {
2403
2984
  id,
@@ -2409,7 +2990,7 @@ var RadioGroup = (0, import_react18.forwardRef)(
2409
2990
  children: options.map((option) => {
2410
2991
  const optionDisabled = disabled || option.disabled;
2411
2992
  const optionValue = String(option.value);
2412
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2993
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2413
2994
  RadioButton,
2414
2995
  {
2415
2996
  name: groupName,
@@ -2426,9 +3007,9 @@ var RadioGroup = (0, import_react18.forwardRef)(
2426
3007
  })
2427
3008
  }
2428
3009
  ),
2429
- label && labelPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("span", { id: labelId, className: "fe-radio-group__label", children: [
3010
+ label && labelPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("span", { id: labelId, className: "fe-radio-group__label", children: [
2430
3011
  label,
2431
- isRequired && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "fe-radio-group__required", "aria-hidden": "true", children: "*" })
3012
+ isRequired && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "fe-radio-group__required", "aria-hidden": "true", children: "*" })
2432
3013
  ] })
2433
3014
  ] });
2434
3015
  }
@@ -2436,29 +3017,29 @@ var RadioGroup = (0, import_react18.forwardRef)(
2436
3017
  RadioGroup.displayName = "RadioGroup";
2437
3018
 
2438
3019
  // packages/expandable-section/src/index.tsx
2439
- var import_react19 = require("react");
2440
- var import_jsx_runtime23 = require("react/jsx-runtime");
3020
+ var import_react24 = require("react");
3021
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2441
3022
  function ExpandableSection({ title, children, expanded, defaultExpanded = false, onExpandedChange, disabled, className, ...props }) {
2442
- const [internalExpanded, setInternalExpanded] = (0, import_react19.useState)(defaultExpanded);
3023
+ const [internalExpanded, setInternalExpanded] = (0, import_react24.useState)(defaultExpanded);
2443
3024
  const isExpanded = expanded ?? internalExpanded;
2444
- const id = (0, import_react19.useId)();
3025
+ const id = (0, import_react24.useId)();
2445
3026
  const toggle = () => {
2446
3027
  if (disabled) return;
2447
3028
  const next = !isExpanded;
2448
3029
  if (expanded === void 0) setInternalExpanded(next);
2449
3030
  onExpandedChange?.(next);
2450
3031
  };
2451
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("section", { className: ["fe-expandable-section", isExpanded && "fe-expandable-section--expanded", disabled && "fe-expandable-section--disabled", className].filter(Boolean).join(" "), ...props, children: [
2452
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("button", { className: "fe-expandable-section__trigger", type: "button", "aria-expanded": isExpanded, "aria-controls": id, disabled, onClick: toggle, children: [
2453
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: title }),
2454
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "fe-expandable-section__chevron", "aria-hidden": "true" })
3032
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("section", { className: ["fe-expandable-section", isExpanded && "fe-expandable-section--expanded", disabled && "fe-expandable-section--disabled", className].filter(Boolean).join(" "), ...props, children: [
3033
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("button", { className: "fe-expandable-section__trigger", type: "button", "aria-expanded": isExpanded, "aria-controls": id, disabled, onClick: toggle, children: [
3034
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: title }),
3035
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "fe-expandable-section__chevron", "aria-hidden": "true" })
2455
3036
  ] }),
2456
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { id, className: "fe-expandable-section__content", "aria-hidden": !isExpanded, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "fe-expandable-section__content-inner", children }) })
3037
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { id, className: "fe-expandable-section__content", "aria-hidden": !isExpanded, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fe-expandable-section__content-inner", children }) })
2457
3038
  ] });
2458
3039
  }
2459
3040
 
2460
3041
  // packages/loading/src/index.tsx
2461
- var import_jsx_runtime24 = require("react/jsx-runtime");
3042
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2462
3043
  var sizes = {
2463
3044
  small: "16px",
2464
3045
  medium: "24px",
@@ -2471,15 +3052,15 @@ function Loading({ size = "medium", color = "#2878f0", label, className, style,
2471
3052
  "--fe-loading-color": color,
2472
3053
  ...style
2473
3054
  };
2474
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("span", { className: ["fe-loading", className].filter(Boolean).join(" "), style: loadingStyle, role: "status", ...props, children: [
2475
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "fe-loading__spinner", "aria-hidden": "true" }),
2476
- label && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "fe-loading__label", children: label }),
2477
- !label && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "fe-loading__sr-only", children: "Loading" })
3055
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("span", { className: ["fe-loading", className].filter(Boolean).join(" "), style: loadingStyle, role: "status", ...props, children: [
3056
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "fe-loading__spinner", "aria-hidden": "true" }),
3057
+ label && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "fe-loading__label", children: label }),
3058
+ !label && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "fe-loading__sr-only", children: "Loading" })
2478
3059
  ] });
2479
3060
  }
2480
3061
 
2481
3062
  // packages/skeleton/src/index.tsx
2482
- var import_jsx_runtime25 = require("react/jsx-runtime");
3063
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2483
3064
  var pixels = (value) => typeof value === "number" ? `${value}px` : value;
2484
3065
  function SkeletonBase({ variant = "box", shape, width, height, count = 1, animated = true, className, style, ...props }) {
2485
3066
  const resolvedVariant = shape ?? variant;
@@ -2490,7 +3071,7 @@ function SkeletonBase({ variant = "box", shape, width, height, count = 1, animat
2490
3071
  "--fe-skeleton-height": resolvedHeight,
2491
3072
  ...style
2492
3073
  };
2493
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jsx_runtime25.Fragment, { children: Array.from({ length: Math.max(1, count) }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3074
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jsx_runtime28.Fragment, { children: Array.from({ length: Math.max(1, count) }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2494
3075
  "div",
2495
3076
  {
2496
3077
  className: ["fe-skeleton", `fe-skeleton--${resolvedVariant}`, animated && "fe-skeleton--animated", className].filter(Boolean).join(" "),
@@ -2502,16 +3083,16 @@ function SkeletonBase({ variant = "box", shape, width, height, count = 1, animat
2502
3083
  )) });
2503
3084
  }
2504
3085
  function SkeletonCircle({ size = 40, ...props }) {
2505
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SkeletonBase, { variant: "circle", width: size, height: size, ...props });
3086
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SkeletonBase, { variant: "circle", width: size, height: size, ...props });
2506
3087
  }
2507
3088
  function SkeletonSquare({ size = 80, ...props }) {
2508
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SkeletonBase, { variant: "box", width: size, height: size, ...props });
3089
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SkeletonBase, { variant: "box", width: size, height: size, ...props });
2509
3090
  }
2510
3091
  function SkeletonBox({ width = "100%", height = 80, ...props }) {
2511
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SkeletonBase, { variant: "box", width, height, ...props });
3092
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SkeletonBase, { variant: "box", width, height, ...props });
2512
3093
  }
2513
3094
  function SkeletonLine({ width = "100%", height = 12, ...props }) {
2514
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SkeletonBase, { variant: "line", width, height, ...props });
3095
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SkeletonBase, { variant: "line", width, height, ...props });
2515
3096
  }
2516
3097
  var Skeleton = Object.assign(SkeletonBase, {
2517
3098
  Circle: SkeletonCircle,
@@ -2521,9 +3102,9 @@ var Skeleton = Object.assign(SkeletonBase, {
2521
3102
  });
2522
3103
 
2523
3104
  // packages/modal/src/index.tsx
2524
- var import_react20 = require("react");
3105
+ var import_react25 = require("react");
2525
3106
  var import_react_dom3 = require("react-dom");
2526
- var import_jsx_runtime26 = require("react/jsx-runtime");
3107
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2527
3108
  function Modal({
2528
3109
  open,
2529
3110
  onClose,
@@ -2534,60 +3115,87 @@ function Modal({
2534
3115
  actions = [],
2535
3116
  size = "medium",
2536
3117
  closeOnBackdropClick = true,
3118
+ closeOnEscape = true,
2537
3119
  closeButton = true,
2538
3120
  closeLabel = "Close modal",
3121
+ initialFocusRef,
3122
+ restoreFocus = true,
2539
3123
  className,
3124
+ "aria-label": ariaLabel,
3125
+ "aria-describedby": ariaDescribedBy,
2540
3126
  ...props
2541
3127
  }) {
2542
- const titleId = (0, import_react20.useId)();
2543
- const panelRef = (0, import_react20.useRef)(null);
2544
- (0, import_react20.useEffect)(() => {
2545
- if (!open) return;
2546
- const onKeyDown = (event) => {
2547
- if (event.key === "Escape") onClose();
2548
- };
2549
- document.addEventListener("keydown", onKeyDown);
2550
- panelRef.current?.focus();
2551
- return () => document.removeEventListener("keydown", onKeyDown);
2552
- }, [onClose, open]);
3128
+ const titleId = (0, import_react25.useId)();
3129
+ const descriptionId = (0, import_react25.useId)();
3130
+ const panelRef = (0, import_react25.useRef)(null);
3131
+ useModalOverlay({
3132
+ open,
3133
+ onClose,
3134
+ panelRef,
3135
+ priority: 1100,
3136
+ closeOnEscape,
3137
+ initialFocusRef,
3138
+ restoreFocus
3139
+ });
2553
3140
  if (!open || typeof document === "undefined") return null;
2554
3141
  const hasFooter = footer || actions.length > 0;
3142
+ const describedBy = [description ? descriptionId : void 0, ariaDescribedBy].filter(Boolean).join(" ") || void 0;
2555
3143
  return (0, import_react_dom3.createPortal)(
2556
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fe-modal-backdrop", role: "presentation", onMouseDown: (event) => {
2557
- if (event.target === event.currentTarget && closeOnBackdropClick) onClose();
2558
- }, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
3144
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2559
3145
  "div",
2560
3146
  {
2561
- ref: panelRef,
2562
- className: ["fe-modal", `fe-modal--${size}`, className].filter(Boolean).join(" "),
2563
- role: "dialog",
2564
- "aria-modal": "true",
2565
- "aria-labelledby": title ? titleId : void 0,
2566
- "aria-label": title ? void 0 : "Modal",
2567
- tabIndex: -1,
2568
- ...props,
2569
- children: [
2570
- (title || description || closeButton) && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("header", { className: "fe-modal__header", children: [
2571
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "fe-modal__heading", children: [
2572
- title && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("h2", { id: titleId, children: title }),
2573
- description && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { children: description })
2574
- ] }),
2575
- closeButton && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Button, { hierarchy: "tertiary-gray", size: "32", iconOnly: true, icon: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(CloseIcon, {}), "aria-label": closeLabel, onClick: onClose })
2576
- ] }),
2577
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fe-modal__body", children }),
2578
- hasFooter && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("footer", { className: "fe-modal__footer", children: [
2579
- footer && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fe-modal__footer-content", children: footer }),
2580
- actions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fe-modal__actions", children: actions.map(({ label, ...action }, index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Button, { ...action, children: label }, index)) })
2581
- ] })
2582
- ]
3147
+ className: "fe-modal-backdrop",
3148
+ role: "presentation",
3149
+ onMouseDown: (event) => {
3150
+ if (event.target === event.currentTarget && closeOnBackdropClick)
3151
+ onClose();
3152
+ },
3153
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
3154
+ "div",
3155
+ {
3156
+ ref: panelRef,
3157
+ className: ["fe-modal", `fe-modal--${size}`, className].filter(Boolean).join(" "),
3158
+ role: "dialog",
3159
+ "aria-modal": "true",
3160
+ "aria-labelledby": title ? titleId : void 0,
3161
+ "aria-describedby": describedBy,
3162
+ "aria-label": ariaLabel ?? (title ? void 0 : "Modal"),
3163
+ tabIndex: -1,
3164
+ ...props,
3165
+ children: [
3166
+ (title || description || closeButton) && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("header", { className: "fe-modal__header", children: [
3167
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "fe-modal__heading", children: [
3168
+ title && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("h2", { id: titleId, children: title }),
3169
+ description && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { id: descriptionId, children: description })
3170
+ ] }),
3171
+ closeButton && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3172
+ Button,
3173
+ {
3174
+ hierarchy: "tertiary-gray",
3175
+ size: "32",
3176
+ iconOnly: true,
3177
+ icon: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CloseIcon, {}),
3178
+ "aria-label": closeLabel,
3179
+ onClick: onClose
3180
+ }
3181
+ )
3182
+ ] }),
3183
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "fe-modal__body", children }),
3184
+ hasFooter && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("footer", { className: "fe-modal__footer", children: [
3185
+ footer && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "fe-modal__footer-content", children: footer }),
3186
+ actions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "fe-modal__actions", children: actions.map(({ label, ...action }, index) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Button, { ...action, children: label }, index)) })
3187
+ ] })
3188
+ ]
3189
+ }
3190
+ )
2583
3191
  }
2584
- ) }),
3192
+ ),
2585
3193
  document.body
2586
3194
  );
2587
3195
  }
2588
3196
 
2589
3197
  // packages/progress/src/index.tsx
2590
- var import_jsx_runtime27 = require("react/jsx-runtime");
3198
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2591
3199
  function ProgressBar({ value, max = 100, label, showValue = true, size = "medium", color = "#2878f0", className, style, "aria-label": ariaLabel, ...props }) {
2592
3200
  const indeterminate = value === null || value === void 0;
2593
3201
  const percentage = indeterminate ? 0 : Math.min(100, Math.max(0, Number(value) / Math.max(1, max) * 100));
@@ -2597,17 +3205,17 @@ function ProgressBar({ value, max = 100, label, showValue = true, size = "medium
2597
3205
  ...style
2598
3206
  };
2599
3207
  const visibleValue = `${Math.round(percentage)}%`;
2600
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: ["fe-progress", `fe-progress--${size}`, indeterminate && "fe-progress--indeterminate", className].filter(Boolean).join(" "), style: progressStyle, ...props, children: [
2601
- (label || !indeterminate && showValue) && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "fe-progress__meta", children: [
2602
- label && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "fe-progress__label", children: label }),
2603
- !indeterminate && showValue && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("output", { className: "fe-progress__value", children: visibleValue })
3208
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: ["fe-progress", `fe-progress--${size}`, indeterminate && "fe-progress--indeterminate", className].filter(Boolean).join(" "), style: progressStyle, ...props, children: [
3209
+ (label || !indeterminate && showValue) && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "fe-progress__meta", children: [
3210
+ label && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fe-progress__label", children: label }),
3211
+ !indeterminate && showValue && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("output", { className: "fe-progress__value", children: visibleValue })
2604
3212
  ] }),
2605
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "fe-progress__track", role: "progressbar", "aria-label": ariaLabel ?? (typeof label === "string" ? label : "Progress"), "aria-valuemin": indeterminate ? void 0 : 0, "aria-valuemax": indeterminate ? void 0 : max, "aria-valuenow": indeterminate ? void 0 : Number(value), "aria-valuetext": indeterminate ? "Loading" : visibleValue, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "fe-progress__indicator" }) })
3213
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "fe-progress__track", role: "progressbar", "aria-label": ariaLabel ?? (typeof label === "string" ? label : "Progress"), "aria-valuemin": indeterminate ? void 0 : 0, "aria-valuemax": indeterminate ? void 0 : max, "aria-valuenow": indeterminate ? void 0 : Number(value), "aria-valuetext": indeterminate ? "Loading" : visibleValue, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fe-progress__indicator" }) })
2606
3214
  ] });
2607
3215
  }
2608
3216
 
2609
3217
  // packages/chip/src/index.tsx
2610
- var import_jsx_runtime28 = require("react/jsx-runtime");
3218
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2611
3219
  var statuses = ["default", "info", "success", "warning", "error", "neutral", "pending", "processing"];
2612
3220
  function Chip({ children, status = "default", color, variant = "subtle", dot = false, onRemove, removeLabel = "Remove", className, style, ...props }) {
2613
3221
  const usesCustomColor = Boolean(color);
@@ -2616,16 +3224,16 @@ function Chip({ children, status = "default", color, variant = "subtle", dot = f
2616
3224
  ...style
2617
3225
  };
2618
3226
  const resolvedStatus = statuses.includes(status) ? status : "default";
2619
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: ["fe-chip", `fe-chip--${variant}`, `fe-chip--${usesCustomColor ? "custom" : resolvedStatus}`, className].filter(Boolean).join(" "), style: chipStyle, ...props, children: [
2620
- dot && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "fe-chip__dot", "aria-hidden": "true" }),
2621
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "fe-chip__content", children }),
2622
- onRemove && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Button, { hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(CloseIcon, { size: 14 }), "aria-label": removeLabel, onClick: onRemove, className: "fe-chip__remove" })
3227
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("span", { className: ["fe-chip", `fe-chip--${variant}`, `fe-chip--${usesCustomColor ? "custom" : resolvedStatus}`, className].filter(Boolean).join(" "), style: chipStyle, ...props, children: [
3228
+ dot && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "fe-chip__dot", "aria-hidden": "true" }),
3229
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "fe-chip__content", children }),
3230
+ onRemove && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button, { hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(CloseIcon, { size: 14 }), "aria-label": removeLabel, onClick: onRemove, className: "fe-chip__remove" })
2623
3231
  ] });
2624
3232
  }
2625
3233
 
2626
3234
  // packages/message/src/index.tsx
2627
- var import_react21 = require("react");
2628
- var import_jsx_runtime29 = require("react/jsx-runtime");
3235
+ var import_react26 = require("react");
3236
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2629
3237
  var messageId = 0;
2630
3238
  var entries = [];
2631
3239
  var listeners = /* @__PURE__ */ new Set();
@@ -2658,22 +3266,22 @@ var message = {
2658
3266
  };
2659
3267
  var icons = { success: "\u2713", info: "i", warning: "!", error: "\xD7" };
2660
3268
  function Message({ maxCount = 4, closeLabel = "Close notification", className, ...props }) {
2661
- const [visibleEntries, setVisibleEntries] = (0, import_react21.useState)(entries);
2662
- (0, import_react21.useEffect)(() => {
3269
+ const [visibleEntries, setVisibleEntries] = (0, import_react26.useState)(entries);
3270
+ (0, import_react26.useEffect)(() => {
2663
3271
  const listener = (nextEntries) => setVisibleEntries(nextEntries);
2664
3272
  listeners.add(listener);
2665
3273
  return () => {
2666
3274
  listeners.delete(listener);
2667
3275
  };
2668
3276
  }, []);
2669
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: ["fe-message-viewport", className].filter(Boolean).join(" "), "aria-live": "polite", ...props, children: visibleEntries.slice(-Math.max(1, maxCount)).map((entry) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `fe-message fe-message--${entry.severity ?? "info"}`, role: entry.severity === "error" ? "alert" : "status", children: [
2670
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "fe-message__icon", "aria-hidden": "true", children: icons[entry.severity ?? "info"] }),
2671
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "fe-message__body", children: [
2672
- entry.title && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("strong", { className: "fe-message__title", children: entry.title }),
2673
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "fe-message__content", children: entry.content })
3277
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: ["fe-message-viewport", className].filter(Boolean).join(" "), "aria-live": "polite", ...props, children: visibleEntries.slice(-Math.max(1, maxCount)).map((entry) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: `fe-message fe-message--${entry.severity ?? "info"}`, role: entry.severity === "error" ? "alert" : "status", children: [
3278
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "fe-message__icon", "aria-hidden": "true", children: icons[entry.severity ?? "info"] }),
3279
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "fe-message__body", children: [
3280
+ entry.title && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("strong", { className: "fe-message__title", children: entry.title }),
3281
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "fe-message__content", children: entry.content })
2674
3282
  ] }),
2675
- entry.action && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "fe-message__action", children: entry.action }),
2676
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Button, { className: "fe-message__close", hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: "\xD7", "aria-label": closeLabel, onClick: () => dismiss(entry.id) })
3283
+ entry.action && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "fe-message__action", children: entry.action }),
3284
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Button, { className: "fe-message__close", hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: "\xD7", "aria-label": closeLabel, onClick: () => dismiss(entry.id) })
2677
3285
  ] }, entry.id)) });
2678
3286
  }
2679
3287
  ((Message2) => {
@@ -2687,8 +3295,8 @@ function Message({ maxCount = 4, closeLabel = "Close notification", className, .
2687
3295
  })(Message || (Message = {}));
2688
3296
 
2689
3297
  // packages/snackbar/src/index.tsx
2690
- var import_react22 = require("react");
2691
- var import_jsx_runtime30 = require("react/jsx-runtime");
3298
+ var import_react27 = require("react");
3299
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2692
3300
  function Snackbar({
2693
3301
  open,
2694
3302
  message: message2,
@@ -2702,12 +3310,12 @@ function Snackbar({
2702
3310
  }) {
2703
3311
  const vertical = anchorOrigin.vertical ?? "bottom";
2704
3312
  const horizontal = anchorOrigin.horizontal ?? "center";
2705
- (0, import_react22.useEffect)(() => {
3313
+ (0, import_react27.useEffect)(() => {
2706
3314
  if (!open || autoHideDuration === null) return void 0;
2707
3315
  const timer = window.setTimeout(() => onClose?.("timeout"), autoHideDuration);
2708
3316
  return () => window.clearTimeout(timer);
2709
3317
  }, [open, autoHideDuration, onClose]);
2710
- (0, import_react22.useEffect)(() => {
3318
+ (0, import_react27.useEffect)(() => {
2711
3319
  if (!open) return void 0;
2712
3320
  const onKeyDown = (event) => {
2713
3321
  if (event.key === "Escape") onClose?.("escapeKeyDown");
@@ -2716,16 +3324,16 @@ function Snackbar({
2716
3324
  return () => window.removeEventListener("keydown", onKeyDown);
2717
3325
  }, [open, onClose]);
2718
3326
  if (!open) return null;
2719
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: ["fe-snackbar", `fe-snackbar--${vertical}`, `fe-snackbar--${horizontal}`, className].filter(Boolean).join(" "), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "fe-snackbar__content", role: "status", "aria-live": "polite", children: [
2720
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fe-snackbar__message", children: message2 }),
2721
- action && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fe-snackbar__action", children: action }),
2722
- onClose && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { className: "fe-snackbar__close", hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: "\xD7", "aria-label": closeLabel, onClick: () => onClose("closeButton") })
3327
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: ["fe-snackbar", `fe-snackbar--${vertical}`, `fe-snackbar--${horizontal}`, className].filter(Boolean).join(" "), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "fe-snackbar__content", role: "status", "aria-live": "polite", children: [
3328
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "fe-snackbar__message", children: message2 }),
3329
+ action && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "fe-snackbar__action", children: action }),
3330
+ onClose && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Button, { className: "fe-snackbar__close", hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: "\xD7", "aria-label": closeLabel, onClick: () => onClose("closeButton") })
2723
3331
  ] }) });
2724
3332
  }
2725
3333
 
2726
3334
  // packages/avatar/src/index.tsx
2727
- var import_react23 = require("react");
2728
- var import_jsx_runtime31 = require("react/jsx-runtime");
3335
+ var import_react28 = require("react");
3336
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2729
3337
  var FALLBACK_AVATARS = [
2730
3338
  {
2731
3339
  background: "#E0E7FF",
@@ -3058,7 +3666,7 @@ function AvatarFallbackIcon({ avatar }) {
3058
3666
  shirt,
3059
3667
  skin
3060
3668
  } = avatar;
3061
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
3669
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
3062
3670
  "svg",
3063
3671
  {
3064
3672
  className: "fe-avatar__fallback-icon",
@@ -3066,15 +3674,15 @@ function AvatarFallbackIcon({ avatar }) {
3066
3674
  focusable: "false",
3067
3675
  "aria-hidden": "true",
3068
3676
  children: [
3069
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("rect", { width: "24", height: "24", fill: background }),
3070
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3677
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("rect", { width: "24", height: "24", fill: background }),
3678
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3071
3679
  "path",
3072
3680
  {
3073
3681
  d: "M3 24c.52-3.79 3.58-6.25 9-6.25S20.48 20.21 21 24",
3074
3682
  fill: shirt
3075
3683
  }
3076
3684
  ),
3077
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3685
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3078
3686
  "path",
3079
3687
  {
3080
3688
  d: "M8.1 17.65h7.8l1.05 2.05H7.05l1.05-2.05Z",
@@ -3082,38 +3690,38 @@ function AvatarFallbackIcon({ avatar }) {
3082
3690
  opacity: ".72"
3083
3691
  }
3084
3692
  ),
3085
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("circle", { cx: "12", cy: "10.25", r: "5.25", fill: skin }),
3086
- hairStyle === 0 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3693
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { cx: "12", cy: "10.25", r: "5.25", fill: skin }),
3694
+ hairStyle === 0 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3087
3695
  "path",
3088
3696
  {
3089
3697
  d: "M6.75 10.25C6.75 6.34 9.02 4 12.15 4c3.22 0 5.1 2.33 5.1 5.54-1.6-1.41-3.46-2.1-5.59-2.1-1.63 0-3.27.56-4.91 1.68Z",
3090
3698
  fill: hair
3091
3699
  }
3092
3700
  ),
3093
- hairStyle === 1 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3701
+ hairStyle === 1 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3094
3702
  "path",
3095
3703
  {
3096
3704
  d: "M6.6 10.1c.16-3.93 2.57-6.2 5.62-6.2 3.57 0 5.3 2.75 5.08 6.32-1.42-1.23-2.91-1.82-4.48-1.82-2.4 0-3.9.65-6.22 1.7Z",
3097
3705
  fill: hair
3098
3706
  }
3099
3707
  ),
3100
- hairStyle === 2 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3708
+ hairStyle === 2 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3101
3709
  "path",
3102
3710
  {
3103
3711
  d: "M6.8 10.55C6.8 6.28 9.43 4 12.2 4c3.46 0 5.13 2.83 4.93 6.38-1.38-1.58-3.03-2.38-4.92-2.38-1.81 0-3.61.85-5.41 2.55Z",
3104
3712
  fill: hair
3105
3713
  }
3106
3714
  ),
3107
- hairStyle === 3 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3715
+ hairStyle === 3 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3108
3716
  "path",
3109
3717
  {
3110
3718
  d: "M6.66 10.1C6.94 6.12 9.18 4 12.1 4c3.77 0 5.2 2.95 5.18 6.21-1.5-1.07-3.1-1.6-4.8-1.6-2.18 0-3.98.5-5.82 1.49Z",
3111
3719
  fill: hair
3112
3720
  }
3113
3721
  ),
3114
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("circle", { cx: "10.05", cy: "10.65", r: ".48", fill: "#3B2924" }),
3115
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("circle", { cx: "13.95", cy: "10.65", r: ".48", fill: "#3B2924" }),
3116
- expression === 0 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3722
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { cx: "10.05", cy: "10.65", r: ".48", fill: "#3B2924" }),
3723
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { cx: "13.95", cy: "10.65", r: ".48", fill: "#3B2924" }),
3724
+ expression === 0 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3117
3725
  "path",
3118
3726
  {
3119
3727
  d: "M10.25 13.2c1.08.66 2.42.66 3.5 0",
@@ -3123,7 +3731,7 @@ function AvatarFallbackIcon({ avatar }) {
3123
3731
  strokeLinecap: "round"
3124
3732
  }
3125
3733
  ),
3126
- expression === 1 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3734
+ expression === 1 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3127
3735
  "path",
3128
3736
  {
3129
3737
  d: "M10.5 13.2h3",
@@ -3133,7 +3741,7 @@ function AvatarFallbackIcon({ avatar }) {
3133
3741
  strokeLinecap: "round"
3134
3742
  }
3135
3743
  ),
3136
- expression === 2 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3744
+ expression === 2 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3137
3745
  "path",
3138
3746
  {
3139
3747
  d: "M10.6 13.38c.84-.44 1.96-.44 2.8 0",
@@ -3143,11 +3751,11 @@ function AvatarFallbackIcon({ avatar }) {
3143
3751
  strokeLinecap: "round"
3144
3752
  }
3145
3753
  ),
3146
- expression === 3 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("circle", { cx: "12", cy: "13.2", r: ".82", fill: "#B95A5A" }),
3147
- glasses && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("g", { fill: "none", stroke: "#3C4355", strokeWidth: ".65", children: [
3148
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("circle", { cx: "10", cy: "10.55", r: "1.45" }),
3149
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("circle", { cx: "14", cy: "10.55", r: "1.45" }),
3150
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("path", { d: "M11.45 10.55h1.1M8.55 10.55H7.5m9 0h-1.05" })
3754
+ expression === 3 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { cx: "12", cy: "13.2", r: ".82", fill: "#B95A5A" }),
3755
+ glasses && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("g", { fill: "none", stroke: "#3C4355", strokeWidth: ".65", children: [
3756
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { cx: "10", cy: "10.55", r: "1.45" }),
3757
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { cx: "14", cy: "10.55", r: "1.45" }),
3758
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("path", { d: "M11.45 10.55h1.1M8.55 10.55H7.5m9 0h-1.05" })
3151
3759
  ] })
3152
3760
  ]
3153
3761
  }
@@ -3166,10 +3774,10 @@ function Avatar({
3166
3774
  "aria-label": ariaLabel,
3167
3775
  ...props
3168
3776
  }) {
3169
- const [generatedFallbackIndex] = (0, import_react23.useState)(
3777
+ const [generatedFallbackIndex] = (0, import_react28.useState)(
3170
3778
  () => Math.floor(Math.random() * FALLBACK_AVATARS.length)
3171
3779
  );
3172
- const [failedImageSrc, setFailedImageSrc] = (0, import_react23.useState)();
3780
+ const [failedImageSrc, setFailedImageSrc] = (0, import_react28.useState)();
3173
3781
  const imageSrc = src?.trim();
3174
3782
  const trimmedContent = content?.trim() ?? "";
3175
3783
  const showImage = Boolean(imageSrc && failedImageSrc !== imageSrc);
@@ -3181,7 +3789,7 @@ function Avatar({
3181
3789
  ...style
3182
3790
  };
3183
3791
  const fallbackLabel = (alt ?? trimmedContent) || "Avatar";
3184
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
3792
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
3185
3793
  "span",
3186
3794
  {
3187
3795
  className: ["fe-avatar", `fe-avatar--${shape}`, className].filter(Boolean).join(" "),
@@ -3190,7 +3798,7 @@ function Avatar({
3190
3798
  "aria-label": showImage ? ariaLabel : ariaLabel ?? fallbackLabel,
3191
3799
  ...props,
3192
3800
  children: [
3193
- showImage && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3801
+ showImage && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3194
3802
  "img",
3195
3803
  {
3196
3804
  className: "fe-avatar__image",
@@ -3199,8 +3807,8 @@ function Avatar({
3199
3807
  onError: () => setFailedImageSrc(imageSrc)
3200
3808
  }
3201
3809
  ),
3202
- !showImage && initials && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "fe-avatar__initials", "aria-hidden": "true", children: initials }),
3203
- !showImage && !initials && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(AvatarFallbackIcon, { avatar: selectedFallback })
3810
+ !showImage && initials && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "fe-avatar__initials", "aria-hidden": "true", children: initials }),
3811
+ !showImage && !initials && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AvatarFallbackIcon, { avatar: selectedFallback })
3204
3812
  ]
3205
3813
  }
3206
3814
  );
@@ -3213,7 +3821,7 @@ function AvatarGroup({
3213
3821
  role,
3214
3822
  ...props
3215
3823
  }) {
3216
- const avatars = import_react23.Children.toArray(children).filter(import_react23.isValidElement);
3824
+ const avatars = import_react28.Children.toArray(children).filter(import_react28.isValidElement);
3217
3825
  const hasMaxCount = typeof maxCount === "number" && Number.isFinite(maxCount) && maxCount > 0;
3218
3826
  const itemLimit = hasMaxCount ? Math.floor(maxCount) : avatars.length;
3219
3827
  const hasOverflow = avatars.length > itemLimit;
@@ -3226,7 +3834,7 @@ function AvatarGroup({
3226
3834
  "--fe-avatar-font-size": resolveFontSize(firstAvatarSize)
3227
3835
  };
3228
3836
  const singleContent = avatars.length === 1 ? avatars[0]?.props.content?.trim() ?? "" : "";
3229
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
3837
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
3230
3838
  "div",
3231
3839
  {
3232
3840
  className: ["fe-avatar-group", className].filter(Boolean).join(" "),
@@ -3234,8 +3842,8 @@ function AvatarGroup({
3234
3842
  role: role ?? "group",
3235
3843
  ...props,
3236
3844
  children: [
3237
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "fe-avatar-group__items", children: [
3238
- visibleAvatars.map((avatar, index) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3845
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "fe-avatar-group__items", children: [
3846
+ visibleAvatars.map((avatar, index) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3239
3847
  "span",
3240
3848
  {
3241
3849
  className: "fe-avatar-group__item",
@@ -3244,7 +3852,7 @@ function AvatarGroup({
3244
3852
  },
3245
3853
  avatar.key ?? index
3246
3854
  )),
3247
- hasOverflow && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
3855
+ hasOverflow && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
3248
3856
  "span",
3249
3857
  {
3250
3858
  className: "fe-avatar-group__more",
@@ -3258,11 +3866,1967 @@ function AvatarGroup({
3258
3866
  }
3259
3867
  )
3260
3868
  ] }),
3261
- singleContent && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "fe-avatar-group__content", children: singleContent })
3869
+ singleContent && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "fe-avatar-group__content", children: singleContent })
3262
3870
  ]
3263
3871
  }
3264
3872
  );
3265
3873
  }
3874
+
3875
+ // packages/file-upload/src/index.tsx
3876
+ var import_react29 = require("react");
3877
+ var import_jsx_runtime35 = require("react/jsx-runtime");
3878
+ var FILE_UPLOAD_ACCEPTS = {
3879
+ all: [],
3880
+ image: [
3881
+ "image/*",
3882
+ ".avif",
3883
+ ".bmp",
3884
+ ".gif",
3885
+ ".heic",
3886
+ ".heif",
3887
+ ".ico",
3888
+ ".jpeg",
3889
+ ".jpg",
3890
+ ".png",
3891
+ ".svg",
3892
+ ".tif",
3893
+ ".tiff",
3894
+ ".webp"
3895
+ ],
3896
+ pdf: [".pdf"],
3897
+ word: [".doc", ".docm", ".docx", ".dot", ".dotx", ".odt", ".rtf"],
3898
+ spreadsheet: [".csv", ".ods", ".xls", ".xlsb", ".xlsm", ".xlsx"],
3899
+ presentation: [".odp", ".pot", ".potx", ".pps", ".ppsx", ".ppt", ".pptx"],
3900
+ document: [
3901
+ ".pdf",
3902
+ ".doc",
3903
+ ".docm",
3904
+ ".docx",
3905
+ ".dot",
3906
+ ".dotx",
3907
+ ".odt",
3908
+ ".rtf",
3909
+ ".csv",
3910
+ ".xls",
3911
+ ".xlsb",
3912
+ ".xlsx",
3913
+ ".xlsm",
3914
+ ".ods",
3915
+ ".pot",
3916
+ ".potx",
3917
+ ".pps",
3918
+ ".ppsx",
3919
+ ".ppt",
3920
+ ".pptx",
3921
+ ".odp"
3922
+ ],
3923
+ text: [".log", ".md", ".rtf", ".text", ".txt"],
3924
+ csv: [".csv"],
3925
+ json: [".json"],
3926
+ xml: [".xml"],
3927
+ code: [
3928
+ ".c",
3929
+ ".cpp",
3930
+ ".cs",
3931
+ ".css",
3932
+ ".go",
3933
+ ".html",
3934
+ ".java",
3935
+ ".js",
3936
+ ".jsx",
3937
+ ".php",
3938
+ ".py",
3939
+ ".rb",
3940
+ ".rs",
3941
+ ".scss",
3942
+ ".sh",
3943
+ ".sql",
3944
+ ".swift",
3945
+ ".ts",
3946
+ ".tsx",
3947
+ ".vue",
3948
+ ".yml",
3949
+ ".yaml"
3950
+ ],
3951
+ archive: [".7z", ".bz2", ".gz", ".rar", ".tar", ".tgz", ".xz", ".zip"],
3952
+ audio: [
3953
+ "audio/*",
3954
+ ".aac",
3955
+ ".aiff",
3956
+ ".flac",
3957
+ ".m4a",
3958
+ ".mp3",
3959
+ ".ogg",
3960
+ ".opus",
3961
+ ".wav",
3962
+ ".wma"
3963
+ ],
3964
+ video: [
3965
+ "video/*",
3966
+ ".avi",
3967
+ ".mkv",
3968
+ ".mov",
3969
+ ".mp4",
3970
+ ".mpeg",
3971
+ ".mpg",
3972
+ ".webm",
3973
+ ".wmv"
3974
+ ],
3975
+ font: [".ttf", ".otf", ".woff", ".woff2"],
3976
+ email: [".eml", ".msg"]
3977
+ };
3978
+ function fileSignature(file) {
3979
+ return `${file.name}-${file.size}-${file.lastModified}-${file.type}`;
3980
+ }
3981
+ function normalizeAccept(accept) {
3982
+ if (!accept) return [];
3983
+ const groups = typeof accept === "string" ? [accept] : accept;
3984
+ return [...new Set(groups.flatMap((group) => FILE_UPLOAD_ACCEPTS[group]))];
3985
+ }
3986
+ function isAcceptedFile(file, accept) {
3987
+ if (!accept.length) return true;
3988
+ const type = file.type.toLowerCase();
3989
+ const name = file.name.toLowerCase();
3990
+ return accept.some((entry) => {
3991
+ if (entry.startsWith(".")) return name.endsWith(entry);
3992
+ if (entry.endsWith("/*")) return type.startsWith(entry.slice(0, -1));
3993
+ return type === entry;
3994
+ });
3995
+ }
3996
+ function formatFileSize(bytes) {
3997
+ if (!Number.isFinite(bytes) || bytes < 1024) return `${bytes || 0} B`;
3998
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
3999
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
4000
+ }
4001
+ function FileVisual({ file }) {
4002
+ const [previewUrl, setPreviewUrl] = (0, import_react29.useState)();
4003
+ const isImage = file.type.startsWith("image/");
4004
+ (0, import_react29.useEffect)(() => {
4005
+ if (!isImage || typeof URL.createObjectURL !== "function") return;
4006
+ const objectUrl = URL.createObjectURL(file);
4007
+ setPreviewUrl(objectUrl);
4008
+ return () => URL.revokeObjectURL(objectUrl);
4009
+ }, [file, isImage]);
4010
+ if (previewUrl) {
4011
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("img", { className: "fe-file-upload__thumbnail", src: previewUrl, alt: "" });
4012
+ }
4013
+ const extension = file.name.includes(".") ? file.name.slice(
4014
+ file.name.lastIndexOf(".") + 1,
4015
+ file.name.lastIndexOf(".") + 5
4016
+ ) : "file";
4017
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "fe-file-upload__file-type", "aria-hidden": "true", children: extension });
4018
+ }
4019
+ var FileUpload = (0, import_react29.forwardRef)(
4020
+ function FileUpload2({
4021
+ value,
4022
+ defaultValue = [],
4023
+ onChange,
4024
+ onAccept,
4025
+ onReject,
4026
+ onRemove,
4027
+ accept,
4028
+ maxSize = Infinity,
4029
+ maxFiles = Infinity,
4030
+ multiple = true,
4031
+ disabled = false,
4032
+ preventDuplicate = true,
4033
+ label = "Upload files",
4034
+ description,
4035
+ dropLabel = "Drop files here",
4036
+ browseLabel = "Browse files",
4037
+ removeLabel = (file) => `Remove ${file.name}`,
4038
+ showFileList = true,
4039
+ inputProps,
4040
+ className,
4041
+ "aria-label": ariaLabel,
4042
+ ...props
4043
+ }, forwardedRef) {
4044
+ const generatedId = (0, import_react29.useId)();
4045
+ const inputId = `${generatedId}-input`;
4046
+ const descriptionId = `${generatedId}-description`;
4047
+ const inputRef = (0, import_react29.useRef)(null);
4048
+ const dragDepthRef = (0, import_react29.useRef)(0);
4049
+ const [uncontrolledFiles, setUncontrolledFiles] = (0, import_react29.useState)(() => [
4050
+ ...defaultValue
4051
+ ]);
4052
+ const [isDragging, setIsDragging] = (0, import_react29.useState)(false);
4053
+ const [rejections, setRejections] = (0, import_react29.useState)([]);
4054
+ const files = value === void 0 ? uncontrolledFiles : [...value];
4055
+ const acceptList = (0, import_react29.useMemo)(() => normalizeAccept(accept), [accept]);
4056
+ const nativeAccept = acceptList.join(",") || void 0;
4057
+ const allowedFileCount = multiple ? maxFiles : 1;
4058
+ const safeMaxFiles = Number.isFinite(allowedFileCount) ? Math.max(0, Math.floor(allowedFileCount)) : Infinity;
4059
+ const helperText = description ?? [
4060
+ acceptList.length ? `Accepted: ${acceptList.join(", ")}` : void 0,
4061
+ Number.isFinite(maxSize) ? `Up to ${formatFileSize(maxSize)} per file` : void 0
4062
+ ].filter(Boolean).join(" \u2022 ");
4063
+ const assignInputRef = (node) => {
4064
+ inputRef.current = node;
4065
+ if (typeof forwardedRef === "function") forwardedRef(node);
4066
+ else if (forwardedRef) {
4067
+ forwardedRef.current = node;
4068
+ }
4069
+ };
4070
+ const commitFiles = (nextFiles) => {
4071
+ if (value === void 0) setUncontrolledFiles(nextFiles);
4072
+ onChange?.(nextFiles);
4073
+ };
4074
+ const addFiles = (fileList) => {
4075
+ if (disabled) return;
4076
+ const candidates = Array.from(fileList ?? []);
4077
+ const nextRejections = [];
4078
+ const accepted = [];
4079
+ const knownFiles = new Set(files.map(fileSignature));
4080
+ for (const file of candidates) {
4081
+ const signature = fileSignature(file);
4082
+ if (!isAcceptedFile(file, acceptList)) {
4083
+ nextRejections.push({
4084
+ file,
4085
+ code: "accept",
4086
+ message: `${file.name} is not an accepted file type.`
4087
+ });
4088
+ } else if (file.size > maxSize) {
4089
+ nextRejections.push({
4090
+ file,
4091
+ code: "max-size",
4092
+ message: `${file.name} exceeds ${formatFileSize(maxSize)}.`
4093
+ });
4094
+ } else if (preventDuplicate && knownFiles.has(signature)) {
4095
+ nextRejections.push({
4096
+ file,
4097
+ code: "duplicate",
4098
+ message: `${file.name} is already in the list.`
4099
+ });
4100
+ } else if (files.length + accepted.length >= safeMaxFiles) {
4101
+ nextRejections.push({
4102
+ file,
4103
+ code: "max-files",
4104
+ message: `Only ${safeMaxFiles} file${safeMaxFiles === 1 ? "" : "s"} can be selected.`
4105
+ });
4106
+ } else {
4107
+ knownFiles.add(signature);
4108
+ accepted.push(file);
4109
+ }
4110
+ }
4111
+ setRejections(nextRejections);
4112
+ if (nextRejections.length) onReject?.(nextRejections);
4113
+ if (!accepted.length) return;
4114
+ commitFiles([...files, ...accepted]);
4115
+ onAccept?.(accepted);
4116
+ };
4117
+ const openFileDialog = () => {
4118
+ if (!disabled) inputRef.current?.click();
4119
+ };
4120
+ const removeFile = (file, index) => {
4121
+ if (disabled) return;
4122
+ onRemove?.(file, index);
4123
+ commitFiles(files.filter((_, fileIndex) => fileIndex !== index));
4124
+ };
4125
+ const handleDragEnter = (event) => {
4126
+ event.preventDefault();
4127
+ if (disabled) return;
4128
+ dragDepthRef.current += 1;
4129
+ setIsDragging(true);
4130
+ };
4131
+ const handleDragLeave = (event) => {
4132
+ event.preventDefault();
4133
+ dragDepthRef.current -= 1;
4134
+ if (dragDepthRef.current <= 0) {
4135
+ dragDepthRef.current = 0;
4136
+ setIsDragging(false);
4137
+ }
4138
+ };
4139
+ const handleDrop = (event) => {
4140
+ event.preventDefault();
4141
+ dragDepthRef.current = 0;
4142
+ setIsDragging(false);
4143
+ addFiles(event.dataTransfer.files);
4144
+ };
4145
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
4146
+ "div",
4147
+ {
4148
+ ...props,
4149
+ className: ["fe-file-upload", className].filter(Boolean).join(" "),
4150
+ children: [
4151
+ label && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("label", { className: "fe-file-upload__label", htmlFor: inputId, children: label }),
4152
+ helperText && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { id: descriptionId, className: "fe-file-upload__description", children: helperText }),
4153
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4154
+ "input",
4155
+ {
4156
+ ...inputProps,
4157
+ ref: assignInputRef,
4158
+ id: inputId,
4159
+ type: "file",
4160
+ className: "fe-file-upload__input",
4161
+ accept: nativeAccept,
4162
+ multiple,
4163
+ disabled,
4164
+ "aria-label": ariaLabel,
4165
+ "aria-describedby": helperText ? descriptionId : void 0,
4166
+ onChange: (event) => {
4167
+ addFiles(event.target.files);
4168
+ event.target.value = "";
4169
+ }
4170
+ }
4171
+ ),
4172
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
4173
+ "div",
4174
+ {
4175
+ className: [
4176
+ "fe-file-upload__dropzone",
4177
+ isDragging && "fe-file-upload__dropzone--dragging",
4178
+ disabled && "fe-file-upload__dropzone--disabled"
4179
+ ].filter(Boolean).join(" "),
4180
+ onDragEnter: handleDragEnter,
4181
+ onDragOver: (event) => event.preventDefault(),
4182
+ onDragLeave: handleDragLeave,
4183
+ onDrop: handleDrop,
4184
+ children: [
4185
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "fe-file-upload__drop-icon", "aria-hidden": "true", children: "\u2191" }),
4186
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "fe-file-upload__drop-label", children: dropLabel }),
4187
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "fe-file-upload__drop-hint", children: "or choose from your device" }),
4188
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4189
+ Button,
4190
+ {
4191
+ hierarchy: "secondary-gray",
4192
+ disabled,
4193
+ onClick: openFileDialog,
4194
+ children: browseLabel
4195
+ }
4196
+ )
4197
+ ]
4198
+ }
4199
+ ),
4200
+ rejections.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "fe-file-upload__errors", role: "alert", children: rejections.map((rejection) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { children: rejection.message }, `${fileSignature(rejection.file)}-${rejection.code}`)) }),
4201
+ showFileList && files.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("ul", { className: "fe-file-upload__list", "aria-label": "Selected files", children: files.map((file, index) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
4202
+ "li",
4203
+ {
4204
+ className: "fe-file-upload__item",
4205
+ children: [
4206
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "fe-file-upload__visual", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(FileVisual, { file }) }),
4207
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "fe-file-upload__file-details", children: [
4208
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "fe-file-upload__file-name", title: file.name, children: file.name }),
4209
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "fe-file-upload__file-size", children: formatFileSize(file.size) })
4210
+ ] }),
4211
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4212
+ Button,
4213
+ {
4214
+ hierarchy: "tertiary-color",
4215
+ color: "error",
4216
+ destructive: true,
4217
+ size: "24",
4218
+ iconOnly: true,
4219
+ icon: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CloseIcon, { size: 14 }),
4220
+ "aria-label": removeLabel(file),
4221
+ disabled,
4222
+ onClick: () => removeFile(file, index)
4223
+ }
4224
+ )
4225
+ ]
4226
+ },
4227
+ `${fileSignature(file)}-${index}`
4228
+ )) })
4229
+ ]
4230
+ }
4231
+ );
4232
+ }
4233
+ );
4234
+ FileUpload.displayName = "FileUpload";
4235
+
4236
+ // packages/file-preview/src/index.tsx
4237
+ var import_react30 = require("react");
4238
+ var import_react_dom4 = require("react-dom");
4239
+ var import_jsx_runtime36 = require("react/jsx-runtime");
4240
+ function clampIndex(index, length) {
4241
+ if (!length) return 0;
4242
+ return Math.min(Math.max(Math.floor(index), 0), length - 1);
4243
+ }
4244
+ function hasExtension(file, extensions) {
4245
+ const name = file.name.toLowerCase();
4246
+ return extensions.some((extension) => name.endsWith(extension));
4247
+ }
4248
+ function getFilePreviewKind(file) {
4249
+ const type = file.type.toLowerCase();
4250
+ if (type.startsWith("image/") || hasExtension(file, [".svg"])) return "image";
4251
+ if (type.startsWith("video/")) return "video";
4252
+ if (type.startsWith("audio/")) return "audio";
4253
+ if (type === "application/pdf" || hasExtension(file, [".pdf"])) return "pdf";
4254
+ return "unsupported";
4255
+ }
4256
+ function formatFileSize2(bytes) {
4257
+ if (bytes < 1024) return `${bytes} B`;
4258
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
4259
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
4260
+ }
4261
+ function getFileExtension(file) {
4262
+ const dotIndex = file.name.lastIndexOf(".");
4263
+ return dotIndex >= 0 ? file.name.slice(dotIndex + 1).toUpperCase() : "FILE";
4264
+ }
4265
+ function useFileObjectUrl(file) {
4266
+ const [preview, setPreview] = (0, import_react30.useState)();
4267
+ (0, import_react30.useEffect)(() => {
4268
+ if (!file || typeof URL.createObjectURL !== "function") {
4269
+ setPreview(void 0);
4270
+ return;
4271
+ }
4272
+ const url = URL.createObjectURL(file);
4273
+ setPreview({ file, url });
4274
+ return () => URL.revokeObjectURL(url);
4275
+ }, [file]);
4276
+ if (!preview || preview.file !== file) return void 0;
4277
+ return preview.url;
4278
+ }
4279
+ function startLocalDownload(file) {
4280
+ if (typeof document === "undefined" || typeof URL.createObjectURL !== "function") {
4281
+ return;
4282
+ }
4283
+ const url = URL.createObjectURL(file);
4284
+ const anchor = document.createElement("a");
4285
+ anchor.href = url;
4286
+ anchor.download = file.name;
4287
+ anchor.hidden = true;
4288
+ document.body.append(anchor);
4289
+ anchor.click();
4290
+ anchor.remove();
4291
+ window.setTimeout(() => URL.revokeObjectURL(url), 0);
4292
+ }
4293
+ function PreviewContent({ file }) {
4294
+ const kind = getFilePreviewKind(file);
4295
+ const url = useFileObjectUrl(file);
4296
+ if (url && kind === "image") {
4297
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("img", { className: "fe-file-preview__image", src: url, alt: file.name });
4298
+ }
4299
+ if (url && kind === "video") {
4300
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("video", { className: "fe-file-preview__video", controls: true, src: url, children: "Your browser cannot play this video." });
4301
+ }
4302
+ if (url && kind === "audio") {
4303
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("audio", { className: "fe-file-preview__audio", controls: true, src: url });
4304
+ }
4305
+ if (url && kind === "pdf") {
4306
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4307
+ "iframe",
4308
+ {
4309
+ className: "fe-file-preview__pdf",
4310
+ title: `Preview ${file.name}`,
4311
+ src: `${url}#view=FitH`
4312
+ }
4313
+ );
4314
+ }
4315
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "fe-file-preview__unsupported", children: [
4316
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "fe-file-preview__file-type", "aria-hidden": "true", children: getFileExtension(file) }),
4317
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { children: "Preview is not available for this file type." }),
4318
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { children: file.name })
4319
+ ] });
4320
+ }
4321
+ function FilePreview({
4322
+ open,
4323
+ files,
4324
+ activeIndex,
4325
+ defaultActiveIndex = 0,
4326
+ onActiveIndexChange,
4327
+ onClose,
4328
+ onEscape,
4329
+ onDelete,
4330
+ onDownload,
4331
+ closeOnBackdropClick = true,
4332
+ closeOnEscape = true,
4333
+ closeLabel = "Close file preview",
4334
+ downloadLabel = "Download",
4335
+ deleteLabel = "Delete",
4336
+ hideDownload = false,
4337
+ className,
4338
+ "aria-label": ariaLabel,
4339
+ ...props
4340
+ }) {
4341
+ const titleId = (0, import_react30.useId)();
4342
+ const panelRef = (0, import_react30.useRef)(null);
4343
+ const [uncontrolledIndex, setUncontrolledIndex] = (0, import_react30.useState)(defaultActiveIndex);
4344
+ const resolvedIndex = clampIndex(
4345
+ activeIndex ?? uncontrolledIndex,
4346
+ files.length
4347
+ );
4348
+ const activeFile = files[resolvedIndex];
4349
+ const hasPrevious = resolvedIndex > 0;
4350
+ const hasNext = resolvedIndex < files.length - 1;
4351
+ const requestClose = (reason) => {
4352
+ if (reason === "escape") onEscape?.();
4353
+ onClose(reason);
4354
+ };
4355
+ useModalOverlay({
4356
+ open,
4357
+ onClose: () => requestClose("escape"),
4358
+ panelRef,
4359
+ priority: 1200,
4360
+ closeOnEscape
4361
+ });
4362
+ (0, import_react30.useEffect)(() => {
4363
+ if (activeIndex === void 0) {
4364
+ setUncontrolledIndex((index) => clampIndex(index, files.length));
4365
+ }
4366
+ }, [activeIndex, files.length]);
4367
+ const changeActiveIndex = (nextIndex) => {
4368
+ const next = clampIndex(nextIndex, files.length);
4369
+ const nextFile = files[next];
4370
+ if (!nextFile || next === resolvedIndex) return;
4371
+ if (activeIndex === void 0) setUncontrolledIndex(next);
4372
+ onActiveIndexChange?.(next, nextFile);
4373
+ };
4374
+ const handleKeyDown = (event) => {
4375
+ if (event.key === "ArrowLeft" && hasPrevious) {
4376
+ event.preventDefault();
4377
+ changeActiveIndex(resolvedIndex - 1);
4378
+ }
4379
+ if (event.key === "ArrowRight" && hasNext) {
4380
+ event.preventDefault();
4381
+ changeActiveIndex(resolvedIndex + 1);
4382
+ }
4383
+ };
4384
+ if (!open || typeof document === "undefined") return null;
4385
+ return (0, import_react_dom4.createPortal)(
4386
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4387
+ "div",
4388
+ {
4389
+ className: "fe-file-preview-backdrop",
4390
+ role: "presentation",
4391
+ onMouseDown: (event) => {
4392
+ if (event.target === event.currentTarget && closeOnBackdropClick) {
4393
+ requestClose("backdrop");
4394
+ }
4395
+ },
4396
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
4397
+ "div",
4398
+ {
4399
+ ...props,
4400
+ ref: panelRef,
4401
+ className: ["fe-file-preview", className].filter(Boolean).join(" "),
4402
+ role: "dialog",
4403
+ "aria-modal": "true",
4404
+ "aria-labelledby": activeFile ? titleId : void 0,
4405
+ "aria-label": ariaLabel ?? (activeFile ? void 0 : "File preview"),
4406
+ tabIndex: -1,
4407
+ onKeyDown: handleKeyDown,
4408
+ children: [
4409
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("header", { className: "fe-file-preview__header", children: [
4410
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "fe-file-preview__heading", children: [
4411
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("h2", { id: titleId, children: activeFile?.name ?? "File preview" }),
4412
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { "aria-label": `${resolvedIndex + 1} of ${files.length} files`, children: files.length ? `${resolvedIndex + 1} / ${files.length}` : "0 / 0" })
4413
+ ] }),
4414
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4415
+ Button,
4416
+ {
4417
+ hierarchy: "tertiary-gray",
4418
+ size: "32",
4419
+ iconOnly: true,
4420
+ icon: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(CloseIcon, {}),
4421
+ "aria-label": closeLabel,
4422
+ onClick: () => requestClose("close")
4423
+ }
4424
+ )
4425
+ ] }),
4426
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "fe-file-preview__body", children: [
4427
+ activeFile ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(PreviewContent, { file: activeFile }) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "fe-file-preview__empty", children: "No files to preview." }),
4428
+ activeFile && files.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
4429
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4430
+ Button,
4431
+ {
4432
+ className: "fe-file-preview__navigation fe-file-preview__navigation--previous",
4433
+ hierarchy: "secondary-gray",
4434
+ size: "40",
4435
+ iconOnly: true,
4436
+ icon: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ChevronDownIcon, {}),
4437
+ "aria-label": "Previous file",
4438
+ disabled: !hasPrevious,
4439
+ onClick: () => changeActiveIndex(resolvedIndex - 1)
4440
+ }
4441
+ ),
4442
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4443
+ Button,
4444
+ {
4445
+ className: "fe-file-preview__navigation fe-file-preview__navigation--next",
4446
+ hierarchy: "secondary-gray",
4447
+ size: "40",
4448
+ iconOnly: true,
4449
+ icon: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ChevronDownIcon, {}),
4450
+ "aria-label": "Next file",
4451
+ disabled: !hasNext,
4452
+ onClick: () => changeActiveIndex(resolvedIndex + 1)
4453
+ }
4454
+ )
4455
+ ] })
4456
+ ] }),
4457
+ activeFile && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("footer", { className: "fe-file-preview__footer", children: [
4458
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "fe-file-preview__metadata", children: [
4459
+ getFilePreviewKind(activeFile),
4460
+ " \xB7",
4461
+ " ",
4462
+ formatFileSize2(activeFile.size)
4463
+ ] }),
4464
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "fe-file-preview__actions", children: [
4465
+ !hideDownload && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4466
+ Button,
4467
+ {
4468
+ hierarchy: "secondary-gray",
4469
+ onClick: () => {
4470
+ onDownload?.(activeFile, resolvedIndex);
4471
+ startLocalDownload(activeFile);
4472
+ },
4473
+ children: downloadLabel
4474
+ }
4475
+ ),
4476
+ onDelete && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4477
+ Button,
4478
+ {
4479
+ hierarchy: "secondary-color",
4480
+ color: "error",
4481
+ destructive: true,
4482
+ onClick: () => onDelete(activeFile, resolvedIndex),
4483
+ children: deleteLabel
4484
+ }
4485
+ )
4486
+ ] })
4487
+ ] })
4488
+ ]
4489
+ }
4490
+ )
4491
+ }
4492
+ ),
4493
+ document.body
4494
+ );
4495
+ }
4496
+
4497
+ // packages/not-found/src/index.tsx
4498
+ var import_react32 = require("react");
4499
+
4500
+ // packages/not-found/src/CavemanArtwork.tsx
4501
+ var import_jsx_runtime37 = require("react/jsx-runtime");
4502
+ function CavemanArtwork() {
4503
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "fe-cave-scene", children: [
4504
+ " ",
4505
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-text", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { children: "404" }) }),
4506
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "fe-cave-container", children: [
4507
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "fe-cave-caveman", children: [
4508
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-leg", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-foot", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-fingers" }) }) }),
4509
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-leg", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-foot", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-fingers" }) }) }),
4510
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "fe-cave-shape", children: [
4511
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-circle" }),
4512
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-circle" })
4513
+ ] }),
4514
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "fe-cave-head", children: [
4515
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-eye", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-nose" }) }),
4516
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-mouth" })
4517
+ ] }),
4518
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-arm-right", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-club" }) })
4519
+ ] }),
4520
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "fe-cave-caveman", children: [
4521
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-leg", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-foot", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-fingers" }) }) }),
4522
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-leg", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-foot", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-fingers" }) }) }),
4523
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "fe-cave-shape", children: [
4524
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-circle" }),
4525
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-circle" })
4526
+ ] }),
4527
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "fe-cave-head", children: [
4528
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-eye", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-nose" }) }),
4529
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-mouth" })
4530
+ ] }),
4531
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-arm-right", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "fe-cave-club" }) })
4532
+ ] })
4533
+ ] })
4534
+ ] });
4535
+ }
4536
+
4537
+ // packages/not-found/src/YetiArtwork.tsx
4538
+ var import_react31 = require("react");
4539
+ var import_jsx_runtime38 = require("react/jsx-runtime");
4540
+ function YetiArtwork() {
4541
+ const id = (0, import_react31.useId)();
4542
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "fe-yeti-scene", children: [
4543
+ " ",
4544
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
4545
+ "svg",
4546
+ {
4547
+ "data-part": "yetiSVG",
4548
+ xmlns: "http://www.w3.org/2000/svg",
4549
+ viewBox: "0 0 600 550",
4550
+ children: [
4551
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
4552
+ "linearGradient",
4553
+ {
4554
+ id: `${id}-flashlightGrad`,
4555
+ x1: "126.5842",
4556
+ x2: "90.5842",
4557
+ y1: "176.5625",
4558
+ y2: "213.5625",
4559
+ gradientUnits: "userSpaceOnUse",
4560
+ children: [
4561
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("stop", { offset: "0", stopColor: "#333" }),
4562
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("stop", { offset: ".076", stopColor: "#414141" }),
4563
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("stop", { offset: ".2213", stopColor: "#555" }),
4564
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("stop", { offset: ".3651", stopColor: "#626262" }),
4565
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("stop", { offset: ".5043", stopColor: "#666" }),
4566
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("stop", { offset: ".6323", stopColor: "#606060" }),
4567
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("stop", { offset: ".8063", stopColor: "#4e4e4e" }),
4568
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("stop", { offset: "1", stopColor: "#333" })
4569
+ ]
4570
+ }
4571
+ ),
4572
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { fill: "#24658F", d: "M0 0h600v470H0z" }),
4573
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "pillow", children: [
4574
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4575
+ "path",
4576
+ {
4577
+ fill: "#09334F",
4578
+ d: "M241.3 124.6c-52.9 28.6-112.6 48-181.8 54.4-40.9 6.8-64.6-82.3-31.9-106.6C84 43.8 144.8 26.2 209.4 18c32.8 13 48.5 75.3 31.9 106.6z"
4579
+ }
4580
+ ),
4581
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4582
+ "path",
4583
+ {
4584
+ fill: "none",
4585
+ stroke: "#001726",
4586
+ strokeLinecap: "round",
4587
+ strokeLinejoin: "round",
4588
+ strokeWidth: "2.5",
4589
+ d: "M52.8 91.3c10 7.4 25.4 50.7 16.1 65.8M241.3 124.6c-52.9 28.6-112.6 48-181.8 54.4-40.9 6.8-64.6-82.3-31.9-106.6C84 43.8 144.8 26.2 209.4 18c32.8 13 48.5 75.3 31.9 106.6z"
4590
+ }
4591
+ ),
4592
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4593
+ "path",
4594
+ {
4595
+ fill: "#09334F",
4596
+ stroke: "#001726",
4597
+ strokeLinecap: "round",
4598
+ strokeLinejoin: "round",
4599
+ strokeWidth: "2.5",
4600
+ d: "M201.9 21.9c4.9-8 14.1-11.3 20.6-7.3s7.7 13.7 2.8 21.7"
4601
+ }
4602
+ ),
4603
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4604
+ "path",
4605
+ {
4606
+ fill: "#09334F",
4607
+ stroke: "#001726",
4608
+ strokeLinecap: "round",
4609
+ strokeLinejoin: "round",
4610
+ strokeWidth: "2.5",
4611
+ d: "M242.1 103.1c1.8.3 3.6.9 5.3 1.8 8.4 4.1 12.6 13 9.3 19.8s-12.9 9-21.3 4.9c-1.9-.9-3.6-2.1-5-3.4"
4612
+ }
4613
+ ),
4614
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4615
+ "path",
4616
+ {
4617
+ fill: "#09334F",
4618
+ stroke: "#001726",
4619
+ strokeLinecap: "round",
4620
+ strokeLinejoin: "round",
4621
+ strokeWidth: "2.5",
4622
+ d: "M70.3 172c.2 1.4.2 2.8.1 4.3-.8 9.4-8.3 16.4-16.7 15.6S39.2 183 40 173.7c.1-1.6.5-3.1 1-4.5"
4623
+ }
4624
+ ),
4625
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4626
+ "path",
4627
+ {
4628
+ fill: "#09334F",
4629
+ stroke: "#001726",
4630
+ strokeLinecap: "round",
4631
+ strokeLinejoin: "round",
4632
+ strokeWidth: "2.5",
4633
+ d: "M20.9 85.1c-4.1-5-5.1-11.6-2.1-16.9 4.1-7.2 14-9.2 22.1-4.6 3.7 2.1 6.4 5.2 7.9 8.6"
4634
+ }
4635
+ )
4636
+ ] }),
4637
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "yeti", children: [
4638
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4639
+ "path",
4640
+ {
4641
+ "data-part": "bodyBG",
4642
+ fill: "#67B1E0",
4643
+ d: "M80.9 291.4l-17.1-72.8c-6.3-27 10.4-54 37.4-60.3l93.1-29.6c26.5-8.1 54.6 6.8 62.7 33.3l21.9 71.5"
4644
+ }
4645
+ ),
4646
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4647
+ "path",
4648
+ {
4649
+ className: "hlFur",
4650
+ "data-part": "hlBody",
4651
+ fill: "#FFF",
4652
+ d: "M67.1 232.7c15.6-8.7 27.7-23.7 38-38.7 5.5-8 10.9-16.4 18.3-22.7 13.1-11.2 31.3-14.8 48.6-15 4.9 0 9.9.1 14.5-1.7 3.6-1.5 6.5-4.1 9.3-6.9 6.5-6.5 12-14 18-21-6.4-.6-12.9 0-19.4 2l-93.1 29.6c-27 6.3-43.7 33.4-37.4 60.3l3.2 14.1z"
4653
+ }
4654
+ ),
4655
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4656
+ "path",
4657
+ {
4658
+ "data-part": "bodyOutline",
4659
+ fill: "none",
4660
+ stroke: "#265D85",
4661
+ strokeLinecap: "round",
4662
+ strokeLinejoin: "round",
4663
+ strokeWidth: "2.5",
4664
+ d: "M80.9 291.4l-17.1-72.8c-6.3-27 10.4-54 37.4-60.3l93.1-29.6c26.5-8.1 54.6 6.8 62.7 33.3l21.9 71.5"
4665
+ }
4666
+ ),
4667
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4668
+ "path",
4669
+ {
4670
+ fill: "#67B1E0",
4671
+ d: "M197.5 132.4l-11.2-47.9c-6.3-26.7-32.7-44.1-59.5-38.2-27.4 6-44.5 33.1-38.1 60.3l13.6 56.2"
4672
+ }
4673
+ ),
4674
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4675
+ "path",
4676
+ {
4677
+ className: "hlFur",
4678
+ "data-part": "hlHead",
4679
+ fill: "#FFF",
4680
+ d: "M100.4 132.3l7.4 29.8 89.7-28.8-11.4-48.9c-1.6-6.8-4.5-12.9-8.4-18.3-9.6-7.9-28.5-12.9-46.9-8.5-24.9 5.9-34.5 23.6-38.1 37.9-.8.8-3.8 3-5.1 5.4.2 1.9.5 3.7 1 5.6l7 28.8 4.8-3z"
4681
+ }
4682
+ ),
4683
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4684
+ "path",
4685
+ {
4686
+ fill: "#67B1E0",
4687
+ stroke: "#265D85",
4688
+ strokeLinecap: "round",
4689
+ strokeLinejoin: "round",
4690
+ strokeWidth: "2.5",
4691
+ d: "M182.1 71.6c3.8 3.6 7 7.7 9.5 12-1.8.4-3.6.9-5.3 1.6 3.2 2.9 5.7 6.3 7.6 9.9-1.1.3-2.2.7-3.3 1.1 2.5 3.5 4.3 7.4 5.4 11.5-.8-.5-2.2-.8-3.3-1"
4692
+ }
4693
+ ),
4694
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4695
+ "path",
4696
+ {
4697
+ fill: "none",
4698
+ stroke: "#265D85",
4699
+ strokeLinecap: "round",
4700
+ strokeLinejoin: "round",
4701
+ strokeWidth: "2.5",
4702
+ d: "M197.5 132.4l-11.2-47.9c-6.3-26.7-32.7-44.1-59.5-38.2-27.4 6-44.5 33.1-38.1 60.3l13.6 56.2"
4703
+ }
4704
+ ),
4705
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { children: [
4706
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4707
+ "ellipse",
4708
+ {
4709
+ cx: "85.8",
4710
+ cy: "120.4",
4711
+ fill: "#88C9F2",
4712
+ rx: "11.5",
4713
+ ry: "11.5",
4714
+ transform: "rotate(-66.265 85.7992 120.4318)"
4715
+ }
4716
+ ),
4717
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4718
+ "path",
4719
+ {
4720
+ className: "hlSkin",
4721
+ "data-part": "hlEar",
4722
+ fill: "#DDF1FA",
4723
+ d: "M80.4 122.2c-1.3-5.5 1.6-11.1 6.6-13.2-1.3-.1-2.6-.1-3.9.3-6.2 1.5-10 7.7-8.5 13.9s7.7 10 13.9 8.5c.7-.2 1.3-.4 1.9-.6-4.7-.6-8.9-4-10-8.9z"
4724
+ }
4725
+ ),
4726
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4727
+ "path",
4728
+ {
4729
+ fill: "#88C9F2",
4730
+ stroke: "#265D85",
4731
+ strokeLinecap: "round",
4732
+ strokeLinejoin: "round",
4733
+ strokeWidth: "2.5",
4734
+ d: "M84.2 116.6c-2.2.5-3.6 2.8-3 5 .5 2.2 2.8 3.6 5 3"
4735
+ }
4736
+ ),
4737
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4738
+ "ellipse",
4739
+ {
4740
+ cx: "85.8",
4741
+ cy: "120.4",
4742
+ fill: "none",
4743
+ stroke: "#265D85",
4744
+ strokeWidth: "2.5",
4745
+ rx: "11.5",
4746
+ ry: "11.5",
4747
+ transform: "rotate(-66.265 85.7992 120.4318)"
4748
+ }
4749
+ ),
4750
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4751
+ "path",
4752
+ {
4753
+ className: "hlFur",
4754
+ fill: "#FFF",
4755
+ d: "M106 130.3l-12 3.6 1.2-11.4-6.3-.1 6-12h-5.4l9.6-8.4z"
4756
+ }
4757
+ ),
4758
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4759
+ "path",
4760
+ {
4761
+ className: "hlFur",
4762
+ fill: "#FFF",
4763
+ stroke: "#265D85",
4764
+ strokeLinecap: "round",
4765
+ strokeLinejoin: "round",
4766
+ strokeWidth: "2.5",
4767
+ d: "M92.1 96.4c-5.1 5.9-8.4 11.7-10 17 4.2-1.2 8.5-2.2 12.8-3-4.2 4.8-6.7 9.5-7.6 13.8 2.7-.7 5.4-1.3 8-1.7-2.3 4.8-2.8 9.2-1.7 13.3 1.4-1 4-2.4 6.1-3.4"
4768
+ }
4769
+ )
4770
+ ] }),
4771
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4772
+ "path",
4773
+ {
4774
+ className: "hlSkin",
4775
+ "data-part": "face",
4776
+ fill: "#DDF1FA",
4777
+ d: "M169.1 70.4l7.3 23.4c9.4 26.8-1.8 45-20 50.7s-37.8-5.1-45.8-30.1L103.3 91"
4778
+ }
4779
+ ),
4780
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4781
+ "path",
4782
+ {
4783
+ "data-part": "chin",
4784
+ fill: "none",
4785
+ stroke: "#265D85",
4786
+ strokeLinecap: "round",
4787
+ strokeLinejoin: "round",
4788
+ strokeWidth: "2.5",
4789
+ d: "M152.4 147.5c3.8 1 8 1.4 12.3 1.1-.5-1.4-1-2.9-1.6-4.3 3.8.6 7.9.7 12.1.1l-3.3-4.8c3.1-.6 6.3-1.6 9.5-3.1-1.4-1.6-2.8-3.1-4.2-4.6"
4790
+ }
4791
+ ),
4792
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4793
+ "path",
4794
+ {
4795
+ className: "hlFur",
4796
+ "data-part": "eyebrow",
4797
+ fill: "#FFF",
4798
+ stroke: "#265D85",
4799
+ strokeLinecap: "round",
4800
+ strokeLinejoin: "round",
4801
+ strokeWidth: "2.5",
4802
+ d: "M100.9 89.8c7.6 3.5 15.9 6.1 24.7 7.7 1.1-3.3 2.1-6.6 3-9.9 5.5 2.3 11.3 4.1 17.5 5.4.2-3.3.4-6.5.4-9.7 4.5.7 9.2 1.1 14 1.1-.5-3.4-1.1-6.7-1.7-10 4.5-1.9 9-4.2 13.3-6.9"
4803
+ }
4804
+ ),
4805
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "eyeL", children: [
4806
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("circle", { cx: "135.9", cy: "105.3", r: "3.5", fill: "#265D85" }),
4807
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("circle", { cx: "133.7", cy: "103.5", r: "1", fill: "#FFF" })
4808
+ ] }),
4809
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "eyeR", children: [
4810
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("circle", { cx: "163.2", cy: "96.3", r: "3.5", fill: "#265D85" }),
4811
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("circle", { cx: "160.9", cy: "94.5", r: "1", fill: "#FFF" })
4812
+ ] }),
4813
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4814
+ "path",
4815
+ {
4816
+ "data-part": "nose",
4817
+ fill: "#265D85",
4818
+ d: "M149.3 101.2l4.4-1.6c1.8-.6 3.6 1 3.1 2.9l-1.1 3.9c-.4 1.6-2.3 2.2-3.6 1.3l-3.3-2.3c-1.7-1.1-1.3-3.5.5-4.2z"
4819
+ }
4820
+ ),
4821
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4822
+ "path",
4823
+ {
4824
+ fill: "#67B1E0",
4825
+ stroke: "#265D85",
4826
+ strokeLinecap: "round",
4827
+ strokeLinejoin: "round",
4828
+ strokeWidth: "2.5",
4829
+ d: "M112.4 55.9c.9-4.3 3.8-9.2 8.8-13.7 1.4 2.3 2.8 4.7 4.1 7.1 2.3-4.8 6.9-9.8 13.8-14.1-.1 3.4-.3 6.8-.6 10.1 4.4-3 10.2-5.7 17.3-7.6-1.7 3.6-3.7 7.2-5.9 10.8"
4830
+ }
4831
+ ),
4832
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "mouth", children: [
4833
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4834
+ "path",
4835
+ {
4836
+ "data-part": "mouthBG",
4837
+ fill: "#265D85",
4838
+ d: "M149 115.7c-4.6 3.7-6.6 9.8-5 15.6.1.5.3 1.1.5 1.6.6 1.5 2.4 2.3 3.9 1.7l11.2-4.4 11.2-4.4c1.5-.6 2.3-2.4 1.7-3.9-.2-.5-.4-1-.7-1.5-2.8-5.2-8.4-8.3-14.1-7.9-3.7.2-5.9 1.1-8.7 3.2z"
4839
+ }
4840
+ ),
4841
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { children: [
4842
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4843
+ "path",
4844
+ {
4845
+ id: `${id}-mouthPath`,
4846
+ d: "M149 115.7c-4.6 3.7-6.6 9.8-5 15.6.1.5.3 1.1.5 1.6.6 1.5 2.4 2.3 3.9 1.7l11.2-4.4 11.2-4.4c1.5-.6 2.3-2.4 1.7-3.9-.2-.5-.4-1-.7-1.5-2.8-5.2-8.4-8.3-14.1-7.9-3.7.2-5.9 1.1-8.7 3.2z"
4847
+ }
4848
+ ) }),
4849
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("clipPath", { id: `${id}-mouthClipPath`, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("use", { overflow: "visible", href: `#${id}-mouthPath` }) }),
4850
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { clipPath: `url(#${id}-mouthClipPath)`, children: [
4851
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4852
+ "ellipse",
4853
+ {
4854
+ cx: "160.8",
4855
+ cy: "133.2",
4856
+ fill: "#CC4A6C",
4857
+ rx: "13",
4858
+ ry: "8",
4859
+ transform: "rotate(-21.685 160.775 133.1613)"
4860
+ }
4861
+ ),
4862
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4863
+ "ellipse",
4864
+ {
4865
+ cx: "158.4",
4866
+ cy: "127.1",
4867
+ fill: "#FFF",
4868
+ opacity: ".1",
4869
+ rx: "5",
4870
+ ry: "1.5",
4871
+ transform: "rotate(-21.685 158.3808 127.126)"
4872
+ }
4873
+ ),
4874
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4875
+ "path",
4876
+ {
4877
+ "data-part": "tooth1",
4878
+ fill: "#FFF",
4879
+ d: "M161.5 116.1l-3.7 1.5c-1 .4-2.2-.1-2.6-1.1l-1.5-3.7 7.4-3 1.5 3.7c.5 1 0 2.2-1.1 2.6z"
4880
+ }
4881
+ ),
4882
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4883
+ "path",
4884
+ {
4885
+ "data-part": "tooth2",
4886
+ fill: "#FFF",
4887
+ d: "M151.8 128.9l-1.9.7c-1 .4-1.5 1.6-1.1 2.6l1.1 2.8 5.6-2.2-1.1-2.8c-.5-1-1.6-1.5-2.6-1.1z"
4888
+ }
4889
+ ),
4890
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4891
+ "path",
4892
+ {
4893
+ "data-part": "tooth3",
4894
+ fill: "#FFF",
4895
+ d: "M158.3 126.3l-1.9.7c-1 .4-1.5 1.6-1.1 2.6l1.1 2.8 5.6-2.2-1.1-2.8c-.5-1-1.6-1.5-2.6-1.1z"
4896
+ }
4897
+ )
4898
+ ] })
4899
+ ] }),
4900
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4901
+ "path",
4902
+ {
4903
+ "data-part": "mouthOutline",
4904
+ fill: "none",
4905
+ stroke: "#265D85",
4906
+ strokeLinecap: "round",
4907
+ strokeLinejoin: "round",
4908
+ strokeWidth: "2.5",
4909
+ d: "M149 115.7c-4.6 3.7-6.6 9.8-5 15.6.1.5.3 1.1.5 1.6.6 1.5 2.4 2.3 3.9 1.7l11.2-4.4 11.2-4.4c1.5-.6 2.3-2.4 1.7-3.9-.2-.5-.4-1-.7-1.5-2.8-5.2-8.4-8.3-14.1-7.9-3.7.2-5.9 1.1-8.7 3.2z"
4910
+ }
4911
+ )
4912
+ ] }),
4913
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "armR", children: [
4914
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4915
+ "path",
4916
+ {
4917
+ className: "hlSkin",
4918
+ fill: "#DDF1FA",
4919
+ d: "M158.4 116.9l-.7.3c-3.7 1.5-5.5 5.7-4.1 9.4l1.2 2.9c1.7 4.4 6.7 6.5 11.1 4.8l1.4-.5"
4920
+ }
4921
+ ),
4922
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4923
+ "path",
4924
+ {
4925
+ fill: "#A9DDF3",
4926
+ d: "M154.8 129.1l.7 1.8c1 2.5 5.4 3.1 5.4 3.1l-2-5.1c-.3-.7-1.1-1.1-1.8-.8l-2.3 1z"
4927
+ }
4928
+ ),
4929
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4930
+ "path",
4931
+ {
4932
+ fill: "none",
4933
+ stroke: "#265D85",
4934
+ strokeLinecap: "round",
4935
+ strokeLinejoin: "round",
4936
+ strokeMiterlimit: "10",
4937
+ strokeWidth: "2.5",
4938
+ d: "M158.4 116.9l-.7.3c-3.7 1.5-5.5 5.7-4.1 9.4l1.2 2.9c1.7 4.4 6.7 6.5 11.1 4.8l1.4-.5"
4939
+ }
4940
+ ),
4941
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4942
+ "path",
4943
+ {
4944
+ className: "hlSkin",
4945
+ fill: "#DDF1FA",
4946
+ stroke: "#265D85",
4947
+ strokeWidth: "2.5",
4948
+ d: "M167.7 113.2l-.7.3c-3.7 1.5-5.5 5.7-4.1 9.4l1.2 2.9c1.7 4.4 6.7 6.5 11.1 4.8l1.4-.5"
4949
+ }
4950
+ ),
4951
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4952
+ "path",
4953
+ {
4954
+ className: "hlSkin",
4955
+ fill: "#DDF1FA",
4956
+ stroke: "#265D85",
4957
+ strokeWidth: "2.5",
4958
+ d: "M177 109.4l-.7.3c-3.7 1.5-5.5 5.7-4.1 9.4l1.2 2.9c1.7 4.4 6.7 6.5 11.1 4.8l1.4-.5"
4959
+ }
4960
+ ),
4961
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4962
+ "path",
4963
+ {
4964
+ fill: "#88C9F2",
4965
+ d: "M162.3 128.6l18.6 46.7 37.2-14.8-17.9-44.8"
4966
+ }
4967
+ ),
4968
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4969
+ "path",
4970
+ {
4971
+ className: "hlSkin",
4972
+ fill: "#DDF1FA",
4973
+ d: "M206.5 130.7l-5.9-15.1-37.9 13 6.4 17.4c10 1.6 34.6-6.3 37.4-15.3z"
4974
+ }
4975
+ ),
4976
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4977
+ "path",
4978
+ {
4979
+ fill: "none",
4980
+ stroke: "#265D85",
4981
+ strokeLinecap: "round",
4982
+ strokeLinejoin: "round",
4983
+ strokeMiterlimit: "10",
4984
+ strokeWidth: "2.5",
4985
+ d: "M162.3 128.6l18.6 46.7 37.2-14.8-15.3-38.3"
4986
+ }
4987
+ ),
4988
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4989
+ "path",
4990
+ {
4991
+ className: "hlSkin",
4992
+ fill: "#DDF1FA",
4993
+ d: "M190.8 119l-1.5-3.7c-2-5.1-7.9-7.6-13-5.6l5.2 12.9"
4994
+ }
4995
+ ),
4996
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4997
+ "path",
4998
+ {
4999
+ className: "hlSkin",
5000
+ fill: "#DDF1FA",
5001
+ d: "M203.5 123.8l-1.5-3.7c-2-5.1-7.9-7.6-13-5.6l5.2 12.9"
5002
+ }
5003
+ ),
5004
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5005
+ "path",
5006
+ {
5007
+ fill: "#A9DDF3",
5008
+ d: "M200.4 119.4l-.7-1.8c-1-2.5-5.4-3.1-5.4-3.1l1.9 4.8c.3.8 1.3 1.3 2.1.9l2.1-.8z"
5009
+ }
5010
+ ),
5011
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5012
+ "path",
5013
+ {
5014
+ fill: "none",
5015
+ stroke: "#265D85",
5016
+ strokeLinecap: "round",
5017
+ strokeLinejoin: "round",
5018
+ strokeMiterlimit: "10",
5019
+ strokeWidth: "2.5",
5020
+ d: "M203.5 123.8l-1.5-3.7c-2-5.1-7.9-7.6-13-5.6"
5021
+ }
5022
+ ),
5023
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5024
+ "path",
5025
+ {
5026
+ fill: "none",
5027
+ stroke: "#265D85",
5028
+ strokeLinecap: "round",
5029
+ strokeLinejoin: "round",
5030
+ strokeMiterlimit: "10",
5031
+ strokeWidth: "2.5",
5032
+ d: "M193.7 126.4l-4.4-11.1c-2-5.1-7.9-7.6-13-5.6"
5033
+ }
5034
+ ),
5035
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5036
+ "path",
5037
+ {
5038
+ fill: "#67B1E0",
5039
+ d: "M219.6 160.1c-1.5-6.2-3.2-13.2-5.1-21.1-2.8 2.1-5.6 4.5-8.3 7.4-2-1.8-4.1-3.7-6.2-5.7-2.4 3.6-4.6 7.7-6.7 12.1-3-1.9-6-3.9-9.2-6-1.4 2.9-2.7 6-4 9.2-4.7-.6-9.4-1.1-14.2-1.7 5.4 8 10.3 15.2 14.7 21.5"
5040
+ }
5041
+ ),
5042
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5043
+ "path",
5044
+ {
5045
+ fill: "none",
5046
+ stroke: "#265D85",
5047
+ strokeLinecap: "round",
5048
+ strokeLinejoin: "round",
5049
+ strokeWidth: "2.5",
5050
+ d: "M219.6 160.1c-1.5-6.2-3.2-13.2-5.1-21.1-2.8 2.1-5.6 4.5-8.3 7.4-2-1.8-4.1-3.7-6.2-5.7-2.4 3.6-4.6 7.7-6.7 12.1-3-1.9-6-3.9-9.2-6-1.4 2.9-2.7 6-4 9.2-4.7-.6-9.4-1.1-14.2-1.7 5.4 8 10.3 15.2 14.7 21.5"
5051
+ }
5052
+ ),
5053
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5054
+ "path",
5055
+ {
5056
+ fill: "none",
5057
+ stroke: "#3A5E77",
5058
+ strokeLinecap: "round",
5059
+ strokeLinejoin: "round",
5060
+ strokeMiterlimit: "10",
5061
+ strokeWidth: "2.5",
5062
+ d: "M160.9 125l2 5.1"
5063
+ }
5064
+ ),
5065
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5066
+ "path",
5067
+ {
5068
+ className: "hlSkin",
5069
+ fill: "#DDF1FA",
5070
+ d: "M172.2 126.4l-1.5-3.7c-2-5.1-7.9-7.6-13-5.6l5.2 12.9"
5071
+ }
5072
+ ),
5073
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5074
+ "path",
5075
+ {
5076
+ fill: "none",
5077
+ stroke: "#265D85",
5078
+ strokeLinecap: "round",
5079
+ strokeLinejoin: "round",
5080
+ strokeMiterlimit: "10",
5081
+ strokeWidth: "2.5",
5082
+ d: "M160.5 124l2.4 6.1"
5083
+ }
5084
+ ),
5085
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5086
+ "path",
5087
+ {
5088
+ className: "hlSkin",
5089
+ fill: "#DDF1FA",
5090
+ d: "M181.5 122.7L180 119c-2-5.1-7.9-7.6-13-5.6l5.2 12.9"
5091
+ }
5092
+ ),
5093
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5094
+ "path",
5095
+ {
5096
+ fill: "none",
5097
+ stroke: "#265D85",
5098
+ strokeLinecap: "round",
5099
+ strokeLinejoin: "round",
5100
+ strokeMiterlimit: "10",
5101
+ strokeWidth: "2.5",
5102
+ d: "M181.5 122.7L180 119c-2-5.1-7.9-7.6-13-5.6"
5103
+ }
5104
+ ),
5105
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5106
+ "path",
5107
+ {
5108
+ fill: "none",
5109
+ stroke: "#265D85",
5110
+ strokeLinecap: "round",
5111
+ strokeLinejoin: "round",
5112
+ strokeMiterlimit: "10",
5113
+ strokeWidth: "2.5",
5114
+ d: "M172.2 126.4l-1.5-3.7c-2-5.1-7.9-7.6-13-5.6"
5115
+ }
5116
+ )
5117
+ ] }),
5118
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "armL", children: [
5119
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5120
+ "path",
5121
+ {
5122
+ fill: "#67B1E0",
5123
+ d: "M50.9 156.7c-12 35.8-7.8 69.6 8.3 101.9 12.1 22.7 37 14.1 39.5-11.8v-65l-47.8-25.1z"
5124
+ }
5125
+ ),
5126
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5127
+ "path",
5128
+ {
5129
+ fill: "none",
5130
+ stroke: "#265D85",
5131
+ strokeLinecap: "round",
5132
+ strokeLinejoin: "round",
5133
+ strokeWidth: "2.5",
5134
+ d: "M50.9 156.7c-12 35.8-7.8 69.6 8.3 101.9 10 22.3 37.3 15.1 39.5-11.8v-65l-47.8-25.1z"
5135
+ }
5136
+ ),
5137
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5138
+ "path",
5139
+ {
5140
+ fill: "none",
5141
+ stroke: "#262626",
5142
+ strokeLinecap: "round",
5143
+ strokeLinejoin: "round",
5144
+ strokeMiterlimit: "10",
5145
+ strokeWidth: "20",
5146
+ d: "M59.3 143.8l34.3 33.9"
5147
+ }
5148
+ ),
5149
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5150
+ "path",
5151
+ {
5152
+ fill: "#4D4D4D",
5153
+ d: "M58.4 133.9l15.9 15.9-.9.9-16.5-16.5c.5-.2 1-.3 1.5-.3z"
5154
+ }
5155
+ ),
5156
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5157
+ "path",
5158
+ {
5159
+ fill: "#1A1A1A",
5160
+ d: "M71.2 169.6l-20.1-20c-2.4-3.7-2.5-8.1.1-11.7l23.1 22.2"
5161
+ }
5162
+ ),
5163
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5164
+ "path",
5165
+ {
5166
+ fill: "#4D4D4D",
5167
+ d: "M80.5 156.4l16 15.9-.9.9-16.5-16.5c.5-.1 1-.2 1.4-.3z"
5168
+ }
5169
+ ),
5170
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5171
+ "path",
5172
+ {
5173
+ fill: "#1A1A1A",
5174
+ d: "M74.2 160.1L86 171.4l-2 11-10.2-10.1c-2.4-4.4-2.5-8.5.4-12.2z"
5175
+ }
5176
+ ),
5177
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5178
+ "path",
5179
+ {
5180
+ fill: "#88C9F2",
5181
+ d: "M65.9 164.8c-1.9-5.5.8-11.8 6.1-14.1 4.9-2.2 10.4-.6 13.5 3.4 1.3 1.6 3.5 2.1 5.4 1.4 3-1.2 3.9-4.9 1.9-7.4-5.8-7.2-16.1-9.9-25-5.7-9.4 4.4-14.1 15.3-10.9 25.2"
5182
+ }
5183
+ ),
5184
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5185
+ "path",
5186
+ {
5187
+ fill: "none",
5188
+ stroke: "#265D85",
5189
+ strokeLinecap: "round",
5190
+ strokeLinejoin: "round",
5191
+ strokeWidth: "2.5",
5192
+ d: "M67.9 168.3c-1.1-1.2-2-3.6-2-3.6-1.9-5.5.8-11.8 6.1-14.1 4.9-2.2 10.4-.6 13.5 3.4 1.3 1.6 3.5 2.1 5.4 1.4 3-1.2 3.9-4.9 1.9-7.4-5.8-7.2-16.1-9.9-25-5.7-9.4 4.4-14.1 15.3-10.9 25.2"
5193
+ }
5194
+ ),
5195
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5196
+ "path",
5197
+ {
5198
+ fill: "#88C9F2",
5199
+ d: "M69.9 168.7c-1.9-5.5.8-11.8 6.1-14.1 4.9-2.2 10.4-.6 13.5 3.4 1.3 1.6 3.5 2.1 5.4 1.4 3-1.2 3.9-4.9 1.9-7.4-5.8-7.2-16.1-9.9-25-5.7-9.4 4.4-14.1 15.3-10.9 25.2"
5200
+ }
5201
+ ),
5202
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5203
+ "path",
5204
+ {
5205
+ fill: "#67B1E0",
5206
+ d: "M49.9 155l2.7 12.7.2 11.8 5 8.6 9.5-1.8 2-8.7-6.9.6 1.7-11.7-6.6 2.8 1-13.8-4.6 2.9z"
5207
+ }
5208
+ ),
5209
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5210
+ "path",
5211
+ {
5212
+ fill: "none",
5213
+ stroke: "#265D85",
5214
+ strokeLinecap: "round",
5215
+ strokeLinejoin: "round",
5216
+ strokeWidth: "2.5",
5217
+ d: "M71.9 172.3c-1.1-1.2-2-3.6-2-3.6-1.9-5.5.8-11.8 6.1-14.1 4.9-2.2 10.4-.6 13.5 3.4 1.3 1.6 3.5 2.1 5.4 1.4 3-1.2 3.9-4.9 1.9-7.4-5.8-7.2-16.1-9.9-25-5.7"
5218
+ }
5219
+ ),
5220
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5221
+ "path",
5222
+ {
5223
+ className: "hlSkin",
5224
+ "data-part": "hlHandL",
5225
+ fill: "#DDF1FA",
5226
+ d: "M101.7 156.9c-5.8-7.2-16.1-9.9-25-5.7-5.9 2.8-9.9 8.1-11.3 14.1l-1-.9-6.2 4.2c5.5 18.1 19.3 25.4 30.4 21l1.2-9.1c-6 2.4-12.7-.7-14.9-6.8-1.9-5.5.8-11.8 6.1-14.1 4.9-2.2 10.4-.6 13.5 3.4 1.3 1.6 3.5 2.1 5.4 1.4 2.9-1.3 3.8-5 1.8-7.5z"
5227
+ }
5228
+ ),
5229
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5230
+ "path",
5231
+ {
5232
+ fill: "none",
5233
+ stroke: "#265D85",
5234
+ strokeLinecap: "round",
5235
+ strokeLinejoin: "round",
5236
+ strokeWidth: "2.5",
5237
+ d: "M89.7 180.5c-6 2.4-12.7-.7-14.9-6.8"
5238
+ }
5239
+ ),
5240
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5241
+ "path",
5242
+ {
5243
+ fill: "none",
5244
+ stroke: "#265D85",
5245
+ strokeLinecap: "round",
5246
+ strokeLinejoin: "round",
5247
+ strokeWidth: "2.5",
5248
+ d: "M76.9 177.3c-1.1-1.2-2-3.6-2-3.6-1.9-5.5.8-11.8 6.1-14.1 4.9-2.2 10.4-.6 13.5 3.4 1.3 1.6 3.5 2.1 5.4 1.4 3-1.2 3.9-4.9 1.9-7.4-5.8-7.2-16.1-9.9-25-5.7"
5249
+ }
5250
+ ),
5251
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5252
+ "path",
5253
+ {
5254
+ className: "hlFur",
5255
+ "data-part": "hlArmL",
5256
+ fill: "#FFF",
5257
+ d: "M98.8 202.8l-1.4-8.7-5.2.7-7.2-11.5-6.8 9-3.9-9.3-7.5 4.8 3.5-11.4-7.1 1.9 2.7-13.5-7.8 4.9c-11.7 26.5-3.6 52.5 1.7 66.6 15.5-6.4 30.3-21.9 39-33.5z"
5258
+ }
5259
+ ),
5260
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5261
+ "path",
5262
+ {
5263
+ fill: "#A9DDF3",
5264
+ d: "M101 161.2l-2.4-2.2c.2-1.6-.2-2.7-.8-3.9l2.6 2.5c.8.8 1 2.2.6 3.6z"
5265
+ }
5266
+ ),
5267
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5268
+ "path",
5269
+ {
5270
+ fill: "none",
5271
+ stroke: "#265D85",
5272
+ strokeLinecap: "round",
5273
+ strokeLinejoin: "round",
5274
+ strokeWidth: "2.5",
5275
+ d: "M66.9 187.8l3.5-11.4-7.2 1.9 2.6-13.9-7.5 4.5 1.2-15.5-5.5 4.2"
5276
+ }
5277
+ ),
5278
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5279
+ "path",
5280
+ {
5281
+ fill: "none",
5282
+ stroke: "#265D85",
5283
+ strokeLinecap: "round",
5284
+ strokeLinejoin: "round",
5285
+ strokeWidth: "2.5",
5286
+ d: "M54 157.6l-5.6-5.6 2.7 14.7"
5287
+ }
5288
+ ),
5289
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5290
+ "path",
5291
+ {
5292
+ fill: "none",
5293
+ stroke: "#265D85",
5294
+ strokeLinecap: "round",
5295
+ strokeLinejoin: "round",
5296
+ strokeWidth: "2.5",
5297
+ d: "M67.1 188l7.3-5 3.8 9.3"
5298
+ }
5299
+ ),
5300
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5301
+ "path",
5302
+ {
5303
+ fill: "none",
5304
+ stroke: "#265D85",
5305
+ strokeLinecap: "round",
5306
+ strokeLinejoin: "round",
5307
+ strokeWidth: "2.5",
5308
+ d: "M78.2 192.3l6.8-9 7.1 11.5"
5309
+ }
5310
+ )
5311
+ ] })
5312
+ ] }),
5313
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
5314
+ "g",
5315
+ {
5316
+ "data-part": "fingersBackL",
5317
+ visibility: "hidden",
5318
+ fill: "#88C9F2",
5319
+ stroke: "#265D85",
5320
+ strokeLinecap: "round",
5321
+ strokeLinejoin: "round",
5322
+ strokeMiterlimit: "10",
5323
+ strokeWidth: "2.5",
5324
+ children: [
5325
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M149.2 177.5l-5.6-23.3c-.6-2.7 1-5.4 3.7-6 2.7-.6 5.4 1 6 3.7l4.4 18.4c.6 2.7-1 5.4-3.7 6l-4.8 1.2M139.4 179.8l-5.6-23.3c-.6-2.7 1-5.4 3.7-6 2.7-.6 5.4 1 6 3.7l5.6 23.3-9.7 2.3z" }),
5326
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M128.6 177.3l-4.4-18.4c-.6-2.7 1-5.4 3.7-6 2.7-.6 5.4 1 6 3.7l5.6 23.3-4.9 1.2c-2.7.5-5.4-1.2-6-3.8z" })
5327
+ ]
5328
+ }
5329
+ ),
5330
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
5331
+ "g",
5332
+ {
5333
+ "data-part": "fingersBackR",
5334
+ visibility: "hidden",
5335
+ fill: "#88c9f2",
5336
+ stroke: "#265D85",
5337
+ strokeLinecap: "round",
5338
+ strokeLinejoin: "round",
5339
+ strokeMiterlimit: "10",
5340
+ strokeWidth: "2.5",
5341
+ children: [
5342
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M215.5 152l-15.9-17.9c-1.8-2.1-1.6-5.2.4-7.1 2.1-1.8 5.2-1.6 7.1.4l12.6 14.2c1.8 2.1 1.6 5.2-.4 7l-3.8 3.4" }),
5343
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M208 158.6l-15.9-17.9c-1.8-2.1-1.6-5.2.4-7.1 2.1-1.8 5.2-1.6 7.1.4l15.9 17.9-7.5 6.7z" }),
5344
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M197.2 161.5l-12.6-14.2c-1.8-2.1-1.6-5.2.4-7.1 2.1-1.8 5.2-1.6 7.1.4l15.9 17.9-3.7 3.3c-2.1 2-5.2 1.8-7.1-.3z" })
5345
+ ]
5346
+ }
5347
+ ),
5348
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "blanket", children: [
5349
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5350
+ "path",
5351
+ {
5352
+ d: "M1.2 271.4C6.6 262 13 253.1 22.4 248c10.3-5.5 22.5-5.5 33.7-8.8 21.8-6.5 37.5-25.2 50.3-43.9 5.5-8 10.9-16.4 18.3-22.7 13.1-11.2 31.3-14.8 48.6-15 4.9 0 9.9.1 14.5-1.7 3.6-1.5 6.5-4.1 9.3-6.9 10.1-10.2 17.9-22.8 29-32 7.9-6.6 18.7-14.7 29.5-13.7 13.9 1.2 25 5.8 38.5-1.5 28.1-15.2 27.8-60.6 56.2-75.1 16.2-8.3 36.9-3.6 52.6-12.7 5.4-3.2 9.8-7.7 13.9-12.5h128.5l-350.8 209L1.3 363l-.1-91.6z",
5353
+ opacity: ".1"
5354
+ }
5355
+ ),
5356
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5357
+ "path",
5358
+ {
5359
+ fill: "#09334F",
5360
+ d: "M0 281.6c5.3-9.2 11.5-17.9 20.7-22.8 10.3-5.5 22.5-5.5 33.7-8.8 21.8-6.5 37.5-25.2 50.3-43.9 5.5-8 10.9-16.4 18.3-22.7 13.1-11.2 31.3-14.8 48.6-15 4.9 0 9.9.1 14.5-1.7 3.6-1.5 6.5-4.1 9.3-6.9 10.1-10.2 17.9-22.8 29-32 7.9-6.6 18.7-14.7 29.5-13.7 13.9 1.2 25 5.8 38.5-1.5 28.1-15.2 27.8-60.6 56.2-75.1 16.2-8.3 36.9-3.6 52.6-12.7C411 19.1 417.1 8.4 424.9.3H700v570H0V281.6z"
5361
+ }
5362
+ ),
5363
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5364
+ "path",
5365
+ {
5366
+ fill: "#072A40",
5367
+ d: "M0 281.6c5.3-9.2 11.6-17.9 20.8-22.8 10.3-5.5 22.5-5.5 33.7-8.8 21.8-6.5 37.5-25.2 50.3-43.9 5.5-8 10.9-16.4 18.3-22.7 13.1-11.2 31.3-14.8 48.6-15 4.9 0 9.9.1 14.5-1.7 3.6-1.5 6.5-4.1 9.3-6.9 10.1-10.2 17.9-22.8 29-32 7.9-6.6 18.7-14.7 29.5-13.7 13.9 1.2 25 5.8 38.5-1.5 28.1-15.2 27.8-60.6 56.2-75.1 16.2-8.3 36.9-3.6 52.6-12.7 9.8-5.7 15.9-16.4 23.7-24.6h100.4c-3.5 2.8-7.3 5.3-11.4 7.2-11.6 5.4-23 6.6-34.9 1.9-10.5-4.2-22.3 2.4-30.1 10.6-7.8 8.2-14 18.3-23.7 24-15.7 9.1-36.4 4.4-52.6 12.7-28.4 14.6-28.2 60-56.2 75.1-13.5 7.3-24.6 2.8-38.5 1.5-10.8-1-21.5 7.1-29.5 13.7-11.2 9.2-18.9 21.8-29 32-2.7 2.7-5.7 5.4-9.3 6.9-4.5 1.9-9.6 1.7-14.5 1.7-17.3.2-35.4 3.8-48.6 15-7.4 6.3-12.8 14.7-18.3 22.7-12.9 18.7-28.6 37.4-50.3 43.9-11.2 3.4-23.4 3.3-33.7 8.8-11.9 6.4-18.9 19-25.2 31-8.2 15.3-11.6 30-19.6 44.7v-72z"
5368
+ }
5369
+ ),
5370
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5371
+ "path",
5372
+ {
5373
+ fill: "none",
5374
+ stroke: "#001726",
5375
+ strokeLinecap: "round",
5376
+ strokeLinejoin: "round",
5377
+ strokeMiterlimit: "10",
5378
+ strokeWidth: "2.5",
5379
+ d: "M1.2 283c5.3-9.3 11.8-18 21.1-23 10.3-5.5 22.5-5.5 33.7-8.8 21.8-6.5 37.5-25.2 50.3-43.9 5.5-8 10.9-16.4 18.3-22.7 13.1-11.2 31.3-14.8 48.6-15 4.9 0 9.9.1 14.5-1.7 3.6-1.5 6.5-4.1 9.3-6.9 10.1-10.2 17.9-22.8 29-32 7.9-6.6 18.7-14.7 29.5-13.7 13.9 1.2 25 5.8 38.5-1.5 28.1-15.2 27.8-60.6 56.2-75.1 16.2-8.3 36.9-3.6 52.6-12.7 9.8-5.7 15.9-16.4 23.7-24.5"
5380
+ }
5381
+ ),
5382
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5383
+ "path",
5384
+ {
5385
+ fill: "none",
5386
+ stroke: "#001726",
5387
+ strokeLinecap: "round",
5388
+ strokeLinejoin: "round",
5389
+ strokeMiterlimit: "10",
5390
+ strokeWidth: "2.5",
5391
+ d: "M1.2 355c8-14.7 11.7-29.4 19.9-44.9 6.3-11.9 13.3-24.6 25.2-31 10.3-5.5 22.5-5.5 33.7-8.8 21.8-6.5 37.5-25.2 50.3-43.9 5.5-8 10.9-16.4 18.3-22.7 13.1-11.2 31.3-14.8 48.6-15 4.9 0 9.9.1 14.5-1.7 3.6-1.5 6.5-4.1 9.3-6.9 10.1-10.2 17.9-22.8 29-32 7.9-6.6 18.7-14.7 29.5-13.7 13.9 1.2 25 5.8 38.5-1.5 28.1-15.2 27.8-60.6 56.2-75.1 16.2-8.3 36.9-3.6 52.6-12.7 9.8-5.7 15.9-15.8 23.7-24s19.6-14.8 30.1-10.6c11.9 4.8 23.2 3.5 34.9-1.9 4-1.9 7.7-4.4 11.2-7.1"
5392
+ }
5393
+ ),
5394
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5395
+ "path",
5396
+ {
5397
+ d: "M111.2 197.2s50.7 23.9 90.8 43.1c14.2 6.8 18 25.4 7.5 37.2-7.6 8.5-20.2 10.4-30 4.5l-89.9-54.7 21.6-30.1z",
5398
+ opacity: ".03"
5399
+ }
5400
+ ),
5401
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5402
+ "path",
5403
+ {
5404
+ d: "M12.1 266s53.5 64.8 94.7 114c11.7 13.9 1.8 35.1-16.4 35.1-7.1 0-13.8-3.6-17.8-9.5L0 296.5v-13.2L12.1 266z",
5405
+ opacity: ".03"
5406
+ }
5407
+ ),
5408
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5409
+ "path",
5410
+ {
5411
+ d: "M155.7 170.1s111.4 46.9 171.1 69c3.5 1.3 7.4 0 9.4-3.2 2.7-4.2.9-9.9-3.8-11.7-33.5-12.8-147.3-56-147.3-56l-29.4 1.9z",
5412
+ opacity: ".03"
5413
+ }
5414
+ ),
5415
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5416
+ "path",
5417
+ {
5418
+ d: "M255.9 114.7S349 145.6 412 176c2.1 1 4.6.6 6.2-1 2.8-2.7 1.9-7.5-1.7-9-23.3-9.6-94.3-38.6-131.1-50.4-.1.1-10.2 1.9-29.5-.9z",
5419
+ opacity: ".03"
5420
+ }
5421
+ ),
5422
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5423
+ "path",
5424
+ {
5425
+ d: "M356.6 34.9l152.1 49.3c2.2.7 4.5.6 6.7-.2 8.7-3.4 8.2-15.9-.7-18.6l-121-36.8-37.1 6.3z",
5426
+ opacity: ".03"
5427
+ }
5428
+ )
5429
+ ] }),
5430
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "fingersFrontL", visibility: "hidden", children: [
5431
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5432
+ "path",
5433
+ {
5434
+ fill: "#88C9F2",
5435
+ stroke: "#265D85",
5436
+ strokeLinecap: "round",
5437
+ strokeLinejoin: "round",
5438
+ strokeMiterlimit: "10",
5439
+ strokeWidth: "2.5",
5440
+ d: "M146.2 165.1l2.8 11.6c.6 2.7 3.3 4.3 6 3.7 2.7-.6 4.3-3.3 3.7-6l-1.6-6.8c-.6-2.7-3.3-4.3-6-3.7l-4.9 1.2"
5441
+ }
5442
+ ),
5443
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5444
+ "path",
5445
+ {
5446
+ fill: "#A9DDF3",
5447
+ d: "M151.4 173.8l.5 2.2c.3 1.1 1.3 1.7 2.4 1.5 1.1-.3 1.7-1.3 1.5-2.4l-.5-2.2-3.9.9z"
5448
+ }
5449
+ ),
5450
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5451
+ "path",
5452
+ {
5453
+ fill: "#88C9F2",
5454
+ stroke: "#265D85",
5455
+ strokeLinecap: "round",
5456
+ strokeLinejoin: "round",
5457
+ strokeMiterlimit: "10",
5458
+ strokeWidth: "2.5",
5459
+ d: "M136.5 167.4l2.8 11.6c.6 2.7 3.3 4.3 6 3.7 2.7-.6 4.3-3.3 3.7-6l-2.8-11.6-9.7 2.3z"
5460
+ }
5461
+ ),
5462
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5463
+ "path",
5464
+ {
5465
+ fill: "#A9DDF3",
5466
+ d: "M141.7 176.2l.5 2.2c.3 1.1 1.3 1.7 2.4 1.5 1.1-.3 1.7-1.3 1.5-2.4l-.5-2.2-3.9.9z"
5467
+ }
5468
+ ),
5469
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5470
+ "path",
5471
+ {
5472
+ fill: "#88C9F2",
5473
+ stroke: "#265D85",
5474
+ strokeLinecap: "round",
5475
+ strokeLinejoin: "round",
5476
+ strokeMiterlimit: "10",
5477
+ strokeWidth: "2.5",
5478
+ d: "M127.9 174.6l1.6 6.8c.6 2.7 3.3 4.3 6 3.7 2.7-.6 4.3-3.3 3.7-6l-2.8-11.6-4.9 1.2c-2.6.5-4.2 3.2-3.6 5.9z"
5479
+ }
5480
+ ),
5481
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5482
+ "path",
5483
+ {
5484
+ fill: "#A9DDF3",
5485
+ d: "M131.9 178.5l.5 2.2c.3 1.1 1.3 1.7 2.4 1.5 1.1-.3 1.7-1.3 1.5-2.4l-.5-2.2-3.9.9z"
5486
+ }
5487
+ )
5488
+ ] }),
5489
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "fingersFrontR", visibility: "hidden", children: [
5490
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5491
+ "path",
5492
+ {
5493
+ fill: "#88c9f2",
5494
+ stroke: "#265D85",
5495
+ strokeLinecap: "round",
5496
+ strokeLinejoin: "round",
5497
+ strokeMiterlimit: "10",
5498
+ strokeWidth: "2.5",
5499
+ d: "M207.1 142.5l7.9 8.9c1.8 2.1 5 2.3 7.1.4 2.1-1.8 2.3-5 .4-7.1l-4.6-5.2c-1.8-2.1-5-2.2-7-.4l-3.8 3.4"
5500
+ }
5501
+ ),
5502
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5503
+ "path",
5504
+ {
5505
+ fill: "#A9DDF3",
5506
+ d: "M215.8 147.7l1.5 1.7c.7.8 2 .9 2.8.2.8-.7.9-2 .2-2.8l-1.5-1.7-3 2.6z"
5507
+ }
5508
+ ),
5509
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5510
+ "path",
5511
+ {
5512
+ fill: "#88c9f2",
5513
+ stroke: "#265D85",
5514
+ strokeLinecap: "round",
5515
+ strokeLinejoin: "round",
5516
+ strokeMiterlimit: "10",
5517
+ strokeWidth: "2.5",
5518
+ d: "M199.6 149.1l7.9 8.9c1.8 2.1 5 2.3 7.1.4 2.1-1.8 2.3-5 .4-7.1l-7.9-8.9-7.5 6.7z"
5519
+ }
5520
+ ),
5521
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5522
+ "path",
5523
+ {
5524
+ fill: "#A9DDF3",
5525
+ d: "M208.3 154.4l1.5 1.7c.7.8 2 .9 2.8.2.8-.7.9-2 .2-2.8l-1.5-1.7-3 2.6z"
5526
+ }
5527
+ ),
5528
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5529
+ "path",
5530
+ {
5531
+ fill: "#88c9f2",
5532
+ stroke: "#265D85",
5533
+ strokeLinecap: "round",
5534
+ strokeLinejoin: "round",
5535
+ strokeMiterlimit: "10",
5536
+ strokeWidth: "2.5",
5537
+ d: "M195.4 159.5l4.6 5.2c1.8 2.1 5 2.3 7.1.4 2.1-1.8 2.3-5 .4-7.1l-7.9-8.9-3.7 3.3c-2.1 1.9-2.3 5-.5 7.1z"
5538
+ }
5539
+ ),
5540
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5541
+ "path",
5542
+ {
5543
+ fill: "#A9DDF3",
5544
+ d: "M200.8 161l1.5 1.7c.7.8 2 .9 2.8.2.8-.7.9-2 .2-2.8l-1.5-1.7-3 2.6z"
5545
+ }
5546
+ )
5547
+ ] }),
5548
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "flashlightFront", children: [
5549
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5550
+ "path",
5551
+ {
5552
+ fill: "#1A1A1A",
5553
+ d: "M83.9 181.4l4.6 26.4 34.6-33.6-24.5-6.2c-8.9-2.6-16.6 3.9-14.7 13.4z"
5554
+ }
5555
+ ),
5556
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5557
+ "path",
5558
+ {
5559
+ fill: "#333",
5560
+ d: "M91.9 167.8l20.5 7.4-.5 1.2-21.4-8.2c.5-.2 1-.3 1.4-.4z"
5561
+ }
5562
+ ),
5563
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M86 171.4c-2 2.5-3 6-2.2 10l4.6 26.4 11.4-11.1L86 171.4z" }),
5564
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5565
+ "path",
5566
+ {
5567
+ fill: `url(#${id}-flashlightGrad)`,
5568
+ d: "M99.1 183.7c-10.6 9.4-13.4 21.4-9 28.5 4.3 6.8 18 3 28.6-6.4s14.9-23.7 8.8-29c-6.9-6.1-17.8-2.6-28.4 6.9z"
5569
+ }
5570
+ ),
5571
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5572
+ "path",
5573
+ {
5574
+ fill: "#B3B3B3",
5575
+ d: "M101.6 185.7c-8.2 7.3-11.9 18.2-8.8 23.1 2.6 4.1 13.6-1.1 21.8-8.4s13.6-18.1 9.9-21.6c-4.4-4.2-14.7-.4-22.9 6.9z"
5576
+ }
5577
+ )
5578
+ ] })
5579
+ ]
5580
+ }
5581
+ ),
5582
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
5583
+ "svg",
5584
+ {
5585
+ "data-part": "lightSVG",
5586
+ xmlns: "http://www.w3.org/2000/svg",
5587
+ viewBox: "0 0 600 550",
5588
+ children: [
5589
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("filter", { id: `${id}-white-glow`, children: [
5590
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5591
+ "feFlood",
5592
+ {
5593
+ result: "flood",
5594
+ floodColor: "#ffffff",
5595
+ floodOpacity: ".6"
5596
+ }
5597
+ ),
5598
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5599
+ "feComposite",
5600
+ {
5601
+ in: "flood",
5602
+ result: "mask",
5603
+ in2: "SourceGraphic",
5604
+ operator: "in"
5605
+ }
5606
+ ),
5607
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5608
+ "feMorphology",
5609
+ {
5610
+ in: "mask",
5611
+ result: "dilated",
5612
+ operator: "dilate",
5613
+ radius: "3"
5614
+ }
5615
+ ),
5616
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5617
+ "feGaussianBlur",
5618
+ {
5619
+ in: "dilated",
5620
+ result: "blurred",
5621
+ stdDeviation: "8"
5622
+ }
5623
+ ),
5624
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("feMerge", { children: [
5625
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("feMergeNode", { in: "blurred" }),
5626
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("feMergeNode", { in: "SourceGraphic" })
5627
+ ] })
5628
+ ] }),
5629
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "light", children: [
5630
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5631
+ "path",
5632
+ {
5633
+ filter: `url(#${id}-white-glow)`,
5634
+ fill: "#F8FFE8",
5635
+ d: "M122.2 177.4c-5.2-1.6-13.6 2.1-20.6 8.3-7.7 6.8-11.4 16.8-9.3 22.1L421 1683h1534V733L122.2 177.4z"
5636
+ }
5637
+ ),
5638
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5639
+ "path",
5640
+ {
5641
+ opacity: "0.7",
5642
+ fill: "#FFFFFF",
5643
+ d: "M101.6,185.7c-8.2,7.3-11.9,18.2-8.8,23.1c2.6,4.1,13.6-1.1,21.8-8.4s13.6-18.1,9.9-21.6 C120.1,174.6,109.8,178.4,101.6,185.7z"
5644
+ }
5645
+ )
5646
+ ] }),
5647
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { "data-part": "four04", children: [
5648
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("g", { opacity: ".2", "data-part": "lettersShadow", children: [
5649
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M233.2 408.6l30.6 46.3-51.9 46 22.2 25.8 125.2 37.6 45.1-18.7-45.5-51.9 12.1-18.1-25.3-30.8-26.2-6.5-27.5-37.7z" }),
5650
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M328.9 467.6S391.4 601.5 505 558c88.3-33.8-69.2-108.2-85-116.5-15.8-8.3-76.8 6.9-76.8 6.9l-14.3 19.2z" }),
5651
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M474.2 515.1L505 558l-20.6 50.6 22.3 25.8 162.5 27 48.4-24.3-60.2-42.7 19.1-12.1-38.4-37.4-32.3.6-72-30.3z" })
5652
+ ] }),
5653
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5654
+ "path",
5655
+ {
5656
+ className: "lettersSide",
5657
+ stroke: "#265D85",
5658
+ strokeLinecap: "round",
5659
+ strokeLinejoin: "round",
5660
+ strokeMiterlimit: "10",
5661
+ strokeWidth: "2.5",
5662
+ fill: "#3A7199",
5663
+ d: "M269.2 316l-17.9 6 15.4.8 19.2-6.4zM220.3 371l12.4 37.8 14 7.4-13.3-40.7zM214.4 317.4c-.3-.8-.5-1.6-.8-2.4-.3-.8-.5-1.7-.8-2.5-.3-.9-.5-1.7-.8-2.6-.3-.9-.6-1.8-.8-2.8-.3-.9-.6-1.9-.8-2.9-.3-1-.6-1.9-.8-2.9-.3-1-.5-1.9-.8-2.9-.3-1-.5-1.9-.8-2.9-.3-1-.5-2-.8-2.9-.3-1-.5-1.9-.8-2.9-.3-1-.5-1.9-.8-2.9-.3-1-.5-1.9-.8-2.9-.3-1-.5-1.9-.8-2.8-.2-.9-.5-1.8-.7-2.7-.2-.9-.5-1.7-.7-2.6l-.6-2.4-10.9 2.8c.2.7.4 1.5.6 2.3l.6 2.4c.2.8.4 1.6.7 2.5s.5 1.7.7 2.6c.2.9.5 1.8.7 2.7.2.9.5 1.8.7 2.7.2.9.5 1.8.7 2.7.2.9.5 1.8.7 2.7.2.9.5 1.8.8 2.7.3.9.5 1.8.8 2.7.3.9.5 1.8.8 2.7.3.9.5 1.8.8 2.7.3.9.5 1.7.8 2.6.3.8.5 1.7.8 2.5.2.8.5 1.6.7 2.3.2.8.5 1.5.7 2.2l6.3 19.3-28.8 9.7 10 2.6 31-10.4-6.8-21zM162.6 243.7l-25 119.5 10.7 32.2 7.6 6.5-11.5-34.7 26.9-128.8z"
5664
+ }
5665
+ ),
5666
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5667
+ "path",
5668
+ {
5669
+ className: "lettersFront",
5670
+ stroke: "#265D85",
5671
+ strokeLinecap: "round",
5672
+ strokeLinejoin: "round",
5673
+ strokeMiterlimit: "10",
5674
+ strokeWidth: "2.5",
5675
+ fill: "#67B1E0",
5676
+ d: "M266.7 322.8l19.2-6.5 12.1 37.2-19.2 6.5 13.2 40.6-45.2 15.6-13.3-40.7-77.5 26.4-11.5-34.8 26.9-128.8 61.5-19.9 33.8 104.4zm-62-38.9c-.3-1-.5-1.9-.8-2.8-.2-.9-.5-1.8-.7-2.7-.2-.9-.5-1.7-.7-2.6l-.6-2.4-1.1.4c-.1 1.6-.2 3.2-.4 4.8-.1 1.6-.3 3.2-.4 4.7-.1 1.6-.3 3.1-.5 4.7s-.3 3.1-.5 4.7-.4 3.1-.5 4.7c-.2 1.6-.4 3.2-.6 4.7l-.6 4.8-.6 4.8-6.4 36.8 31-10.4-6.8-20.8c-.3-.8-.5-1.6-.8-2.4-.3-.8-.5-1.7-.8-2.5-.3-.9-.5-1.7-.8-2.6-.3-.9-.6-1.8-.8-2.8-.3-.9-.6-1.9-.8-2.9-.3-1-.6-1.9-.8-2.9-.3-1-.6-1.9-.8-2.9-.3-1-.5-1.9-.8-2.9-.3-1-.5-2-.8-2.9-.3-1-.5-1.9-.8-2.9-.3-1-.5-1.9-.8-2.9-.5-.9-.8-1.9-1-2.8"
5677
+ }
5678
+ ),
5679
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5680
+ "path",
5681
+ {
5682
+ className: "lettersSide",
5683
+ stroke: "#265D85",
5684
+ strokeLinecap: "round",
5685
+ strokeLinejoin: "round",
5686
+ strokeMiterlimit: "10",
5687
+ strokeWidth: "2.5",
5688
+ fill: "#3A7199",
5689
+ d: "M390 347.5c-.1-1.9-.3-3.8-.5-5.5-.2-1.7-.4-3.4-.7-4.9-.3-1.5-.5-2.9-.9-4.3-.3-1.3-.7-2.5-1.1-3.6-.4-1.1-.8-2.1-1.3-3.1-.5-.9-.9-1.8-1.5-2.5-.5-.8-1.1-1.4-1.7-2-.6-.6-1.2-1.1-1.8-1.5-.6-.4-1.3-.7-2-1.1-.7-.3-1.4-.6-2-.8l-2.1-.6c-.7-.2-1.5-.3-2.2-.3h-14.3 1.6l2.1.3c.7.1 1.3.3 2 .5.6.2 1.3.5 1.9.8.6.3 1.2.6 1.8 1 .6.4 1.2.8 1.7 1.3s1.1 1.1 1.5 1.8c.5.7.9 1.5 1.4 2.3.4.9.8 1.8 1.2 2.8.4 1 .7 2.2 1 3.4.3 1.2.6 2.5.8 4 .2 1.4.4 2.9.6 4.5.2 1.6.3 3.3.4 5.1.1 1.8.2 3.8.2 5.8 0 2.1 0 4.3-.1 6.7-.1 2.4-.2 4.9-.4 7.6-.2 2.7-.4 5.5-.7 8.4-.3 2.9-.6 5.7-.9 8.4-.3 2.7-.7 5.2-1 7.5-.4 2.4-.8 4.6-1.2 6.7-.4 2.1-.8 4-1.3 5.8-.5 1.8-.9 3.5-1.4 5.1s-1 3.1-1.5 4.5-1 2.7-1.6 3.9c-.5 1.2-1.1 2.3-1.6 3.3-.3.5-.5.9-.8 1.4-.1.1-.2.3-.3.4-.2.3-.4.6-.6.8-.1.2-.2.3-.3.5-.2.2-.3.5-.5.7-.1.1-.2.3-.4.4-.2.2-.3.4-.5.6l-.4.4-.5.5c-.1.1-.3.2-.4.3-.2.1-.3.3-.5.4-.1.1-.3.2-.4.3-.2.1-.3.2-.5.3-.1.1-.3.2-.4.2-.3.2-.5.3-.8.4-.6.3-1.3.5-2 .7h-.1c-.6.2-1.3.4-1.9.5h-.1c-.6.1-1.3.2-1.9.2H349c-.7-.1-1.3-.2-2-.3h-.1c-.6-.1-1.3-.3-1.9-.5h-.1c-.6-.2-1.2-.5-1.8-.8-.6-.3-1.2-.7-1.8-1.1 0 0-.1 0-.1-.1 0 0-.1 0-.1-.1 0 0-.1 0-.1-.1 0 0-.1 0-.1-.1l11 8.3.1.1.1.1s.1 0 .1.1c0 0 .1 0 .1.1.3.2.6.4 1 .6.3.2.6.4 1 .5.3.2.6.3.9.4.3.1.7.3 1 .4h.2l.9.3c.3.1.7.2 1.1.3h.2c.3.1.6.1.9.2.4.1.7.1 1.1.1H363c.3 0 .5 0 .8-.1.3 0 .5-.1.8-.1.1 0 .2 0 .3-.1h.2c.1 0 .2 0 .3-.1.3-.1.5-.1.8-.2.3-.1.5-.1.8-.2.1 0 .1 0 .2-.1.1 0 .2-.1.3-.1.2-.1.4-.1.6-.2.2-.1.4-.2.6-.2l.6-.3c.1 0 .1-.1.2-.1s.1-.1.2-.1.1-.1.2-.1.1-.1.2-.1.1-.1.2-.1c.1-.1.3-.2.4-.3.2-.1.4-.2.6-.4.1 0 .1-.1.2-.1.1-.1.2-.1.2-.2.1-.1.2-.1.3-.2.1-.1.2-.2.3-.2.1-.1.3-.2.4-.4.2-.2.4-.3.5-.5l.3-.3c.1-.1.1-.1.1-.2l.2-.2c.1-.1.2-.3.4-.4.1-.2.3-.3.4-.5.2-.2.4-.5.6-.7.1-.1.2-.2.3-.4 0 0 0-.1.1-.1l.1-.1c.2-.2.3-.5.5-.8.1-.2.2-.3.3-.5l.9-1.5c.6-1.1 1.2-2.2 1.8-3.5.6-1.3 1.1-2.7 1.7-4.2.5-1.5 1.1-3.1 1.6-4.8.5-1.7 1-3.5 1.5-5.5.5-1.9 1-4 1.4-6.3s.9-4.6 1.3-7.2c.4-2.6.8-5.3 1.1-8.1.4-2.9.7-5.9 1-9 .3-3.2.6-6.2.8-9 .2-2.9.3-5.6.4-8.1.1-2.6.1-5 .1-7.2.1-1.6 0-3.7-.1-5.6zM325.4 293.8c.7-.6 1.3-1.2 2-1.8.2-.2.4-.4.6-.5.8-.7 1.7-1.4 2.6-2.1.2-.1.4-.3.6-.4.7-.5 1.4-1.1 2.2-1.6.3-.2.5-.4.8-.5.8-.5 1.7-1.1 2.5-1.6.1-.1.2-.1.3-.2 1-.6 1.9-1.1 2.9-1.6.2-.1.3-.2.5-.3.9-.5 1.9-.9 2.9-1.3.1-.1.3-.1.4-.2 1-.4 2-.9 3.1-1.2.4-.2.9-.3 1.3-.5.1 0 .2-.1.4-.1.4-.1.8-.3 1.2-.4.1 0 .1 0 .2-.1.5-.1 1-.3 1.5-.4h.1c.5-.1 1-.3 1.5-.4l-11.1 2.7c-.1 0-.3.1-.4.1-.1 0-.3.1-.4.1-.1 0-.3.1-.4.1h-.1c-.1 0-.2.1-.3.1-.3.1-.7.2-1 .3h-.1-.1c-.2.1-.5.1-.7.2-.1 0-.2.1-.4.1-.1 0-.1 0-.2.1-.1 0-.1 0-.2.1-.1 0-.2.1-.3.1-.3.1-.6.2-1 .3-.6.2-1.2.4-1.8.7-.4.2-.7.3-1.1.5-.1.1-.2.1-.4.2-.1 0-.2.1-.3.1-.6.3-1.1.5-1.7.8-.2.1-.5.2-.7.4-.1 0-.2.1-.3.1-.1 0-.1.1-.2.1-.2.1-.3.2-.5.3-.7.4-1.5.8-2.2 1.2-.1.1-.2.1-.3.2-.6.4-1.2.7-1.8 1.1-.2.1-.4.3-.6.4-.1.1-.2.1-.3.2-.1.1-.3.2-.4.3-.7.5-1.3.9-2 1.4-.2.1-.4.3-.5.4-.1.1-.1.1-.2.1-.7.6-1.5 1.2-2.2 1.8-.1 0-.1.1-.2.1-.1.1-.3.2-.4.4-.4.3-.7.6-1.1 1-.3.2-.5.5-.8.7-.2.2-.4.4-.7.6-.8.7-1.5 1.5-2.3 2.3-1.7 1.8-3.2 3.7-4.8 5.7-1.5 2-3 4.2-4.3 6.5-1.4 2.3-2.7 4.7-3.9 7.3-1.2 2.6-2.4 5.3-3.4 8.1-1.1 2.8-2.1 5.8-3 8.9-.9 3.1-1.7 6.3-2.4 9.6s-1.3 6.8-1.9 10.4c-.5 3.6-1 7.3-1.3 11.1-.4 3.8-.6 7.5-.7 11.2-.1 3.6-.2 7.1-.1 10.5.1 3.4.3 6.7.6 9.9s.7 6.3 1.3 9.3c.5 3 1.2 5.9 1.9 8.6.7 2.8 1.5 5.4 2.4 8 .9 2.5 1.9 5 3 7.3s2.3 4.5 3.6 6.6c.4.7.9 1.4 1.3 2.1.4.7.9 1.3 1.4 2s.9 1.3 1.4 1.9l1.5 1.8 8.3 9.9c-.5-.6-1.1-1.3-1.6-2s-1-1.3-1.5-2l-1.5-2.1c-.5-.7-1-1.5-1.4-2.2-1.4-2.3-2.7-4.6-3.9-7.1-1.2-2.5-2.3-5.1-3.2-7.8-1-2.7-1.9-5.6-2.6-8.6-.8-3-1.4-6.1-2-9.3-.6-3.2-1-6.5-1.3-10-.3-3.4-.5-7-.6-10.7-.1-3.7-.1-7.5.1-11.3.1-3.9.4-7.9.8-12s.9-8.1 1.4-12c.6-3.9 1.3-7.6 2-11.2.8-3.6 1.6-7 2.6-10.4 1-3.3 2-6.5 3.2-9.6 1.2-3.1 2.4-6 3.7-8.7 1.3-2.8 2.7-5.4 4.2-7.9s3-4.8 4.7-7c1.6-2.2 3.3-4.2 5.1-6.1.8-.9 1.6-1.7 2.4-2.5.2-.3.4-.5.6-.7z"
5690
+ }
5691
+ ),
5692
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5693
+ "path",
5694
+ {
5695
+ className: "lettersFront",
5696
+ stroke: "#265D85",
5697
+ strokeLinecap: "round",
5698
+ strokeLinejoin: "round",
5699
+ strokeMiterlimit: "10",
5700
+ strokeWidth: "2.5",
5701
+ fill: "#67B1E0",
5702
+ d: "M436.1 339.3c.5 3.1 1 6.4 1.3 9.8.3 3.4.5 6.9.6 10.4.1 3.6 0 7.3-.1 11.1-.2 3.8-.4 7.8-.8 11.8-.4 4.1-.9 8-1.5 11.8-.6 3.8-1.3 7.5-2 11-.8 3.5-1.6 6.9-2.6 10.2-1 3.3-2 6.4-3.1 9.5-1.1 3-2.4 5.9-3.6 8.7-1.3 2.8-2.7 5.4-4.1 7.9-1.4 2.5-3 4.9-4.6 7.1-1.6 2.2-3.3 4.3-5 6.3-1.8 2-3.6 3.8-5.5 5.5-1.9 1.7-3.8 3.3-5.8 4.7-2 1.4-4.1 2.7-6.2 3.9-2.1 1.2-4.3 2.2-6.6 3.1-2.3.9-4.6 1.7-6.9 2.3-2.3.6-4.7 1.1-7.2 1.5-2.4.3-4.9.6-7.4.6-2.5.1-5.1 0-7.7-.2-2.6-.2-5.2-.5-7.7-1s-4.9-1.1-7.3-1.8c-2.4-.7-4.6-1.6-6.8-2.6s-4.3-2.1-6.4-3.4c-2.1-1.3-4-2.6-5.9-4.1-1.9-1.5-3.7-3.1-5.4-4.9-1.7-1.8-3.4-3.6-4.9-5.6-1.6-2-3-4.1-4.4-6.4-1.4-2.3-2.7-4.6-3.9-7.1-1.2-2.5-2.3-5.1-3.2-7.8-1-2.7-1.9-5.6-2.6-8.6-.8-3-1.4-6.1-2-9.3-.6-3.2-1-6.5-1.3-10-.3-3.4-.5-7-.6-10.7-.1-3.7-.1-7.5.1-11.3.1-3.9.4-7.9.8-12s.9-8.1 1.4-12c.6-3.9 1.3-7.6 2-11.2.8-3.6 1.6-7 2.6-10.4 1-3.3 2-6.5 3.2-9.6 1.2-3.1 2.4-6 3.7-8.7 1.3-2.8 2.7-5.4 4.2-7.9s3-4.8 4.7-7c1.6-2.2 3.3-4.2 5.1-6.1 1.8-1.9 3.6-3.7 5.5-5.3 1.9-1.6 3.9-3.1 5.9-4.5 2-1.4 4.1-2.6 6.3-3.7 2.1-1.1 4.4-2.1 6.6-2.9 2.3-.8 4.6-1.5 6.9-2.1 2.4-.5 4.8-1 7.2-1.2 2.5-.3 5-.4 7.5-.4 2.6 0 5.2.1 7.8.4 2.6.3 5.1.7 7.6 1.2s4.9 1.2 7.2 1.9c2.3.8 4.6 1.6 6.8 2.7 2.2 1 4.3 2.1 6.4 3.4 2.1 1.3 4 2.6 5.9 4.1 1.9 1.5 3.7 3.1 5.4 4.8 1.7 1.7 3.3 3.6 4.9 5.6 1.5 2 3 4.1 4.3 6.3 1.4 2.2 2.6 4.6 3.8 7 1.2 2.4 2.2 5 3.2 7.7.9 2.7 1.8 5.5 2.5 8.4.5 3 1.1 6 1.7 9.1zm-52 69.5c.5-1.9 1-4 1.4-6.3.4-2.2.9-4.6 1.3-7.2.4-2.6.8-5.3 1.1-8.1.4-2.9.7-5.9 1-9 .3-3.2.6-6.2.8-9 .2-2.9.3-5.6.4-8.1.1-2.6.1-5 .1-7.2 0-2.3-.1-4.3-.2-6.3-.1-1.9-.3-3.8-.5-5.5-.2-1.7-.4-3.4-.7-4.9-.3-1.5-.5-2.9-.9-4.3-.3-1.3-.7-2.5-1.1-3.6-.4-1.1-.8-2.1-1.3-3.1-.5-.9-.9-1.8-1.5-2.5-.5-.8-1.1-1.4-1.7-2-.6-.6-1.2-1.1-1.8-1.5-.6-.4-1.3-.7-2-1.1-.7-.3-1.4-.6-2-.8l-2.1-.6c-.7-.2-1.5-.3-2.2-.3-.8-.1-1.5-.1-2.2-.1-.7 0-1.5.1-2.2.2-.7.1-1.5.2-2.2.4-.7.2-1.4.4-2.1.7-.7.3-1.4.6-2.1 1.1-.7.5-1.4 1-2 1.6-.7.6-1.3 1.4-1.9 2.2-.6.8-1.2 1.7-1.8 2.8-.6 1-1.2 2.1-1.8 3.4-.6 1.2-1.1 2.6-1.7 4-.5 1.5-1.1 3-1.6 4.7-.5 1.7-1 3.5-1.5 5.4-.5 1.9-.9 4-1.4 6.2-.4 2.2-.9 4.6-1.2 7.1-.4 2.5-.8 5.2-1.1 8.1-.3 2.9-.7 5.9-1 9.1-.3 3.2-.6 6.2-.8 9.1-.2 2.9-.3 5.6-.4 8.2-.1 2.6-.1 5-.1 7.3s.1 4.4.2 6.4.3 3.9.4 5.7c.2 1.8.4 3.5.7 5 .3 1.6.5 3 .9 4.4.3 1.4.7 2.6 1.1 3.8.4 1.2.8 2.2 1.3 3.2s.9 1.9 1.5 2.6c.5.8 1.1 1.5 1.6 2.1.6.6 1.2 1.1 1.8 1.6.6.4 1.3.8 2 1.2.7.3 1.3.6 2 .9l2.1.6c.7.2 1.5.3 2.2.3.7.1 1.5.1 2.2 0 .7 0 1.5-.1 2.2-.2.7-.1 1.5-.3 2.2-.5.7-.2 1.4-.5 2.1-.8.7-.3 1.4-.7 2.1-1.2.7-.5 1.4-1.1 2-1.8.7-.7 1.3-1.5 1.9-2.4.6-.9 1.2-1.8 1.8-2.9.6-1.1 1.2-2.2 1.8-3.5.6-1.3 1.1-2.7 1.7-4.2.5-1.5 1.1-3.1 1.6-4.8.6-1.9 1.1-3.7 1.6-5.6"
5703
+ }
5704
+ ),
5705
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5706
+ "path",
5707
+ {
5708
+ className: "lettersSide",
5709
+ stroke: "#265D85",
5710
+ strokeLinecap: "round",
5711
+ strokeLinejoin: "round",
5712
+ strokeMiterlimit: "10",
5713
+ strokeWidth: "2.5",
5714
+ fill: "#3A7199",
5715
+ d: "M548.6 448.8l-18.7-2.8 13.4 7.7 20.1 2.9zM480.2 475.8l-6 39.3 9.2 13 6.4-42.4zM499.1 425.2c.1-.8.3-1.6.4-2.5.1-.8.3-1.7.4-2.6.1-.9.3-1.8.5-2.7.2-.9.3-1.9.5-2.9s.4-1.9.5-2.9c.2-1 .4-2 .6-2.9l.6-3 .6-3 .6-3 .6-3c.2-1 .4-2 .6-2.9.2-1 .4-2 .6-2.9.2-1 .4-1.9.6-2.8l.6-2.7c.2-.9.4-1.7.6-2.6.2-.8.4-1.7.5-2.5l-10.9-2.4c-.2.7-.3 1.5-.5 2.3-.2.8-.3 1.6-.5 2.4-.2.8-.3 1.7-.5 2.5-.2.9-.4 1.7-.5 2.6l-.6 2.7-.6 2.7-.6 2.7c-.2.9-.4 1.8-.6 2.8-.2.9-.4 1.8-.6 2.8-.2.9-.4 1.8-.5 2.8-.2.9-.3 1.8-.5 2.7-.2.9-.3 1.8-.5 2.7-.2.9-.3 1.8-.5 2.6-.1.9-.3 1.7-.4 2.5-.1.8-.3 1.6-.4 2.4-.1.8-.2 1.5-.4 2.3l-3.1 20.1-30-4.4 7.8 6.9 32.3 4.7 3.3-21.5zM486.2 336.1l-76.3 95.3-5 33.7 3.8 9.2 5.5-36.2 82.1-102.8z"
5716
+ }
5717
+ ),
5718
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5719
+ "path",
5720
+ {
5721
+ className: "lettersFront",
5722
+ stroke: "#265D85",
5723
+ strokeLinecap: "round",
5724
+ strokeLinejoin: "round",
5725
+ strokeMiterlimit: "10",
5726
+ strokeWidth: "2.5",
5727
+ fill: "#67B1E0",
5728
+ d: "M543.3 453.7l20.1 2.9-6 38.6-20-2.8-6.5 42.1-47.4-6.5 6.5-42.3-81.1-11.4 5.4-36.2 82.2-102.8 63.8 9.9-17 108.5zm-37.7-62.8c.2-1 .4-1.9.6-2.8l.6-2.7c.2-.9.4-1.7.6-2.6.2-.8.4-1.7.5-2.5l-1.2-.2c-.8 1.4-1.6 2.7-2.5 4.1s-1.7 2.7-2.5 4c-.8 1.3-1.7 2.7-2.5 4-.9 1.3-1.7 2.6-2.6 4-.9 1.3-1.7 2.6-2.6 3.9-.9 1.3-1.8 2.6-2.7 4s-1.8 2.7-2.7 4-1.8 2.7-2.7 4L463.6 442l32.3 4.7 3.3-21.6c.1-.8.3-1.6.4-2.5.1-.8.3-1.7.4-2.6.1-.9.3-1.8.5-2.7.2-.9.3-1.9.5-2.9s.4-1.9.5-2.9c.2-1 .4-2 .6-2.9l.6-3 .6-3 .6-3 .6-3c.2-1 .4-2 .6-2.9.1-.8.3-1.8.5-2.8"
5729
+ }
5730
+ )
5731
+ ] })
5732
+ ]
5733
+ }
5734
+ )
5735
+ ] });
5736
+ }
5737
+
5738
+ // packages/not-found/src/index.tsx
5739
+ var import_jsx_runtime39 = require("react/jsx-runtime");
5740
+ var variants = ["caveman", "bad_dream", "electric_shock"];
5741
+ var copy2 = {
5742
+ caveman: {
5743
+ title: "This page is history.",
5744
+ description: "The page you are looking for could not be found."
5745
+ },
5746
+ bad_dream: {
5747
+ title: "Hello?? Is somebody there?!?",
5748
+ description: "The page you are trying to reach cannot be found. Perhaps it was just a bad dream?"
5749
+ },
5750
+ electric_shock: {
5751
+ title: "Looks like you\u2019re lost",
5752
+ description: "The page you are looking for is not available."
5753
+ }
5754
+ };
5755
+ function NotFoundScene({
5756
+ variant,
5757
+ title,
5758
+ description,
5759
+ action,
5760
+ homeLabel = "Go to Home",
5761
+ homeHref = "/",
5762
+ onHomeClick,
5763
+ animated = true,
5764
+ className,
5765
+ ...props
5766
+ }) {
5767
+ const titleId = (0, import_react32.useId)();
5768
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
5769
+ "section",
5770
+ {
5771
+ "aria-labelledby": titleId,
5772
+ ...props,
5773
+ className: ["fe-not-found", `fe-not-found--${variant}`, className].filter(Boolean).join(" "),
5774
+ "data-variant": variant,
5775
+ "data-animated": animated,
5776
+ children: [
5777
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "fe-not-found__art", "aria-hidden": "true", children: [
5778
+ variant === "caveman" && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(CavemanArtwork, {}),
5779
+ variant === "bad_dream" && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(YetiArtwork, {}),
5780
+ variant === "electric_shock" && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "fe-not-found__lost-art", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { children: "404" }) })
5781
+ ] }),
5782
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "fe-not-found__content", children: [
5783
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("h2", { id: titleId, className: "fe-not-found__title", children: [
5784
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "fe-not-found__sr-only", children: "404: " }),
5785
+ title === void 0 ? copy2[variant].title : title
5786
+ ] }),
5787
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "fe-not-found__description", children: description === void 0 ? copy2[variant].description : description }),
5788
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "fe-not-found__actions", children: action !== void 0 ? action : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5789
+ Button,
5790
+ {
5791
+ hierarchy: "primary",
5792
+ size: "40",
5793
+ content: homeLabel,
5794
+ onClick: onHomeClick ?? (() => window.location.assign(homeHref))
5795
+ }
5796
+ ) })
5797
+ ] })
5798
+ ]
5799
+ }
5800
+ );
5801
+ }
5802
+ function NotFoundCaveman(props) {
5803
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(NotFoundScene, { ...props, variant: "caveman" });
5804
+ }
5805
+ function NotFoundYeti(props) {
5806
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(NotFoundScene, { ...props, variant: "bad_dream" });
5807
+ }
5808
+ function NotFoundLost(props) {
5809
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(NotFoundScene, { ...props, variant: "electric_shock" });
5810
+ }
5811
+ function NotFound({ variant = "random", ...props }) {
5812
+ const [randomVariant, setRandomVariant] = (0, import_react32.useState)("caveman");
5813
+ const picked = (0, import_react32.useRef)(false);
5814
+ (0, import_react32.useEffect)(() => {
5815
+ if (variant === "random" && !picked.current) {
5816
+ picked.current = true;
5817
+ setRandomVariant(
5818
+ variants[Math.floor(Math.random() * variants.length)] ?? "caveman"
5819
+ );
5820
+ }
5821
+ }, [variant]);
5822
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5823
+ NotFoundScene,
5824
+ {
5825
+ ...props,
5826
+ variant: variant === "random" ? randomVariant : variant
5827
+ }
5828
+ );
5829
+ }
3266
5830
  // Annotate the CommonJS export names for ESM import in node:
3267
5831
  0 && (module.exports = {
3268
5832
  Avatar,
@@ -3277,14 +5841,29 @@ function AvatarGroup({
3277
5841
  CurrencyInput,
3278
5842
  DateTimePicker,
3279
5843
  Drawer,
5844
+ DrawerWidths,
5845
+ EmailInput,
3280
5846
  ExpandableSection,
5847
+ EyeIcon,
5848
+ EyeOffIcon,
5849
+ FILE_UPLOAD_ACCEPTS,
5850
+ FilePreview,
5851
+ FileUpload,
3281
5852
  Loading,
5853
+ MailboxIcon,
3282
5854
  Message,
3283
5855
  Modal,
3284
5856
  MoreHorizontalIcon,
3285
5857
  MoreVerticalIcon,
5858
+ NotFound,
5859
+ NotFoundCaveman,
5860
+ NotFoundLost,
5861
+ NotFoundYeti,
3286
5862
  NumberInput,
3287
5863
  Pagination,
5864
+ PasswordInput,
5865
+ PhoneIcon,
5866
+ PhoneNumberInput,
3288
5867
  PlusIcon,
3289
5868
  ProgressBar,
3290
5869
  RadioButton,
@@ -3316,7 +5895,9 @@ function AvatarGroup({
3316
5895
  chevron_right,
3317
5896
  chevron_up,
3318
5897
  copy,
5898
+ formatFileSize,
3319
5899
  formatNumber,
5900
+ getFilePreviewKind,
3320
5901
  getIconSize,
3321
5902
  key,
3322
5903
  lock,
@@ -3324,9 +5905,13 @@ function AvatarGroup({
3324
5905
  log_out,
3325
5906
  message,
3326
5907
  minus_square,
5908
+ normalizePhoneNumber,
3327
5909
  plus,
3328
5910
  plus_square,
3329
5911
  search,
3330
5912
  trash,
5913
+ validateEmail,
5914
+ validatePassword,
5915
+ validatePhoneNumber,
3331
5916
  x_close
3332
5917
  });