@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.mjs CHANGED
@@ -2,8 +2,12 @@ import {
2
2
  ChevronDownIcon,
3
3
  ChevronUpIcon,
4
4
  CloseIcon,
5
+ EyeIcon,
6
+ EyeOffIcon,
7
+ MailboxIcon,
5
8
  MoreHorizontalIcon,
6
9
  MoreVerticalIcon,
10
+ PhoneIcon,
7
11
  PlusIcon,
8
12
  SearchIcon,
9
13
  arrow_left,
@@ -23,7 +27,7 @@ import {
23
27
  search,
24
28
  trash,
25
29
  x_close
26
- } from "./chunk-HM3V3DVO.mjs";
30
+ } from "./chunk-BAZJ5UJ5.mjs";
27
31
 
28
32
  // packages/button/src/index.tsx
29
33
  import { forwardRef } from "react";
@@ -708,41 +712,264 @@ var Toggle = forwardRef3(function Toggle2({
708
712
  Toggle.displayName = "Toggle";
709
713
 
710
714
  // packages/drawer/src/index.tsx
711
- import { useEffect as useEffect4 } from "react";
715
+ import {
716
+ useId as useId3,
717
+ useRef as useRef5
718
+ } from "react";
712
719
  import { createPortal } from "react-dom";
713
- import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
714
- function Drawer({ open, onClose, title, footer, side = "right", width = 400, fullScreen = false, children, closeOnBackdropClick = true, className, style, ...props }) {
715
- useEffect4(() => {
716
- if (!open) return;
720
+
721
+ // packages/overlay/src/useModalOverlay.ts
722
+ import { useEffect as useEffect4, useLayoutEffect, useRef as useRef4 } from "react";
723
+ var FOCUSABLE_SELECTOR = [
724
+ "a[href]",
725
+ "area[href]",
726
+ "input:not([disabled])",
727
+ "select:not([disabled])",
728
+ "textarea:not([disabled])",
729
+ "button:not([disabled])",
730
+ "iframe",
731
+ "object",
732
+ "embed",
733
+ '[contenteditable="true"]',
734
+ '[tabindex]:not([tabindex="-1"])'
735
+ ].join(",");
736
+ var overlayStack = [];
737
+ var scrollLockCount = 0;
738
+ var savedBodyStyles = null;
739
+ var useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect4 : useLayoutEffect;
740
+ function lockBodyScroll() {
741
+ if (typeof document === "undefined" || scrollLockCount++ > 0) return;
742
+ const { body, documentElement } = document;
743
+ savedBodyStyles = {
744
+ overflow: body.style.overflow,
745
+ overscrollBehavior: body.style.overscrollBehavior,
746
+ paddingRight: body.style.paddingRight
747
+ };
748
+ const scrollbarWidth = Math.max(
749
+ 0,
750
+ window.innerWidth - documentElement.clientWidth
751
+ );
752
+ const currentPadding = Number.parseFloat(window.getComputedStyle(body).paddingRight) || 0;
753
+ body.style.overflow = "hidden";
754
+ body.style.overscrollBehavior = "none";
755
+ if (scrollbarWidth > 0)
756
+ body.style.paddingRight = `${currentPadding + scrollbarWidth}px`;
757
+ }
758
+ function unlockBodyScroll() {
759
+ if (typeof document === "undefined" || scrollLockCount === 0) return;
760
+ scrollLockCount -= 1;
761
+ if (scrollLockCount > 0 || !savedBodyStyles) return;
762
+ const { body } = document;
763
+ body.style.overflow = savedBodyStyles.overflow;
764
+ body.style.overscrollBehavior = savedBodyStyles.overscrollBehavior;
765
+ body.style.paddingRight = savedBodyStyles.paddingRight;
766
+ savedBodyStyles = null;
767
+ }
768
+ function getFocusableElements(panel) {
769
+ return Array.from(
770
+ panel.querySelectorAll(FOCUSABLE_SELECTOR)
771
+ ).filter(
772
+ (element) => element.tabIndex >= 0 && !element.hasAttribute("disabled") && element.getAttribute("aria-hidden") !== "true"
773
+ );
774
+ }
775
+ function getTopOverlay() {
776
+ return overlayStack.reduce((top, candidate) => {
777
+ if (!top || candidate.priority > top.priority) return candidate;
778
+ if (candidate.priority < top.priority) return top;
779
+ const topNode = top.panelRef.current?.parentElement;
780
+ const candidateNode = candidate.panelRef.current?.parentElement;
781
+ if (topNode && candidateNode) {
782
+ const position = topNode.compareDocumentPosition(candidateNode);
783
+ if (position & Node.DOCUMENT_POSITION_FOLLOWING) return candidate;
784
+ if (position & Node.DOCUMENT_POSITION_PRECEDING) return top;
785
+ }
786
+ return candidate;
787
+ }, void 0);
788
+ }
789
+ function useModalOverlay(options) {
790
+ const overlayIdRef = useRef4();
791
+ const previouslyFocusedRef = useRef4(null);
792
+ const optionsRef = useRef4(options);
793
+ optionsRef.current = options;
794
+ if (!overlayIdRef.current) overlayIdRef.current = /* @__PURE__ */ Symbol("fe-overlay");
795
+ useIsomorphicLayoutEffect(() => {
796
+ if (!options.open || typeof document === "undefined") return;
797
+ const overlayId = overlayIdRef.current;
798
+ previouslyFocusedRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
799
+ overlayStack.push({
800
+ id: overlayId,
801
+ panelRef: options.panelRef,
802
+ priority: options.priority ?? 0
803
+ });
804
+ lockBodyScroll();
805
+ const focusInitialElement = () => {
806
+ const { initialFocusRef, panelRef } = optionsRef.current;
807
+ const focusTarget = initialFocusRef?.current ?? panelRef.current;
808
+ focusTarget?.focus();
809
+ };
810
+ let cancelled = false;
811
+ queueMicrotask(() => {
812
+ if (!cancelled && getTopOverlay()?.id === overlayId)
813
+ focusInitialElement();
814
+ });
717
815
  const onKeyDown = (event) => {
718
- if (event.key === "Escape") onClose();
816
+ if (getTopOverlay()?.id !== overlayId) return;
817
+ if (event.key === "Escape") {
818
+ if (optionsRef.current.closeOnEscape !== false) {
819
+ event.preventDefault();
820
+ optionsRef.current.onClose();
821
+ }
822
+ return;
823
+ }
824
+ if (event.key !== "Tab") return;
825
+ const panel = optionsRef.current.panelRef.current;
826
+ if (!panel) return;
827
+ const focusable = getFocusableElements(panel);
828
+ if (!focusable.length) {
829
+ event.preventDefault();
830
+ panel.focus();
831
+ return;
832
+ }
833
+ const first = focusable[0];
834
+ const last = focusable[focusable.length - 1];
835
+ const activeElement = document.activeElement;
836
+ if (event.shiftKey && (activeElement === first || !panel.contains(activeElement))) {
837
+ event.preventDefault();
838
+ last.focus();
839
+ } else if (!event.shiftKey && (activeElement === last || !panel.contains(activeElement))) {
840
+ event.preventDefault();
841
+ first.focus();
842
+ }
719
843
  };
720
844
  document.addEventListener("keydown", onKeyDown);
721
- return () => document.removeEventListener("keydown", onKeyDown);
722
- }, [onClose, open]);
845
+ return () => {
846
+ document.removeEventListener("keydown", onKeyDown);
847
+ cancelled = true;
848
+ const stackIndex = overlayStack.findIndex(
849
+ (entry) => entry.id === overlayId
850
+ );
851
+ if (stackIndex !== -1) overlayStack.splice(stackIndex, 1);
852
+ unlockBodyScroll();
853
+ if (optionsRef.current.restoreFocus !== false) {
854
+ const nextOverlay = getTopOverlay()?.panelRef.current;
855
+ if (nextOverlay) nextOverlay.focus();
856
+ else if (previouslyFocusedRef.current?.isConnected) {
857
+ previouslyFocusedRef.current.focus();
858
+ }
859
+ }
860
+ };
861
+ }, [options.open, options.panelRef]);
862
+ }
863
+
864
+ // packages/drawer/src/index.tsx
865
+ import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
866
+ var DrawerWidths = {
867
+ small: 360,
868
+ medium: 400,
869
+ large: 480
870
+ };
871
+ function Drawer({
872
+ open,
873
+ onClose,
874
+ title,
875
+ description,
876
+ footer,
877
+ side = "right",
878
+ width = DrawerWidths.medium,
879
+ fullScreen = false,
880
+ children,
881
+ closeOnBackdropClick = true,
882
+ closeOnEscape = true,
883
+ closeLabel = "Close drawer",
884
+ initialFocusRef,
885
+ restoreFocus = true,
886
+ className,
887
+ style,
888
+ "aria-label": ariaLabel,
889
+ "aria-describedby": ariaDescribedBy,
890
+ ...props
891
+ }) {
892
+ const titleId = useId3();
893
+ const descriptionId = useId3();
894
+ const panelRef = useRef5(null);
895
+ useModalOverlay({
896
+ open,
897
+ onClose,
898
+ panelRef,
899
+ priority: 1e3,
900
+ closeOnEscape,
901
+ initialFocusRef,
902
+ restoreFocus
903
+ });
723
904
  if (!open || typeof document === "undefined") return null;
724
905
  const panelStyle = !fullScreen && (side === "left" || side === "right") ? { ...style, width: typeof width === "number" ? `${width}px` : width } : style;
725
- return createPortal(/* @__PURE__ */ jsx7("div", { className: "fe-drawer-backdrop", role: "presentation", onMouseDown: (event) => {
726
- if (event.target === event.currentTarget && closeOnBackdropClick) onClose();
727
- }, children: /* @__PURE__ */ jsxs7("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: [
728
- /* @__PURE__ */ jsxs7("header", { className: "fe-drawer__header", children: [
729
- title && /* @__PURE__ */ jsx7("h2", { children: title }),
730
- /* @__PURE__ */ jsx7("button", { type: "button", "aria-label": "Close drawer", onClick: onClose, children: "\xD7" })
731
- ] }),
732
- /* @__PURE__ */ jsx7("div", { className: "fe-drawer__body", children }),
733
- footer && /* @__PURE__ */ jsx7("footer", { className: "fe-drawer__footer", children: footer })
734
- ] }) }), document.body);
906
+ const describedBy = [description ? descriptionId : void 0, ariaDescribedBy].filter(Boolean).join(" ") || void 0;
907
+ return createPortal(
908
+ /* @__PURE__ */ jsx7(
909
+ "div",
910
+ {
911
+ className: "fe-drawer-backdrop",
912
+ role: "presentation",
913
+ onMouseDown: (event) => {
914
+ if (event.target === event.currentTarget && closeOnBackdropClick)
915
+ onClose();
916
+ },
917
+ children: /* @__PURE__ */ jsxs7(
918
+ "aside",
919
+ {
920
+ ref: panelRef,
921
+ className: [
922
+ "fe-drawer",
923
+ `fe-drawer--${side}`,
924
+ fullScreen && "fe-drawer--full-screen",
925
+ className
926
+ ].filter(Boolean).join(" "),
927
+ style: panelStyle,
928
+ role: "dialog",
929
+ "aria-modal": "true",
930
+ "aria-labelledby": title ? titleId : void 0,
931
+ "aria-describedby": describedBy,
932
+ "aria-label": ariaLabel ?? (title ? void 0 : "Drawer"),
933
+ tabIndex: -1,
934
+ ...props,
935
+ children: [
936
+ /* @__PURE__ */ jsxs7("header", { className: "fe-drawer__header", children: [
937
+ (title || description) && /* @__PURE__ */ jsxs7("div", { className: "fe-drawer__heading", children: [
938
+ title && /* @__PURE__ */ jsx7("h2", { id: titleId, children: title }),
939
+ description && /* @__PURE__ */ jsx7("p", { id: descriptionId, children: description })
940
+ ] }),
941
+ /* @__PURE__ */ jsx7(
942
+ Button,
943
+ {
944
+ hierarchy: "tertiary-gray",
945
+ size: "32",
946
+ iconOnly: true,
947
+ icon: /* @__PURE__ */ jsx7(CloseIcon, {}),
948
+ "aria-label": closeLabel,
949
+ onClick: onClose
950
+ }
951
+ )
952
+ ] }),
953
+ /* @__PURE__ */ jsx7("div", { className: "fe-drawer__body", children }),
954
+ footer && /* @__PURE__ */ jsx7("footer", { className: "fe-drawer__footer", children: footer })
955
+ ]
956
+ }
957
+ )
958
+ }
959
+ ),
960
+ document.body
961
+ );
735
962
  }
736
963
 
737
964
  // packages/form-controls/src/controls/TextInput/text-input.tsx
738
- import { forwardRef as forwardRef4, useId as useId4, useState as useState6 } from "react";
965
+ import { forwardRef as forwardRef4, useId as useId5, useState as useState6 } from "react";
739
966
 
740
967
  // packages/tooltip/src/index.tsx
741
- import { cloneElement, useId as useId3, useState as useState5 } from "react";
968
+ import { cloneElement, useId as useId4, useState as useState5 } from "react";
742
969
  import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
743
970
  function Tooltip({ content, children, placement = "top", disabled, className, ...props }) {
744
971
  const [visible, setVisible] = useState5(false);
745
- const id = useId3();
972
+ const id = useId4();
746
973
  const trigger = cloneElement(children, { "aria-describedby": visible ? id : void 0, onMouseEnter: (event) => {
747
974
  children.props.onMouseEnter?.(event);
748
975
  setVisible(true);
@@ -848,7 +1075,7 @@ var TextInput = forwardRef4(
848
1075
  "aria-labelledby": ariaLabelledBy,
849
1076
  ...props
850
1077
  }, ref) {
851
- const generatedId = useId4();
1078
+ const generatedId = useId5();
852
1079
  const inputId = id ?? generatedId + "-input";
853
1080
  const labelId = generatedId + "-label";
854
1081
  const messageId2 = generatedId + "-message";
@@ -953,17 +1180,264 @@ var TextInput = forwardRef4(
953
1180
  );
954
1181
  TextInput.displayName = "TextInput";
955
1182
 
1183
+ // packages/form-controls/src/controls/EmailInput/email-input.tsx
1184
+ import { forwardRef as forwardRef5 } from "react";
1185
+
1186
+ // packages/form-controls/src/controls/ValidatedInput/validation.ts
1187
+ import { useState as useState7 } from "react";
1188
+ var invalidValueMessage = "Invalid value.";
1189
+ function toValidationError(result) {
1190
+ if (typeof result === "string") return result || void 0;
1191
+ return result === false ? invalidValueMessage : void 0;
1192
+ }
1193
+ function validateEmail(value, required = false) {
1194
+ const email = value.trim();
1195
+ if (!email) return required ? "Email is required." : void 0;
1196
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email) ? void 0 : "Enter a valid email address.";
1197
+ }
1198
+ function validatePassword(value, required = false) {
1199
+ if (!value) return required ? "Password is required." : void 0;
1200
+ if (value.length < 8) return "Use at least 8 characters.";
1201
+ if (!/[a-z]/.test(value) || !/[A-Z]/.test(value) || !/\d/.test(value))
1202
+ return "Include uppercase, lowercase, and a number.";
1203
+ return void 0;
1204
+ }
1205
+ function validatePhoneNumber(value, required = false) {
1206
+ const phoneNumber = value.trim();
1207
+ if (!phoneNumber) return required ? "Phone number is required." : void 0;
1208
+ if (!/^\+?[\d() ]+$/.test(phoneNumber))
1209
+ return "Use only numbers, spaces, parentheses, and an optional leading +.";
1210
+ const digitCount = phoneNumber.replace(/\D/g, "").length;
1211
+ return digitCount >= 7 && digitCount <= 15 ? void 0 : "Enter a phone number with 7 to 15 digits.";
1212
+ }
1213
+ function normalizePhoneNumber(value) {
1214
+ return value.replace(/[^\d+() ]/g, "");
1215
+ }
1216
+ function useInputValidation({
1217
+ error,
1218
+ errorMessage,
1219
+ isRequired = false,
1220
+ required = false,
1221
+ validate,
1222
+ validateOn = "blur",
1223
+ builtInValidator
1224
+ }) {
1225
+ const [validationError, setValidationError] = useState7();
1226
+ const [hasValidated, setHasValidated] = useState7(false);
1227
+ const hasExternalError = error !== void 0 || errorMessage !== void 0;
1228
+ const validateValue = (value) => {
1229
+ const builtInError = builtInValidator(value, isRequired || required);
1230
+ const customError = builtInError ? void 0 : toValidationError(validate?.(value));
1231
+ const nextError = builtInError ?? customError;
1232
+ setHasValidated(true);
1233
+ setValidationError(nextError);
1234
+ return nextError;
1235
+ };
1236
+ return {
1237
+ error: hasExternalError ? getFieldError(error, errorMessage) : validationError,
1238
+ onValueChange(value) {
1239
+ if (validateOn === "change" || hasValidated) validateValue(value);
1240
+ },
1241
+ onBlur(value) {
1242
+ if (validateOn === "blur") validateValue(value);
1243
+ }
1244
+ };
1245
+ }
1246
+
1247
+ // packages/form-controls/src/controls/EmailInput/email-input.tsx
1248
+ import { jsx as jsx11 } from "react/jsx-runtime";
1249
+ var EmailInput = forwardRef5(
1250
+ function EmailInput2({
1251
+ error,
1252
+ errorMessage,
1253
+ isRequired,
1254
+ required,
1255
+ validate,
1256
+ validateOn,
1257
+ onBlur,
1258
+ onValueChange,
1259
+ autoComplete,
1260
+ className,
1261
+ ...props
1262
+ }, ref) {
1263
+ const validation = useInputValidation({
1264
+ error,
1265
+ errorMessage,
1266
+ isRequired,
1267
+ required,
1268
+ validate,
1269
+ validateOn,
1270
+ builtInValidator: validateEmail
1271
+ });
1272
+ return /* @__PURE__ */ jsx11(
1273
+ TextInput,
1274
+ {
1275
+ ...props,
1276
+ ref,
1277
+ className: ["fe-email-input", className].filter(Boolean).join(" "),
1278
+ type: "email",
1279
+ inputMode: "email",
1280
+ autoComplete: autoComplete ?? "email",
1281
+ isRequired,
1282
+ required,
1283
+ prefix: /* @__PURE__ */ jsx11(MailboxIcon, { size: 18 }),
1284
+ error: validation.error,
1285
+ onValueChange: (value) => {
1286
+ validation.onValueChange(value);
1287
+ onValueChange?.(value);
1288
+ },
1289
+ onBlur: (event) => {
1290
+ validation.onBlur(event.currentTarget.value);
1291
+ onBlur?.(event);
1292
+ }
1293
+ }
1294
+ );
1295
+ }
1296
+ );
1297
+ EmailInput.displayName = "EmailInput";
1298
+
1299
+ // packages/form-controls/src/controls/PasswordInput/password-input.tsx
1300
+ import { forwardRef as forwardRef6, useState as useState8 } from "react";
1301
+ import { jsx as jsx12 } from "react/jsx-runtime";
1302
+ var PasswordInput = forwardRef6(
1303
+ function PasswordInput2({
1304
+ error,
1305
+ errorMessage,
1306
+ isRequired,
1307
+ required,
1308
+ validate,
1309
+ validateOn,
1310
+ onBlur,
1311
+ onValueChange,
1312
+ autoComplete,
1313
+ className,
1314
+ showPasswordLabel = "Show password",
1315
+ hidePasswordLabel = "Hide password",
1316
+ ...props
1317
+ }, ref) {
1318
+ const [visible, setVisible] = useState8(false);
1319
+ const validation = useInputValidation({
1320
+ error,
1321
+ errorMessage,
1322
+ isRequired,
1323
+ required,
1324
+ validate,
1325
+ validateOn,
1326
+ builtInValidator: validatePassword
1327
+ });
1328
+ const toggleLabel = visible ? hidePasswordLabel : showPasswordLabel;
1329
+ return /* @__PURE__ */ jsx12(
1330
+ TextInput,
1331
+ {
1332
+ ...props,
1333
+ ref,
1334
+ className: ["fe-password-input", className].filter(Boolean).join(" "),
1335
+ type: visible ? "text" : "password",
1336
+ autoComplete: autoComplete ?? "current-password",
1337
+ isRequired,
1338
+ required,
1339
+ suffix: /* @__PURE__ */ jsx12(
1340
+ Button,
1341
+ {
1342
+ hierarchy: "tertiary-gray",
1343
+ size: "24",
1344
+ iconOnly: true,
1345
+ icon: visible ? /* @__PURE__ */ jsx12(EyeOffIcon, { size: 16 }) : /* @__PURE__ */ jsx12(EyeIcon, { size: 16 }),
1346
+ "aria-label": toggleLabel,
1347
+ "aria-pressed": visible,
1348
+ className: "fe-password-input__toggle",
1349
+ onMouseDown: (event) => event.preventDefault(),
1350
+ onClick: () => setVisible((previous) => !previous)
1351
+ }
1352
+ ),
1353
+ error: validation.error,
1354
+ onValueChange: (value) => {
1355
+ validation.onValueChange(value);
1356
+ onValueChange?.(value);
1357
+ },
1358
+ onBlur: (event) => {
1359
+ validation.onBlur(event.currentTarget.value);
1360
+ onBlur?.(event);
1361
+ }
1362
+ }
1363
+ );
1364
+ }
1365
+ );
1366
+ PasswordInput.displayName = "PasswordInput";
1367
+
1368
+ // packages/form-controls/src/controls/PhoneNumberInput/phone-number-input.tsx
1369
+ import { forwardRef as forwardRef7, useState as useState9 } from "react";
1370
+ import { jsx as jsx13 } from "react/jsx-runtime";
1371
+ var PhoneNumberInput = forwardRef7(function PhoneNumberInput2({
1372
+ value,
1373
+ defaultValue = "",
1374
+ error,
1375
+ errorMessage,
1376
+ isRequired,
1377
+ required,
1378
+ validate,
1379
+ validateOn,
1380
+ onBlur,
1381
+ onValueChange,
1382
+ autoComplete,
1383
+ className,
1384
+ ...props
1385
+ }, ref) {
1386
+ const controlled = value !== void 0;
1387
+ const [uncontrolledValue, setUncontrolledValue] = useState9(
1388
+ () => normalizePhoneNumber(defaultValue)
1389
+ );
1390
+ const currentValue = controlled ? value : uncontrolledValue;
1391
+ const validation = useInputValidation({
1392
+ error,
1393
+ errorMessage,
1394
+ isRequired,
1395
+ required,
1396
+ validate,
1397
+ validateOn,
1398
+ builtInValidator: validatePhoneNumber
1399
+ });
1400
+ return /* @__PURE__ */ jsx13(
1401
+ TextInput,
1402
+ {
1403
+ ...props,
1404
+ ref,
1405
+ className: ["fe-phone-number-input", className].filter(Boolean).join(" "),
1406
+ type: "tel",
1407
+ inputMode: "tel",
1408
+ autoComplete: autoComplete ?? "tel",
1409
+ value: currentValue,
1410
+ isRequired,
1411
+ required,
1412
+ prefix: /* @__PURE__ */ jsx13(PhoneIcon, { size: 18 }),
1413
+ error: validation.error,
1414
+ onValueChange: (nextValue) => {
1415
+ const normalizedValue = normalizePhoneNumber(nextValue);
1416
+ if (!controlled) setUncontrolledValue(normalizedValue);
1417
+ validation.onValueChange(normalizedValue);
1418
+ onValueChange?.(normalizedValue);
1419
+ },
1420
+ onBlur: (event) => {
1421
+ const normalizedValue = normalizePhoneNumber(event.currentTarget.value);
1422
+ validation.onBlur(normalizedValue);
1423
+ onBlur?.(event);
1424
+ }
1425
+ }
1426
+ );
1427
+ });
1428
+ PhoneNumberInput.displayName = "PhoneNumberInput";
1429
+
956
1430
  // packages/form-controls/src/controls/TextArea/text-area.tsx
957
1431
  import {
958
- forwardRef as forwardRef5,
959
- useId as useId5,
1432
+ forwardRef as forwardRef8,
1433
+ useId as useId6,
960
1434
  useImperativeHandle,
961
- useLayoutEffect,
962
- useRef as useRef4,
963
- useState as useState7
1435
+ useLayoutEffect as useLayoutEffect2,
1436
+ useRef as useRef6,
1437
+ useState as useState10
964
1438
  } from "react";
965
- import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
966
- var TextArea = forwardRef5(
1439
+ import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
1440
+ var TextArea = forwardRef8(
967
1441
  function TextArea2({
968
1442
  value,
969
1443
  defaultValue = "",
@@ -990,13 +1464,13 @@ var TextArea = forwardRef5(
990
1464
  "aria-labelledby": ariaLabelledBy,
991
1465
  ...props
992
1466
  }, ref) {
993
- const generatedId = useId5();
1467
+ const generatedId = useId6();
994
1468
  const inputId = id ?? generatedId + "-input";
995
1469
  const labelId = generatedId + "-label";
996
1470
  const messageId2 = generatedId + "-message";
997
1471
  const controlled = value !== void 0;
998
- const [internalValue, setInternalValue] = useState7(defaultValue);
999
- const textareaRef = useRef4(null);
1472
+ const [internalValue, setInternalValue] = useState10(defaultValue);
1473
+ const textareaRef = useRef6(null);
1000
1474
  const currentValue = controlled ? value : internalValue;
1001
1475
  const fieldError = getFieldError(error, errorMessage);
1002
1476
  const hasError = fieldError !== void 0 && fieldError !== false && fieldError !== null;
@@ -1015,7 +1489,7 @@ var TextArea = forwardRef5(
1015
1489
  textarea.style.height = `${textarea.scrollHeight}px`;
1016
1490
  };
1017
1491
  useImperativeHandle(ref, () => textareaRef.current, []);
1018
- useLayoutEffect(() => {
1492
+ useLayoutEffect2(() => {
1019
1493
  if (autosize && textareaRef.current) {
1020
1494
  resizeToContent(textareaRef.current);
1021
1495
  }
@@ -1035,7 +1509,7 @@ var TextArea = forwardRef5(
1035
1509
  className
1036
1510
  ].filter(Boolean).join(" "),
1037
1511
  children: [
1038
- /* @__PURE__ */ jsx11(
1512
+ /* @__PURE__ */ jsx14(
1039
1513
  FieldLabel,
1040
1514
  {
1041
1515
  id: labelId,
@@ -1046,7 +1520,7 @@ var TextArea = forwardRef5(
1046
1520
  }
1047
1521
  ),
1048
1522
  /* @__PURE__ */ jsxs11("span", { className: "fe-text-area__control", children: [
1049
- /* @__PURE__ */ jsx11(
1523
+ /* @__PURE__ */ jsx14(
1050
1524
  "textarea",
1051
1525
  {
1052
1526
  ref: textareaRef,
@@ -1070,23 +1544,23 @@ var TextArea = forwardRef5(
1070
1544
  }
1071
1545
  ),
1072
1546
  isRequired && placeholder && !currentValue && /* @__PURE__ */ jsxs11("span", { className: "fe-text-area__placeholder", "aria-hidden": "true", children: [
1073
- /* @__PURE__ */ jsx11("span", { children: placeholder }),
1074
- /* @__PURE__ */ jsx11("span", { className: "fe-field__required", children: "*" })
1547
+ /* @__PURE__ */ jsx14("span", { children: placeholder }),
1548
+ /* @__PURE__ */ jsx14("span", { className: "fe-field__required", children: "*" })
1075
1549
  ] }),
1076
- clearable && currentValue && !disabled && !readOnly && /* @__PURE__ */ jsx11(
1550
+ clearable && currentValue && !disabled && !readOnly && /* @__PURE__ */ jsx14(
1077
1551
  Button,
1078
1552
  {
1079
1553
  hierarchy: "tertiary-gray",
1080
1554
  size: "24",
1081
1555
  iconOnly: true,
1082
- icon: /* @__PURE__ */ jsx11(CloseIcon, { size: 14 }),
1556
+ icon: /* @__PURE__ */ jsx14(CloseIcon, { size: 14 }),
1083
1557
  "aria-label": clearLabel,
1084
1558
  onClick: clear,
1085
1559
  className: "fe-text-area__clear"
1086
1560
  }
1087
1561
  )
1088
1562
  ] }),
1089
- /* @__PURE__ */ jsx11(
1563
+ /* @__PURE__ */ jsx14(
1090
1564
  FieldMessage,
1091
1565
  {
1092
1566
  id: messageId2,
@@ -1104,16 +1578,31 @@ TextArea.displayName = "TextArea";
1104
1578
 
1105
1579
  // packages/form-controls/src/controls/Selection/selection.tsx
1106
1580
  import {
1107
- forwardRef as forwardRef6,
1581
+ forwardRef as forwardRef9,
1108
1582
  useEffect as useEffect5,
1109
- useId as useId6,
1110
- useLayoutEffect as useLayoutEffect2,
1111
- useRef as useRef5,
1112
- useState as useState8
1583
+ useId as useId7,
1584
+ useLayoutEffect as useLayoutEffect3,
1585
+ useRef as useRef7,
1586
+ useState as useState11
1113
1587
  } from "react";
1114
1588
  import { createPortal as createPortal2 } from "react-dom";
1115
- import { Fragment as Fragment2, jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
1116
- var Selection = forwardRef6(
1589
+
1590
+ // packages/overlay/src/getPortalZIndex.ts
1591
+ var DEFAULT_PORTAL_Z_INDEX = 1e3;
1592
+ function getPortalZIndex(anchor) {
1593
+ if (!anchor || typeof window === "undefined") return DEFAULT_PORTAL_Z_INDEX;
1594
+ let highestAncestorZIndex = DEFAULT_PORTAL_Z_INDEX - 1;
1595
+ for (let element = anchor; element; element = element.parentElement) {
1596
+ const zIndex = Number.parseInt(window.getComputedStyle(element).zIndex, 10);
1597
+ if (Number.isFinite(zIndex))
1598
+ highestAncestorZIndex = Math.max(highestAncestorZIndex, zIndex);
1599
+ }
1600
+ return Math.max(DEFAULT_PORTAL_Z_INDEX, highestAncestorZIndex + 1);
1601
+ }
1602
+
1603
+ // packages/form-controls/src/controls/Selection/selection.tsx
1604
+ import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
1605
+ var Selection = forwardRef9(
1117
1606
  function Selection2({
1118
1607
  className,
1119
1608
  label,
@@ -1142,7 +1631,7 @@ var Selection = forwardRef6(
1142
1631
  "aria-labelledby": ariaLabelledBy,
1143
1632
  ...props
1144
1633
  }, ref) {
1145
- const generatedId = useId6();
1634
+ const generatedId = useId7();
1146
1635
  const triggerId = id ?? generatedId + "-trigger";
1147
1636
  const listboxId = triggerId + "-listbox";
1148
1637
  const labelId = generatedId + "-label";
@@ -1160,7 +1649,7 @@ var Selection = forwardRef6(
1160
1649
  label ? labelId : void 0
1161
1650
  );
1162
1651
  const isControlled = value !== void 0;
1163
- const [internalValue, setInternalValue] = useState8(
1652
+ const [internalValue, setInternalValue] = useState11(
1164
1653
  defaultValue ?? (multiple ? [] : "")
1165
1654
  );
1166
1655
  const selectedValue = isControlled ? value : internalValue;
@@ -1168,12 +1657,12 @@ var Selection = forwardRef6(
1168
1657
  const selectedOptions = options.filter(
1169
1658
  (option) => selectedValues.some((item) => String(item) === String(option.value))
1170
1659
  );
1171
- const [open, setOpen] = useState8(false);
1172
- const [query, setQuery] = useState8("");
1173
- const [activeIndex, setActiveIndex] = useState8(0);
1174
- const rootRef = useRef5(null);
1175
- const menuRef = useRef5(null);
1176
- const [menuPosition, setMenuPosition] = useState8(null);
1660
+ const [open, setOpen] = useState11(false);
1661
+ const [query, setQuery] = useState11("");
1662
+ const [activeIndex, setActiveIndex] = useState11(0);
1663
+ const rootRef = useRef7(null);
1664
+ const menuRef = useRef7(null);
1665
+ const [menuPosition, setMenuPosition] = useState11(null);
1177
1666
  useEffect5(() => {
1178
1667
  const close = (event) => {
1179
1668
  const target = event.target;
@@ -1183,7 +1672,7 @@ var Selection = forwardRef6(
1183
1672
  document.addEventListener("mousedown", close);
1184
1673
  return () => document.removeEventListener("mousedown", close);
1185
1674
  }, []);
1186
- useLayoutEffect2(() => {
1675
+ useLayoutEffect3(() => {
1187
1676
  if (!open) return;
1188
1677
  const updateMenuPosition = () => {
1189
1678
  const rect = rootRef.current?.getBoundingClientRect();
@@ -1191,7 +1680,8 @@ var Selection = forwardRef6(
1191
1680
  setMenuPosition({
1192
1681
  top: rect.bottom + 7,
1193
1682
  left: rect.left,
1194
- width: rect.width
1683
+ width: rect.width,
1684
+ zIndex: getPortalZIndex(rootRef.current)
1195
1685
  });
1196
1686
  };
1197
1687
  updateMenuPosition();
@@ -1275,7 +1765,7 @@ var Selection = forwardRef6(
1275
1765
  ].filter(Boolean).join(" "),
1276
1766
  ...props,
1277
1767
  children: [
1278
- /* @__PURE__ */ jsx12(
1768
+ /* @__PURE__ */ jsx15(
1279
1769
  FieldLabel,
1280
1770
  {
1281
1771
  id: labelId,
@@ -1286,7 +1776,7 @@ var Selection = forwardRef6(
1286
1776
  }
1287
1777
  ),
1288
1778
  /* @__PURE__ */ jsxs12("div", { ref: rootRef, className: "fe-selection__control", children: [
1289
- name && selectedValues.map((item) => /* @__PURE__ */ jsx12(
1779
+ name && selectedValues.map((item) => /* @__PURE__ */ jsx15(
1290
1780
  "input",
1291
1781
  {
1292
1782
  type: "hidden",
@@ -1313,7 +1803,7 @@ var Selection = forwardRef6(
1313
1803
  onClick: () => setOpen((current) => !current),
1314
1804
  onKeyDown: onTriggerKeyDown,
1315
1805
  children: [
1316
- /* @__PURE__ */ jsx12(
1806
+ /* @__PURE__ */ jsx15(
1317
1807
  "span",
1318
1808
  {
1319
1809
  className: [
@@ -1327,7 +1817,7 @@ var Selection = forwardRef6(
1327
1817
  className: "fe-selection__tag",
1328
1818
  children: [
1329
1819
  option.label,
1330
- /* @__PURE__ */ jsx12("span", { "aria-hidden": "true", children: "\xD7" })
1820
+ /* @__PURE__ */ jsx15("span", { "aria-hidden": "true", children: "\xD7" })
1331
1821
  ]
1332
1822
  },
1333
1823
  String(option.value)
@@ -1335,16 +1825,16 @@ var Selection = forwardRef6(
1335
1825
  item,
1336
1826
  index < displayLabel.length - 1 ? ", " : ""
1337
1827
  ] }, index)) : /* @__PURE__ */ jsxs12(Fragment2, { children: [
1338
- /* @__PURE__ */ jsx12("span", { children: placeholder }),
1339
- isRequired && /* @__PURE__ */ jsx12("span", { className: "fe-field__required", "aria-hidden": "true", children: "*" })
1828
+ /* @__PURE__ */ jsx15("span", { children: placeholder }),
1829
+ isRequired && /* @__PURE__ */ jsx15("span", { className: "fe-field__required", "aria-hidden": "true", children: "*" })
1340
1830
  ] })
1341
1831
  }
1342
1832
  ),
1343
- /* @__PURE__ */ jsx12("span", { className: "fe-selection__actions", children: /* @__PURE__ */ jsx12("span", { className: "fe-selection__chevron", "aria-hidden": "true" }) })
1833
+ /* @__PURE__ */ jsx15("span", { className: "fe-selection__actions", children: /* @__PURE__ */ jsx15("span", { className: "fe-selection__chevron", "aria-hidden": "true" }) })
1344
1834
  ]
1345
1835
  }
1346
1836
  ),
1347
- clearable && selectedOptions.length > 0 && !disabled && /* @__PURE__ */ jsx12(
1837
+ clearable && selectedOptions.length > 0 && !disabled && /* @__PURE__ */ jsx15(
1348
1838
  "button",
1349
1839
  {
1350
1840
  type: "button",
@@ -1364,14 +1854,15 @@ var Selection = forwardRef6(
1364
1854
  position: "fixed",
1365
1855
  top: menuPosition.top,
1366
1856
  left: menuPosition.left,
1367
- width: menuPosition.width
1857
+ width: menuPosition.width,
1858
+ zIndex: menuPosition.zIndex
1368
1859
  },
1369
1860
  role: "listbox",
1370
1861
  "aria-multiselectable": multiple || void 0,
1371
1862
  children: [
1372
1863
  searchable && /* @__PURE__ */ jsxs12("div", { className: "fe-selection__search", children: [
1373
- /* @__PURE__ */ jsx12("span", { "aria-hidden": "true", children: "\u2315" }),
1374
- /* @__PURE__ */ jsx12(
1864
+ /* @__PURE__ */ jsx15("span", { "aria-hidden": "true", children: "\u2315" }),
1865
+ /* @__PURE__ */ jsx15(
1375
1866
  "input",
1376
1867
  {
1377
1868
  autoFocus: true,
@@ -1385,7 +1876,7 @@ var Selection = forwardRef6(
1385
1876
  }
1386
1877
  )
1387
1878
  ] }),
1388
- /* @__PURE__ */ jsx12("div", { className: "fe-selection__options", children: filteredOptions.length ? filteredOptions.map((option, index) => {
1879
+ /* @__PURE__ */ jsx15("div", { className: "fe-selection__options", children: filteredOptions.length ? filteredOptions.map((option, index) => {
1389
1880
  const isSelected = selectedValues.some(
1390
1881
  (item) => String(item) === String(option.value)
1391
1882
  );
@@ -1403,8 +1894,8 @@ var Selection = forwardRef6(
1403
1894
  onMouseMove: () => setActiveIndex(index),
1404
1895
  onClick: () => choose(option),
1405
1896
  children: [
1406
- /* @__PURE__ */ jsx12("span", { children: option.label }),
1407
- isSelected && /* @__PURE__ */ jsx12(
1897
+ /* @__PURE__ */ jsx15("span", { children: option.label }),
1898
+ isSelected && /* @__PURE__ */ jsx15(
1408
1899
  "span",
1409
1900
  {
1410
1901
  className: "fe-selection__check",
@@ -1416,14 +1907,14 @@ var Selection = forwardRef6(
1416
1907
  },
1417
1908
  String(option.value)
1418
1909
  );
1419
- }) : /* @__PURE__ */ jsx12("p", { className: "fe-selection__empty", children: "No matching options" }) })
1910
+ }) : /* @__PURE__ */ jsx15("p", { className: "fe-selection__empty", children: "No matching options" }) })
1420
1911
  ]
1421
1912
  }
1422
1913
  ),
1423
1914
  document.body
1424
1915
  )
1425
1916
  ] }),
1426
- /* @__PURE__ */ jsx12(
1917
+ /* @__PURE__ */ jsx15(
1427
1918
  FieldMessage,
1428
1919
  {
1429
1920
  id: messageId2,
@@ -1441,13 +1932,13 @@ Selection.displayName = "Selection";
1441
1932
 
1442
1933
  // packages/form-controls/src/controls/NumberInput/number-input.tsx
1443
1934
  import {
1444
- forwardRef as forwardRef7,
1935
+ forwardRef as forwardRef10,
1445
1936
  useEffect as useEffect6,
1446
- useId as useId7,
1447
- useRef as useRef6,
1448
- useState as useState9
1937
+ useId as useId8,
1938
+ useRef as useRef8,
1939
+ useState as useState12
1449
1940
  } from "react";
1450
- import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
1941
+ import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
1451
1942
  function formatNumber(value, decimals = 2, thousandSeparator = ",", decimalSeparator = ".") {
1452
1943
  return new Intl.NumberFormat("en-US", {
1453
1944
  minimumFractionDigits: 0,
@@ -1504,7 +1995,7 @@ function normalizeNumberInput(raw, options) {
1504
1995
  value
1505
1996
  };
1506
1997
  }
1507
- var NumberInput = forwardRef7(
1998
+ var NumberInput = forwardRef10(
1508
1999
  function NumberInput2({
1509
2000
  value,
1510
2001
  defaultValue = null,
@@ -1541,14 +2032,14 @@ var NumberInput = forwardRef7(
1541
2032
  onKeyDown,
1542
2033
  ...props
1543
2034
  }, ref) {
1544
- const inputRef = useRef6(null);
1545
- const generatedId = useId7();
2035
+ const inputRef = useRef8(null);
2036
+ const generatedId = useId8();
1546
2037
  const messageId2 = generatedId + "-message";
1547
2038
  const isControlled = value !== void 0;
1548
- const [internalValue, setInternalValue] = useState9(defaultValue);
1549
- const [focused, setFocused] = useState9(false);
2039
+ const [internalValue, setInternalValue] = useState12(defaultValue);
2040
+ const [focused, setFocused] = useState12(false);
1550
2041
  const actualValue = isControlled ? value ?? null : internalValue;
1551
- const [text, setText] = useState9(
2042
+ const [text, setText] = useState12(
1552
2043
  actualValue === null ? "" : formatNumber(
1553
2044
  actualValue,
1554
2045
  decimals,
@@ -1634,7 +2125,7 @@ var NumberInput = forwardRef7(
1634
2125
  className
1635
2126
  ].filter(Boolean).join(" "),
1636
2127
  children: [
1637
- /* @__PURE__ */ jsx13(
2128
+ /* @__PURE__ */ jsx16(
1638
2129
  FieldLabel,
1639
2130
  {
1640
2131
  id: labelId,
@@ -1645,9 +2136,9 @@ var NumberInput = forwardRef7(
1645
2136
  }
1646
2137
  ),
1647
2138
  /* @__PURE__ */ jsxs13("span", { className: "fe-number-input__control", children: [
1648
- resolvedPrefix && /* @__PURE__ */ jsx13("span", { className: "fe-number-input__prefix", children: resolvedPrefix }),
2139
+ resolvedPrefix && /* @__PURE__ */ jsx16("span", { className: "fe-number-input__prefix", children: resolvedPrefix }),
1649
2140
  /* @__PURE__ */ jsxs13("span", { className: "fe-number-input__input-wrap", children: [
1650
- /* @__PURE__ */ jsx13(
2141
+ /* @__PURE__ */ jsx16(
1651
2142
  "input",
1652
2143
  {
1653
2144
  ref: (node) => {
@@ -1689,35 +2180,35 @@ var NumberInput = forwardRef7(
1689
2180
  className: "fe-number-input__placeholder",
1690
2181
  "aria-hidden": "true",
1691
2182
  children: [
1692
- /* @__PURE__ */ jsx13("span", { children: placeholder }),
1693
- /* @__PURE__ */ jsx13("span", { className: "fe-field__required", children: "*" })
2183
+ /* @__PURE__ */ jsx16("span", { children: placeholder }),
2184
+ /* @__PURE__ */ jsx16("span", { className: "fe-field__required", children: "*" })
1694
2185
  ]
1695
2186
  }
1696
2187
  )
1697
2188
  ] }),
1698
- resolvedSuffix && /* @__PURE__ */ jsx13("span", { className: "fe-number-input__suffix", children: resolvedSuffix }),
2189
+ resolvedSuffix && /* @__PURE__ */ jsx16("span", { className: "fe-number-input__suffix", children: resolvedSuffix }),
1699
2190
  endAdornment,
1700
2191
  showStepper && /* @__PURE__ */ jsxs13("span", { className: "fe-number-input__stepper", children: [
1701
- /* @__PURE__ */ jsx13(
2192
+ /* @__PURE__ */ jsx16(
1702
2193
  Button,
1703
2194
  {
1704
2195
  hierarchy: "tertiary-gray",
1705
2196
  size: "24",
1706
2197
  iconOnly: true,
1707
- icon: /* @__PURE__ */ jsx13(ChevronUpIcon, { size: 12 }),
2198
+ icon: /* @__PURE__ */ jsx16(ChevronUpIcon, { size: 12 }),
1708
2199
  "aria-label": incrementLabel,
1709
2200
  disabled: disableIncrement,
1710
2201
  onMouseDown: (event) => event.preventDefault(),
1711
2202
  onClick: () => adjustValue(1)
1712
2203
  }
1713
2204
  ),
1714
- /* @__PURE__ */ jsx13(
2205
+ /* @__PURE__ */ jsx16(
1715
2206
  Button,
1716
2207
  {
1717
2208
  hierarchy: "tertiary-gray",
1718
2209
  size: "24",
1719
2210
  iconOnly: true,
1720
- icon: /* @__PURE__ */ jsx13(ChevronDownIcon, { size: 12 }),
2211
+ icon: /* @__PURE__ */ jsx16(ChevronDownIcon, { size: 12 }),
1721
2212
  "aria-label": decrementLabel,
1722
2213
  disabled: disableDecrement,
1723
2214
  onMouseDown: (event) => event.preventDefault(),
@@ -1726,7 +2217,7 @@ var NumberInput = forwardRef7(
1726
2217
  )
1727
2218
  ] })
1728
2219
  ] }),
1729
- /* @__PURE__ */ jsx13(
2220
+ /* @__PURE__ */ jsx16(
1730
2221
  FieldMessage,
1731
2222
  {
1732
2223
  id: messageId2,
@@ -1743,8 +2234,8 @@ var NumberInput = forwardRef7(
1743
2234
  NumberInput.displayName = "NumberInput";
1744
2235
 
1745
2236
  // packages/form-controls/src/controls/CurrencyInput/currency-input.tsx
1746
- import { useState as useState10 } from "react";
1747
- import { jsx as jsx14 } from "react/jsx-runtime";
2237
+ import { useState as useState13 } from "react";
2238
+ import { jsx as jsx17 } from "react/jsx-runtime";
1748
2239
  function CurrencyInput({
1749
2240
  suffix = "VND",
1750
2241
  currencies,
@@ -1755,13 +2246,13 @@ function CurrencyInput({
1755
2246
  disabled,
1756
2247
  ...props
1757
2248
  }) {
1758
- const [internalCurrency, setInternalCurrency] = useState10(
2249
+ const [internalCurrency, setInternalCurrency] = useState13(
1759
2250
  defaultCurrency ?? currencies?.[0]?.code ?? ""
1760
2251
  );
1761
2252
  const selectedCurrency = currency ?? internalCurrency;
1762
2253
  const current = currencies?.find((item) => item.code === selectedCurrency);
1763
2254
  const currencySuffix = current?.suffix ?? current?.code ?? suffix;
1764
- const endAdornment = currencies?.length ? /* @__PURE__ */ jsx14(
2255
+ const endAdornment = currencies?.length ? /* @__PURE__ */ jsx17(
1765
2256
  Selection,
1766
2257
  {
1767
2258
  className: "fe-currency-input__currency",
@@ -1780,8 +2271,8 @@ function CurrencyInput({
1780
2271
  onCurrencyChange?.(next);
1781
2272
  }
1782
2273
  }
1783
- ) : /* @__PURE__ */ jsx14("span", { className: "fe-currency-input__suffix", children: currencySuffix });
1784
- return /* @__PURE__ */ jsx14(
2274
+ ) : /* @__PURE__ */ jsx17("span", { className: "fe-currency-input__suffix", children: currencySuffix });
2275
+ return /* @__PURE__ */ jsx17(
1785
2276
  NumberInput,
1786
2277
  {
1787
2278
  ...props,
@@ -1793,8 +2284,8 @@ function CurrencyInput({
1793
2284
  }
1794
2285
 
1795
2286
  // packages/form-controls/src/controls/DateTimePicker/date-time-picker.tsx
1796
- import { useEffect as useEffect7, useId as useId8, useRef as useRef7, useState as useState11 } from "react";
1797
- import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
2287
+ import { useEffect as useEffect7, useId as useId9, useRef as useRef9, useState as useState14 } from "react";
2288
+ import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
1798
2289
  var pad = (value) => String(value).padStart(2, "0");
1799
2290
  function formatDate(date, format) {
1800
2291
  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()));
@@ -1830,7 +2321,7 @@ function DateTimePicker(props) {
1830
2321
  "aria-describedby": ariaDescribedBy,
1831
2322
  "aria-labelledby": ariaLabelledBy
1832
2323
  } = props;
1833
- const generatedId = useId8();
2324
+ const generatedId = useId9();
1834
2325
  const triggerId = id ?? generatedId + "-trigger";
1835
2326
  const labelId = generatedId + "-label";
1836
2327
  const messageId2 = generatedId + "-message";
@@ -1848,20 +2339,20 @@ function DateTimePicker(props) {
1848
2339
  );
1849
2340
  const isRange = mode === "range";
1850
2341
  const controlled = props.value !== void 0;
1851
- const [singleInternal, setSingleInternal] = useState11(
2342
+ const [singleInternal, setSingleInternal] = useState14(
1852
2343
  (!isRange ? props.defaultValue : null) ?? null
1853
2344
  );
1854
- const [rangeInternal, setRangeInternal] = useState11(
2345
+ const [rangeInternal, setRangeInternal] = useState14(
1855
2346
  (isRange ? props.defaultValue : void 0) ?? [null, null]
1856
2347
  );
1857
2348
  const singleValue = !isRange ? props.value ?? singleInternal : null;
1858
2349
  const rangeValue = isRange ? props.value ?? rangeInternal : [null, null];
1859
- const [open, setOpen] = useState11(false);
1860
- const [month, setMonth] = useState11(
2350
+ const [open, setOpen] = useState14(false);
2351
+ const [month, setMonth] = useState14(
1861
2352
  () => new Date((isRange ? rangeValue[0] : singleValue) ?? /* @__PURE__ */ new Date())
1862
2353
  );
1863
- const [editingEnd, setEditingEnd] = useState11(false);
1864
- const rootRef = useRef7(null);
2354
+ const [editingEnd, setEditingEnd] = useState14(false);
2355
+ const rootRef = useRef9(null);
1865
2356
  useEffect7(() => {
1866
2357
  const onPointerDown = (event) => {
1867
2358
  if (!rootRef.current?.contains(event.target)) setOpen(false);
@@ -1935,7 +2426,7 @@ function DateTimePicker(props) {
1935
2426
  className
1936
2427
  ].filter(Boolean).join(" "),
1937
2428
  children: [
1938
- /* @__PURE__ */ jsx15(
2429
+ /* @__PURE__ */ jsx18(
1939
2430
  FieldLabel,
1940
2431
  {
1941
2432
  id: labelId,
@@ -1959,14 +2450,14 @@ function DateTimePicker(props) {
1959
2450
  "aria-expanded": open,
1960
2451
  onClick: () => setOpen((current) => !current),
1961
2452
  children: [
1962
- /* @__PURE__ */ jsx15("span", { "aria-hidden": "true", children: "\u25F7" }),
2453
+ /* @__PURE__ */ jsx18("span", { "aria-hidden": "true", children: "\u25F7" }),
1963
2454
  /* @__PURE__ */ jsxs14(
1964
2455
  "span",
1965
2456
  {
1966
2457
  className: !shownValue && placeholder ? "fe-datetime-picker__value is-placeholder" : "fe-datetime-picker__value",
1967
2458
  children: [
1968
2459
  shownValue || placeholder || (isRange ? "Select date range" : "Select date and time"),
1969
- isRequired && placeholder && !shownValue && /* @__PURE__ */ jsx15("span", { className: "fe-field__required", "aria-hidden": "true", children: "*" })
2460
+ isRequired && placeholder && !shownValue && /* @__PURE__ */ jsx18("span", { className: "fe-field__required", "aria-hidden": "true", children: "*" })
1970
2461
  ]
1971
2462
  }
1972
2463
  )
@@ -1981,7 +2472,7 @@ function DateTimePicker(props) {
1981
2472
  "aria-label": "Date and time picker",
1982
2473
  children: [
1983
2474
  /* @__PURE__ */ jsxs14("div", { className: "fe-datetime-picker__month", children: [
1984
- /* @__PURE__ */ jsx15(
2475
+ /* @__PURE__ */ jsx18(
1985
2476
  "button",
1986
2477
  {
1987
2478
  type: "button",
@@ -1992,11 +2483,11 @@ function DateTimePicker(props) {
1992
2483
  children: "\u2039"
1993
2484
  }
1994
2485
  ),
1995
- /* @__PURE__ */ jsx15("strong", { children: month.toLocaleDateString(locale, {
2486
+ /* @__PURE__ */ jsx18("strong", { children: month.toLocaleDateString(locale, {
1996
2487
  month: "long",
1997
2488
  year: "numeric"
1998
2489
  }) }),
1999
- /* @__PURE__ */ jsx15(
2490
+ /* @__PURE__ */ jsx18(
2000
2491
  "button",
2001
2492
  {
2002
2493
  type: "button",
@@ -2008,12 +2499,12 @@ function DateTimePicker(props) {
2008
2499
  }
2009
2500
  )
2010
2501
  ] }),
2011
- /* @__PURE__ */ jsx15("div", { className: "fe-datetime-picker__weekdays", children: ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"].map((day) => /* @__PURE__ */ jsx15("span", { children: day }, day)) }),
2012
- /* @__PURE__ */ jsx15("div", { className: "fe-datetime-picker__days", children: days.map((day) => {
2502
+ /* @__PURE__ */ jsx18("div", { className: "fe-datetime-picker__weekdays", children: ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"].map((day) => /* @__PURE__ */ jsx18("span", { children: day }, day)) }),
2503
+ /* @__PURE__ */ jsx18("div", { className: "fe-datetime-picker__days", children: days.map((day) => {
2013
2504
  const inMonth = day.getMonth() === month.getMonth();
2014
2505
  const selected = isRange ? sameDay(day, rangeValue[0]) || sameDay(day, rangeValue[1]) : sameDay(day, singleValue);
2015
2506
  const inRange = isRange && rangeValue[0] && rangeValue[1] && day > startOfDay(rangeValue[0]) && day < startOfDay(rangeValue[1]);
2016
- return /* @__PURE__ */ jsx15(
2507
+ return /* @__PURE__ */ jsx18(
2017
2508
  "button",
2018
2509
  {
2019
2510
  type: "button",
@@ -2029,7 +2520,7 @@ function DateTimePicker(props) {
2029
2520
  );
2030
2521
  }) }),
2031
2522
  isRange && /* @__PURE__ */ jsxs14("div", { className: "fe-datetime-picker__range-tabs", children: [
2032
- /* @__PURE__ */ jsx15(
2523
+ /* @__PURE__ */ jsx18(
2033
2524
  "button",
2034
2525
  {
2035
2526
  type: "button",
@@ -2038,7 +2529,7 @@ function DateTimePicker(props) {
2038
2529
  children: "Start"
2039
2530
  }
2040
2531
  ),
2041
- /* @__PURE__ */ jsx15(
2532
+ /* @__PURE__ */ jsx18(
2042
2533
  "button",
2043
2534
  {
2044
2535
  type: "button",
@@ -2050,7 +2541,7 @@ function DateTimePicker(props) {
2050
2541
  ] }),
2051
2542
  /* @__PURE__ */ jsxs14("label", { className: "fe-datetime-picker__time", children: [
2052
2543
  "Time",
2053
- /* @__PURE__ */ jsx15(
2544
+ /* @__PURE__ */ jsx18(
2054
2545
  "input",
2055
2546
  {
2056
2547
  type: "time",
@@ -2063,7 +2554,7 @@ function DateTimePicker(props) {
2063
2554
  ]
2064
2555
  }
2065
2556
  ),
2066
- /* @__PURE__ */ jsx15(
2557
+ /* @__PURE__ */ jsx18(
2067
2558
  FieldMessage,
2068
2559
  {
2069
2560
  id: messageId2,
@@ -2078,9 +2569,9 @@ function DateTimePicker(props) {
2078
2569
  }
2079
2570
 
2080
2571
  // packages/form-controls/src/controls/Checkbox/checkbox.tsx
2081
- import { forwardRef as forwardRef8 } from "react";
2082
- import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
2083
- var Checkbox = forwardRef8(
2572
+ import { forwardRef as forwardRef11 } from "react";
2573
+ import { jsx as jsx19, jsxs as jsxs15 } from "react/jsx-runtime";
2574
+ var Checkbox = forwardRef11(
2084
2575
  function Checkbox2({
2085
2576
  label,
2086
2577
  labelPosition = "right",
@@ -2097,9 +2588,9 @@ var Checkbox = forwardRef8(
2097
2588
  className
2098
2589
  ].filter(Boolean).join(" ");
2099
2590
  return /* @__PURE__ */ jsxs15("label", { className: classes, style, children: [
2100
- label && labelPosition === "top" && /* @__PURE__ */ jsx16("span", { className: "fe-checkbox__label", children: label }),
2591
+ label && labelPosition === "top" && /* @__PURE__ */ jsx19("span", { className: "fe-checkbox__label", children: label }),
2101
2592
  /* @__PURE__ */ jsxs15("span", { className: "fe-checkbox__content", children: [
2102
- /* @__PURE__ */ jsx16(
2593
+ /* @__PURE__ */ jsx19(
2103
2594
  "input",
2104
2595
  {
2105
2596
  ref,
@@ -2110,8 +2601,8 @@ var Checkbox = forwardRef8(
2110
2601
  ...props
2111
2602
  }
2112
2603
  ),
2113
- /* @__PURE__ */ jsx16("span", { className: "fe-checkbox__control", "aria-hidden": "true" }),
2114
- label && labelPosition === "right" && /* @__PURE__ */ jsx16("span", { className: "fe-checkbox__label", children: label })
2604
+ /* @__PURE__ */ jsx19("span", { className: "fe-checkbox__control", "aria-hidden": "true" }),
2605
+ label && labelPosition === "right" && /* @__PURE__ */ jsx19("span", { className: "fe-checkbox__label", children: label })
2115
2606
  ] })
2116
2607
  ] });
2117
2608
  }
@@ -2119,9 +2610,9 @@ var Checkbox = forwardRef8(
2119
2610
  Checkbox.displayName = "Checkbox";
2120
2611
 
2121
2612
  // packages/form-controls/src/controls/RadioButton/radio-button.tsx
2122
- import { forwardRef as forwardRef9 } from "react";
2123
- import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
2124
- var RadioButton = forwardRef9(
2613
+ import { forwardRef as forwardRef12 } from "react";
2614
+ import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
2615
+ var RadioButton = forwardRef12(
2125
2616
  function RadioButton2({
2126
2617
  label,
2127
2618
  labelPosition = "right",
@@ -2138,9 +2629,9 @@ var RadioButton = forwardRef9(
2138
2629
  className
2139
2630
  ].filter(Boolean).join(" ");
2140
2631
  return /* @__PURE__ */ jsxs16("label", { className: classes, style, children: [
2141
- label && labelPosition === "top" && /* @__PURE__ */ jsx17("span", { className: "fe-radio-button__label", children: label }),
2632
+ label && labelPosition === "top" && /* @__PURE__ */ jsx20("span", { className: "fe-radio-button__label", children: label }),
2142
2633
  /* @__PURE__ */ jsxs16("span", { className: "fe-radio-button__content", children: [
2143
- /* @__PURE__ */ jsx17(
2634
+ /* @__PURE__ */ jsx20(
2144
2635
  "input",
2145
2636
  {
2146
2637
  ref,
@@ -2151,8 +2642,8 @@ var RadioButton = forwardRef9(
2151
2642
  ...props
2152
2643
  }
2153
2644
  ),
2154
- /* @__PURE__ */ jsx17("span", { className: "fe-radio-button__control", "aria-hidden": "true" }),
2155
- label && labelPosition === "right" && /* @__PURE__ */ jsx17("span", { className: "fe-radio-button__label", children: label })
2645
+ /* @__PURE__ */ jsx20("span", { className: "fe-radio-button__control", "aria-hidden": "true" }),
2646
+ label && labelPosition === "right" && /* @__PURE__ */ jsx20("span", { className: "fe-radio-button__label", children: label })
2156
2647
  ] })
2157
2648
  ] });
2158
2649
  }
@@ -2160,9 +2651,9 @@ var RadioButton = forwardRef9(
2160
2651
  RadioButton.displayName = "RadioButton";
2161
2652
 
2162
2653
  // packages/form-controls/src/controls/RadioGroup/radio-group.tsx
2163
- import { forwardRef as forwardRef10, useId as useId9 } from "react";
2164
- import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
2165
- var RadioGroup = forwardRef10(
2654
+ import { forwardRef as forwardRef13, useId as useId10 } from "react";
2655
+ import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
2656
+ var RadioGroup = forwardRef13(
2166
2657
  function RadioGroup2({
2167
2658
  label,
2168
2659
  labelPosition = "top",
@@ -2180,7 +2671,7 @@ var RadioGroup = forwardRef10(
2180
2671
  "aria-labelledby": ariaLabelledBy,
2181
2672
  ...props
2182
2673
  }, ref) {
2183
- const generatedId = useId9();
2674
+ const generatedId = useId10();
2184
2675
  const groupName = name ?? `fe-radio-group-${generatedId}`;
2185
2676
  const labelId = `${id ?? generatedId}-label`;
2186
2677
  const isControlled = value !== void 0;
@@ -2197,9 +2688,9 @@ var RadioGroup = forwardRef10(
2197
2688
  return /* @__PURE__ */ jsxs17("div", { ref, className: classes, ...props, children: [
2198
2689
  label && labelPosition === "top" && /* @__PURE__ */ jsxs17("span", { id: labelId, className: "fe-radio-group__label", children: [
2199
2690
  label,
2200
- isRequired && /* @__PURE__ */ jsx18("span", { className: "fe-radio-group__required", "aria-hidden": "true", children: "*" })
2691
+ isRequired && /* @__PURE__ */ jsx21("span", { className: "fe-radio-group__required", "aria-hidden": "true", children: "*" })
2201
2692
  ] }),
2202
- /* @__PURE__ */ jsx18(
2693
+ /* @__PURE__ */ jsx21(
2203
2694
  "div",
2204
2695
  {
2205
2696
  id,
@@ -2211,7 +2702,7 @@ var RadioGroup = forwardRef10(
2211
2702
  children: options.map((option) => {
2212
2703
  const optionDisabled = disabled || option.disabled;
2213
2704
  const optionValue = String(option.value);
2214
- return /* @__PURE__ */ jsx18(
2705
+ return /* @__PURE__ */ jsx21(
2215
2706
  RadioButton,
2216
2707
  {
2217
2708
  name: groupName,
@@ -2230,7 +2721,7 @@ var RadioGroup = forwardRef10(
2230
2721
  ),
2231
2722
  label && labelPosition === "right" && /* @__PURE__ */ jsxs17("span", { id: labelId, className: "fe-radio-group__label", children: [
2232
2723
  label,
2233
- isRequired && /* @__PURE__ */ jsx18("span", { className: "fe-radio-group__required", "aria-hidden": "true", children: "*" })
2724
+ isRequired && /* @__PURE__ */ jsx21("span", { className: "fe-radio-group__required", "aria-hidden": "true", children: "*" })
2234
2725
  ] })
2235
2726
  ] });
2236
2727
  }
@@ -2238,12 +2729,12 @@ var RadioGroup = forwardRef10(
2238
2729
  RadioGroup.displayName = "RadioGroup";
2239
2730
 
2240
2731
  // packages/expandable-section/src/index.tsx
2241
- import { useId as useId10, useState as useState12 } from "react";
2242
- import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
2732
+ import { useId as useId11, useState as useState15 } from "react";
2733
+ import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
2243
2734
  function ExpandableSection({ title, children, expanded, defaultExpanded = false, onExpandedChange, disabled, className, ...props }) {
2244
- const [internalExpanded, setInternalExpanded] = useState12(defaultExpanded);
2735
+ const [internalExpanded, setInternalExpanded] = useState15(defaultExpanded);
2245
2736
  const isExpanded = expanded ?? internalExpanded;
2246
- const id = useId10();
2737
+ const id = useId11();
2247
2738
  const toggle = () => {
2248
2739
  if (disabled) return;
2249
2740
  const next = !isExpanded;
@@ -2252,15 +2743,15 @@ function ExpandableSection({ title, children, expanded, defaultExpanded = false,
2252
2743
  };
2253
2744
  return /* @__PURE__ */ jsxs18("section", { className: ["fe-expandable-section", isExpanded && "fe-expandable-section--expanded", disabled && "fe-expandable-section--disabled", className].filter(Boolean).join(" "), ...props, children: [
2254
2745
  /* @__PURE__ */ jsxs18("button", { className: "fe-expandable-section__trigger", type: "button", "aria-expanded": isExpanded, "aria-controls": id, disabled, onClick: toggle, children: [
2255
- /* @__PURE__ */ jsx19("span", { children: title }),
2256
- /* @__PURE__ */ jsx19("span", { className: "fe-expandable-section__chevron", "aria-hidden": "true" })
2746
+ /* @__PURE__ */ jsx22("span", { children: title }),
2747
+ /* @__PURE__ */ jsx22("span", { className: "fe-expandable-section__chevron", "aria-hidden": "true" })
2257
2748
  ] }),
2258
- /* @__PURE__ */ jsx19("div", { id, className: "fe-expandable-section__content", "aria-hidden": !isExpanded, children: /* @__PURE__ */ jsx19("div", { className: "fe-expandable-section__content-inner", children }) })
2749
+ /* @__PURE__ */ jsx22("div", { id, className: "fe-expandable-section__content", "aria-hidden": !isExpanded, children: /* @__PURE__ */ jsx22("div", { className: "fe-expandable-section__content-inner", children }) })
2259
2750
  ] });
2260
2751
  }
2261
2752
 
2262
2753
  // packages/loading/src/index.tsx
2263
- import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
2754
+ import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
2264
2755
  var sizes = {
2265
2756
  small: "16px",
2266
2757
  medium: "24px",
@@ -2274,14 +2765,14 @@ function Loading({ size = "medium", color = "#2878f0", label, className, style,
2274
2765
  ...style
2275
2766
  };
2276
2767
  return /* @__PURE__ */ jsxs19("span", { className: ["fe-loading", className].filter(Boolean).join(" "), style: loadingStyle, role: "status", ...props, children: [
2277
- /* @__PURE__ */ jsx20("span", { className: "fe-loading__spinner", "aria-hidden": "true" }),
2278
- label && /* @__PURE__ */ jsx20("span", { className: "fe-loading__label", children: label }),
2279
- !label && /* @__PURE__ */ jsx20("span", { className: "fe-loading__sr-only", children: "Loading" })
2768
+ /* @__PURE__ */ jsx23("span", { className: "fe-loading__spinner", "aria-hidden": "true" }),
2769
+ label && /* @__PURE__ */ jsx23("span", { className: "fe-loading__label", children: label }),
2770
+ !label && /* @__PURE__ */ jsx23("span", { className: "fe-loading__sr-only", children: "Loading" })
2280
2771
  ] });
2281
2772
  }
2282
2773
 
2283
2774
  // packages/skeleton/src/index.tsx
2284
- import { Fragment as Fragment3, jsx as jsx21 } from "react/jsx-runtime";
2775
+ import { Fragment as Fragment3, jsx as jsx24 } from "react/jsx-runtime";
2285
2776
  var pixels = (value) => typeof value === "number" ? `${value}px` : value;
2286
2777
  function SkeletonBase({ variant = "box", shape, width, height, count = 1, animated = true, className, style, ...props }) {
2287
2778
  const resolvedVariant = shape ?? variant;
@@ -2292,7 +2783,7 @@ function SkeletonBase({ variant = "box", shape, width, height, count = 1, animat
2292
2783
  "--fe-skeleton-height": resolvedHeight,
2293
2784
  ...style
2294
2785
  };
2295
- return /* @__PURE__ */ jsx21(Fragment3, { children: Array.from({ length: Math.max(1, count) }, (_, index) => /* @__PURE__ */ jsx21(
2786
+ return /* @__PURE__ */ jsx24(Fragment3, { children: Array.from({ length: Math.max(1, count) }, (_, index) => /* @__PURE__ */ jsx24(
2296
2787
  "div",
2297
2788
  {
2298
2789
  className: ["fe-skeleton", `fe-skeleton--${resolvedVariant}`, animated && "fe-skeleton--animated", className].filter(Boolean).join(" "),
@@ -2304,16 +2795,16 @@ function SkeletonBase({ variant = "box", shape, width, height, count = 1, animat
2304
2795
  )) });
2305
2796
  }
2306
2797
  function SkeletonCircle({ size = 40, ...props }) {
2307
- return /* @__PURE__ */ jsx21(SkeletonBase, { variant: "circle", width: size, height: size, ...props });
2798
+ return /* @__PURE__ */ jsx24(SkeletonBase, { variant: "circle", width: size, height: size, ...props });
2308
2799
  }
2309
2800
  function SkeletonSquare({ size = 80, ...props }) {
2310
- return /* @__PURE__ */ jsx21(SkeletonBase, { variant: "box", width: size, height: size, ...props });
2801
+ return /* @__PURE__ */ jsx24(SkeletonBase, { variant: "box", width: size, height: size, ...props });
2311
2802
  }
2312
2803
  function SkeletonBox({ width = "100%", height = 80, ...props }) {
2313
- return /* @__PURE__ */ jsx21(SkeletonBase, { variant: "box", width, height, ...props });
2804
+ return /* @__PURE__ */ jsx24(SkeletonBase, { variant: "box", width, height, ...props });
2314
2805
  }
2315
2806
  function SkeletonLine({ width = "100%", height = 12, ...props }) {
2316
- return /* @__PURE__ */ jsx21(SkeletonBase, { variant: "line", width, height, ...props });
2807
+ return /* @__PURE__ */ jsx24(SkeletonBase, { variant: "line", width, height, ...props });
2317
2808
  }
2318
2809
  var Skeleton = Object.assign(SkeletonBase, {
2319
2810
  Circle: SkeletonCircle,
@@ -2323,9 +2814,12 @@ var Skeleton = Object.assign(SkeletonBase, {
2323
2814
  });
2324
2815
 
2325
2816
  // packages/modal/src/index.tsx
2326
- import { useEffect as useEffect8, useId as useId11, useRef as useRef8 } from "react";
2817
+ import {
2818
+ useId as useId12,
2819
+ useRef as useRef10
2820
+ } from "react";
2327
2821
  import { createPortal as createPortal3 } from "react-dom";
2328
- import { jsx as jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
2822
+ import { jsx as jsx25, jsxs as jsxs20 } from "react/jsx-runtime";
2329
2823
  function Modal({
2330
2824
  open,
2331
2825
  onClose,
@@ -2336,60 +2830,87 @@ function Modal({
2336
2830
  actions = [],
2337
2831
  size = "medium",
2338
2832
  closeOnBackdropClick = true,
2833
+ closeOnEscape = true,
2339
2834
  closeButton = true,
2340
2835
  closeLabel = "Close modal",
2836
+ initialFocusRef,
2837
+ restoreFocus = true,
2341
2838
  className,
2839
+ "aria-label": ariaLabel,
2840
+ "aria-describedby": ariaDescribedBy,
2342
2841
  ...props
2343
2842
  }) {
2344
- const titleId = useId11();
2345
- const panelRef = useRef8(null);
2346
- useEffect8(() => {
2347
- if (!open) return;
2348
- const onKeyDown = (event) => {
2349
- if (event.key === "Escape") onClose();
2350
- };
2351
- document.addEventListener("keydown", onKeyDown);
2352
- panelRef.current?.focus();
2353
- return () => document.removeEventListener("keydown", onKeyDown);
2354
- }, [onClose, open]);
2843
+ const titleId = useId12();
2844
+ const descriptionId = useId12();
2845
+ const panelRef = useRef10(null);
2846
+ useModalOverlay({
2847
+ open,
2848
+ onClose,
2849
+ panelRef,
2850
+ priority: 1100,
2851
+ closeOnEscape,
2852
+ initialFocusRef,
2853
+ restoreFocus
2854
+ });
2355
2855
  if (!open || typeof document === "undefined") return null;
2356
2856
  const hasFooter = footer || actions.length > 0;
2857
+ const describedBy = [description ? descriptionId : void 0, ariaDescribedBy].filter(Boolean).join(" ") || void 0;
2357
2858
  return createPortal3(
2358
- /* @__PURE__ */ jsx22("div", { className: "fe-modal-backdrop", role: "presentation", onMouseDown: (event) => {
2359
- if (event.target === event.currentTarget && closeOnBackdropClick) onClose();
2360
- }, children: /* @__PURE__ */ jsxs20(
2859
+ /* @__PURE__ */ jsx25(
2361
2860
  "div",
2362
2861
  {
2363
- ref: panelRef,
2364
- className: ["fe-modal", `fe-modal--${size}`, className].filter(Boolean).join(" "),
2365
- role: "dialog",
2366
- "aria-modal": "true",
2367
- "aria-labelledby": title ? titleId : void 0,
2368
- "aria-label": title ? void 0 : "Modal",
2369
- tabIndex: -1,
2370
- ...props,
2371
- children: [
2372
- (title || description || closeButton) && /* @__PURE__ */ jsxs20("header", { className: "fe-modal__header", children: [
2373
- /* @__PURE__ */ jsxs20("div", { className: "fe-modal__heading", children: [
2374
- title && /* @__PURE__ */ jsx22("h2", { id: titleId, children: title }),
2375
- description && /* @__PURE__ */ jsx22("p", { children: description })
2376
- ] }),
2377
- closeButton && /* @__PURE__ */ jsx22(Button, { hierarchy: "tertiary-gray", size: "32", iconOnly: true, icon: /* @__PURE__ */ jsx22(CloseIcon, {}), "aria-label": closeLabel, onClick: onClose })
2378
- ] }),
2379
- /* @__PURE__ */ jsx22("div", { className: "fe-modal__body", children }),
2380
- hasFooter && /* @__PURE__ */ jsxs20("footer", { className: "fe-modal__footer", children: [
2381
- footer && /* @__PURE__ */ jsx22("div", { className: "fe-modal__footer-content", children: footer }),
2382
- actions.length > 0 && /* @__PURE__ */ jsx22("div", { className: "fe-modal__actions", children: actions.map(({ label, ...action }, index) => /* @__PURE__ */ jsx22(Button, { ...action, children: label }, index)) })
2383
- ] })
2384
- ]
2862
+ className: "fe-modal-backdrop",
2863
+ role: "presentation",
2864
+ onMouseDown: (event) => {
2865
+ if (event.target === event.currentTarget && closeOnBackdropClick)
2866
+ onClose();
2867
+ },
2868
+ children: /* @__PURE__ */ jsxs20(
2869
+ "div",
2870
+ {
2871
+ ref: panelRef,
2872
+ className: ["fe-modal", `fe-modal--${size}`, className].filter(Boolean).join(" "),
2873
+ role: "dialog",
2874
+ "aria-modal": "true",
2875
+ "aria-labelledby": title ? titleId : void 0,
2876
+ "aria-describedby": describedBy,
2877
+ "aria-label": ariaLabel ?? (title ? void 0 : "Modal"),
2878
+ tabIndex: -1,
2879
+ ...props,
2880
+ children: [
2881
+ (title || description || closeButton) && /* @__PURE__ */ jsxs20("header", { className: "fe-modal__header", children: [
2882
+ /* @__PURE__ */ jsxs20("div", { className: "fe-modal__heading", children: [
2883
+ title && /* @__PURE__ */ jsx25("h2", { id: titleId, children: title }),
2884
+ description && /* @__PURE__ */ jsx25("p", { id: descriptionId, children: description })
2885
+ ] }),
2886
+ closeButton && /* @__PURE__ */ jsx25(
2887
+ Button,
2888
+ {
2889
+ hierarchy: "tertiary-gray",
2890
+ size: "32",
2891
+ iconOnly: true,
2892
+ icon: /* @__PURE__ */ jsx25(CloseIcon, {}),
2893
+ "aria-label": closeLabel,
2894
+ onClick: onClose
2895
+ }
2896
+ )
2897
+ ] }),
2898
+ /* @__PURE__ */ jsx25("div", { className: "fe-modal__body", children }),
2899
+ hasFooter && /* @__PURE__ */ jsxs20("footer", { className: "fe-modal__footer", children: [
2900
+ footer && /* @__PURE__ */ jsx25("div", { className: "fe-modal__footer-content", children: footer }),
2901
+ actions.length > 0 && /* @__PURE__ */ jsx25("div", { className: "fe-modal__actions", children: actions.map(({ label, ...action }, index) => /* @__PURE__ */ jsx25(Button, { ...action, children: label }, index)) })
2902
+ ] })
2903
+ ]
2904
+ }
2905
+ )
2385
2906
  }
2386
- ) }),
2907
+ ),
2387
2908
  document.body
2388
2909
  );
2389
2910
  }
2390
2911
 
2391
2912
  // packages/progress/src/index.tsx
2392
- import { jsx as jsx23, jsxs as jsxs21 } from "react/jsx-runtime";
2913
+ import { jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
2393
2914
  function ProgressBar({ value, max = 100, label, showValue = true, size = "medium", color = "#2878f0", className, style, "aria-label": ariaLabel, ...props }) {
2394
2915
  const indeterminate = value === null || value === void 0;
2395
2916
  const percentage = indeterminate ? 0 : Math.min(100, Math.max(0, Number(value) / Math.max(1, max) * 100));
@@ -2401,15 +2922,15 @@ function ProgressBar({ value, max = 100, label, showValue = true, size = "medium
2401
2922
  const visibleValue = `${Math.round(percentage)}%`;
2402
2923
  return /* @__PURE__ */ jsxs21("div", { className: ["fe-progress", `fe-progress--${size}`, indeterminate && "fe-progress--indeterminate", className].filter(Boolean).join(" "), style: progressStyle, ...props, children: [
2403
2924
  (label || !indeterminate && showValue) && /* @__PURE__ */ jsxs21("div", { className: "fe-progress__meta", children: [
2404
- label && /* @__PURE__ */ jsx23("span", { className: "fe-progress__label", children: label }),
2405
- !indeterminate && showValue && /* @__PURE__ */ jsx23("output", { className: "fe-progress__value", children: visibleValue })
2925
+ label && /* @__PURE__ */ jsx26("span", { className: "fe-progress__label", children: label }),
2926
+ !indeterminate && showValue && /* @__PURE__ */ jsx26("output", { className: "fe-progress__value", children: visibleValue })
2406
2927
  ] }),
2407
- /* @__PURE__ */ jsx23("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__ */ jsx23("span", { className: "fe-progress__indicator" }) })
2928
+ /* @__PURE__ */ jsx26("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__ */ jsx26("span", { className: "fe-progress__indicator" }) })
2408
2929
  ] });
2409
2930
  }
2410
2931
 
2411
2932
  // packages/chip/src/index.tsx
2412
- import { jsx as jsx24, jsxs as jsxs22 } from "react/jsx-runtime";
2933
+ import { jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
2413
2934
  var statuses = ["default", "info", "success", "warning", "error", "neutral", "pending", "processing"];
2414
2935
  function Chip({ children, status = "default", color, variant = "subtle", dot = false, onRemove, removeLabel = "Remove", className, style, ...props }) {
2415
2936
  const usesCustomColor = Boolean(color);
@@ -2419,15 +2940,15 @@ function Chip({ children, status = "default", color, variant = "subtle", dot = f
2419
2940
  };
2420
2941
  const resolvedStatus = statuses.includes(status) ? status : "default";
2421
2942
  return /* @__PURE__ */ jsxs22("span", { className: ["fe-chip", `fe-chip--${variant}`, `fe-chip--${usesCustomColor ? "custom" : resolvedStatus}`, className].filter(Boolean).join(" "), style: chipStyle, ...props, children: [
2422
- dot && /* @__PURE__ */ jsx24("span", { className: "fe-chip__dot", "aria-hidden": "true" }),
2423
- /* @__PURE__ */ jsx24("span", { className: "fe-chip__content", children }),
2424
- onRemove && /* @__PURE__ */ jsx24(Button, { hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: /* @__PURE__ */ jsx24(CloseIcon, { size: 14 }), "aria-label": removeLabel, onClick: onRemove, className: "fe-chip__remove" })
2943
+ dot && /* @__PURE__ */ jsx27("span", { className: "fe-chip__dot", "aria-hidden": "true" }),
2944
+ /* @__PURE__ */ jsx27("span", { className: "fe-chip__content", children }),
2945
+ onRemove && /* @__PURE__ */ jsx27(Button, { hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: /* @__PURE__ */ jsx27(CloseIcon, { size: 14 }), "aria-label": removeLabel, onClick: onRemove, className: "fe-chip__remove" })
2425
2946
  ] });
2426
2947
  }
2427
2948
 
2428
2949
  // packages/message/src/index.tsx
2429
- import { useEffect as useEffect9, useState as useState13 } from "react";
2430
- import { jsx as jsx25, jsxs as jsxs23 } from "react/jsx-runtime";
2950
+ import { useEffect as useEffect8, useState as useState16 } from "react";
2951
+ import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
2431
2952
  var messageId = 0;
2432
2953
  var entries = [];
2433
2954
  var listeners = /* @__PURE__ */ new Set();
@@ -2460,22 +2981,22 @@ var message = {
2460
2981
  };
2461
2982
  var icons = { success: "\u2713", info: "i", warning: "!", error: "\xD7" };
2462
2983
  function Message({ maxCount = 4, closeLabel = "Close notification", className, ...props }) {
2463
- const [visibleEntries, setVisibleEntries] = useState13(entries);
2464
- useEffect9(() => {
2984
+ const [visibleEntries, setVisibleEntries] = useState16(entries);
2985
+ useEffect8(() => {
2465
2986
  const listener = (nextEntries) => setVisibleEntries(nextEntries);
2466
2987
  listeners.add(listener);
2467
2988
  return () => {
2468
2989
  listeners.delete(listener);
2469
2990
  };
2470
2991
  }, []);
2471
- return /* @__PURE__ */ jsx25("div", { className: ["fe-message-viewport", className].filter(Boolean).join(" "), "aria-live": "polite", ...props, children: visibleEntries.slice(-Math.max(1, maxCount)).map((entry) => /* @__PURE__ */ jsxs23("div", { className: `fe-message fe-message--${entry.severity ?? "info"}`, role: entry.severity === "error" ? "alert" : "status", children: [
2472
- /* @__PURE__ */ jsx25("span", { className: "fe-message__icon", "aria-hidden": "true", children: icons[entry.severity ?? "info"] }),
2992
+ return /* @__PURE__ */ jsx28("div", { className: ["fe-message-viewport", className].filter(Boolean).join(" "), "aria-live": "polite", ...props, children: visibleEntries.slice(-Math.max(1, maxCount)).map((entry) => /* @__PURE__ */ jsxs23("div", { className: `fe-message fe-message--${entry.severity ?? "info"}`, role: entry.severity === "error" ? "alert" : "status", children: [
2993
+ /* @__PURE__ */ jsx28("span", { className: "fe-message__icon", "aria-hidden": "true", children: icons[entry.severity ?? "info"] }),
2473
2994
  /* @__PURE__ */ jsxs23("div", { className: "fe-message__body", children: [
2474
- entry.title && /* @__PURE__ */ jsx25("strong", { className: "fe-message__title", children: entry.title }),
2475
- /* @__PURE__ */ jsx25("div", { className: "fe-message__content", children: entry.content })
2995
+ entry.title && /* @__PURE__ */ jsx28("strong", { className: "fe-message__title", children: entry.title }),
2996
+ /* @__PURE__ */ jsx28("div", { className: "fe-message__content", children: entry.content })
2476
2997
  ] }),
2477
- entry.action && /* @__PURE__ */ jsx25("span", { className: "fe-message__action", children: entry.action }),
2478
- /* @__PURE__ */ jsx25(Button, { className: "fe-message__close", hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: "\xD7", "aria-label": closeLabel, onClick: () => dismiss(entry.id) })
2998
+ entry.action && /* @__PURE__ */ jsx28("span", { className: "fe-message__action", children: entry.action }),
2999
+ /* @__PURE__ */ jsx28(Button, { className: "fe-message__close", hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: "\xD7", "aria-label": closeLabel, onClick: () => dismiss(entry.id) })
2479
3000
  ] }, entry.id)) });
2480
3001
  }
2481
3002
  ((Message2) => {
@@ -2489,8 +3010,8 @@ function Message({ maxCount = 4, closeLabel = "Close notification", className, .
2489
3010
  })(Message || (Message = {}));
2490
3011
 
2491
3012
  // packages/snackbar/src/index.tsx
2492
- import { useEffect as useEffect10 } from "react";
2493
- import { jsx as jsx26, jsxs as jsxs24 } from "react/jsx-runtime";
3013
+ import { useEffect as useEffect9 } from "react";
3014
+ import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
2494
3015
  function Snackbar({
2495
3016
  open,
2496
3017
  message: message2,
@@ -2504,12 +3025,12 @@ function Snackbar({
2504
3025
  }) {
2505
3026
  const vertical = anchorOrigin.vertical ?? "bottom";
2506
3027
  const horizontal = anchorOrigin.horizontal ?? "center";
2507
- useEffect10(() => {
3028
+ useEffect9(() => {
2508
3029
  if (!open || autoHideDuration === null) return void 0;
2509
3030
  const timer = window.setTimeout(() => onClose?.("timeout"), autoHideDuration);
2510
3031
  return () => window.clearTimeout(timer);
2511
3032
  }, [open, autoHideDuration, onClose]);
2512
- useEffect10(() => {
3033
+ useEffect9(() => {
2513
3034
  if (!open) return void 0;
2514
3035
  const onKeyDown = (event) => {
2515
3036
  if (event.key === "Escape") onClose?.("escapeKeyDown");
@@ -2518,16 +3039,16 @@ function Snackbar({
2518
3039
  return () => window.removeEventListener("keydown", onKeyDown);
2519
3040
  }, [open, onClose]);
2520
3041
  if (!open) return null;
2521
- return /* @__PURE__ */ jsx26("div", { className: ["fe-snackbar", `fe-snackbar--${vertical}`, `fe-snackbar--${horizontal}`, className].filter(Boolean).join(" "), ...props, children: /* @__PURE__ */ jsxs24("div", { className: "fe-snackbar__content", role: "status", "aria-live": "polite", children: [
2522
- /* @__PURE__ */ jsx26("span", { className: "fe-snackbar__message", children: message2 }),
2523
- action && /* @__PURE__ */ jsx26("span", { className: "fe-snackbar__action", children: action }),
2524
- onClose && /* @__PURE__ */ jsx26(Button, { className: "fe-snackbar__close", hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: "\xD7", "aria-label": closeLabel, onClick: () => onClose("closeButton") })
3042
+ return /* @__PURE__ */ jsx29("div", { className: ["fe-snackbar", `fe-snackbar--${vertical}`, `fe-snackbar--${horizontal}`, className].filter(Boolean).join(" "), ...props, children: /* @__PURE__ */ jsxs24("div", { className: "fe-snackbar__content", role: "status", "aria-live": "polite", children: [
3043
+ /* @__PURE__ */ jsx29("span", { className: "fe-snackbar__message", children: message2 }),
3044
+ action && /* @__PURE__ */ jsx29("span", { className: "fe-snackbar__action", children: action }),
3045
+ onClose && /* @__PURE__ */ jsx29(Button, { className: "fe-snackbar__close", hierarchy: "tertiary-gray", size: "24", iconOnly: true, icon: "\xD7", "aria-label": closeLabel, onClick: () => onClose("closeButton") })
2525
3046
  ] }) });
2526
3047
  }
2527
3048
 
2528
3049
  // packages/avatar/src/index.tsx
2529
- import { Children, isValidElement as isValidElement2, useState as useState14 } from "react";
2530
- import { jsx as jsx27, jsxs as jsxs25 } from "react/jsx-runtime";
3050
+ import { Children, isValidElement as isValidElement2, useState as useState17 } from "react";
3051
+ import { jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
2531
3052
  var FALLBACK_AVATARS = [
2532
3053
  {
2533
3054
  background: "#E0E7FF",
@@ -2868,15 +3389,15 @@ function AvatarFallbackIcon({ avatar }) {
2868
3389
  focusable: "false",
2869
3390
  "aria-hidden": "true",
2870
3391
  children: [
2871
- /* @__PURE__ */ jsx27("rect", { width: "24", height: "24", fill: background }),
2872
- /* @__PURE__ */ jsx27(
3392
+ /* @__PURE__ */ jsx30("rect", { width: "24", height: "24", fill: background }),
3393
+ /* @__PURE__ */ jsx30(
2873
3394
  "path",
2874
3395
  {
2875
3396
  d: "M3 24c.52-3.79 3.58-6.25 9-6.25S20.48 20.21 21 24",
2876
3397
  fill: shirt
2877
3398
  }
2878
3399
  ),
2879
- /* @__PURE__ */ jsx27(
3400
+ /* @__PURE__ */ jsx30(
2880
3401
  "path",
2881
3402
  {
2882
3403
  d: "M8.1 17.65h7.8l1.05 2.05H7.05l1.05-2.05Z",
@@ -2884,38 +3405,38 @@ function AvatarFallbackIcon({ avatar }) {
2884
3405
  opacity: ".72"
2885
3406
  }
2886
3407
  ),
2887
- /* @__PURE__ */ jsx27("circle", { cx: "12", cy: "10.25", r: "5.25", fill: skin }),
2888
- hairStyle === 0 && /* @__PURE__ */ jsx27(
3408
+ /* @__PURE__ */ jsx30("circle", { cx: "12", cy: "10.25", r: "5.25", fill: skin }),
3409
+ hairStyle === 0 && /* @__PURE__ */ jsx30(
2889
3410
  "path",
2890
3411
  {
2891
3412
  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",
2892
3413
  fill: hair
2893
3414
  }
2894
3415
  ),
2895
- hairStyle === 1 && /* @__PURE__ */ jsx27(
3416
+ hairStyle === 1 && /* @__PURE__ */ jsx30(
2896
3417
  "path",
2897
3418
  {
2898
3419
  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",
2899
3420
  fill: hair
2900
3421
  }
2901
3422
  ),
2902
- hairStyle === 2 && /* @__PURE__ */ jsx27(
3423
+ hairStyle === 2 && /* @__PURE__ */ jsx30(
2903
3424
  "path",
2904
3425
  {
2905
3426
  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",
2906
3427
  fill: hair
2907
3428
  }
2908
3429
  ),
2909
- hairStyle === 3 && /* @__PURE__ */ jsx27(
3430
+ hairStyle === 3 && /* @__PURE__ */ jsx30(
2910
3431
  "path",
2911
3432
  {
2912
3433
  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",
2913
3434
  fill: hair
2914
3435
  }
2915
3436
  ),
2916
- /* @__PURE__ */ jsx27("circle", { cx: "10.05", cy: "10.65", r: ".48", fill: "#3B2924" }),
2917
- /* @__PURE__ */ jsx27("circle", { cx: "13.95", cy: "10.65", r: ".48", fill: "#3B2924" }),
2918
- expression === 0 && /* @__PURE__ */ jsx27(
3437
+ /* @__PURE__ */ jsx30("circle", { cx: "10.05", cy: "10.65", r: ".48", fill: "#3B2924" }),
3438
+ /* @__PURE__ */ jsx30("circle", { cx: "13.95", cy: "10.65", r: ".48", fill: "#3B2924" }),
3439
+ expression === 0 && /* @__PURE__ */ jsx30(
2919
3440
  "path",
2920
3441
  {
2921
3442
  d: "M10.25 13.2c1.08.66 2.42.66 3.5 0",
@@ -2925,7 +3446,7 @@ function AvatarFallbackIcon({ avatar }) {
2925
3446
  strokeLinecap: "round"
2926
3447
  }
2927
3448
  ),
2928
- expression === 1 && /* @__PURE__ */ jsx27(
3449
+ expression === 1 && /* @__PURE__ */ jsx30(
2929
3450
  "path",
2930
3451
  {
2931
3452
  d: "M10.5 13.2h3",
@@ -2935,7 +3456,7 @@ function AvatarFallbackIcon({ avatar }) {
2935
3456
  strokeLinecap: "round"
2936
3457
  }
2937
3458
  ),
2938
- expression === 2 && /* @__PURE__ */ jsx27(
3459
+ expression === 2 && /* @__PURE__ */ jsx30(
2939
3460
  "path",
2940
3461
  {
2941
3462
  d: "M10.6 13.38c.84-.44 1.96-.44 2.8 0",
@@ -2945,11 +3466,11 @@ function AvatarFallbackIcon({ avatar }) {
2945
3466
  strokeLinecap: "round"
2946
3467
  }
2947
3468
  ),
2948
- expression === 3 && /* @__PURE__ */ jsx27("circle", { cx: "12", cy: "13.2", r: ".82", fill: "#B95A5A" }),
3469
+ expression === 3 && /* @__PURE__ */ jsx30("circle", { cx: "12", cy: "13.2", r: ".82", fill: "#B95A5A" }),
2949
3470
  glasses && /* @__PURE__ */ jsxs25("g", { fill: "none", stroke: "#3C4355", strokeWidth: ".65", children: [
2950
- /* @__PURE__ */ jsx27("circle", { cx: "10", cy: "10.55", r: "1.45" }),
2951
- /* @__PURE__ */ jsx27("circle", { cx: "14", cy: "10.55", r: "1.45" }),
2952
- /* @__PURE__ */ jsx27("path", { d: "M11.45 10.55h1.1M8.55 10.55H7.5m9 0h-1.05" })
3471
+ /* @__PURE__ */ jsx30("circle", { cx: "10", cy: "10.55", r: "1.45" }),
3472
+ /* @__PURE__ */ jsx30("circle", { cx: "14", cy: "10.55", r: "1.45" }),
3473
+ /* @__PURE__ */ jsx30("path", { d: "M11.45 10.55h1.1M8.55 10.55H7.5m9 0h-1.05" })
2953
3474
  ] })
2954
3475
  ]
2955
3476
  }
@@ -2968,10 +3489,10 @@ function Avatar({
2968
3489
  "aria-label": ariaLabel,
2969
3490
  ...props
2970
3491
  }) {
2971
- const [generatedFallbackIndex] = useState14(
3492
+ const [generatedFallbackIndex] = useState17(
2972
3493
  () => Math.floor(Math.random() * FALLBACK_AVATARS.length)
2973
3494
  );
2974
- const [failedImageSrc, setFailedImageSrc] = useState14();
3495
+ const [failedImageSrc, setFailedImageSrc] = useState17();
2975
3496
  const imageSrc = src?.trim();
2976
3497
  const trimmedContent = content?.trim() ?? "";
2977
3498
  const showImage = Boolean(imageSrc && failedImageSrc !== imageSrc);
@@ -2992,7 +3513,7 @@ function Avatar({
2992
3513
  "aria-label": showImage ? ariaLabel : ariaLabel ?? fallbackLabel,
2993
3514
  ...props,
2994
3515
  children: [
2995
- showImage && /* @__PURE__ */ jsx27(
3516
+ showImage && /* @__PURE__ */ jsx30(
2996
3517
  "img",
2997
3518
  {
2998
3519
  className: "fe-avatar__image",
@@ -3001,8 +3522,8 @@ function Avatar({
3001
3522
  onError: () => setFailedImageSrc(imageSrc)
3002
3523
  }
3003
3524
  ),
3004
- !showImage && initials && /* @__PURE__ */ jsx27("span", { className: "fe-avatar__initials", "aria-hidden": "true", children: initials }),
3005
- !showImage && !initials && /* @__PURE__ */ jsx27(AvatarFallbackIcon, { avatar: selectedFallback })
3525
+ !showImage && initials && /* @__PURE__ */ jsx30("span", { className: "fe-avatar__initials", "aria-hidden": "true", children: initials }),
3526
+ !showImage && !initials && /* @__PURE__ */ jsx30(AvatarFallbackIcon, { avatar: selectedFallback })
3006
3527
  ]
3007
3528
  }
3008
3529
  );
@@ -3037,7 +3558,7 @@ function AvatarGroup({
3037
3558
  ...props,
3038
3559
  children: [
3039
3560
  /* @__PURE__ */ jsxs25("div", { className: "fe-avatar-group__items", children: [
3040
- visibleAvatars.map((avatar, index) => /* @__PURE__ */ jsx27(
3561
+ visibleAvatars.map((avatar, index) => /* @__PURE__ */ jsx30(
3041
3562
  "span",
3042
3563
  {
3043
3564
  className: "fe-avatar-group__item",
@@ -3060,11 +3581,1984 @@ function AvatarGroup({
3060
3581
  }
3061
3582
  )
3062
3583
  ] }),
3063
- singleContent && /* @__PURE__ */ jsx27("span", { className: "fe-avatar-group__content", children: singleContent })
3584
+ singleContent && /* @__PURE__ */ jsx30("span", { className: "fe-avatar-group__content", children: singleContent })
3064
3585
  ]
3065
3586
  }
3066
3587
  );
3067
3588
  }
3589
+
3590
+ // packages/file-upload/src/index.tsx
3591
+ import {
3592
+ forwardRef as forwardRef14,
3593
+ useId as useId13,
3594
+ useMemo as useMemo3,
3595
+ useRef as useRef11,
3596
+ useState as useState18,
3597
+ useEffect as useEffect10
3598
+ } from "react";
3599
+ import { jsx as jsx31, jsxs as jsxs26 } from "react/jsx-runtime";
3600
+ var FILE_UPLOAD_ACCEPTS = {
3601
+ all: [],
3602
+ image: [
3603
+ "image/*",
3604
+ ".avif",
3605
+ ".bmp",
3606
+ ".gif",
3607
+ ".heic",
3608
+ ".heif",
3609
+ ".ico",
3610
+ ".jpeg",
3611
+ ".jpg",
3612
+ ".png",
3613
+ ".svg",
3614
+ ".tif",
3615
+ ".tiff",
3616
+ ".webp"
3617
+ ],
3618
+ pdf: [".pdf"],
3619
+ word: [".doc", ".docm", ".docx", ".dot", ".dotx", ".odt", ".rtf"],
3620
+ spreadsheet: [".csv", ".ods", ".xls", ".xlsb", ".xlsm", ".xlsx"],
3621
+ presentation: [".odp", ".pot", ".potx", ".pps", ".ppsx", ".ppt", ".pptx"],
3622
+ document: [
3623
+ ".pdf",
3624
+ ".doc",
3625
+ ".docm",
3626
+ ".docx",
3627
+ ".dot",
3628
+ ".dotx",
3629
+ ".odt",
3630
+ ".rtf",
3631
+ ".csv",
3632
+ ".xls",
3633
+ ".xlsb",
3634
+ ".xlsx",
3635
+ ".xlsm",
3636
+ ".ods",
3637
+ ".pot",
3638
+ ".potx",
3639
+ ".pps",
3640
+ ".ppsx",
3641
+ ".ppt",
3642
+ ".pptx",
3643
+ ".odp"
3644
+ ],
3645
+ text: [".log", ".md", ".rtf", ".text", ".txt"],
3646
+ csv: [".csv"],
3647
+ json: [".json"],
3648
+ xml: [".xml"],
3649
+ code: [
3650
+ ".c",
3651
+ ".cpp",
3652
+ ".cs",
3653
+ ".css",
3654
+ ".go",
3655
+ ".html",
3656
+ ".java",
3657
+ ".js",
3658
+ ".jsx",
3659
+ ".php",
3660
+ ".py",
3661
+ ".rb",
3662
+ ".rs",
3663
+ ".scss",
3664
+ ".sh",
3665
+ ".sql",
3666
+ ".swift",
3667
+ ".ts",
3668
+ ".tsx",
3669
+ ".vue",
3670
+ ".yml",
3671
+ ".yaml"
3672
+ ],
3673
+ archive: [".7z", ".bz2", ".gz", ".rar", ".tar", ".tgz", ".xz", ".zip"],
3674
+ audio: [
3675
+ "audio/*",
3676
+ ".aac",
3677
+ ".aiff",
3678
+ ".flac",
3679
+ ".m4a",
3680
+ ".mp3",
3681
+ ".ogg",
3682
+ ".opus",
3683
+ ".wav",
3684
+ ".wma"
3685
+ ],
3686
+ video: [
3687
+ "video/*",
3688
+ ".avi",
3689
+ ".mkv",
3690
+ ".mov",
3691
+ ".mp4",
3692
+ ".mpeg",
3693
+ ".mpg",
3694
+ ".webm",
3695
+ ".wmv"
3696
+ ],
3697
+ font: [".ttf", ".otf", ".woff", ".woff2"],
3698
+ email: [".eml", ".msg"]
3699
+ };
3700
+ function fileSignature(file) {
3701
+ return `${file.name}-${file.size}-${file.lastModified}-${file.type}`;
3702
+ }
3703
+ function normalizeAccept(accept) {
3704
+ if (!accept) return [];
3705
+ const groups = typeof accept === "string" ? [accept] : accept;
3706
+ return [...new Set(groups.flatMap((group) => FILE_UPLOAD_ACCEPTS[group]))];
3707
+ }
3708
+ function isAcceptedFile(file, accept) {
3709
+ if (!accept.length) return true;
3710
+ const type = file.type.toLowerCase();
3711
+ const name = file.name.toLowerCase();
3712
+ return accept.some((entry) => {
3713
+ if (entry.startsWith(".")) return name.endsWith(entry);
3714
+ if (entry.endsWith("/*")) return type.startsWith(entry.slice(0, -1));
3715
+ return type === entry;
3716
+ });
3717
+ }
3718
+ function formatFileSize(bytes) {
3719
+ if (!Number.isFinite(bytes) || bytes < 1024) return `${bytes || 0} B`;
3720
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
3721
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
3722
+ }
3723
+ function FileVisual({ file }) {
3724
+ const [previewUrl, setPreviewUrl] = useState18();
3725
+ const isImage = file.type.startsWith("image/");
3726
+ useEffect10(() => {
3727
+ if (!isImage || typeof URL.createObjectURL !== "function") return;
3728
+ const objectUrl = URL.createObjectURL(file);
3729
+ setPreviewUrl(objectUrl);
3730
+ return () => URL.revokeObjectURL(objectUrl);
3731
+ }, [file, isImage]);
3732
+ if (previewUrl) {
3733
+ return /* @__PURE__ */ jsx31("img", { className: "fe-file-upload__thumbnail", src: previewUrl, alt: "" });
3734
+ }
3735
+ const extension = file.name.includes(".") ? file.name.slice(
3736
+ file.name.lastIndexOf(".") + 1,
3737
+ file.name.lastIndexOf(".") + 5
3738
+ ) : "file";
3739
+ return /* @__PURE__ */ jsx31("span", { className: "fe-file-upload__file-type", "aria-hidden": "true", children: extension });
3740
+ }
3741
+ var FileUpload = forwardRef14(
3742
+ function FileUpload2({
3743
+ value,
3744
+ defaultValue = [],
3745
+ onChange,
3746
+ onAccept,
3747
+ onReject,
3748
+ onRemove,
3749
+ accept,
3750
+ maxSize = Infinity,
3751
+ maxFiles = Infinity,
3752
+ multiple = true,
3753
+ disabled = false,
3754
+ preventDuplicate = true,
3755
+ label = "Upload files",
3756
+ description,
3757
+ dropLabel = "Drop files here",
3758
+ browseLabel = "Browse files",
3759
+ removeLabel = (file) => `Remove ${file.name}`,
3760
+ showFileList = true,
3761
+ inputProps,
3762
+ className,
3763
+ "aria-label": ariaLabel,
3764
+ ...props
3765
+ }, forwardedRef) {
3766
+ const generatedId = useId13();
3767
+ const inputId = `${generatedId}-input`;
3768
+ const descriptionId = `${generatedId}-description`;
3769
+ const inputRef = useRef11(null);
3770
+ const dragDepthRef = useRef11(0);
3771
+ const [uncontrolledFiles, setUncontrolledFiles] = useState18(() => [
3772
+ ...defaultValue
3773
+ ]);
3774
+ const [isDragging, setIsDragging] = useState18(false);
3775
+ const [rejections, setRejections] = useState18([]);
3776
+ const files = value === void 0 ? uncontrolledFiles : [...value];
3777
+ const acceptList = useMemo3(() => normalizeAccept(accept), [accept]);
3778
+ const nativeAccept = acceptList.join(",") || void 0;
3779
+ const allowedFileCount = multiple ? maxFiles : 1;
3780
+ const safeMaxFiles = Number.isFinite(allowedFileCount) ? Math.max(0, Math.floor(allowedFileCount)) : Infinity;
3781
+ const helperText = description ?? [
3782
+ acceptList.length ? `Accepted: ${acceptList.join(", ")}` : void 0,
3783
+ Number.isFinite(maxSize) ? `Up to ${formatFileSize(maxSize)} per file` : void 0
3784
+ ].filter(Boolean).join(" \u2022 ");
3785
+ const assignInputRef = (node) => {
3786
+ inputRef.current = node;
3787
+ if (typeof forwardedRef === "function") forwardedRef(node);
3788
+ else if (forwardedRef) {
3789
+ forwardedRef.current = node;
3790
+ }
3791
+ };
3792
+ const commitFiles = (nextFiles) => {
3793
+ if (value === void 0) setUncontrolledFiles(nextFiles);
3794
+ onChange?.(nextFiles);
3795
+ };
3796
+ const addFiles = (fileList) => {
3797
+ if (disabled) return;
3798
+ const candidates = Array.from(fileList ?? []);
3799
+ const nextRejections = [];
3800
+ const accepted = [];
3801
+ const knownFiles = new Set(files.map(fileSignature));
3802
+ for (const file of candidates) {
3803
+ const signature = fileSignature(file);
3804
+ if (!isAcceptedFile(file, acceptList)) {
3805
+ nextRejections.push({
3806
+ file,
3807
+ code: "accept",
3808
+ message: `${file.name} is not an accepted file type.`
3809
+ });
3810
+ } else if (file.size > maxSize) {
3811
+ nextRejections.push({
3812
+ file,
3813
+ code: "max-size",
3814
+ message: `${file.name} exceeds ${formatFileSize(maxSize)}.`
3815
+ });
3816
+ } else if (preventDuplicate && knownFiles.has(signature)) {
3817
+ nextRejections.push({
3818
+ file,
3819
+ code: "duplicate",
3820
+ message: `${file.name} is already in the list.`
3821
+ });
3822
+ } else if (files.length + accepted.length >= safeMaxFiles) {
3823
+ nextRejections.push({
3824
+ file,
3825
+ code: "max-files",
3826
+ message: `Only ${safeMaxFiles} file${safeMaxFiles === 1 ? "" : "s"} can be selected.`
3827
+ });
3828
+ } else {
3829
+ knownFiles.add(signature);
3830
+ accepted.push(file);
3831
+ }
3832
+ }
3833
+ setRejections(nextRejections);
3834
+ if (nextRejections.length) onReject?.(nextRejections);
3835
+ if (!accepted.length) return;
3836
+ commitFiles([...files, ...accepted]);
3837
+ onAccept?.(accepted);
3838
+ };
3839
+ const openFileDialog = () => {
3840
+ if (!disabled) inputRef.current?.click();
3841
+ };
3842
+ const removeFile = (file, index) => {
3843
+ if (disabled) return;
3844
+ onRemove?.(file, index);
3845
+ commitFiles(files.filter((_, fileIndex) => fileIndex !== index));
3846
+ };
3847
+ const handleDragEnter = (event) => {
3848
+ event.preventDefault();
3849
+ if (disabled) return;
3850
+ dragDepthRef.current += 1;
3851
+ setIsDragging(true);
3852
+ };
3853
+ const handleDragLeave = (event) => {
3854
+ event.preventDefault();
3855
+ dragDepthRef.current -= 1;
3856
+ if (dragDepthRef.current <= 0) {
3857
+ dragDepthRef.current = 0;
3858
+ setIsDragging(false);
3859
+ }
3860
+ };
3861
+ const handleDrop = (event) => {
3862
+ event.preventDefault();
3863
+ dragDepthRef.current = 0;
3864
+ setIsDragging(false);
3865
+ addFiles(event.dataTransfer.files);
3866
+ };
3867
+ return /* @__PURE__ */ jsxs26(
3868
+ "div",
3869
+ {
3870
+ ...props,
3871
+ className: ["fe-file-upload", className].filter(Boolean).join(" "),
3872
+ children: [
3873
+ label && /* @__PURE__ */ jsx31("label", { className: "fe-file-upload__label", htmlFor: inputId, children: label }),
3874
+ helperText && /* @__PURE__ */ jsx31("span", { id: descriptionId, className: "fe-file-upload__description", children: helperText }),
3875
+ /* @__PURE__ */ jsx31(
3876
+ "input",
3877
+ {
3878
+ ...inputProps,
3879
+ ref: assignInputRef,
3880
+ id: inputId,
3881
+ type: "file",
3882
+ className: "fe-file-upload__input",
3883
+ accept: nativeAccept,
3884
+ multiple,
3885
+ disabled,
3886
+ "aria-label": ariaLabel,
3887
+ "aria-describedby": helperText ? descriptionId : void 0,
3888
+ onChange: (event) => {
3889
+ addFiles(event.target.files);
3890
+ event.target.value = "";
3891
+ }
3892
+ }
3893
+ ),
3894
+ /* @__PURE__ */ jsxs26(
3895
+ "div",
3896
+ {
3897
+ className: [
3898
+ "fe-file-upload__dropzone",
3899
+ isDragging && "fe-file-upload__dropzone--dragging",
3900
+ disabled && "fe-file-upload__dropzone--disabled"
3901
+ ].filter(Boolean).join(" "),
3902
+ onDragEnter: handleDragEnter,
3903
+ onDragOver: (event) => event.preventDefault(),
3904
+ onDragLeave: handleDragLeave,
3905
+ onDrop: handleDrop,
3906
+ children: [
3907
+ /* @__PURE__ */ jsx31("span", { className: "fe-file-upload__drop-icon", "aria-hidden": "true", children: "\u2191" }),
3908
+ /* @__PURE__ */ jsx31("span", { className: "fe-file-upload__drop-label", children: dropLabel }),
3909
+ /* @__PURE__ */ jsx31("span", { className: "fe-file-upload__drop-hint", children: "or choose from your device" }),
3910
+ /* @__PURE__ */ jsx31(
3911
+ Button,
3912
+ {
3913
+ hierarchy: "secondary-gray",
3914
+ disabled,
3915
+ onClick: openFileDialog,
3916
+ children: browseLabel
3917
+ }
3918
+ )
3919
+ ]
3920
+ }
3921
+ ),
3922
+ rejections.length > 0 && /* @__PURE__ */ jsx31("div", { className: "fe-file-upload__errors", role: "alert", children: rejections.map((rejection) => /* @__PURE__ */ jsx31("p", { children: rejection.message }, `${fileSignature(rejection.file)}-${rejection.code}`)) }),
3923
+ showFileList && files.length > 0 && /* @__PURE__ */ jsx31("ul", { className: "fe-file-upload__list", "aria-label": "Selected files", children: files.map((file, index) => /* @__PURE__ */ jsxs26(
3924
+ "li",
3925
+ {
3926
+ className: "fe-file-upload__item",
3927
+ children: [
3928
+ /* @__PURE__ */ jsx31("span", { className: "fe-file-upload__visual", children: /* @__PURE__ */ jsx31(FileVisual, { file }) }),
3929
+ /* @__PURE__ */ jsxs26("span", { className: "fe-file-upload__file-details", children: [
3930
+ /* @__PURE__ */ jsx31("span", { className: "fe-file-upload__file-name", title: file.name, children: file.name }),
3931
+ /* @__PURE__ */ jsx31("span", { className: "fe-file-upload__file-size", children: formatFileSize(file.size) })
3932
+ ] }),
3933
+ /* @__PURE__ */ jsx31(
3934
+ Button,
3935
+ {
3936
+ hierarchy: "tertiary-color",
3937
+ color: "error",
3938
+ destructive: true,
3939
+ size: "24",
3940
+ iconOnly: true,
3941
+ icon: /* @__PURE__ */ jsx31(CloseIcon, { size: 14 }),
3942
+ "aria-label": removeLabel(file),
3943
+ disabled,
3944
+ onClick: () => removeFile(file, index)
3945
+ }
3946
+ )
3947
+ ]
3948
+ },
3949
+ `${fileSignature(file)}-${index}`
3950
+ )) })
3951
+ ]
3952
+ }
3953
+ );
3954
+ }
3955
+ );
3956
+ FileUpload.displayName = "FileUpload";
3957
+
3958
+ // packages/file-preview/src/index.tsx
3959
+ import {
3960
+ useEffect as useEffect11,
3961
+ useId as useId14,
3962
+ useRef as useRef12,
3963
+ useState as useState19
3964
+ } from "react";
3965
+ import { createPortal as createPortal4 } from "react-dom";
3966
+ import { Fragment as Fragment4, jsx as jsx32, jsxs as jsxs27 } from "react/jsx-runtime";
3967
+ function clampIndex(index, length) {
3968
+ if (!length) return 0;
3969
+ return Math.min(Math.max(Math.floor(index), 0), length - 1);
3970
+ }
3971
+ function hasExtension(file, extensions) {
3972
+ const name = file.name.toLowerCase();
3973
+ return extensions.some((extension) => name.endsWith(extension));
3974
+ }
3975
+ function getFilePreviewKind(file) {
3976
+ const type = file.type.toLowerCase();
3977
+ if (type.startsWith("image/") || hasExtension(file, [".svg"])) return "image";
3978
+ if (type.startsWith("video/")) return "video";
3979
+ if (type.startsWith("audio/")) return "audio";
3980
+ if (type === "application/pdf" || hasExtension(file, [".pdf"])) return "pdf";
3981
+ return "unsupported";
3982
+ }
3983
+ function formatFileSize2(bytes) {
3984
+ if (bytes < 1024) return `${bytes} B`;
3985
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
3986
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
3987
+ }
3988
+ function getFileExtension(file) {
3989
+ const dotIndex = file.name.lastIndexOf(".");
3990
+ return dotIndex >= 0 ? file.name.slice(dotIndex + 1).toUpperCase() : "FILE";
3991
+ }
3992
+ function useFileObjectUrl(file) {
3993
+ const [preview, setPreview] = useState19();
3994
+ useEffect11(() => {
3995
+ if (!file || typeof URL.createObjectURL !== "function") {
3996
+ setPreview(void 0);
3997
+ return;
3998
+ }
3999
+ const url = URL.createObjectURL(file);
4000
+ setPreview({ file, url });
4001
+ return () => URL.revokeObjectURL(url);
4002
+ }, [file]);
4003
+ if (!preview || preview.file !== file) return void 0;
4004
+ return preview.url;
4005
+ }
4006
+ function startLocalDownload(file) {
4007
+ if (typeof document === "undefined" || typeof URL.createObjectURL !== "function") {
4008
+ return;
4009
+ }
4010
+ const url = URL.createObjectURL(file);
4011
+ const anchor = document.createElement("a");
4012
+ anchor.href = url;
4013
+ anchor.download = file.name;
4014
+ anchor.hidden = true;
4015
+ document.body.append(anchor);
4016
+ anchor.click();
4017
+ anchor.remove();
4018
+ window.setTimeout(() => URL.revokeObjectURL(url), 0);
4019
+ }
4020
+ function PreviewContent({ file }) {
4021
+ const kind = getFilePreviewKind(file);
4022
+ const url = useFileObjectUrl(file);
4023
+ if (url && kind === "image") {
4024
+ return /* @__PURE__ */ jsx32("img", { className: "fe-file-preview__image", src: url, alt: file.name });
4025
+ }
4026
+ if (url && kind === "video") {
4027
+ return /* @__PURE__ */ jsx32("video", { className: "fe-file-preview__video", controls: true, src: url, children: "Your browser cannot play this video." });
4028
+ }
4029
+ if (url && kind === "audio") {
4030
+ return /* @__PURE__ */ jsx32("audio", { className: "fe-file-preview__audio", controls: true, src: url });
4031
+ }
4032
+ if (url && kind === "pdf") {
4033
+ return /* @__PURE__ */ jsx32(
4034
+ "iframe",
4035
+ {
4036
+ className: "fe-file-preview__pdf",
4037
+ title: `Preview ${file.name}`,
4038
+ src: `${url}#view=FitH`
4039
+ }
4040
+ );
4041
+ }
4042
+ return /* @__PURE__ */ jsxs27("div", { className: "fe-file-preview__unsupported", children: [
4043
+ /* @__PURE__ */ jsx32("span", { className: "fe-file-preview__file-type", "aria-hidden": "true", children: getFileExtension(file) }),
4044
+ /* @__PURE__ */ jsx32("p", { children: "Preview is not available for this file type." }),
4045
+ /* @__PURE__ */ jsx32("span", { children: file.name })
4046
+ ] });
4047
+ }
4048
+ function FilePreview({
4049
+ open,
4050
+ files,
4051
+ activeIndex,
4052
+ defaultActiveIndex = 0,
4053
+ onActiveIndexChange,
4054
+ onClose,
4055
+ onEscape,
4056
+ onDelete,
4057
+ onDownload,
4058
+ closeOnBackdropClick = true,
4059
+ closeOnEscape = true,
4060
+ closeLabel = "Close file preview",
4061
+ downloadLabel = "Download",
4062
+ deleteLabel = "Delete",
4063
+ hideDownload = false,
4064
+ className,
4065
+ "aria-label": ariaLabel,
4066
+ ...props
4067
+ }) {
4068
+ const titleId = useId14();
4069
+ const panelRef = useRef12(null);
4070
+ const [uncontrolledIndex, setUncontrolledIndex] = useState19(defaultActiveIndex);
4071
+ const resolvedIndex = clampIndex(
4072
+ activeIndex ?? uncontrolledIndex,
4073
+ files.length
4074
+ );
4075
+ const activeFile = files[resolvedIndex];
4076
+ const hasPrevious = resolvedIndex > 0;
4077
+ const hasNext = resolvedIndex < files.length - 1;
4078
+ const requestClose = (reason) => {
4079
+ if (reason === "escape") onEscape?.();
4080
+ onClose(reason);
4081
+ };
4082
+ useModalOverlay({
4083
+ open,
4084
+ onClose: () => requestClose("escape"),
4085
+ panelRef,
4086
+ priority: 1200,
4087
+ closeOnEscape
4088
+ });
4089
+ useEffect11(() => {
4090
+ if (activeIndex === void 0) {
4091
+ setUncontrolledIndex((index) => clampIndex(index, files.length));
4092
+ }
4093
+ }, [activeIndex, files.length]);
4094
+ const changeActiveIndex = (nextIndex) => {
4095
+ const next = clampIndex(nextIndex, files.length);
4096
+ const nextFile = files[next];
4097
+ if (!nextFile || next === resolvedIndex) return;
4098
+ if (activeIndex === void 0) setUncontrolledIndex(next);
4099
+ onActiveIndexChange?.(next, nextFile);
4100
+ };
4101
+ const handleKeyDown = (event) => {
4102
+ if (event.key === "ArrowLeft" && hasPrevious) {
4103
+ event.preventDefault();
4104
+ changeActiveIndex(resolvedIndex - 1);
4105
+ }
4106
+ if (event.key === "ArrowRight" && hasNext) {
4107
+ event.preventDefault();
4108
+ changeActiveIndex(resolvedIndex + 1);
4109
+ }
4110
+ };
4111
+ if (!open || typeof document === "undefined") return null;
4112
+ return createPortal4(
4113
+ /* @__PURE__ */ jsx32(
4114
+ "div",
4115
+ {
4116
+ className: "fe-file-preview-backdrop",
4117
+ role: "presentation",
4118
+ onMouseDown: (event) => {
4119
+ if (event.target === event.currentTarget && closeOnBackdropClick) {
4120
+ requestClose("backdrop");
4121
+ }
4122
+ },
4123
+ children: /* @__PURE__ */ jsxs27(
4124
+ "div",
4125
+ {
4126
+ ...props,
4127
+ ref: panelRef,
4128
+ className: ["fe-file-preview", className].filter(Boolean).join(" "),
4129
+ role: "dialog",
4130
+ "aria-modal": "true",
4131
+ "aria-labelledby": activeFile ? titleId : void 0,
4132
+ "aria-label": ariaLabel ?? (activeFile ? void 0 : "File preview"),
4133
+ tabIndex: -1,
4134
+ onKeyDown: handleKeyDown,
4135
+ children: [
4136
+ /* @__PURE__ */ jsxs27("header", { className: "fe-file-preview__header", children: [
4137
+ /* @__PURE__ */ jsxs27("div", { className: "fe-file-preview__heading", children: [
4138
+ /* @__PURE__ */ jsx32("h2", { id: titleId, children: activeFile?.name ?? "File preview" }),
4139
+ /* @__PURE__ */ jsx32("span", { "aria-label": `${resolvedIndex + 1} of ${files.length} files`, children: files.length ? `${resolvedIndex + 1} / ${files.length}` : "0 / 0" })
4140
+ ] }),
4141
+ /* @__PURE__ */ jsx32(
4142
+ Button,
4143
+ {
4144
+ hierarchy: "tertiary-gray",
4145
+ size: "32",
4146
+ iconOnly: true,
4147
+ icon: /* @__PURE__ */ jsx32(CloseIcon, {}),
4148
+ "aria-label": closeLabel,
4149
+ onClick: () => requestClose("close")
4150
+ }
4151
+ )
4152
+ ] }),
4153
+ /* @__PURE__ */ jsxs27("div", { className: "fe-file-preview__body", children: [
4154
+ activeFile ? /* @__PURE__ */ jsx32(PreviewContent, { file: activeFile }) : /* @__PURE__ */ jsx32("p", { className: "fe-file-preview__empty", children: "No files to preview." }),
4155
+ activeFile && files.length > 1 && /* @__PURE__ */ jsxs27(Fragment4, { children: [
4156
+ /* @__PURE__ */ jsx32(
4157
+ Button,
4158
+ {
4159
+ className: "fe-file-preview__navigation fe-file-preview__navigation--previous",
4160
+ hierarchy: "secondary-gray",
4161
+ size: "40",
4162
+ iconOnly: true,
4163
+ icon: /* @__PURE__ */ jsx32(ChevronDownIcon, {}),
4164
+ "aria-label": "Previous file",
4165
+ disabled: !hasPrevious,
4166
+ onClick: () => changeActiveIndex(resolvedIndex - 1)
4167
+ }
4168
+ ),
4169
+ /* @__PURE__ */ jsx32(
4170
+ Button,
4171
+ {
4172
+ className: "fe-file-preview__navigation fe-file-preview__navigation--next",
4173
+ hierarchy: "secondary-gray",
4174
+ size: "40",
4175
+ iconOnly: true,
4176
+ icon: /* @__PURE__ */ jsx32(ChevronDownIcon, {}),
4177
+ "aria-label": "Next file",
4178
+ disabled: !hasNext,
4179
+ onClick: () => changeActiveIndex(resolvedIndex + 1)
4180
+ }
4181
+ )
4182
+ ] })
4183
+ ] }),
4184
+ activeFile && /* @__PURE__ */ jsxs27("footer", { className: "fe-file-preview__footer", children: [
4185
+ /* @__PURE__ */ jsxs27("span", { className: "fe-file-preview__metadata", children: [
4186
+ getFilePreviewKind(activeFile),
4187
+ " \xB7",
4188
+ " ",
4189
+ formatFileSize2(activeFile.size)
4190
+ ] }),
4191
+ /* @__PURE__ */ jsxs27("div", { className: "fe-file-preview__actions", children: [
4192
+ !hideDownload && /* @__PURE__ */ jsx32(
4193
+ Button,
4194
+ {
4195
+ hierarchy: "secondary-gray",
4196
+ onClick: () => {
4197
+ onDownload?.(activeFile, resolvedIndex);
4198
+ startLocalDownload(activeFile);
4199
+ },
4200
+ children: downloadLabel
4201
+ }
4202
+ ),
4203
+ onDelete && /* @__PURE__ */ jsx32(
4204
+ Button,
4205
+ {
4206
+ hierarchy: "secondary-color",
4207
+ color: "error",
4208
+ destructive: true,
4209
+ onClick: () => onDelete(activeFile, resolvedIndex),
4210
+ children: deleteLabel
4211
+ }
4212
+ )
4213
+ ] })
4214
+ ] })
4215
+ ]
4216
+ }
4217
+ )
4218
+ }
4219
+ ),
4220
+ document.body
4221
+ );
4222
+ }
4223
+
4224
+ // packages/not-found/src/index.tsx
4225
+ import {
4226
+ useEffect as useEffect12,
4227
+ useId as useId16,
4228
+ useRef as useRef13,
4229
+ useState as useState20
4230
+ } from "react";
4231
+
4232
+ // packages/not-found/src/CavemanArtwork.tsx
4233
+ import { jsx as jsx33, jsxs as jsxs28 } from "react/jsx-runtime";
4234
+ function CavemanArtwork() {
4235
+ return /* @__PURE__ */ jsxs28("div", { className: "fe-cave-scene", children: [
4236
+ " ",
4237
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-text", children: /* @__PURE__ */ jsx33("span", { children: "404" }) }),
4238
+ /* @__PURE__ */ jsxs28("div", { className: "fe-cave-container", children: [
4239
+ /* @__PURE__ */ jsxs28("div", { className: "fe-cave-caveman", children: [
4240
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-leg", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-foot", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-fingers" }) }) }),
4241
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-leg", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-foot", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-fingers" }) }) }),
4242
+ /* @__PURE__ */ jsxs28("div", { className: "fe-cave-shape", children: [
4243
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-circle" }),
4244
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-circle" })
4245
+ ] }),
4246
+ /* @__PURE__ */ jsxs28("div", { className: "fe-cave-head", children: [
4247
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-eye", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-nose" }) }),
4248
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-mouth" })
4249
+ ] }),
4250
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-arm-right", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-club" }) })
4251
+ ] }),
4252
+ /* @__PURE__ */ jsxs28("div", { className: "fe-cave-caveman", children: [
4253
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-leg", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-foot", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-fingers" }) }) }),
4254
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-leg", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-foot", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-fingers" }) }) }),
4255
+ /* @__PURE__ */ jsxs28("div", { className: "fe-cave-shape", children: [
4256
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-circle" }),
4257
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-circle" })
4258
+ ] }),
4259
+ /* @__PURE__ */ jsxs28("div", { className: "fe-cave-head", children: [
4260
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-eye", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-nose" }) }),
4261
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-mouth" })
4262
+ ] }),
4263
+ /* @__PURE__ */ jsx33("div", { className: "fe-cave-arm-right", children: /* @__PURE__ */ jsx33("div", { className: "fe-cave-club" }) })
4264
+ ] })
4265
+ ] })
4266
+ ] });
4267
+ }
4268
+
4269
+ // packages/not-found/src/YetiArtwork.tsx
4270
+ import { useId as useId15 } from "react";
4271
+ import { jsx as jsx34, jsxs as jsxs29 } from "react/jsx-runtime";
4272
+ function YetiArtwork() {
4273
+ const id = useId15();
4274
+ return /* @__PURE__ */ jsxs29("div", { className: "fe-yeti-scene", children: [
4275
+ " ",
4276
+ /* @__PURE__ */ jsxs29(
4277
+ "svg",
4278
+ {
4279
+ "data-part": "yetiSVG",
4280
+ xmlns: "http://www.w3.org/2000/svg",
4281
+ viewBox: "0 0 600 550",
4282
+ children: [
4283
+ /* @__PURE__ */ jsxs29(
4284
+ "linearGradient",
4285
+ {
4286
+ id: `${id}-flashlightGrad`,
4287
+ x1: "126.5842",
4288
+ x2: "90.5842",
4289
+ y1: "176.5625",
4290
+ y2: "213.5625",
4291
+ gradientUnits: "userSpaceOnUse",
4292
+ children: [
4293
+ /* @__PURE__ */ jsx34("stop", { offset: "0", stopColor: "#333" }),
4294
+ /* @__PURE__ */ jsx34("stop", { offset: ".076", stopColor: "#414141" }),
4295
+ /* @__PURE__ */ jsx34("stop", { offset: ".2213", stopColor: "#555" }),
4296
+ /* @__PURE__ */ jsx34("stop", { offset: ".3651", stopColor: "#626262" }),
4297
+ /* @__PURE__ */ jsx34("stop", { offset: ".5043", stopColor: "#666" }),
4298
+ /* @__PURE__ */ jsx34("stop", { offset: ".6323", stopColor: "#606060" }),
4299
+ /* @__PURE__ */ jsx34("stop", { offset: ".8063", stopColor: "#4e4e4e" }),
4300
+ /* @__PURE__ */ jsx34("stop", { offset: "1", stopColor: "#333" })
4301
+ ]
4302
+ }
4303
+ ),
4304
+ /* @__PURE__ */ jsx34("path", { fill: "#24658F", d: "M0 0h600v470H0z" }),
4305
+ /* @__PURE__ */ jsxs29("g", { "data-part": "pillow", children: [
4306
+ /* @__PURE__ */ jsx34(
4307
+ "path",
4308
+ {
4309
+ fill: "#09334F",
4310
+ 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"
4311
+ }
4312
+ ),
4313
+ /* @__PURE__ */ jsx34(
4314
+ "path",
4315
+ {
4316
+ fill: "none",
4317
+ stroke: "#001726",
4318
+ strokeLinecap: "round",
4319
+ strokeLinejoin: "round",
4320
+ strokeWidth: "2.5",
4321
+ 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"
4322
+ }
4323
+ ),
4324
+ /* @__PURE__ */ jsx34(
4325
+ "path",
4326
+ {
4327
+ fill: "#09334F",
4328
+ stroke: "#001726",
4329
+ strokeLinecap: "round",
4330
+ strokeLinejoin: "round",
4331
+ strokeWidth: "2.5",
4332
+ d: "M201.9 21.9c4.9-8 14.1-11.3 20.6-7.3s7.7 13.7 2.8 21.7"
4333
+ }
4334
+ ),
4335
+ /* @__PURE__ */ jsx34(
4336
+ "path",
4337
+ {
4338
+ fill: "#09334F",
4339
+ stroke: "#001726",
4340
+ strokeLinecap: "round",
4341
+ strokeLinejoin: "round",
4342
+ strokeWidth: "2.5",
4343
+ 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"
4344
+ }
4345
+ ),
4346
+ /* @__PURE__ */ jsx34(
4347
+ "path",
4348
+ {
4349
+ fill: "#09334F",
4350
+ stroke: "#001726",
4351
+ strokeLinecap: "round",
4352
+ strokeLinejoin: "round",
4353
+ strokeWidth: "2.5",
4354
+ 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"
4355
+ }
4356
+ ),
4357
+ /* @__PURE__ */ jsx34(
4358
+ "path",
4359
+ {
4360
+ fill: "#09334F",
4361
+ stroke: "#001726",
4362
+ strokeLinecap: "round",
4363
+ strokeLinejoin: "round",
4364
+ strokeWidth: "2.5",
4365
+ 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"
4366
+ }
4367
+ )
4368
+ ] }),
4369
+ /* @__PURE__ */ jsxs29("g", { "data-part": "yeti", children: [
4370
+ /* @__PURE__ */ jsx34(
4371
+ "path",
4372
+ {
4373
+ "data-part": "bodyBG",
4374
+ fill: "#67B1E0",
4375
+ 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"
4376
+ }
4377
+ ),
4378
+ /* @__PURE__ */ jsx34(
4379
+ "path",
4380
+ {
4381
+ className: "hlFur",
4382
+ "data-part": "hlBody",
4383
+ fill: "#FFF",
4384
+ 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"
4385
+ }
4386
+ ),
4387
+ /* @__PURE__ */ jsx34(
4388
+ "path",
4389
+ {
4390
+ "data-part": "bodyOutline",
4391
+ fill: "none",
4392
+ stroke: "#265D85",
4393
+ strokeLinecap: "round",
4394
+ strokeLinejoin: "round",
4395
+ strokeWidth: "2.5",
4396
+ 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"
4397
+ }
4398
+ ),
4399
+ /* @__PURE__ */ jsx34(
4400
+ "path",
4401
+ {
4402
+ fill: "#67B1E0",
4403
+ 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"
4404
+ }
4405
+ ),
4406
+ /* @__PURE__ */ jsx34(
4407
+ "path",
4408
+ {
4409
+ className: "hlFur",
4410
+ "data-part": "hlHead",
4411
+ fill: "#FFF",
4412
+ 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"
4413
+ }
4414
+ ),
4415
+ /* @__PURE__ */ jsx34(
4416
+ "path",
4417
+ {
4418
+ fill: "#67B1E0",
4419
+ stroke: "#265D85",
4420
+ strokeLinecap: "round",
4421
+ strokeLinejoin: "round",
4422
+ strokeWidth: "2.5",
4423
+ 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"
4424
+ }
4425
+ ),
4426
+ /* @__PURE__ */ jsx34(
4427
+ "path",
4428
+ {
4429
+ fill: "none",
4430
+ stroke: "#265D85",
4431
+ strokeLinecap: "round",
4432
+ strokeLinejoin: "round",
4433
+ strokeWidth: "2.5",
4434
+ 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"
4435
+ }
4436
+ ),
4437
+ /* @__PURE__ */ jsxs29("g", { children: [
4438
+ /* @__PURE__ */ jsx34(
4439
+ "ellipse",
4440
+ {
4441
+ cx: "85.8",
4442
+ cy: "120.4",
4443
+ fill: "#88C9F2",
4444
+ rx: "11.5",
4445
+ ry: "11.5",
4446
+ transform: "rotate(-66.265 85.7992 120.4318)"
4447
+ }
4448
+ ),
4449
+ /* @__PURE__ */ jsx34(
4450
+ "path",
4451
+ {
4452
+ className: "hlSkin",
4453
+ "data-part": "hlEar",
4454
+ fill: "#DDF1FA",
4455
+ 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"
4456
+ }
4457
+ ),
4458
+ /* @__PURE__ */ jsx34(
4459
+ "path",
4460
+ {
4461
+ fill: "#88C9F2",
4462
+ stroke: "#265D85",
4463
+ strokeLinecap: "round",
4464
+ strokeLinejoin: "round",
4465
+ strokeWidth: "2.5",
4466
+ d: "M84.2 116.6c-2.2.5-3.6 2.8-3 5 .5 2.2 2.8 3.6 5 3"
4467
+ }
4468
+ ),
4469
+ /* @__PURE__ */ jsx34(
4470
+ "ellipse",
4471
+ {
4472
+ cx: "85.8",
4473
+ cy: "120.4",
4474
+ fill: "none",
4475
+ stroke: "#265D85",
4476
+ strokeWidth: "2.5",
4477
+ rx: "11.5",
4478
+ ry: "11.5",
4479
+ transform: "rotate(-66.265 85.7992 120.4318)"
4480
+ }
4481
+ ),
4482
+ /* @__PURE__ */ jsx34(
4483
+ "path",
4484
+ {
4485
+ className: "hlFur",
4486
+ fill: "#FFF",
4487
+ d: "M106 130.3l-12 3.6 1.2-11.4-6.3-.1 6-12h-5.4l9.6-8.4z"
4488
+ }
4489
+ ),
4490
+ /* @__PURE__ */ jsx34(
4491
+ "path",
4492
+ {
4493
+ className: "hlFur",
4494
+ fill: "#FFF",
4495
+ stroke: "#265D85",
4496
+ strokeLinecap: "round",
4497
+ strokeLinejoin: "round",
4498
+ strokeWidth: "2.5",
4499
+ 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"
4500
+ }
4501
+ )
4502
+ ] }),
4503
+ /* @__PURE__ */ jsx34(
4504
+ "path",
4505
+ {
4506
+ className: "hlSkin",
4507
+ "data-part": "face",
4508
+ fill: "#DDF1FA",
4509
+ 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"
4510
+ }
4511
+ ),
4512
+ /* @__PURE__ */ jsx34(
4513
+ "path",
4514
+ {
4515
+ "data-part": "chin",
4516
+ fill: "none",
4517
+ stroke: "#265D85",
4518
+ strokeLinecap: "round",
4519
+ strokeLinejoin: "round",
4520
+ strokeWidth: "2.5",
4521
+ 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"
4522
+ }
4523
+ ),
4524
+ /* @__PURE__ */ jsx34(
4525
+ "path",
4526
+ {
4527
+ className: "hlFur",
4528
+ "data-part": "eyebrow",
4529
+ fill: "#FFF",
4530
+ stroke: "#265D85",
4531
+ strokeLinecap: "round",
4532
+ strokeLinejoin: "round",
4533
+ strokeWidth: "2.5",
4534
+ 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"
4535
+ }
4536
+ ),
4537
+ /* @__PURE__ */ jsxs29("g", { "data-part": "eyeL", children: [
4538
+ /* @__PURE__ */ jsx34("circle", { cx: "135.9", cy: "105.3", r: "3.5", fill: "#265D85" }),
4539
+ /* @__PURE__ */ jsx34("circle", { cx: "133.7", cy: "103.5", r: "1", fill: "#FFF" })
4540
+ ] }),
4541
+ /* @__PURE__ */ jsxs29("g", { "data-part": "eyeR", children: [
4542
+ /* @__PURE__ */ jsx34("circle", { cx: "163.2", cy: "96.3", r: "3.5", fill: "#265D85" }),
4543
+ /* @__PURE__ */ jsx34("circle", { cx: "160.9", cy: "94.5", r: "1", fill: "#FFF" })
4544
+ ] }),
4545
+ /* @__PURE__ */ jsx34(
4546
+ "path",
4547
+ {
4548
+ "data-part": "nose",
4549
+ fill: "#265D85",
4550
+ 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"
4551
+ }
4552
+ ),
4553
+ /* @__PURE__ */ jsx34(
4554
+ "path",
4555
+ {
4556
+ fill: "#67B1E0",
4557
+ stroke: "#265D85",
4558
+ strokeLinecap: "round",
4559
+ strokeLinejoin: "round",
4560
+ strokeWidth: "2.5",
4561
+ 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"
4562
+ }
4563
+ ),
4564
+ /* @__PURE__ */ jsxs29("g", { "data-part": "mouth", children: [
4565
+ /* @__PURE__ */ jsx34(
4566
+ "path",
4567
+ {
4568
+ "data-part": "mouthBG",
4569
+ fill: "#265D85",
4570
+ 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"
4571
+ }
4572
+ ),
4573
+ /* @__PURE__ */ jsxs29("g", { children: [
4574
+ /* @__PURE__ */ jsx34("defs", { children: /* @__PURE__ */ jsx34(
4575
+ "path",
4576
+ {
4577
+ id: `${id}-mouthPath`,
4578
+ 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"
4579
+ }
4580
+ ) }),
4581
+ /* @__PURE__ */ jsx34("clipPath", { id: `${id}-mouthClipPath`, children: /* @__PURE__ */ jsx34("use", { overflow: "visible", href: `#${id}-mouthPath` }) }),
4582
+ /* @__PURE__ */ jsxs29("g", { clipPath: `url(#${id}-mouthClipPath)`, children: [
4583
+ /* @__PURE__ */ jsx34(
4584
+ "ellipse",
4585
+ {
4586
+ cx: "160.8",
4587
+ cy: "133.2",
4588
+ fill: "#CC4A6C",
4589
+ rx: "13",
4590
+ ry: "8",
4591
+ transform: "rotate(-21.685 160.775 133.1613)"
4592
+ }
4593
+ ),
4594
+ /* @__PURE__ */ jsx34(
4595
+ "ellipse",
4596
+ {
4597
+ cx: "158.4",
4598
+ cy: "127.1",
4599
+ fill: "#FFF",
4600
+ opacity: ".1",
4601
+ rx: "5",
4602
+ ry: "1.5",
4603
+ transform: "rotate(-21.685 158.3808 127.126)"
4604
+ }
4605
+ ),
4606
+ /* @__PURE__ */ jsx34(
4607
+ "path",
4608
+ {
4609
+ "data-part": "tooth1",
4610
+ fill: "#FFF",
4611
+ 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"
4612
+ }
4613
+ ),
4614
+ /* @__PURE__ */ jsx34(
4615
+ "path",
4616
+ {
4617
+ "data-part": "tooth2",
4618
+ fill: "#FFF",
4619
+ 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"
4620
+ }
4621
+ ),
4622
+ /* @__PURE__ */ jsx34(
4623
+ "path",
4624
+ {
4625
+ "data-part": "tooth3",
4626
+ fill: "#FFF",
4627
+ 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"
4628
+ }
4629
+ )
4630
+ ] })
4631
+ ] }),
4632
+ /* @__PURE__ */ jsx34(
4633
+ "path",
4634
+ {
4635
+ "data-part": "mouthOutline",
4636
+ fill: "none",
4637
+ stroke: "#265D85",
4638
+ strokeLinecap: "round",
4639
+ strokeLinejoin: "round",
4640
+ strokeWidth: "2.5",
4641
+ 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"
4642
+ }
4643
+ )
4644
+ ] }),
4645
+ /* @__PURE__ */ jsxs29("g", { "data-part": "armR", children: [
4646
+ /* @__PURE__ */ jsx34(
4647
+ "path",
4648
+ {
4649
+ className: "hlSkin",
4650
+ fill: "#DDF1FA",
4651
+ 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"
4652
+ }
4653
+ ),
4654
+ /* @__PURE__ */ jsx34(
4655
+ "path",
4656
+ {
4657
+ fill: "#A9DDF3",
4658
+ 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"
4659
+ }
4660
+ ),
4661
+ /* @__PURE__ */ jsx34(
4662
+ "path",
4663
+ {
4664
+ fill: "none",
4665
+ stroke: "#265D85",
4666
+ strokeLinecap: "round",
4667
+ strokeLinejoin: "round",
4668
+ strokeMiterlimit: "10",
4669
+ strokeWidth: "2.5",
4670
+ 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"
4671
+ }
4672
+ ),
4673
+ /* @__PURE__ */ jsx34(
4674
+ "path",
4675
+ {
4676
+ className: "hlSkin",
4677
+ fill: "#DDF1FA",
4678
+ stroke: "#265D85",
4679
+ strokeWidth: "2.5",
4680
+ 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"
4681
+ }
4682
+ ),
4683
+ /* @__PURE__ */ jsx34(
4684
+ "path",
4685
+ {
4686
+ className: "hlSkin",
4687
+ fill: "#DDF1FA",
4688
+ stroke: "#265D85",
4689
+ strokeWidth: "2.5",
4690
+ 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"
4691
+ }
4692
+ ),
4693
+ /* @__PURE__ */ jsx34(
4694
+ "path",
4695
+ {
4696
+ fill: "#88C9F2",
4697
+ d: "M162.3 128.6l18.6 46.7 37.2-14.8-17.9-44.8"
4698
+ }
4699
+ ),
4700
+ /* @__PURE__ */ jsx34(
4701
+ "path",
4702
+ {
4703
+ className: "hlSkin",
4704
+ fill: "#DDF1FA",
4705
+ 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"
4706
+ }
4707
+ ),
4708
+ /* @__PURE__ */ jsx34(
4709
+ "path",
4710
+ {
4711
+ fill: "none",
4712
+ stroke: "#265D85",
4713
+ strokeLinecap: "round",
4714
+ strokeLinejoin: "round",
4715
+ strokeMiterlimit: "10",
4716
+ strokeWidth: "2.5",
4717
+ d: "M162.3 128.6l18.6 46.7 37.2-14.8-15.3-38.3"
4718
+ }
4719
+ ),
4720
+ /* @__PURE__ */ jsx34(
4721
+ "path",
4722
+ {
4723
+ className: "hlSkin",
4724
+ fill: "#DDF1FA",
4725
+ d: "M190.8 119l-1.5-3.7c-2-5.1-7.9-7.6-13-5.6l5.2 12.9"
4726
+ }
4727
+ ),
4728
+ /* @__PURE__ */ jsx34(
4729
+ "path",
4730
+ {
4731
+ className: "hlSkin",
4732
+ fill: "#DDF1FA",
4733
+ d: "M203.5 123.8l-1.5-3.7c-2-5.1-7.9-7.6-13-5.6l5.2 12.9"
4734
+ }
4735
+ ),
4736
+ /* @__PURE__ */ jsx34(
4737
+ "path",
4738
+ {
4739
+ fill: "#A9DDF3",
4740
+ 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"
4741
+ }
4742
+ ),
4743
+ /* @__PURE__ */ jsx34(
4744
+ "path",
4745
+ {
4746
+ fill: "none",
4747
+ stroke: "#265D85",
4748
+ strokeLinecap: "round",
4749
+ strokeLinejoin: "round",
4750
+ strokeMiterlimit: "10",
4751
+ strokeWidth: "2.5",
4752
+ d: "M203.5 123.8l-1.5-3.7c-2-5.1-7.9-7.6-13-5.6"
4753
+ }
4754
+ ),
4755
+ /* @__PURE__ */ jsx34(
4756
+ "path",
4757
+ {
4758
+ fill: "none",
4759
+ stroke: "#265D85",
4760
+ strokeLinecap: "round",
4761
+ strokeLinejoin: "round",
4762
+ strokeMiterlimit: "10",
4763
+ strokeWidth: "2.5",
4764
+ d: "M193.7 126.4l-4.4-11.1c-2-5.1-7.9-7.6-13-5.6"
4765
+ }
4766
+ ),
4767
+ /* @__PURE__ */ jsx34(
4768
+ "path",
4769
+ {
4770
+ fill: "#67B1E0",
4771
+ 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"
4772
+ }
4773
+ ),
4774
+ /* @__PURE__ */ jsx34(
4775
+ "path",
4776
+ {
4777
+ fill: "none",
4778
+ stroke: "#265D85",
4779
+ strokeLinecap: "round",
4780
+ strokeLinejoin: "round",
4781
+ strokeWidth: "2.5",
4782
+ 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"
4783
+ }
4784
+ ),
4785
+ /* @__PURE__ */ jsx34(
4786
+ "path",
4787
+ {
4788
+ fill: "none",
4789
+ stroke: "#3A5E77",
4790
+ strokeLinecap: "round",
4791
+ strokeLinejoin: "round",
4792
+ strokeMiterlimit: "10",
4793
+ strokeWidth: "2.5",
4794
+ d: "M160.9 125l2 5.1"
4795
+ }
4796
+ ),
4797
+ /* @__PURE__ */ jsx34(
4798
+ "path",
4799
+ {
4800
+ className: "hlSkin",
4801
+ fill: "#DDF1FA",
4802
+ d: "M172.2 126.4l-1.5-3.7c-2-5.1-7.9-7.6-13-5.6l5.2 12.9"
4803
+ }
4804
+ ),
4805
+ /* @__PURE__ */ jsx34(
4806
+ "path",
4807
+ {
4808
+ fill: "none",
4809
+ stroke: "#265D85",
4810
+ strokeLinecap: "round",
4811
+ strokeLinejoin: "round",
4812
+ strokeMiterlimit: "10",
4813
+ strokeWidth: "2.5",
4814
+ d: "M160.5 124l2.4 6.1"
4815
+ }
4816
+ ),
4817
+ /* @__PURE__ */ jsx34(
4818
+ "path",
4819
+ {
4820
+ className: "hlSkin",
4821
+ fill: "#DDF1FA",
4822
+ d: "M181.5 122.7L180 119c-2-5.1-7.9-7.6-13-5.6l5.2 12.9"
4823
+ }
4824
+ ),
4825
+ /* @__PURE__ */ jsx34(
4826
+ "path",
4827
+ {
4828
+ fill: "none",
4829
+ stroke: "#265D85",
4830
+ strokeLinecap: "round",
4831
+ strokeLinejoin: "round",
4832
+ strokeMiterlimit: "10",
4833
+ strokeWidth: "2.5",
4834
+ d: "M181.5 122.7L180 119c-2-5.1-7.9-7.6-13-5.6"
4835
+ }
4836
+ ),
4837
+ /* @__PURE__ */ jsx34(
4838
+ "path",
4839
+ {
4840
+ fill: "none",
4841
+ stroke: "#265D85",
4842
+ strokeLinecap: "round",
4843
+ strokeLinejoin: "round",
4844
+ strokeMiterlimit: "10",
4845
+ strokeWidth: "2.5",
4846
+ d: "M172.2 126.4l-1.5-3.7c-2-5.1-7.9-7.6-13-5.6"
4847
+ }
4848
+ )
4849
+ ] }),
4850
+ /* @__PURE__ */ jsxs29("g", { "data-part": "armL", children: [
4851
+ /* @__PURE__ */ jsx34(
4852
+ "path",
4853
+ {
4854
+ fill: "#67B1E0",
4855
+ 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"
4856
+ }
4857
+ ),
4858
+ /* @__PURE__ */ jsx34(
4859
+ "path",
4860
+ {
4861
+ fill: "none",
4862
+ stroke: "#265D85",
4863
+ strokeLinecap: "round",
4864
+ strokeLinejoin: "round",
4865
+ strokeWidth: "2.5",
4866
+ 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"
4867
+ }
4868
+ ),
4869
+ /* @__PURE__ */ jsx34(
4870
+ "path",
4871
+ {
4872
+ fill: "none",
4873
+ stroke: "#262626",
4874
+ strokeLinecap: "round",
4875
+ strokeLinejoin: "round",
4876
+ strokeMiterlimit: "10",
4877
+ strokeWidth: "20",
4878
+ d: "M59.3 143.8l34.3 33.9"
4879
+ }
4880
+ ),
4881
+ /* @__PURE__ */ jsx34(
4882
+ "path",
4883
+ {
4884
+ fill: "#4D4D4D",
4885
+ d: "M58.4 133.9l15.9 15.9-.9.9-16.5-16.5c.5-.2 1-.3 1.5-.3z"
4886
+ }
4887
+ ),
4888
+ /* @__PURE__ */ jsx34(
4889
+ "path",
4890
+ {
4891
+ fill: "#1A1A1A",
4892
+ d: "M71.2 169.6l-20.1-20c-2.4-3.7-2.5-8.1.1-11.7l23.1 22.2"
4893
+ }
4894
+ ),
4895
+ /* @__PURE__ */ jsx34(
4896
+ "path",
4897
+ {
4898
+ fill: "#4D4D4D",
4899
+ d: "M80.5 156.4l16 15.9-.9.9-16.5-16.5c.5-.1 1-.2 1.4-.3z"
4900
+ }
4901
+ ),
4902
+ /* @__PURE__ */ jsx34(
4903
+ "path",
4904
+ {
4905
+ fill: "#1A1A1A",
4906
+ d: "M74.2 160.1L86 171.4l-2 11-10.2-10.1c-2.4-4.4-2.5-8.5.4-12.2z"
4907
+ }
4908
+ ),
4909
+ /* @__PURE__ */ jsx34(
4910
+ "path",
4911
+ {
4912
+ fill: "#88C9F2",
4913
+ 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"
4914
+ }
4915
+ ),
4916
+ /* @__PURE__ */ jsx34(
4917
+ "path",
4918
+ {
4919
+ fill: "none",
4920
+ stroke: "#265D85",
4921
+ strokeLinecap: "round",
4922
+ strokeLinejoin: "round",
4923
+ strokeWidth: "2.5",
4924
+ 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"
4925
+ }
4926
+ ),
4927
+ /* @__PURE__ */ jsx34(
4928
+ "path",
4929
+ {
4930
+ fill: "#88C9F2",
4931
+ 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"
4932
+ }
4933
+ ),
4934
+ /* @__PURE__ */ jsx34(
4935
+ "path",
4936
+ {
4937
+ fill: "#67B1E0",
4938
+ 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"
4939
+ }
4940
+ ),
4941
+ /* @__PURE__ */ jsx34(
4942
+ "path",
4943
+ {
4944
+ fill: "none",
4945
+ stroke: "#265D85",
4946
+ strokeLinecap: "round",
4947
+ strokeLinejoin: "round",
4948
+ strokeWidth: "2.5",
4949
+ 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"
4950
+ }
4951
+ ),
4952
+ /* @__PURE__ */ jsx34(
4953
+ "path",
4954
+ {
4955
+ className: "hlSkin",
4956
+ "data-part": "hlHandL",
4957
+ fill: "#DDF1FA",
4958
+ 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"
4959
+ }
4960
+ ),
4961
+ /* @__PURE__ */ jsx34(
4962
+ "path",
4963
+ {
4964
+ fill: "none",
4965
+ stroke: "#265D85",
4966
+ strokeLinecap: "round",
4967
+ strokeLinejoin: "round",
4968
+ strokeWidth: "2.5",
4969
+ d: "M89.7 180.5c-6 2.4-12.7-.7-14.9-6.8"
4970
+ }
4971
+ ),
4972
+ /* @__PURE__ */ jsx34(
4973
+ "path",
4974
+ {
4975
+ fill: "none",
4976
+ stroke: "#265D85",
4977
+ strokeLinecap: "round",
4978
+ strokeLinejoin: "round",
4979
+ strokeWidth: "2.5",
4980
+ 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"
4981
+ }
4982
+ ),
4983
+ /* @__PURE__ */ jsx34(
4984
+ "path",
4985
+ {
4986
+ className: "hlFur",
4987
+ "data-part": "hlArmL",
4988
+ fill: "#FFF",
4989
+ 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"
4990
+ }
4991
+ ),
4992
+ /* @__PURE__ */ jsx34(
4993
+ "path",
4994
+ {
4995
+ fill: "#A9DDF3",
4996
+ 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"
4997
+ }
4998
+ ),
4999
+ /* @__PURE__ */ jsx34(
5000
+ "path",
5001
+ {
5002
+ fill: "none",
5003
+ stroke: "#265D85",
5004
+ strokeLinecap: "round",
5005
+ strokeLinejoin: "round",
5006
+ strokeWidth: "2.5",
5007
+ 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"
5008
+ }
5009
+ ),
5010
+ /* @__PURE__ */ jsx34(
5011
+ "path",
5012
+ {
5013
+ fill: "none",
5014
+ stroke: "#265D85",
5015
+ strokeLinecap: "round",
5016
+ strokeLinejoin: "round",
5017
+ strokeWidth: "2.5",
5018
+ d: "M54 157.6l-5.6-5.6 2.7 14.7"
5019
+ }
5020
+ ),
5021
+ /* @__PURE__ */ jsx34(
5022
+ "path",
5023
+ {
5024
+ fill: "none",
5025
+ stroke: "#265D85",
5026
+ strokeLinecap: "round",
5027
+ strokeLinejoin: "round",
5028
+ strokeWidth: "2.5",
5029
+ d: "M67.1 188l7.3-5 3.8 9.3"
5030
+ }
5031
+ ),
5032
+ /* @__PURE__ */ jsx34(
5033
+ "path",
5034
+ {
5035
+ fill: "none",
5036
+ stroke: "#265D85",
5037
+ strokeLinecap: "round",
5038
+ strokeLinejoin: "round",
5039
+ strokeWidth: "2.5",
5040
+ d: "M78.2 192.3l6.8-9 7.1 11.5"
5041
+ }
5042
+ )
5043
+ ] })
5044
+ ] }),
5045
+ /* @__PURE__ */ jsxs29(
5046
+ "g",
5047
+ {
5048
+ "data-part": "fingersBackL",
5049
+ visibility: "hidden",
5050
+ fill: "#88C9F2",
5051
+ stroke: "#265D85",
5052
+ strokeLinecap: "round",
5053
+ strokeLinejoin: "round",
5054
+ strokeMiterlimit: "10",
5055
+ strokeWidth: "2.5",
5056
+ children: [
5057
+ /* @__PURE__ */ jsx34("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" }),
5058
+ /* @__PURE__ */ jsx34("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" })
5059
+ ]
5060
+ }
5061
+ ),
5062
+ /* @__PURE__ */ jsxs29(
5063
+ "g",
5064
+ {
5065
+ "data-part": "fingersBackR",
5066
+ visibility: "hidden",
5067
+ fill: "#88c9f2",
5068
+ stroke: "#265D85",
5069
+ strokeLinecap: "round",
5070
+ strokeLinejoin: "round",
5071
+ strokeMiterlimit: "10",
5072
+ strokeWidth: "2.5",
5073
+ children: [
5074
+ /* @__PURE__ */ jsx34("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" }),
5075
+ /* @__PURE__ */ jsx34("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" }),
5076
+ /* @__PURE__ */ jsx34("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" })
5077
+ ]
5078
+ }
5079
+ ),
5080
+ /* @__PURE__ */ jsxs29("g", { "data-part": "blanket", children: [
5081
+ /* @__PURE__ */ jsx34(
5082
+ "path",
5083
+ {
5084
+ 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",
5085
+ opacity: ".1"
5086
+ }
5087
+ ),
5088
+ /* @__PURE__ */ jsx34(
5089
+ "path",
5090
+ {
5091
+ fill: "#09334F",
5092
+ 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"
5093
+ }
5094
+ ),
5095
+ /* @__PURE__ */ jsx34(
5096
+ "path",
5097
+ {
5098
+ fill: "#072A40",
5099
+ 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"
5100
+ }
5101
+ ),
5102
+ /* @__PURE__ */ jsx34(
5103
+ "path",
5104
+ {
5105
+ fill: "none",
5106
+ stroke: "#001726",
5107
+ strokeLinecap: "round",
5108
+ strokeLinejoin: "round",
5109
+ strokeMiterlimit: "10",
5110
+ strokeWidth: "2.5",
5111
+ 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"
5112
+ }
5113
+ ),
5114
+ /* @__PURE__ */ jsx34(
5115
+ "path",
5116
+ {
5117
+ fill: "none",
5118
+ stroke: "#001726",
5119
+ strokeLinecap: "round",
5120
+ strokeLinejoin: "round",
5121
+ strokeMiterlimit: "10",
5122
+ strokeWidth: "2.5",
5123
+ 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"
5124
+ }
5125
+ ),
5126
+ /* @__PURE__ */ jsx34(
5127
+ "path",
5128
+ {
5129
+ 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",
5130
+ opacity: ".03"
5131
+ }
5132
+ ),
5133
+ /* @__PURE__ */ jsx34(
5134
+ "path",
5135
+ {
5136
+ 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",
5137
+ opacity: ".03"
5138
+ }
5139
+ ),
5140
+ /* @__PURE__ */ jsx34(
5141
+ "path",
5142
+ {
5143
+ 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",
5144
+ opacity: ".03"
5145
+ }
5146
+ ),
5147
+ /* @__PURE__ */ jsx34(
5148
+ "path",
5149
+ {
5150
+ 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",
5151
+ opacity: ".03"
5152
+ }
5153
+ ),
5154
+ /* @__PURE__ */ jsx34(
5155
+ "path",
5156
+ {
5157
+ 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",
5158
+ opacity: ".03"
5159
+ }
5160
+ )
5161
+ ] }),
5162
+ /* @__PURE__ */ jsxs29("g", { "data-part": "fingersFrontL", visibility: "hidden", children: [
5163
+ /* @__PURE__ */ jsx34(
5164
+ "path",
5165
+ {
5166
+ fill: "#88C9F2",
5167
+ stroke: "#265D85",
5168
+ strokeLinecap: "round",
5169
+ strokeLinejoin: "round",
5170
+ strokeMiterlimit: "10",
5171
+ strokeWidth: "2.5",
5172
+ 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"
5173
+ }
5174
+ ),
5175
+ /* @__PURE__ */ jsx34(
5176
+ "path",
5177
+ {
5178
+ fill: "#A9DDF3",
5179
+ 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"
5180
+ }
5181
+ ),
5182
+ /* @__PURE__ */ jsx34(
5183
+ "path",
5184
+ {
5185
+ fill: "#88C9F2",
5186
+ stroke: "#265D85",
5187
+ strokeLinecap: "round",
5188
+ strokeLinejoin: "round",
5189
+ strokeMiterlimit: "10",
5190
+ strokeWidth: "2.5",
5191
+ 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"
5192
+ }
5193
+ ),
5194
+ /* @__PURE__ */ jsx34(
5195
+ "path",
5196
+ {
5197
+ fill: "#A9DDF3",
5198
+ 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"
5199
+ }
5200
+ ),
5201
+ /* @__PURE__ */ jsx34(
5202
+ "path",
5203
+ {
5204
+ fill: "#88C9F2",
5205
+ stroke: "#265D85",
5206
+ strokeLinecap: "round",
5207
+ strokeLinejoin: "round",
5208
+ strokeMiterlimit: "10",
5209
+ strokeWidth: "2.5",
5210
+ 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"
5211
+ }
5212
+ ),
5213
+ /* @__PURE__ */ jsx34(
5214
+ "path",
5215
+ {
5216
+ fill: "#A9DDF3",
5217
+ 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"
5218
+ }
5219
+ )
5220
+ ] }),
5221
+ /* @__PURE__ */ jsxs29("g", { "data-part": "fingersFrontR", visibility: "hidden", children: [
5222
+ /* @__PURE__ */ jsx34(
5223
+ "path",
5224
+ {
5225
+ fill: "#88c9f2",
5226
+ stroke: "#265D85",
5227
+ strokeLinecap: "round",
5228
+ strokeLinejoin: "round",
5229
+ strokeMiterlimit: "10",
5230
+ strokeWidth: "2.5",
5231
+ 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"
5232
+ }
5233
+ ),
5234
+ /* @__PURE__ */ jsx34(
5235
+ "path",
5236
+ {
5237
+ fill: "#A9DDF3",
5238
+ 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"
5239
+ }
5240
+ ),
5241
+ /* @__PURE__ */ jsx34(
5242
+ "path",
5243
+ {
5244
+ fill: "#88c9f2",
5245
+ stroke: "#265D85",
5246
+ strokeLinecap: "round",
5247
+ strokeLinejoin: "round",
5248
+ strokeMiterlimit: "10",
5249
+ strokeWidth: "2.5",
5250
+ 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"
5251
+ }
5252
+ ),
5253
+ /* @__PURE__ */ jsx34(
5254
+ "path",
5255
+ {
5256
+ fill: "#A9DDF3",
5257
+ 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"
5258
+ }
5259
+ ),
5260
+ /* @__PURE__ */ jsx34(
5261
+ "path",
5262
+ {
5263
+ fill: "#88c9f2",
5264
+ stroke: "#265D85",
5265
+ strokeLinecap: "round",
5266
+ strokeLinejoin: "round",
5267
+ strokeMiterlimit: "10",
5268
+ strokeWidth: "2.5",
5269
+ 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"
5270
+ }
5271
+ ),
5272
+ /* @__PURE__ */ jsx34(
5273
+ "path",
5274
+ {
5275
+ fill: "#A9DDF3",
5276
+ 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"
5277
+ }
5278
+ )
5279
+ ] }),
5280
+ /* @__PURE__ */ jsxs29("g", { "data-part": "flashlightFront", children: [
5281
+ /* @__PURE__ */ jsx34(
5282
+ "path",
5283
+ {
5284
+ fill: "#1A1A1A",
5285
+ 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"
5286
+ }
5287
+ ),
5288
+ /* @__PURE__ */ jsx34(
5289
+ "path",
5290
+ {
5291
+ fill: "#333",
5292
+ d: "M91.9 167.8l20.5 7.4-.5 1.2-21.4-8.2c.5-.2 1-.3 1.4-.4z"
5293
+ }
5294
+ ),
5295
+ /* @__PURE__ */ jsx34("path", { d: "M86 171.4c-2 2.5-3 6-2.2 10l4.6 26.4 11.4-11.1L86 171.4z" }),
5296
+ /* @__PURE__ */ jsx34(
5297
+ "path",
5298
+ {
5299
+ fill: `url(#${id}-flashlightGrad)`,
5300
+ 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"
5301
+ }
5302
+ ),
5303
+ /* @__PURE__ */ jsx34(
5304
+ "path",
5305
+ {
5306
+ fill: "#B3B3B3",
5307
+ 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"
5308
+ }
5309
+ )
5310
+ ] })
5311
+ ]
5312
+ }
5313
+ ),
5314
+ /* @__PURE__ */ jsxs29(
5315
+ "svg",
5316
+ {
5317
+ "data-part": "lightSVG",
5318
+ xmlns: "http://www.w3.org/2000/svg",
5319
+ viewBox: "0 0 600 550",
5320
+ children: [
5321
+ /* @__PURE__ */ jsxs29("filter", { id: `${id}-white-glow`, children: [
5322
+ /* @__PURE__ */ jsx34(
5323
+ "feFlood",
5324
+ {
5325
+ result: "flood",
5326
+ floodColor: "#ffffff",
5327
+ floodOpacity: ".6"
5328
+ }
5329
+ ),
5330
+ /* @__PURE__ */ jsx34(
5331
+ "feComposite",
5332
+ {
5333
+ in: "flood",
5334
+ result: "mask",
5335
+ in2: "SourceGraphic",
5336
+ operator: "in"
5337
+ }
5338
+ ),
5339
+ /* @__PURE__ */ jsx34(
5340
+ "feMorphology",
5341
+ {
5342
+ in: "mask",
5343
+ result: "dilated",
5344
+ operator: "dilate",
5345
+ radius: "3"
5346
+ }
5347
+ ),
5348
+ /* @__PURE__ */ jsx34(
5349
+ "feGaussianBlur",
5350
+ {
5351
+ in: "dilated",
5352
+ result: "blurred",
5353
+ stdDeviation: "8"
5354
+ }
5355
+ ),
5356
+ /* @__PURE__ */ jsxs29("feMerge", { children: [
5357
+ /* @__PURE__ */ jsx34("feMergeNode", { in: "blurred" }),
5358
+ /* @__PURE__ */ jsx34("feMergeNode", { in: "SourceGraphic" })
5359
+ ] })
5360
+ ] }),
5361
+ /* @__PURE__ */ jsxs29("g", { "data-part": "light", children: [
5362
+ /* @__PURE__ */ jsx34(
5363
+ "path",
5364
+ {
5365
+ filter: `url(#${id}-white-glow)`,
5366
+ fill: "#F8FFE8",
5367
+ 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"
5368
+ }
5369
+ ),
5370
+ /* @__PURE__ */ jsx34(
5371
+ "path",
5372
+ {
5373
+ opacity: "0.7",
5374
+ fill: "#FFFFFF",
5375
+ 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"
5376
+ }
5377
+ )
5378
+ ] }),
5379
+ /* @__PURE__ */ jsxs29("g", { "data-part": "four04", children: [
5380
+ /* @__PURE__ */ jsxs29("g", { opacity: ".2", "data-part": "lettersShadow", children: [
5381
+ /* @__PURE__ */ jsx34("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" }),
5382
+ /* @__PURE__ */ jsx34("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" }),
5383
+ /* @__PURE__ */ jsx34("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" })
5384
+ ] }),
5385
+ /* @__PURE__ */ jsx34(
5386
+ "path",
5387
+ {
5388
+ className: "lettersSide",
5389
+ stroke: "#265D85",
5390
+ strokeLinecap: "round",
5391
+ strokeLinejoin: "round",
5392
+ strokeMiterlimit: "10",
5393
+ strokeWidth: "2.5",
5394
+ fill: "#3A7199",
5395
+ 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"
5396
+ }
5397
+ ),
5398
+ /* @__PURE__ */ jsx34(
5399
+ "path",
5400
+ {
5401
+ className: "lettersFront",
5402
+ stroke: "#265D85",
5403
+ strokeLinecap: "round",
5404
+ strokeLinejoin: "round",
5405
+ strokeMiterlimit: "10",
5406
+ strokeWidth: "2.5",
5407
+ fill: "#67B1E0",
5408
+ 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"
5409
+ }
5410
+ ),
5411
+ /* @__PURE__ */ jsx34(
5412
+ "path",
5413
+ {
5414
+ className: "lettersSide",
5415
+ stroke: "#265D85",
5416
+ strokeLinecap: "round",
5417
+ strokeLinejoin: "round",
5418
+ strokeMiterlimit: "10",
5419
+ strokeWidth: "2.5",
5420
+ fill: "#3A7199",
5421
+ 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"
5422
+ }
5423
+ ),
5424
+ /* @__PURE__ */ jsx34(
5425
+ "path",
5426
+ {
5427
+ className: "lettersFront",
5428
+ stroke: "#265D85",
5429
+ strokeLinecap: "round",
5430
+ strokeLinejoin: "round",
5431
+ strokeMiterlimit: "10",
5432
+ strokeWidth: "2.5",
5433
+ fill: "#67B1E0",
5434
+ 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"
5435
+ }
5436
+ ),
5437
+ /* @__PURE__ */ jsx34(
5438
+ "path",
5439
+ {
5440
+ className: "lettersSide",
5441
+ stroke: "#265D85",
5442
+ strokeLinecap: "round",
5443
+ strokeLinejoin: "round",
5444
+ strokeMiterlimit: "10",
5445
+ strokeWidth: "2.5",
5446
+ fill: "#3A7199",
5447
+ 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"
5448
+ }
5449
+ ),
5450
+ /* @__PURE__ */ jsx34(
5451
+ "path",
5452
+ {
5453
+ className: "lettersFront",
5454
+ stroke: "#265D85",
5455
+ strokeLinecap: "round",
5456
+ strokeLinejoin: "round",
5457
+ strokeMiterlimit: "10",
5458
+ strokeWidth: "2.5",
5459
+ fill: "#67B1E0",
5460
+ 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"
5461
+ }
5462
+ )
5463
+ ] })
5464
+ ]
5465
+ }
5466
+ )
5467
+ ] });
5468
+ }
5469
+
5470
+ // packages/not-found/src/index.tsx
5471
+ import { jsx as jsx35, jsxs as jsxs30 } from "react/jsx-runtime";
5472
+ var variants = ["caveman", "bad_dream", "electric_shock"];
5473
+ var copy2 = {
5474
+ caveman: {
5475
+ title: "This page is history.",
5476
+ description: "The page you are looking for could not be found."
5477
+ },
5478
+ bad_dream: {
5479
+ title: "Hello?? Is somebody there?!?",
5480
+ description: "The page you are trying to reach cannot be found. Perhaps it was just a bad dream?"
5481
+ },
5482
+ electric_shock: {
5483
+ title: "Looks like you\u2019re lost",
5484
+ description: "The page you are looking for is not available."
5485
+ }
5486
+ };
5487
+ function NotFoundScene({
5488
+ variant,
5489
+ title,
5490
+ description,
5491
+ action,
5492
+ homeLabel = "Go to Home",
5493
+ homeHref = "/",
5494
+ onHomeClick,
5495
+ animated = true,
5496
+ className,
5497
+ ...props
5498
+ }) {
5499
+ const titleId = useId16();
5500
+ return /* @__PURE__ */ jsxs30(
5501
+ "section",
5502
+ {
5503
+ "aria-labelledby": titleId,
5504
+ ...props,
5505
+ className: ["fe-not-found", `fe-not-found--${variant}`, className].filter(Boolean).join(" "),
5506
+ "data-variant": variant,
5507
+ "data-animated": animated,
5508
+ children: [
5509
+ /* @__PURE__ */ jsxs30("div", { className: "fe-not-found__art", "aria-hidden": "true", children: [
5510
+ variant === "caveman" && /* @__PURE__ */ jsx35(CavemanArtwork, {}),
5511
+ variant === "bad_dream" && /* @__PURE__ */ jsx35(YetiArtwork, {}),
5512
+ variant === "electric_shock" && /* @__PURE__ */ jsx35("div", { className: "fe-not-found__lost-art", children: /* @__PURE__ */ jsx35("span", { children: "404" }) })
5513
+ ] }),
5514
+ /* @__PURE__ */ jsxs30("div", { className: "fe-not-found__content", children: [
5515
+ /* @__PURE__ */ jsxs30("h2", { id: titleId, className: "fe-not-found__title", children: [
5516
+ /* @__PURE__ */ jsx35("span", { className: "fe-not-found__sr-only", children: "404: " }),
5517
+ title === void 0 ? copy2[variant].title : title
5518
+ ] }),
5519
+ /* @__PURE__ */ jsx35("div", { className: "fe-not-found__description", children: description === void 0 ? copy2[variant].description : description }),
5520
+ /* @__PURE__ */ jsx35("div", { className: "fe-not-found__actions", children: action !== void 0 ? action : /* @__PURE__ */ jsx35(
5521
+ Button,
5522
+ {
5523
+ hierarchy: "primary",
5524
+ size: "40",
5525
+ content: homeLabel,
5526
+ onClick: onHomeClick ?? (() => window.location.assign(homeHref))
5527
+ }
5528
+ ) })
5529
+ ] })
5530
+ ]
5531
+ }
5532
+ );
5533
+ }
5534
+ function NotFoundCaveman(props) {
5535
+ return /* @__PURE__ */ jsx35(NotFoundScene, { ...props, variant: "caveman" });
5536
+ }
5537
+ function NotFoundYeti(props) {
5538
+ return /* @__PURE__ */ jsx35(NotFoundScene, { ...props, variant: "bad_dream" });
5539
+ }
5540
+ function NotFoundLost(props) {
5541
+ return /* @__PURE__ */ jsx35(NotFoundScene, { ...props, variant: "electric_shock" });
5542
+ }
5543
+ function NotFound({ variant = "random", ...props }) {
5544
+ const [randomVariant, setRandomVariant] = useState20("caveman");
5545
+ const picked = useRef13(false);
5546
+ useEffect12(() => {
5547
+ if (variant === "random" && !picked.current) {
5548
+ picked.current = true;
5549
+ setRandomVariant(
5550
+ variants[Math.floor(Math.random() * variants.length)] ?? "caveman"
5551
+ );
5552
+ }
5553
+ }, [variant]);
5554
+ return /* @__PURE__ */ jsx35(
5555
+ NotFoundScene,
5556
+ {
5557
+ ...props,
5558
+ variant: variant === "random" ? randomVariant : variant
5559
+ }
5560
+ );
5561
+ }
3068
5562
  export {
3069
5563
  Avatar,
3070
5564
  AvatarGroup,
@@ -3078,14 +5572,29 @@ export {
3078
5572
  CurrencyInput,
3079
5573
  DateTimePicker,
3080
5574
  Drawer,
5575
+ DrawerWidths,
5576
+ EmailInput,
3081
5577
  ExpandableSection,
5578
+ EyeIcon,
5579
+ EyeOffIcon,
5580
+ FILE_UPLOAD_ACCEPTS,
5581
+ FilePreview,
5582
+ FileUpload,
3082
5583
  Loading,
5584
+ MailboxIcon,
3083
5585
  Message,
3084
5586
  Modal,
3085
5587
  MoreHorizontalIcon,
3086
5588
  MoreVerticalIcon,
5589
+ NotFound,
5590
+ NotFoundCaveman,
5591
+ NotFoundLost,
5592
+ NotFoundYeti,
3087
5593
  NumberInput,
3088
5594
  Pagination,
5595
+ PasswordInput,
5596
+ PhoneIcon,
5597
+ PhoneNumberInput,
3089
5598
  PlusIcon,
3090
5599
  ProgressBar,
3091
5600
  RadioButton,
@@ -3117,7 +5626,9 @@ export {
3117
5626
  chevron_right,
3118
5627
  chevron_up,
3119
5628
  copy,
5629
+ formatFileSize,
3120
5630
  formatNumber,
5631
+ getFilePreviewKind,
3121
5632
  getIconSize,
3122
5633
  key,
3123
5634
  lock,
@@ -3125,9 +5636,13 @@ export {
3125
5636
  log_out,
3126
5637
  message,
3127
5638
  minus_square,
5639
+ normalizePhoneNumber,
3128
5640
  plus,
3129
5641
  plus_square,
3130
5642
  search,
3131
5643
  trash,
5644
+ validateEmail,
5645
+ validatePassword,
5646
+ validatePhoneNumber,
3132
5647
  x_close
3133
5648
  };