@andrilla/mado-ui 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -5,7 +5,6 @@ import * as React from "react";
5
5
  import { Children, Suspense, cloneElement, createContext, isValidElement, useCallback, useContext, useEffect, useEffectEvent, useId, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
6
6
  import * as ReactDOM from "react-dom";
7
7
  import { createPortal } from "react-dom";
8
-
9
8
  //#region src/utils/custom-tailwind-merge.ts
10
9
  const isInteger = (classPart) => /^\d+$/.test(classPart);
11
10
  const isFloat = (classPart) => /^\d+\.\d+$/.test(classPart);
@@ -198,7 +197,6 @@ function extendMadoTailwindMerge(configExtension) {
198
197
  ...configExtension
199
198
  });
200
199
  }
201
-
202
200
  //#endregion
203
201
  //#region src/utils/get-theme-color.ts
204
202
  function getThemeColor(theme) {
@@ -836,20 +834,19 @@ function getTextColor(theme, asVariable) {
836
834
  default: return asVariable ? "[--text-color:var(--base-theme-color--foreground)]" : "text-[var(--base-theme-color--foreground)]";
837
835
  }
838
836
  }
839
-
840
837
  //#endregion
841
838
  //#region src/components/link.tsx
842
- function Anchor({ as, className, disabled, href, onClick, target, rel, ...props }) {
839
+ function Anchor({ as, className, disabled, href, onClick, target, rel, removeHash = true, ...props }) {
843
840
  const isExternal = `${href}`.startsWith("http"), hasHash = `${href}`.includes("#");
844
841
  const handleClick = (e) => {
845
842
  if (disabled) return e.preventDefault();
846
843
  onClick?.(e);
847
- setTimeout(() => history.replaceState({}, document.title, location.pathname), 100);
844
+ if (removeHash) setTimeout(() => history.replaceState({}, document.title, location.pathname), 100);
848
845
  };
849
846
  return /* @__PURE__ */ jsx(as || "a", {
850
847
  ...props,
851
848
  "aria-disabled": disabled,
852
- className: twMerge("ease-exponential inline-block transition-transform duration-300 active:scale-95 pointer-fine:active:scale-95", className, disabled && "pointer-events-none"),
849
+ className: twMerge("inline-block transition-transform duration-300 ease-exponential active:scale-95 pointer-fine:active:scale-95", className, disabled && "pointer-events-none"),
853
850
  href,
854
851
  target: target || (isExternal ? "_blank" : "_self"),
855
852
  onClick: hasHash ? handleClick : onClick,
@@ -882,7 +879,7 @@ const lineLiftClasses = twJoin([
882
879
  scaleYClasses,
883
880
  "after:origin-bottom after:translate-y-1 after:scale-x-75 active:after:translate-y-0 active:after:scale-x-100 pointer-fine:hover:after:translate-y-0 pointer-fine:hover:after:scale-x-100 pointer-fine:active:after:translate-y-0 pointer-fine:active:after:scale-x-100"
884
881
  ]);
885
- const fillClasses = twJoin(baseClasses, "whitespace-nowrap transition-[transform,color] after:top-1/2 after:h-[calc(100%+.05rem)] after:w-[calc(100%+.25rem)] after:-translate-y-1/2 after:rounded after:ease-exponential active:text-(--text-color) pointer-fine:hover:text-(--text-color) pointer-fine:active:text-(--text-color)");
882
+ const fillClasses = twJoin(baseClasses, "whitespace-nowrap transition-[scale,color] after:top-1/2 after:h-[calc(100%+.05rem)] after:w-[calc(100%+.25rem)] after:-translate-y-1/2 after:rounded after:ease-exponential active:text-(--text-color) pointer-fine:hover:text-(--text-color) pointer-fine:active:text-(--text-color)");
886
883
  const getFillColorTransitionClasses = (theme, customTheme) => {
887
884
  let fillColorTransitionClasses = twJoin(fillClasses, "transition-[scale,color] after:bg-(--theme-color)");
888
885
  if (theme === "custom") {
@@ -936,8 +933,8 @@ const getMultilineFillRtlClasses = (theme, customTheme) => {
936
933
  const getMultilineFillCenterClasses = (theme, customTheme) => {
937
934
  return twJoin(getMultilineFillXClasses(theme, customTheme), "bg-position-[50%_auto]");
938
935
  };
939
- function getLinkClasses({ customTheme, theme, type }) {
940
- switch (type) {
936
+ function getLinkClasses({ customTheme, theme, lineType }) {
937
+ switch (lineType) {
941
938
  case "static": return lineStaticClasses;
942
939
  case "ltr": return lineLtrClasses;
943
940
  case "rtl": return lineRtlClasses;
@@ -997,26 +994,28 @@ function getLinkClasses({ customTheme, theme, type }) {
997
994
  * ## Examples
998
995
  *
999
996
  * @example
1000
- * <Link href='/about' type='ltr' title='About Us'>Learn more about our company</Link>
997
+ * <Link href='/about' lineType='ltr' title='About Us'>Learn more about our company</Link>
998
+ *
999
+ * @example
1000
+ * <Link href='/about' lineType='fill-ltr' title='About Us'>Learn more about our company</Link>
1001
1001
  *
1002
1002
  * @example
1003
- * <Link href='/about' type='fill-ltr' title='About Us'>Learn more about our company</Link>
1003
+ * <Link href='/about' lineType='multiline-fill-rtl' theme='red' title='About Us'>Learn more about our company</Link>
1004
1004
  *
1005
1005
  * @example
1006
- * <Link href='/about' type='fill-ltr' theme='red' title='About Us'>Learn more about our company</Link>
1006
+ * <Link as='button' lineType='fill-lift' theme='mauve-700'>Edit</Link>
1007
1007
  */
1008
- function Link({ as, className, customTheme, theme, type, ...props }) {
1008
+ function Link({ as, className, customTheme, lineType, theme, ...props }) {
1009
1009
  const linkClasses = getLinkClasses({
1010
1010
  customTheme,
1011
1011
  theme,
1012
- type
1012
+ lineType
1013
1013
  });
1014
1014
  return /* @__PURE__ */ jsx(as || Anchor, {
1015
1015
  ...props,
1016
1016
  className: twMerge(linkClasses, className)
1017
1017
  });
1018
1018
  }
1019
-
1020
1019
  //#endregion
1021
1020
  //#region src/components/button.tsx
1022
1021
  /**
@@ -1070,7 +1069,6 @@ function Button({ className, customTheme, gradient = false, padding = "md", roun
1070
1069
  className: buttonClasses
1071
1070
  });
1072
1071
  }
1073
-
1074
1072
  //#endregion
1075
1073
  //#region src/symbols/checkmark.tsx
1076
1074
  function Checkmark({ weight = "regular", ...props }) {
@@ -1122,7 +1120,6 @@ function Checkmark({ weight = "regular", ...props }) {
1122
1120
  });
1123
1121
  }
1124
1122
  }
1125
-
1126
1123
  //#endregion
1127
1124
  //#region src/components/checkbox.tsx
1128
1125
  function Checkbox({ checkmark, children, className, description, descriptionProps: { className: descriptionClassName, ...descriptionProps } = {}, fieldProps: { className: fieldClassName, ...fieldProps } = {}, labelProps: { className: labelClassName, ...labelProps } = {}, inputContainerProps: { className: inputContainerClassName, ...inputContainerProps } = {}, onChange, required, value, ...props }) {
@@ -1134,7 +1131,7 @@ function Checkbox({ checkmark, children, className, description, descriptionProp
1134
1131
  };
1135
1132
  return /* @__PURE__ */ jsxs(Field, {
1136
1133
  ...fieldProps,
1137
- className: (bag) => twMerge("ease-exponential corner-super-1.5 -mx-1 grid h-fit w-fit gap-1 rounded-md p-1 transition-[background-color] duration-200 hover:bg-neutral-500/10 data-invalid:ring-1 data-invalid:ring-red-500/50", typeof fieldClassName === "function" ? fieldClassName(bag) : fieldClassName),
1134
+ className: (bag) => twMerge("-mx-1 grid h-fit w-fit gap-1 rounded-md p-1 transition-[background-color] duration-200 ease-exponential corner-super-1.5 hover:bg-neutral-500/10 data-invalid:ring-1 data-invalid:ring-red-500/50", typeof fieldClassName === "function" ? fieldClassName(bag) : fieldClassName),
1138
1135
  ...hasInteracted && required && !checked ? { "data-invalid": "true" } : {},
1139
1136
  children: [/* @__PURE__ */ jsxs("div", {
1140
1137
  ...inputContainerProps,
@@ -1143,7 +1140,7 @@ function Checkbox({ checkmark, children, className, description, descriptionProp
1143
1140
  ...props,
1144
1141
  ...required ? { "aria-required": "true" } : {},
1145
1142
  ...hasInteracted && required && !checked ? { "aria-invalid": "true" } : {},
1146
- className: (bag) => twMerge("group/checkbox ease-exponential corner-super-1.5 size-5 shrink-0 cursor-pointer rounded-md border border-neutral-500/50 bg-neutral-100 transition-[background-color] duration-300 [--checkmark-color:var(--base-theme-color--foreground)] [--theme-color:var(--base-theme-color)] focus:ring-3 focus:ring-blue-400 focus:ring-offset-2 focus:ring-offset-(--global-bg) focus:outline-none aria-invalid:border-red-500 data-checked:bg-(--theme-color) dark:bg-neutral-700", typeof className === "function" ? className(bag) : className),
1143
+ className: (bag) => twMerge("group/checkbox size-5 shrink-0 cursor-pointer rounded-md border border-neutral-500/50 bg-neutral-100 transition-[background-color] duration-300 ease-exponential [--checkmark-color:var(--base-theme-color--foreground)] [--theme-color:var(--base-theme-color)] corner-super-1.5 focus:ring-3 focus:ring-blue-400 focus:ring-offset-2 focus:ring-offset-(--global-bg) focus:outline-none aria-invalid:border-red-500 data-checked:bg-(--theme-color) dark:bg-neutral-700", typeof className === "function" ? className(bag) : className),
1147
1144
  onChange: handleChange,
1148
1145
  value,
1149
1146
  children: [/* @__PURE__ */ jsx("input", {
@@ -1159,7 +1156,7 @@ function Checkbox({ checkmark, children, className, description, descriptionProp
1159
1156
  type: "checkbox",
1160
1157
  value
1161
1158
  }), checkmark ?? /* @__PURE__ */ jsx(Checkmark, {
1162
- className: "ease-exponential size-full scale-0 fill-(--checkmark-color) transition-transform duration-300 group-data-checked/checkbox:scale-60",
1159
+ className: "size-full scale-0 fill-(--checkmark-color) transition-transform duration-300 ease-exponential group-data-checked/checkbox:scale-60",
1163
1160
  weight: "bold"
1164
1161
  })]
1165
1162
  }), /* @__PURE__ */ jsxs(Label, {
@@ -1177,7 +1174,6 @@ function Checkbox({ checkmark, children, className, description, descriptionProp
1177
1174
  })]
1178
1175
  });
1179
1176
  }
1180
-
1181
1177
  //#endregion
1182
1178
  //#region node_modules/animejs/dist/modules/core/consts.js
1183
1179
  /**
@@ -1229,9 +1225,6 @@ const proxyTargetSymbol = Symbol();
1229
1225
  const minValue = 1e-11;
1230
1226
  const maxValue = 0xe8d4a51000;
1231
1227
  const K = 1e3;
1232
- const maxFps = 240;
1233
- const emptyString = "";
1234
- const cssVarPrefix = "var(";
1235
1228
  const shortTransforms = /* @__PURE__ */ (() => {
1236
1229
  const map = /* @__PURE__ */ new Map();
1237
1230
  map.set("x", "translateX");
@@ -1275,7 +1268,6 @@ const unitsExecRgx = /^([-+]?\d*\.?\d+(?:e[-+]?\d+)?)([a-z]+|%)$/i;
1275
1268
  const lowerCaseRgx = /([a-z])([A-Z])/g;
1276
1269
  const transformsExecRgx = /(\w+)(\([^)]+\)+)/g;
1277
1270
  const cssVariableMatchRgx = /var\(\s*(--[\w-]+)(?:\s*,\s*([^)]+))?\s*\)/;
1278
-
1279
1271
  //#endregion
1280
1272
  //#region node_modules/animejs/dist/modules/core/globals.js
1281
1273
  /**
@@ -1300,7 +1292,7 @@ const defaults = {
1300
1292
  keyframes: null,
1301
1293
  playbackEase: null,
1302
1294
  playbackRate: 1,
1303
- frameRate: maxFps,
1295
+ frameRate: 240,
1304
1296
  loop: 0,
1305
1297
  reversed: false,
1306
1298
  alternate: false,
@@ -1339,7 +1331,6 @@ if (isBrowser) {
1339
1331
  if (!win.AnimeJS) win.AnimeJS = [];
1340
1332
  win.AnimeJS.push(globalVersions);
1341
1333
  }
1342
-
1343
1334
  //#endregion
1344
1335
  //#region node_modules/animejs/dist/modules/core/helpers.js
1345
1336
  /**
@@ -1478,7 +1469,7 @@ const clampInfinity = (v) => v === Infinity ? maxValue : v === -Infinity ? -maxV
1478
1469
  * @param {Number} v - Time value to normalize
1479
1470
  * @return {Number}
1480
1471
  */
1481
- const normalizeTime = (v) => v <= minValue ? minValue : clampInfinity(round$1(v, 11));
1472
+ const normalizeTime = (v) => v <= 1e-11 ? minValue : clampInfinity(round$1(v, 11));
1482
1473
  /**
1483
1474
  * @template T
1484
1475
  * @param {T[]} a
@@ -1553,7 +1544,6 @@ const addChild = (parent, child, sortMethod, prevProp = "_prev", nextProp = "_ne
1553
1544
  child[prevProp] = prev;
1554
1545
  child[nextProp] = next;
1555
1546
  };
1556
-
1557
1547
  //#endregion
1558
1548
  //#region node_modules/animejs/dist/modules/core/targets.js
1559
1549
  /**
@@ -1666,7 +1656,6 @@ function registerTargets(targets) {
1666
1656
  }
1667
1657
  return parsedTargetsArray;
1668
1658
  }
1669
-
1670
1659
  //#endregion
1671
1660
  //#region node_modules/animejs/dist/modules/core/transforms.js
1672
1661
  /**
@@ -1704,7 +1693,6 @@ const parseInlineTransforms = (target, propName, animationInlineStyles) => {
1704
1693
  }
1705
1694
  return inlineTransforms && !isUnd(inlinedStylesPropertyValue) ? inlinedStylesPropertyValue : stringStartsWith(propName, "scale") ? "1" : stringStartsWith(propName, "rotate") || stringStartsWith(propName, "skew") ? "0deg" : "0px";
1706
1695
  };
1707
-
1708
1696
  //#endregion
1709
1697
  //#region node_modules/animejs/dist/modules/core/colors.js
1710
1698
  /**
@@ -1799,7 +1787,6 @@ const convertColorStringValuesToRgbaArray = (colorString) => {
1799
1787
  1
1800
1788
  ];
1801
1789
  };
1802
-
1803
1790
  //#endregion
1804
1791
  //#region node_modules/animejs/dist/modules/core/values.js
1805
1792
  /**
@@ -1840,12 +1827,12 @@ const getFunctionValue = (value, target, index, total, store) => {
1840
1827
  const computed = value(target, index, total);
1841
1828
  return !isNaN(+computed) ? +computed : computed || 0;
1842
1829
  };
1843
- else if (isStr(value) && stringStartsWith(value, cssVarPrefix)) func = () => {
1830
+ else if (isStr(value) && stringStartsWith(value, "var(")) func = () => {
1844
1831
  const match = value.match(cssVariableMatchRgx);
1845
1832
  const cssVarName = match[1];
1846
1833
  const fallbackValue = match[2];
1847
1834
  let computed = getComputedStyle(target)?.getPropertyValue(cssVarName);
1848
- if ((!computed || computed.trim() === emptyString) && fallbackValue) computed = fallbackValue.trim();
1835
+ if ((!computed || computed.trim() === "") && fallbackValue) computed = fallbackValue.trim();
1849
1836
  return computed || 0;
1850
1837
  };
1851
1838
  else return value;
@@ -1964,7 +1951,6 @@ const decomposeTweenValue = (tween, targetObject) => {
1964
1951
  return targetObject;
1965
1952
  };
1966
1953
  const decomposedOriginalValue = createDecomposedValueTargetObject();
1967
-
1968
1954
  //#endregion
1969
1955
  //#region node_modules/animejs/dist/modules/core/styles.js
1970
1956
  /**
@@ -2023,28 +2009,27 @@ const cleanInlineStyles = (renderable) => {
2023
2009
  if (tweenTarget[isDomSymbol]) {
2024
2010
  const targetStyle = tweenTarget.style;
2025
2011
  const originalInlinedValue = tween._inlineValue;
2026
- const tweenHadNoInlineValue = isNil(originalInlinedValue) || originalInlinedValue === emptyString;
2012
+ const tweenHadNoInlineValue = isNil(originalInlinedValue) || originalInlinedValue === "";
2027
2013
  if (tween._tweenType === tweenTypes.TRANSFORM) {
2028
2014
  const cachedTransforms = tweenTarget[transformsSymbol];
2029
2015
  if (tweenHadNoInlineValue) delete cachedTransforms[tweenProperty];
2030
2016
  else cachedTransforms[tweenProperty] = originalInlinedValue;
2031
2017
  if (tween._renderTransforms) if (!Object.keys(cachedTransforms).length) targetStyle.removeProperty("transform");
2032
2018
  else {
2033
- let str = emptyString;
2019
+ let str = "";
2034
2020
  for (let key in cachedTransforms) str += transformsFragmentStrings[key] + cachedTransforms[key] + ") ";
2035
2021
  targetStyle.transform = str;
2036
2022
  }
2037
2023
  } else if (tweenHadNoInlineValue) targetStyle.removeProperty(toLowerCase$1(tweenProperty));
2038
2024
  else targetStyle[tweenProperty] = originalInlinedValue;
2039
2025
  if (animation._tail === tween) animation.targets.forEach((t) => {
2040
- if (t.getAttribute && t.getAttribute("style") === emptyString) t.removeAttribute("style");
2026
+ if (t.getAttribute && t.getAttribute("style") === "") t.removeAttribute("style");
2041
2027
  });
2042
2028
  }
2043
2029
  });
2044
2030
  }
2045
2031
  return renderable;
2046
2032
  };
2047
-
2048
2033
  //#endregion
2049
2034
  //#region node_modules/animejs/dist/modules/core/units.js
2050
2035
  /**
@@ -2103,7 +2088,6 @@ const convertValueUnit = (el, decomposedValue, unit, force = false) => {
2103
2088
  decomposedValue.u = unit;
2104
2089
  return decomposedValue;
2105
2090
  };
2106
-
2107
2091
  //#endregion
2108
2092
  //#region node_modules/animejs/dist/modules/easings/none.js
2109
2093
  /**
@@ -2119,7 +2103,6 @@ const convertValueUnit = (el, decomposedValue, unit, force = false) => {
2119
2103
  */
2120
2104
  /** @type {EasingFunction} */
2121
2105
  const none = (t) => t;
2122
-
2123
2106
  //#endregion
2124
2107
  //#region node_modules/animejs/dist/modules/easings/eases/parser.js
2125
2108
  /**
@@ -2160,7 +2143,7 @@ const halfPI = PI / 2;
2160
2143
  const doublePI = PI * 2;
2161
2144
  /** @type {Record<String, EasingFunctionWithParams|EasingFunction>} */
2162
2145
  const easeInFunctions = {
2163
- [emptyString]: easeInPower,
2146
+ [""]: easeInPower,
2164
2147
  Quad: easeInPower(2),
2165
2148
  Cubic: easeInPower(3),
2166
2149
  Quart: easeInPower(4),
@@ -2239,7 +2222,7 @@ const eases = /* @__PURE__ */ (() => {
2239
2222
  for (let type in easeTypes) for (let name in easeInFunctions) {
2240
2223
  const easeIn = easeInFunctions[name];
2241
2224
  const easeType = easeTypes[type];
2242
- list[type + name] = name === emptyString || name === "Back" || name === "Elastic" ? (a, b) => easeType(
2225
+ list[type + name] = name === "" || name === "Back" || name === "Elastic" ? (a, b) => easeType(
2243
2226
  /** @type {EasingFunctionWithParams} */
2244
2227
  easeIn(a, b)
2245
2228
  ) : easeType(easeIn);
@@ -2285,7 +2268,6 @@ const parseEase = (ease) => {
2285
2268
  }
2286
2269
  return isFnc(ease) ? ease : isStr(ease) ? parseEaseString(ease) : none;
2287
2270
  };
2288
-
2289
2271
  //#endregion
2290
2272
  //#region node_modules/animejs/dist/modules/core/render.js
2291
2273
  /**
@@ -2451,7 +2433,7 @@ const render = (tickable, time, muteCallbacks, internalRender, tickMode) => {
2451
2433
  } else tween._value = value;
2452
2434
  }
2453
2435
  if (tweenTransformsNeedUpdate && tween._renderTransforms) {
2454
- let str = emptyString;
2436
+ let str = "";
2455
2437
  for (let key in tweenTargetTransformsProperties) str += `${transformsFragmentStrings[key]}${tweenTargetTransformsProperties[key]}) `;
2456
2438
  tweenStyle.transform = str;
2457
2439
  tweenTransformsNeedUpdate = 0;
@@ -2464,7 +2446,7 @@ const render = (tickable, time, muteCallbacks, internalRender, tickMode) => {
2464
2446
  if (!muteCallbacks && isCurrentTimeAboveZero) tickable.onUpdate(tickable);
2465
2447
  }
2466
2448
  if (parent && isSetter) {
2467
- if (!muteCallbacks && (parent.began && !isRunningBackwards && tickableAbsoluteTime > 0 && !completed || isRunningBackwards && tickableAbsoluteTime <= minValue && completed)) {
2449
+ if (!muteCallbacks && (parent.began && !isRunningBackwards && tickableAbsoluteTime > 0 && !completed || isRunningBackwards && tickableAbsoluteTime <= 1e-11 && completed)) {
2468
2450
  tickable.onComplete(tickable);
2469
2451
  tickable.completed = !isRunningBackwards;
2470
2452
  }
@@ -2512,7 +2494,7 @@ const tick = (tickable, time, muteCallbacks, internalRender, tickMode) => {
2512
2494
  const childDuration = child.duration;
2513
2495
  const childStartTime = child._offset + child._delay;
2514
2496
  const childEndTime = childStartTime + childDuration;
2515
- if (!muteCallbacks && childDuration <= minValue && (!childStartTime || childEndTime === tlIterationDuration)) child.onComplete(child);
2497
+ if (!muteCallbacks && childDuration <= 1e-11 && (!childStartTime || childEndTime === tlIterationDuration)) child.onComplete(child);
2516
2498
  }
2517
2499
  });
2518
2500
  if (!muteCallbacks) tl.onLoop(tl);
@@ -2536,7 +2518,6 @@ const tick = (tickable, time, muteCallbacks, internalRender, tickMode) => {
2536
2518
  }
2537
2519
  }
2538
2520
  };
2539
-
2540
2521
  //#endregion
2541
2522
  //#region node_modules/animejs/dist/modules/core/clock.js
2542
2523
  /**
@@ -2567,9 +2548,9 @@ var Clock = class {
2567
2548
  /** @type {Number} */
2568
2549
  this._scheduledTime = 0;
2569
2550
  /** @type {Number} */
2570
- this._frameDuration = K / maxFps;
2551
+ this._frameDuration = K / 240;
2571
2552
  /** @type {Number} */
2572
- this._fps = maxFps;
2553
+ this._fps = 240;
2573
2554
  /** @type {Number} */
2574
2555
  this._speed = 1;
2575
2556
  /** @type {Boolean} */
@@ -2585,7 +2566,7 @@ var Clock = class {
2585
2566
  set fps(frameRate) {
2586
2567
  const previousFrameDuration = this._frameDuration;
2587
2568
  const fr = +frameRate;
2588
- const fps = fr < minValue ? minValue : fr;
2569
+ const fps = fr < 1e-11 ? minValue : fr;
2589
2570
  const frameDuration = K / fps;
2590
2571
  if (fps > defaults.frameRate) defaults.frameRate = fps;
2591
2572
  this._fps = fps;
@@ -2597,7 +2578,7 @@ var Clock = class {
2597
2578
  }
2598
2579
  set speed(playbackRate) {
2599
2580
  const pbr = +playbackRate;
2600
- this._speed = pbr < minValue ? minValue : pbr;
2581
+ this._speed = pbr < 1e-11 ? minValue : pbr;
2601
2582
  }
2602
2583
  /**
2603
2584
  * @param {Number} time
@@ -2623,7 +2604,6 @@ var Clock = class {
2623
2604
  return delta;
2624
2605
  }
2625
2606
  };
2626
-
2627
2607
  //#endregion
2628
2608
  //#region node_modules/animejs/dist/modules/animation/additive.js
2629
2609
  /**
@@ -2691,7 +2671,6 @@ const addAdditiveAnimation = (lookups) => {
2691
2671
  }
2692
2672
  return animation;
2693
2673
  };
2694
-
2695
2674
  //#endregion
2696
2675
  //#region node_modules/animejs/dist/modules/engine/engine.js
2697
2676
  /**
@@ -2815,7 +2794,6 @@ const killEngine = () => {
2815
2794
  engine.reqId = 0;
2816
2795
  return engine;
2817
2796
  };
2818
-
2819
2797
  //#endregion
2820
2798
  //#region node_modules/animejs/dist/modules/animation/composition.js
2821
2799
  /**
@@ -2907,7 +2885,7 @@ const composeTween = (tween, siblings) => {
2907
2885
  prevSibling._changeDuration = updatedPrevChangeDuration;
2908
2886
  prevSibling._currentTime = updatedPrevChangeDuration;
2909
2887
  prevSibling._isOverlapped = 1;
2910
- if (updatedPrevChangeDuration < minValue) overrideTween(prevSibling);
2888
+ if (updatedPrevChangeDuration < 1e-11) overrideTween(prevSibling);
2911
2889
  }
2912
2890
  let pausePrevParentAnimation = true;
2913
2891
  forEachChildren(prevParent, (t) => {
@@ -3052,7 +3030,6 @@ const removeTargetsFromRenderable = (targetsArray, renderable, propertyName) =>
3052
3030
  if (parent.cancel) /** @type {Renderable} */ parent.cancel();
3053
3031
  }
3054
3032
  };
3055
-
3056
3033
  //#endregion
3057
3034
  //#region node_modules/animejs/dist/modules/timer/timer.js
3058
3035
  /**
@@ -3142,7 +3119,7 @@ var Timer = class extends Clock {
3142
3119
  this.id = !isUnd(id) ? id : timerId;
3143
3120
  /** @type {Timeline} */
3144
3121
  this.parent = parent;
3145
- this.duration = clampInfinity((timerDuration + timerLoopDelay) * timerIterationCount - timerLoopDelay) || minValue;
3122
+ this.duration = clampInfinity((timerDuration + timerLoopDelay) * timerIterationCount - timerLoopDelay) || 1e-11;
3146
3123
  /** @type {Boolean} */
3147
3124
  this.backwards = false;
3148
3125
  /** @type {Boolean} */
@@ -3306,7 +3283,7 @@ var Timer = class extends Clock {
3306
3283
  resume() {
3307
3284
  if (!this.paused) return this;
3308
3285
  this.paused = false;
3309
- if (this.duration <= minValue && !this._hasChildren) tick(this, minValue, 0, 0, tickModes.FORCE);
3286
+ if (this.duration <= 1e-11 && !this._hasChildren) tick(this, minValue, 0, 0, tickModes.FORCE);
3310
3287
  else {
3311
3288
  if (!this._running) {
3312
3289
  addChild(engine, this);
@@ -3423,7 +3400,6 @@ var Timer = class extends Clock {
3423
3400
  });
3424
3401
  }
3425
3402
  };
3426
-
3427
3403
  //#endregion
3428
3404
  //#region node_modules/animejs/dist/modules/animation/animation.js
3429
3405
  /**
@@ -3568,7 +3544,7 @@ var JSAnimation = class extends Timer {
3568
3544
  const tDuration = hasSpring ? animEase.settlingDuration : setValue(duration, animDefaults.duration);
3569
3545
  const tDelay = setValue(delay, animDefaults.delay);
3570
3546
  const tModifier = modifier || animDefaults.modifier;
3571
- const tComposition = isUnd(composition) && targetsLength >= K ? compositionTypes.none : !isUnd(composition) ? composition : animDefaults.composition;
3547
+ const tComposition = isUnd(composition) && targetsLength >= 1e3 ? compositionTypes.none : !isUnd(composition) ? composition : animDefaults.composition;
3572
3548
  const absoluteOffsetTime = this._offset + (parent ? parent._offset : 0);
3573
3549
  if (hasSpring) /** @type {Spring} */ animEase.parent = this;
3574
3550
  let iterationDuration = NaN;
@@ -3727,7 +3703,7 @@ var JSAnimation = class extends Timer {
3727
3703
  shortestValue.d = longestValue.d.map((_, i) => isUnd(shortestValue.d[i]) ? 0 : shortestValue.d[i]);
3728
3704
  shortestValue.s = cloneArray(longestValue.s);
3729
3705
  }
3730
- const tweenUpdateDuration = round$1(+tweenDuration || minValue, 12);
3706
+ const tweenUpdateDuration = round$1(+tweenDuration || 1e-11, 12);
3731
3707
  let inlineValue = inlineStylesStore[propName];
3732
3708
  if (!isNil(inlineValue)) inlineStylesStore[propName] = null;
3733
3709
  /** @type {Tween} */
@@ -3813,7 +3789,7 @@ var JSAnimation = class extends Timer {
3813
3789
  /** @type {String|Number} */
3814
3790
  this.id = !isUnd(id) ? id : JSAnimationId;
3815
3791
  /** @type {Number} */
3816
- this.duration = iterationDuration === minValue ? minValue : clampInfinity((iterationDuration + this._loopDelay) * this.iterationCount - this._loopDelay) || minValue;
3792
+ this.duration = iterationDuration === 1e-11 ? minValue : clampInfinity((iterationDuration + this._loopDelay) * this.iterationCount - this._loopDelay) || 1e-11;
3817
3793
  /** @type {Callback<this>} */
3818
3794
  this.onRender = onRender || animDefaults.onRender;
3819
3795
  /** @type {EasingFunction} */
@@ -3867,7 +3843,7 @@ var JSAnimation = class extends Timer {
3867
3843
  }
3868
3844
  }
3869
3845
  });
3870
- if (this.duration === minValue) this.restart();
3846
+ if (this.duration === 1e-11) this.restart();
3871
3847
  return this;
3872
3848
  }
3873
3849
  /**
@@ -3895,7 +3871,6 @@ var JSAnimation = class extends Timer {
3895
3871
  * @return {JSAnimation}
3896
3872
  */
3897
3873
  const animate = (targets, parameters) => new JSAnimation(targets, parameters, null, 0, false).init();
3898
-
3899
3874
  //#endregion
3900
3875
  //#region node_modules/animejs/dist/modules/svg/helpers.js
3901
3876
  /**
@@ -3918,7 +3893,6 @@ const getPath = (path) => {
3918
3893
  if (!$parsedSvg || !isSvg($parsedSvg)) return console.warn(`${path} is not a valid SVGGeometryElement`);
3919
3894
  return $parsedSvg;
3920
3895
  };
3921
-
3922
3896
  //#endregion
3923
3897
  //#region node_modules/animejs/dist/modules/svg/morphto.js
3924
3898
  /**
@@ -3967,7 +3941,6 @@ const morphTo = (path2, precision = .33) => ($path1) => {
3967
3941
  $path1[morphPointsSymbol] = v2;
3968
3942
  return [v1, v2];
3969
3943
  };
3970
-
3971
3944
  //#endregion
3972
3945
  //#region src/utils/class-management.ts
3973
3946
  /**
@@ -4090,7 +4063,6 @@ function toggleClass(elements, classList) {
4090
4063
  element.classList.toggle(classItem);
4091
4064
  }));
4092
4065
  }
4093
-
4094
4066
  //#endregion
4095
4067
  //#region src/utils/get-date.ts
4096
4068
  /** The current date as a Date object */
@@ -4373,13 +4345,11 @@ function getTimezone() {
4373
4345
  const timezonePart = Intl.DateTimeFormat("en-US", { timeZoneName: "short" }).formatToParts(date).find((part) => part.type === "timeZoneName");
4374
4346
  return timezonePart ? timezonePart.value : "";
4375
4347
  }
4376
-
4377
4348
  //#endregion
4378
4349
  //#region src/utils/math.ts
4379
4350
  function easeOutExpo(time, start, end, duration) {
4380
4351
  return time == duration ? start + end : end * (-Math.pow(2, -10 * time / duration) + 1) + start;
4381
4352
  }
4382
-
4383
4353
  //#endregion
4384
4354
  //#region src/utils/regex.ts
4385
4355
  const emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
@@ -4398,7 +4368,6 @@ const telRegex = /(?:\+1\s|1\s|)?\d{3}\.\d{3}\.\d{4}|(?:\+1\s|1\s|)?\d{3}-\d{3}-
4398
4368
  function isPhoneNumber(tel) {
4399
4369
  return telRegex.test(tel);
4400
4370
  }
4401
-
4402
4371
  //#endregion
4403
4372
  //#region src/utils/string-manipulation.ts
4404
4373
  /**
@@ -4523,7 +4492,6 @@ function toTitleCase(string, delimiter = " ") {
4523
4492
  if (typeof string !== "string") return string;
4524
4493
  return string.toLowerCase().split(delimiter).map((str) => str.substring(0, 1).toUpperCase() + str.substring(1, str.length).toLowerCase()).join(" ");
4525
4494
  }
4526
-
4527
4495
  //#endregion
4528
4496
  //#region src/components/chevron-up-down-anime.tsx
4529
4497
  function ChevronUpDownAnime({ className, isUp = false }) {
@@ -4566,7 +4534,6 @@ function ChevronUpDownAnime({ className, isUp = false }) {
4566
4534
  })]
4567
4535
  });
4568
4536
  }
4569
-
4570
4537
  //#endregion
4571
4538
  //#region src/components/details.tsx
4572
4539
  function DetailsSummary({ arrow = true, children, className, onClick, ...props }) {
@@ -4590,7 +4557,7 @@ function DetailsSummary({ arrow = true, children, className, onClick, ...props }
4590
4557
  function DetailsBody({ children, className, ...props }) {
4591
4558
  return /* @__PURE__ */ jsx(DisclosurePanel, {
4592
4559
  ...props,
4593
- className: twMerge("grid-rows-1fr transition-rows ease-exponential data-closed:grid-rows-0fr grid duration-500", className),
4560
+ className: twMerge("grid grid-rows-1fr transition-rows duration-500 ease-exponential data-closed:grid-rows-0fr", className),
4594
4561
  transition: true,
4595
4562
  children: (bag) => /* @__PURE__ */ jsx("div", {
4596
4563
  className: "overflow-y-hidden px-2 pbs-3 pbe-1",
@@ -4606,14 +4573,14 @@ function Details({ as = "div", className, ...props }) {
4606
4573
  role: "details"
4607
4574
  });
4608
4575
  }
4609
-
4610
4576
  //#endregion
4611
4577
  //#region src/components/drop-down.tsx
4612
4578
  function DropDownButton({ arrow = true, as, children, className, ...props }) {
4613
4579
  return /* @__PURE__ */ jsx(MenuButton, {
4614
4580
  ...props,
4615
- as: as || "button",
4616
- className: twJoin("group/button", className),
4581
+ as,
4582
+ className: twJoin("group/button transition-transform duration-300 ease-exponential active:scale-95", className),
4583
+ onClick: () => console.log("here i am"),
4617
4584
  children: (bag) => /* @__PURE__ */ jsxs(Fragment, { children: [typeof children === "function" ? children(bag) : children, arrow && (typeof arrow === "boolean" ? /* @__PURE__ */ jsx(ChevronUpDownAnime, {
4618
4585
  className: "-mr-1",
4619
4586
  isUp: bag.open
@@ -4646,7 +4613,7 @@ function DropDownItems({ anchor, children, className, containerClassName, style,
4646
4613
  return /* @__PURE__ */ jsx(MenuItems, {
4647
4614
  ...props,
4648
4615
  anchor: anchorProps,
4649
- className: twMerge("grid-rows-1fr transition-rows ease-exponential not-data-open:not-data-enter:not-data-leave:grid-rows-0fr data-closed:grid-rows-0fr grid rounded-xl shadow-xl duration-500", containerClassName),
4616
+ className: twMerge("grid grid-rows-1fr rounded-xl shadow-xl transition-rows duration-500 ease-exponential not-data-open:not-data-enter:not-data-leave:grid-rows-0fr data-closed:grid-rows-0fr", containerClassName),
4650
4617
  static: props.static,
4651
4618
  style: {
4652
4619
  ...style,
@@ -4673,7 +4640,7 @@ function DropDownSection({ children, label, labelProps, separatorAbove, separato
4673
4640
  separatorAbove && /* @__PURE__ */ jsx(DropDownSeparator, {}),
4674
4641
  label && /* @__PURE__ */ jsx(MenuHeading, {
4675
4642
  ...restLabelProps,
4676
- className: (headingBag) => twMerge("text-[larger] font-bold text-current/80", typeof labelClassName === "function" ? labelClassName(headingBag) : labelClassName),
4643
+ className: (headingBag) => twMerge("text-larger font-bold text-current/80", typeof labelClassName === "function" ? labelClassName(headingBag) : labelClassName),
4677
4644
  children: label
4678
4645
  }),
4679
4646
  typeof children === "function" ? children(sectionBag) : children,
@@ -4688,12 +4655,21 @@ function DropDownSeparator({ as, className, ...props }) {
4688
4655
  className: (bag) => twMerge("my-4 block h-px rounded-full bg-neutral-950/20", typeof className === "function" ? className(bag) : className)
4689
4656
  });
4690
4657
  }
4691
- function DropDown(props) {
4692
- return /* @__PURE__ */ jsx(Menu, { ...props });
4658
+ function DropDown({ as, ...props }) {
4659
+ return /* @__PURE__ */ jsx(Menu, {
4660
+ ...props,
4661
+ as
4662
+ });
4693
4663
  }
4694
-
4695
4664
  //#endregion
4696
4665
  //#region src/components/fieldset.tsx
4666
+ /**
4667
+ * # Fieldset
4668
+ *
4669
+ * @prop legend - The legend text to display above the fieldset.
4670
+ * @prop legendProps - Additional props to pass to the legend component.
4671
+ * @prop className - GOTCHA: The default className includes `contents`, to effectively remove it from the layout. Be sure to change the display style if you want to modify any other styles.
4672
+ */
4697
4673
  function Fieldset({ children, className, legend, legendProps, name, ...props }) {
4698
4674
  const { className: legendClassName, ...restLegendProps } = legendProps || {};
4699
4675
  name = legend || name;
@@ -4708,7 +4684,6 @@ function Fieldset({ children, className, legend, legendProps, name, ...props })
4708
4684
  }), typeof children === "function" ? children(bag) : children] })
4709
4685
  });
4710
4686
  }
4711
-
4712
4687
  //#endregion
4713
4688
  //#region src/components/form.tsx
4714
4689
  function Form({ children, className, ...props }) {
@@ -4718,7 +4693,6 @@ function Form({ children, className, ...props }) {
4718
4693
  children
4719
4694
  });
4720
4695
  }
4721
-
4722
4696
  //#endregion
4723
4697
  //#region src/components/ghost.tsx
4724
4698
  function Ghost({ children, className, ...props }) {
@@ -4728,7 +4702,6 @@ function Ghost({ children, className, ...props }) {
4728
4702
  children: children || /* @__PURE__ */ jsx(Fragment, { children: "\xA0" })
4729
4703
  });
4730
4704
  }
4731
-
4732
4705
  //#endregion
4733
4706
  //#region src/components/heading.tsx
4734
4707
  function getTextFromChildren(children) {
@@ -4766,7 +4739,6 @@ function Heading({ as = "h2", children, customize, className, id, ref, ...props
4766
4739
  children
4767
4740
  });
4768
4741
  }
4769
-
4770
4742
  //#endregion
4771
4743
  //#region src/symbols/chevron.forward.tsx
4772
4744
  function ChevronForward({ weight = "regular", ...props }) {
@@ -4818,7 +4790,6 @@ function ChevronForward({ weight = "regular", ...props }) {
4818
4790
  });
4819
4791
  }
4820
4792
  }
4821
-
4822
4793
  //#endregion
4823
4794
  //#region node_modules/animejs/dist/modules/animatable/animatable.js
4824
4795
  /**
@@ -4937,7 +4908,6 @@ var Animatable = class {
4937
4908
  return this;
4938
4909
  }
4939
4910
  };
4940
-
4941
4911
  //#endregion
4942
4912
  //#region node_modules/animejs/dist/modules/utils/number.js
4943
4913
  /**
@@ -4950,7 +4920,6 @@ var Animatable = class {
4950
4920
  * @return {Number}
4951
4921
  */
4952
4922
  const mapRange = (value, inLow, inHigh, outLow, outHigh) => outLow + (value - inLow) / (inHigh - inLow) * (outHigh - outLow);
4953
-
4954
4923
  //#endregion
4955
4924
  //#region node_modules/animejs/dist/modules/easings/spring/index.js
4956
4925
  /**
@@ -5121,7 +5090,6 @@ var Spring = class {
5121
5090
  * @returns {Spring}
5122
5091
  */
5123
5092
  const spring = (parameters) => new Spring(parameters);
5124
-
5125
5093
  //#endregion
5126
5094
  //#region node_modules/animejs/dist/modules/utils/target.js
5127
5095
  /**
@@ -5200,7 +5168,6 @@ const set = (targets, parameters) => {
5200
5168
  parameters.composition = setValue(parameters.composition, compositionTypes.none);
5201
5169
  return new JSAnimation(targets, parameters, null, 0, true).resume();
5202
5170
  };
5203
-
5204
5171
  //#endregion
5205
5172
  //#region node_modules/animejs/dist/modules/draggable/draggable.js
5206
5173
  /**
@@ -6384,7 +6351,6 @@ var Draggable = class {
6384
6351
  * @return {Draggable}
6385
6352
  */
6386
6353
  const createDraggable = (target, parameters) => new Draggable(target, parameters);
6387
-
6388
6354
  //#endregion
6389
6355
  //#region src/components/human-verification.tsx
6390
6356
  function checkHashSecret([number, letter]) {
@@ -6491,9 +6457,30 @@ function generateHumanValidationToken() {
6491
6457
  return char;
6492
6458
  }).join("")}_${weekCode}`;
6493
6459
  }
6494
- function HumanVerification({ children = "Verify", className }) {
6460
+ function HumanVerification({ children = "Verify", className, ref }) {
6495
6461
  const [dragProgress, setDragProgress] = useState(0);
6496
6462
  const submitButtonRef = useRef(null), buttonRef = useRef(null), buttonContainerRef = useRef(null), draggableRef = useRef(null);
6463
+ const resetVerification = useEffectEvent(() => {
6464
+ setDragProgress(0);
6465
+ const draggable = draggableRef.current;
6466
+ if (draggable) {
6467
+ draggable.enable();
6468
+ draggable.setX(0);
6469
+ draggable.refresh();
6470
+ }
6471
+ (buttonRef.current?.closest("form"))?.querySelectorAll("input[name=\"human_verification_token\"]")?.forEach((input) => input.remove());
6472
+ });
6473
+ useEffect(() => {
6474
+ const form = buttonRef.current?.closest("form");
6475
+ if (!form) return;
6476
+ const controller = new AbortController();
6477
+ form.addEventListener("reset", () => {
6478
+ queueMicrotask(() => resetVerification());
6479
+ }, { signal: controller.signal });
6480
+ return () => {
6481
+ controller.abort();
6482
+ };
6483
+ }, []);
6497
6484
  const handleTrySubmit = (x) => {
6498
6485
  if (x > 239) {
6499
6486
  const form = buttonRef.current?.closest("form");
@@ -6598,7 +6585,10 @@ function HumanVerification({ children = "Verify", className }) {
6598
6585
  "aria-valuenow": dragProgress,
6599
6586
  className: "absolute left-1 z-10 grid aspect-square h-[calc(100%-(var(--spacing)*2))] cursor-grab place-items-center rounded-sm bg-neutral-50 shadow-lg ring ring-neutral-500 focus:ring-3 focus:ring-blue-400 focus:ring-offset-2 focus:ring-offset-neutral-500 focus:outline-none active:cursor-grabbing",
6600
6587
  onKeyDown: moveButton,
6601
- ref: buttonRef,
6588
+ ref: (node) => {
6589
+ buttonRef.current = node;
6590
+ if (ref) ref.current = node;
6591
+ },
6602
6592
  role: "slider",
6603
6593
  type: "button",
6604
6594
  children: /* @__PURE__ */ jsx(ChevronForward, { className: "inline-block h-4 overflow-visible fill-neutral-500 stroke-2" })
@@ -6633,7 +6623,6 @@ function HumanVerification({ children = "Verify", className }) {
6633
6623
  ]
6634
6624
  });
6635
6625
  }
6636
-
6637
6626
  //#endregion
6638
6627
  //#region src/components/iframe.tsx
6639
6628
  const allAllowProperties = [
@@ -6702,7 +6691,6 @@ function IFrame({ allow, className, referrerPolicy = "no-referrer-when-downgrade
6702
6691
  sandbox: sandbox?.join(" ")
6703
6692
  });
6704
6693
  }
6705
-
6706
6694
  //#endregion
6707
6695
  //#region src/components/input.tsx
6708
6696
  /**
@@ -6726,75 +6714,22 @@ function Input({ children, className, description, descriptionProps: { className
6726
6714
  children: [
6727
6715
  label && /* @__PURE__ */ jsx(Label, {
6728
6716
  ...labelProps,
6729
- className: (bag) => twMerge("text-sm font-medium", required ? "after:text-red-700 after:content-[\"_*\"]" : "", typeof labelClassName === "function" ? labelClassName(bag) : labelClassName),
6717
+ className: (bag) => twMerge("text-sm font-medium", required ? `after:text-red-700 after:content-['_*']` : "", typeof labelClassName === "function" ? labelClassName(bag) : labelClassName),
6730
6718
  children: label
6731
6719
  }),
6732
6720
  /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Input$1, {
6733
6721
  ...props,
6734
- className: (bag) => twMerge("ease-exponential corner-super-1.5 w-full rounded-xl border border-neutral-500/50 bg-neutral-100 py-1 pl-2 text-neutral-950 outline-offset-1 outline-blue-400/95 transition-[background-color] duration-300 dark:bg-neutral-700 dark:text-neutral-50", "focus-visible:bg-neutral-50 focus-visible:outline-3 active:bg-neutral-200 dark:focus-visible:bg-neutral-600 dark:active:bg-neutral-800 pointer-fine:hover:bg-neutral-50 pointer-fine:active:bg-neutral-200 dark:pointer-fine:hover:bg-neutral-600 dark:pointer-fine:active:bg-neutral-800", "user-invalid:border-red-500 user-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100)_5%)] user-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] user-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100))] dark:user-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)] dark:user-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:user-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)] user-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-500)_5%)] user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] user-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100))] dark:user-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-800)_5%)] dark:user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)]", typeof className === "function" ? className(bag) : className),
6722
+ className: (bag) => twMerge("w-full rounded-xl border border-neutral-500/50 bg-neutral-100 py-1 pl-2 text-neutral-950 outline-offset-1 outline-blue-400/95 transition-[background-color] duration-300 ease-exponential corner-super-1.5 dark:bg-neutral-700 dark:text-neutral-50", "focus-visible:bg-neutral-50 focus-visible:outline-3 active:bg-neutral-200 dark:focus-visible:bg-neutral-600 dark:active:bg-neutral-800 pointer-fine:hover:bg-neutral-50 pointer-fine:active:bg-neutral-200 dark:pointer-fine:hover:bg-neutral-600 dark:pointer-fine:active:bg-neutral-800", "user-invalid:border-red-500 user-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100)_5%)] user-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] user-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100))] dark:user-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)] dark:user-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:user-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)] user-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-500)_5%)] user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] user-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100))] dark:user-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-800)_5%)] dark:user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)]", typeof className === "function" ? className(bag) : className),
6735
6723
  required
6736
6724
  }), children] }),
6737
6725
  description && /* @__PURE__ */ jsx(Description, {
6738
6726
  ...descriptionProps,
6739
- className: (bag) => twMerge("text-xs text-current/60", typeof descriptionClassName === "function" ? descriptionClassName(bag) : descriptionClassName),
6727
+ className: (bag) => twMerge("max-w-none text-xs text-current/60", typeof descriptionClassName === "function" ? descriptionClassName(bag) : descriptionClassName),
6740
6728
  children: description
6741
6729
  })
6742
6730
  ]
6743
6731
  });
6744
6732
  }
6745
-
6746
- //#endregion
6747
- //#region src/symbols/xmark.tsx
6748
- function Xmark({ weight = "regular", ...props }) {
6749
- switch (weight) {
6750
- case "ultralight": return /* @__PURE__ */ jsx("svg", {
6751
- viewBox: "9.64746 -64.0801 57.84 57.84",
6752
- ...props,
6753
- children: /* @__PURE__ */ jsx("path", { d: "M65.4941-63.6108L10.1167-8.27883C9.65088-7.813 9.64746-7.13232 10.1167-6.66308C10.544-6.23924 11.2212-6.23924 11.6905-6.66308L67.0645-62.0371C67.4883-62.5063 67.4917-63.187 67.0645-63.6108C66.5918-64.0767 65.918-64.0801 65.4941-63.6108ZM67.0645-8.27883L11.6905-63.6108C11.2212-64.0767 10.5405-64.0801 10.1167-63.6108C9.65088-63.1836 9.65088-62.5063 10.1167-62.0371L65.4941-6.66308C65.9146-6.23924 66.5952-6.23924 67.0645-6.66308C67.4883-7.13574 67.4883-7.813 67.0645-8.27883Z" })
6754
- });
6755
- case "thin": return /* @__PURE__ */ jsx("svg", {
6756
- viewBox: "9.58594 -64.5723 58.82 58.8",
6757
- ...props,
6758
- children: /* @__PURE__ */ jsx("path", { d: "M65.248-63.8672L10.291-8.94533C9.59961-8.25392 9.58594-7.14258 10.291-6.43749C10.9746-5.76757 12.0723-5.76757 12.7774-6.43749L67.7207-61.3808C68.3906-62.0859 68.4043-63.1973 67.7207-63.8672C67.002-64.5586 65.918-64.5723 65.248-63.8672ZM67.7207-8.94533L12.7774-63.8672C12.0723-64.5586 10.9609-64.5723 10.291-63.8672C9.59961-63.1836 9.59961-62.0859 10.291-61.3808L65.248-6.43749C65.9043-5.76757 67.0156-5.76757 67.7207-6.43749C68.3906-7.15625 68.3906-8.25392 67.7207-8.94533Z" })
6759
- });
6760
- case "light": return /* @__PURE__ */ jsx("svg", {
6761
- viewBox: "9.46582 -65.5332 60.72 60.69",
6762
- ...props,
6763
- children: /* @__PURE__ */ jsx("path", { d: "M64.7676-64.3677L10.6313-10.2466C9.49951-9.11475 9.46582-7.1626 10.6313-5.99707C11.8154-4.84667 13.7339-4.84667 14.8994-5.99707L69.002-60.0996C70.1524-61.2651 70.186-63.2173 69.002-64.3677C67.8027-65.4995 65.918-65.5332 64.7676-64.3677ZM69.002-10.2466L14.8994-64.3677C13.7339-65.4995 11.7817-65.5332 10.6313-64.3677C9.49951-63.1836 9.49951-61.2651 10.6313-60.0996L64.7676-5.99707C65.8843-4.84667 67.8364-4.84667 69.002-5.99707C70.1524-7.19629 70.1524-9.11475 69.002-10.2466Z" })
6764
- });
6765
- case "regular": return /* @__PURE__ */ jsx("svg", {
6766
- viewBox: "9.375 -66.2598 62.16 62.11",
6767
- ...props,
6768
- children: /* @__PURE__ */ jsx("path", { d: "M64.4043-64.7461L10.8887-11.2305C9.42383-9.76562 9.375-7.17773 10.8887-5.66406C12.4512-4.15039 14.9902-4.15039 16.5039-5.66406L69.9707-59.1309C71.4844-60.6445 71.5332-63.2324 69.9707-64.7461C68.4082-66.2109 65.918-66.2598 64.4043-64.7461ZM69.9707-11.2305L16.5039-64.7461C14.9902-66.2109 12.4023-66.2598 10.8887-64.7461C9.42383-63.1836 9.42383-60.6445 10.8887-59.1309L64.4043-5.66406C65.8691-4.15039 68.457-4.15039 69.9707-5.66406C71.4844-7.22656 71.4844-9.76562 69.9707-11.2305Z" })
6769
- });
6770
- case "medium": return /* @__PURE__ */ jsx("svg", {
6771
- viewBox: "9.30469 -66.7871 63.2 63.17",
6772
- ...props,
6773
- children: /* @__PURE__ */ jsx("path", { d: "M63.9121-64.9746L11.0996-12.1621C9.35352-10.416 9.30469-7.26562 11.126-5.44434C12.9873-3.62305 16.1152-3.64941 17.8838-5.41797L70.6562-58.1904C72.4688-60.0029 72.5-63.1182 70.6299-64.9482C68.7598-66.7383 65.7246-66.7871 63.9121-64.9746ZM70.6562-12.1709L17.8838-64.9834C16.1064-66.7207 12.9561-66.7871 11.126-64.957C9.33594-63.0869 9.3623-59.9766 11.0996-58.1992L63.9121-5.42676C65.6846-3.61426 68.7998-3.62305 70.6299-5.45312C72.46-7.32324 72.4688-10.3984 70.6562-12.1709Z" })
6774
- });
6775
- case "semibold": return /* @__PURE__ */ jsx("svg", {
6776
- viewBox: "9.25078 -67.1914 63.99 63.99",
6777
- ...props,
6778
- children: /* @__PURE__ */ jsx("path", { d: "M63.5348-65.1498L11.2613-12.8764C9.29961-10.9146 9.25078-7.33301 11.3079-5.27588C13.3983-3.21875 16.9777-3.26533 18.9417-5.2293L71.1818-57.4694C73.2234-59.511 73.2412-63.0306 71.1353-65.1032C69.0293-67.1426 65.5764-67.1914 63.5348-65.1498ZM71.1818-12.8919L18.9417-65.1653C16.9622-67.1115 13.3806-67.1914 11.3079-65.1188C9.26855-63.0128 9.31514-59.4645 11.2613-57.485L63.5348-5.24482C65.5431-3.20322 69.0626-3.21875 71.1353-5.29141C73.2079-7.39736 73.2234-10.8836 71.1818-12.8919Z" })
6779
- });
6780
- case "bold": return /* @__PURE__ */ jsx("svg", {
6781
- viewBox: "9.17969 -67.7246 65.04 65.06",
6782
- ...props,
6783
- children: /* @__PURE__ */ jsx("path", { d: "M63.0371-65.3809L11.4746-13.8184C9.22852-11.5723 9.17969-7.42188 11.5479-5.05371C13.9404-2.68555 18.1152-2.75879 20.3369-4.98047L71.875-56.5186C74.2188-58.8623 74.2188-62.915 71.8018-65.3076C69.3848-67.6758 65.3809-67.7246 63.0371-65.3809ZM71.875-13.8428L20.3369-65.4053C18.0908-67.627 13.9404-67.7246 11.5479-65.332C9.17969-62.915 9.25293-58.7891 11.4746-56.543L63.0371-5.00488C65.3564-2.66113 69.4092-2.68555 71.8018-5.07812C74.1943-7.49512 74.2188-11.5234 71.875-13.8428Z" })
6784
- });
6785
- case "heavy": return /* @__PURE__ */ jsx("svg", {
6786
- viewBox: "9.05079 -68.498 66.61 66.62",
6787
- ...props,
6788
- children: /* @__PURE__ */ jsx("path", { d: "M62.3153-65.716L11.784-15.1847C9.1254-12.5261 9.07657-7.55077 11.8959-4.73147C14.7267-1.91217 19.7651-2.02408 22.3606-4.61956L72.8804-55.1394C75.6624-57.9214 75.6366-62.7475 72.7685-65.6041C69.9003-68.4492 65.0973-68.498 62.3153-65.716ZM72.8804-15.222L22.3606-65.7533C19.7278-68.3745 14.7525-68.498 11.8959-65.6414C9.05079-62.7733 9.1627-57.8095 11.784-55.1767L62.3153-4.65686C65.0858-1.87487 69.9119-1.91217 72.7685-4.76877C75.6251-7.6369 75.6624-12.4515 72.8804-15.222Z" })
6789
- });
6790
- case "black": return /* @__PURE__ */ jsx("svg", {
6791
- viewBox: "8.93555 -69.1895 68.02 68.02",
6792
- ...props,
6793
- children: /* @__PURE__ */ jsx("path", { d: "M61.6699-66.0156L12.0605-16.4062C9.0332-13.3789 8.98438-7.66602 12.207-4.44336C15.4297-1.2207 21.2402-1.36719 24.1699-4.29688L73.7793-53.9062C76.9531-57.0801 76.9043-62.5977 73.6328-65.8691C70.3613-69.1406 64.8438-69.1895 61.6699-66.0156ZM73.7793-16.4551L24.1699-66.0645C21.1914-69.043 15.4785-69.1895 12.207-65.918C8.93555-62.6465 9.08203-56.9336 12.0605-53.9551L61.6699-4.3457C64.8438-1.17188 70.3613-1.2207 73.6328-4.49219C76.9043-7.76367 76.9531-13.2812 73.7793-16.4551Z" })
6794
- });
6795
- }
6796
- }
6797
-
6798
6733
  //#endregion
6799
6734
  //#region src/hooks/create-fast-context.tsx
6800
6735
  function createFastContext(defaultInitialState) {
@@ -6836,7 +6771,6 @@ function createFastContext(defaultInitialState) {
6836
6771
  useStore
6837
6772
  };
6838
6773
  }
6839
-
6840
6774
  //#endregion
6841
6775
  //#region src/hooks/use-form-status.tsx
6842
6776
  const DEFAULT_STATUS = "incomplete";
@@ -6850,7 +6784,6 @@ function FormStatusProvider({ children, initialStatus = DEFAULT_STATUS }) {
6850
6784
  function useFormStatus() {
6851
6785
  return useStore((store) => store);
6852
6786
  }
6853
-
6854
6787
  //#endregion
6855
6788
  //#region src/hooks/use-pointer-movement.ts
6856
6789
  function usePointerMovement(props) {
@@ -6964,18 +6897,81 @@ function usePointerMovement(props) {
6964
6897
  trackPointerMovement
6965
6898
  };
6966
6899
  }
6967
-
6900
+ //#endregion
6901
+ //#region src/hooks/use-mobile-device.ts
6902
+ function useMobileDevice() {
6903
+ const [isMobileDevice, setIsMobileDevice] = useState(false);
6904
+ const onRun = () => {
6905
+ const hasTouch = "ontouchstart" in window || navigator.maxTouchPoints > 0, hasSmallViewport = window.innerWidth < 500;
6906
+ setIsMobileDevice(hasTouch || hasSmallViewport);
6907
+ };
6908
+ useEffect(() => {
6909
+ if (typeof window !== "undefined") onRun();
6910
+ }, []);
6911
+ return isMobileDevice;
6912
+ }
6913
+ //#endregion
6914
+ //#region src/symbols/xmark.tsx
6915
+ function Xmark({ weight = "regular", ...props }) {
6916
+ switch (weight) {
6917
+ case "ultralight": return /* @__PURE__ */ jsx("svg", {
6918
+ viewBox: "9.64746 -64.0801 57.84 57.84",
6919
+ ...props,
6920
+ children: /* @__PURE__ */ jsx("path", { d: "M65.4941-63.6108L10.1167-8.27883C9.65088-7.813 9.64746-7.13232 10.1167-6.66308C10.544-6.23924 11.2212-6.23924 11.6905-6.66308L67.0645-62.0371C67.4883-62.5063 67.4917-63.187 67.0645-63.6108C66.5918-64.0767 65.918-64.0801 65.4941-63.6108ZM67.0645-8.27883L11.6905-63.6108C11.2212-64.0767 10.5405-64.0801 10.1167-63.6108C9.65088-63.1836 9.65088-62.5063 10.1167-62.0371L65.4941-6.66308C65.9146-6.23924 66.5952-6.23924 67.0645-6.66308C67.4883-7.13574 67.4883-7.813 67.0645-8.27883Z" })
6921
+ });
6922
+ case "thin": return /* @__PURE__ */ jsx("svg", {
6923
+ viewBox: "9.58594 -64.5723 58.82 58.8",
6924
+ ...props,
6925
+ children: /* @__PURE__ */ jsx("path", { d: "M65.248-63.8672L10.291-8.94533C9.59961-8.25392 9.58594-7.14258 10.291-6.43749C10.9746-5.76757 12.0723-5.76757 12.7774-6.43749L67.7207-61.3808C68.3906-62.0859 68.4043-63.1973 67.7207-63.8672C67.002-64.5586 65.918-64.5723 65.248-63.8672ZM67.7207-8.94533L12.7774-63.8672C12.0723-64.5586 10.9609-64.5723 10.291-63.8672C9.59961-63.1836 9.59961-62.0859 10.291-61.3808L65.248-6.43749C65.9043-5.76757 67.0156-5.76757 67.7207-6.43749C68.3906-7.15625 68.3906-8.25392 67.7207-8.94533Z" })
6926
+ });
6927
+ case "light": return /* @__PURE__ */ jsx("svg", {
6928
+ viewBox: "9.46582 -65.5332 60.72 60.69",
6929
+ ...props,
6930
+ children: /* @__PURE__ */ jsx("path", { d: "M64.7676-64.3677L10.6313-10.2466C9.49951-9.11475 9.46582-7.1626 10.6313-5.99707C11.8154-4.84667 13.7339-4.84667 14.8994-5.99707L69.002-60.0996C70.1524-61.2651 70.186-63.2173 69.002-64.3677C67.8027-65.4995 65.918-65.5332 64.7676-64.3677ZM69.002-10.2466L14.8994-64.3677C13.7339-65.4995 11.7817-65.5332 10.6313-64.3677C9.49951-63.1836 9.49951-61.2651 10.6313-60.0996L64.7676-5.99707C65.8843-4.84667 67.8364-4.84667 69.002-5.99707C70.1524-7.19629 70.1524-9.11475 69.002-10.2466Z" })
6931
+ });
6932
+ case "regular": return /* @__PURE__ */ jsx("svg", {
6933
+ viewBox: "9.375 -66.2598 62.16 62.11",
6934
+ ...props,
6935
+ children: /* @__PURE__ */ jsx("path", { d: "M64.4043-64.7461L10.8887-11.2305C9.42383-9.76562 9.375-7.17773 10.8887-5.66406C12.4512-4.15039 14.9902-4.15039 16.5039-5.66406L69.9707-59.1309C71.4844-60.6445 71.5332-63.2324 69.9707-64.7461C68.4082-66.2109 65.918-66.2598 64.4043-64.7461ZM69.9707-11.2305L16.5039-64.7461C14.9902-66.2109 12.4023-66.2598 10.8887-64.7461C9.42383-63.1836 9.42383-60.6445 10.8887-59.1309L64.4043-5.66406C65.8691-4.15039 68.457-4.15039 69.9707-5.66406C71.4844-7.22656 71.4844-9.76562 69.9707-11.2305Z" })
6936
+ });
6937
+ case "medium": return /* @__PURE__ */ jsx("svg", {
6938
+ viewBox: "9.30469 -66.7871 63.2 63.17",
6939
+ ...props,
6940
+ children: /* @__PURE__ */ jsx("path", { d: "M63.9121-64.9746L11.0996-12.1621C9.35352-10.416 9.30469-7.26562 11.126-5.44434C12.9873-3.62305 16.1152-3.64941 17.8838-5.41797L70.6562-58.1904C72.4688-60.0029 72.5-63.1182 70.6299-64.9482C68.7598-66.7383 65.7246-66.7871 63.9121-64.9746ZM70.6562-12.1709L17.8838-64.9834C16.1064-66.7207 12.9561-66.7871 11.126-64.957C9.33594-63.0869 9.3623-59.9766 11.0996-58.1992L63.9121-5.42676C65.6846-3.61426 68.7998-3.62305 70.6299-5.45312C72.46-7.32324 72.4688-10.3984 70.6562-12.1709Z" })
6941
+ });
6942
+ case "semibold": return /* @__PURE__ */ jsx("svg", {
6943
+ viewBox: "9.25078 -67.1914 63.99 63.99",
6944
+ ...props,
6945
+ children: /* @__PURE__ */ jsx("path", { d: "M63.5348-65.1498L11.2613-12.8764C9.29961-10.9146 9.25078-7.33301 11.3079-5.27588C13.3983-3.21875 16.9777-3.26533 18.9417-5.2293L71.1818-57.4694C73.2234-59.511 73.2412-63.0306 71.1353-65.1032C69.0293-67.1426 65.5764-67.1914 63.5348-65.1498ZM71.1818-12.8919L18.9417-65.1653C16.9622-67.1115 13.3806-67.1914 11.3079-65.1188C9.26855-63.0128 9.31514-59.4645 11.2613-57.485L63.5348-5.24482C65.5431-3.20322 69.0626-3.21875 71.1353-5.29141C73.2079-7.39736 73.2234-10.8836 71.1818-12.8919Z" })
6946
+ });
6947
+ case "bold": return /* @__PURE__ */ jsx("svg", {
6948
+ viewBox: "9.17969 -67.7246 65.04 65.06",
6949
+ ...props,
6950
+ children: /* @__PURE__ */ jsx("path", { d: "M63.0371-65.3809L11.4746-13.8184C9.22852-11.5723 9.17969-7.42188 11.5479-5.05371C13.9404-2.68555 18.1152-2.75879 20.3369-4.98047L71.875-56.5186C74.2188-58.8623 74.2188-62.915 71.8018-65.3076C69.3848-67.6758 65.3809-67.7246 63.0371-65.3809ZM71.875-13.8428L20.3369-65.4053C18.0908-67.627 13.9404-67.7246 11.5479-65.332C9.17969-62.915 9.25293-58.7891 11.4746-56.543L63.0371-5.00488C65.3564-2.66113 69.4092-2.68555 71.8018-5.07812C74.1943-7.49512 74.2188-11.5234 71.875-13.8428Z" })
6951
+ });
6952
+ case "heavy": return /* @__PURE__ */ jsx("svg", {
6953
+ viewBox: "9.05079 -68.498 66.61 66.62",
6954
+ ...props,
6955
+ children: /* @__PURE__ */ jsx("path", { d: "M62.3153-65.716L11.784-15.1847C9.1254-12.5261 9.07657-7.55077 11.8959-4.73147C14.7267-1.91217 19.7651-2.02408 22.3606-4.61956L72.8804-55.1394C75.6624-57.9214 75.6366-62.7475 72.7685-65.6041C69.9003-68.4492 65.0973-68.498 62.3153-65.716ZM72.8804-15.222L22.3606-65.7533C19.7278-68.3745 14.7525-68.498 11.8959-65.6414C9.05079-62.7733 9.1627-57.8095 11.784-55.1767L62.3153-4.65686C65.0858-1.87487 69.9119-1.91217 72.7685-4.76877C75.6251-7.6369 75.6624-12.4515 72.8804-15.222Z" })
6956
+ });
6957
+ case "black": return /* @__PURE__ */ jsx("svg", {
6958
+ viewBox: "8.93555 -69.1895 68.02 68.02",
6959
+ ...props,
6960
+ children: /* @__PURE__ */ jsx("path", { d: "M61.6699-66.0156L12.0605-16.4062C9.0332-13.3789 8.98438-7.66602 12.207-4.44336C15.4297-1.2207 21.2402-1.36719 24.1699-4.29688L73.7793-53.9062C76.9531-57.0801 76.9043-62.5977 73.6328-65.8691C70.3613-69.1406 64.8438-69.1895 61.6699-66.0156ZM73.7793-16.4551L24.1699-66.0645C21.1914-69.043 15.4785-69.1895 12.207-65.918C8.93555-62.6465 9.08203-56.9336 12.0605-53.9551L61.6699-4.3457C64.8438-1.17188 70.3613-1.2207 73.6328-4.49219C76.9043-7.76367 76.9531-13.2812 73.7793-16.4551Z" })
6961
+ });
6962
+ }
6963
+ }
6968
6964
  //#endregion
6969
6965
  //#region src/components/modal.tsx
6966
+ const DRAG_TO_CLOSE_PROGRESS = .5;
6970
6967
  const { Provider: ModalControlsProvider, useStore: useModalControls } = createFastContext({
6968
+ closeModal: () => {},
6969
+ dialogPanelRef: { current: null },
6971
6970
  isOpen: false,
6972
6971
  openModal: () => {},
6973
- closeModal: () => {},
6974
6972
  place: "bottom",
6975
- readyToClose: false,
6976
- enableTouchClose: () => {},
6977
- enableMouseClose: () => {},
6978
- dialogPanelRef: { current: null }
6973
+ pseudoContainerRef: { current: null },
6974
+ readyToClose: false
6979
6975
  });
6980
6976
  function ModalTrigger({ as, onClick, ...props }) {
6981
6977
  const ModalTriggerElement = as || Button$1;
@@ -6991,78 +6987,182 @@ function ModalTrigger({ as, onClick, ...props }) {
6991
6987
  onClick: handleClick
6992
6988
  });
6993
6989
  }
6994
- function ModalTitle(props) {
6995
- return /* @__PURE__ */ jsx(DialogTitle, { ...props });
6990
+ function ModalTitle({ as, ref, ...props }) {
6991
+ return /* @__PURE__ */ jsx(DialogTitle, {
6992
+ ...props,
6993
+ as,
6994
+ ref
6995
+ });
6996
6996
  }
6997
6997
  function ModalDialog(props) {
6998
- const [modalControls] = useModalControls((store) => store);
6999
- const { isOpen, closeModal, place, readyToClose, className, enableMouseClose, enableTouchClose, dialogPanelRef } = modalControls || {
7000
- isOpen: false,
7001
- closeModal: () => {},
7002
- place: "bottom",
7003
- readyToClose: false,
7004
- className: "",
7005
- enableMouseClose: () => {},
7006
- enableTouchClose: () => {},
7007
- dialogPanelRef: { current: null }
6998
+ const [modalControls, setModalControls] = useModalControls((store) => store), isMobileDevice = useMobileDevice();
6999
+ const { className, closeModal, dialogPanelRef, isOpen, place, pseudoContainerRef, readyToClose } = modalControls || {};
7000
+ const [dialogPanelEl, setDialogPanelEl] = useState(null);
7001
+ const [draggableTriggerEl, setDraggableTriggerEl] = useState(null);
7002
+ const setDialogPanelRef = (node) => {
7003
+ setDialogPanelEl(node);
7004
+ if (dialogPanelRef) dialogPanelRef.current = node;
7008
7005
  };
7006
+ const setDraggableTriggerRef = (node) => {
7007
+ setDraggableTriggerEl(node);
7008
+ };
7009
+ const readyToCloseRef = useRef(readyToClose);
7010
+ function setUpDraggable({ dialogPanel, draggableTrigger, pseudoContainer }) {
7011
+ createDraggable(dialogPanel, {
7012
+ container: pseudoContainer,
7013
+ containerFriction: .99,
7014
+ onRelease: (draggable) => {
7015
+ if (readyToCloseRef.current) return closeModal?.();
7016
+ if (draggable.y >= 1) {
7017
+ const coord = { yCoord: draggable.y };
7018
+ animate(coord, {
7019
+ yCoord: 0,
7020
+ duration: 500,
7021
+ ease: spring({ duration: 300 }),
7022
+ composition: "blend",
7023
+ onUpdate: () => {
7024
+ draggable.setY(coord.yCoord);
7025
+ }
7026
+ });
7027
+ }
7028
+ },
7029
+ onUpdate: ({ progressY }) => {
7030
+ if (!setModalControls) return;
7031
+ if (progressY >= DRAG_TO_CLOSE_PROGRESS && !readyToCloseRef.current) {
7032
+ readyToCloseRef.current = true;
7033
+ setModalControls((prev) => ({
7034
+ ...prev,
7035
+ readyToClose: true
7036
+ }));
7037
+ }
7038
+ if (progressY < DRAG_TO_CLOSE_PROGRESS && readyToCloseRef.current) {
7039
+ readyToCloseRef.current = false;
7040
+ setModalControls((prev) => ({
7041
+ ...prev,
7042
+ readyToClose: false
7043
+ }));
7044
+ }
7045
+ },
7046
+ trigger: draggableTrigger
7047
+ });
7048
+ }
7049
+ const onDraggable = useEffectEvent(({ dialogPanel, draggableTrigger }) => {
7050
+ if (!pseudoContainerRef) return;
7051
+ const { top, left, width } = dialogPanel.getBoundingClientRect();
7052
+ pseudoContainerRef.current = document.createElement("div");
7053
+ const pseudoContainer = pseudoContainerRef.current;
7054
+ pseudoContainer.style.position = "fixed";
7055
+ pseudoContainer.style.top = `${top}px`;
7056
+ pseudoContainer.style.left = `${left}px`;
7057
+ pseudoContainer.style.width = `${width}px`;
7058
+ pseudoContainer.style.height = `100dvh`;
7059
+ pseudoContainer.style.zIndex = "-1";
7060
+ pseudoContainer.style.border = "2px solid blue";
7061
+ document.body.appendChild(pseudoContainer);
7062
+ animate(dialogPanel, {
7063
+ ...isMobileDevice ? {
7064
+ y: ["100lvh", 0],
7065
+ ease: "outExpo",
7066
+ duration: 500
7067
+ } : { keyframes: [
7068
+ {
7069
+ opacity: [0, 1],
7070
+ scale: [.5, .85],
7071
+ y: ["10rem", "9rem"],
7072
+ ease: "inExpo",
7073
+ duration: 250
7074
+ },
7075
+ {
7076
+ scale: [.85, 1],
7077
+ y: ["9rem", "0rem"],
7078
+ ease: "outExpo",
7079
+ duration: 500
7080
+ },
7081
+ {
7082
+ y: "0px",
7083
+ duration: 0
7084
+ }
7085
+ ] },
7086
+ onComplete: () => setUpDraggable({
7087
+ dialogPanel,
7088
+ draggableTrigger,
7089
+ pseudoContainer
7090
+ })
7091
+ });
7092
+ });
7093
+ useEffect(() => {
7094
+ if (isOpen && dialogPanelEl && draggableTriggerEl) onDraggable({
7095
+ dialogPanel: dialogPanelEl,
7096
+ draggableTrigger: draggableTriggerEl
7097
+ });
7098
+ }, [
7099
+ isOpen,
7100
+ dialogPanelEl,
7101
+ draggableTriggerEl
7102
+ ]);
7009
7103
  return /* @__PURE__ */ jsxs(Dialog, {
7010
7104
  open: isOpen,
7011
- onClose: () => closeModal?.(),
7105
+ onClose: closeModal || (() => void 0),
7012
7106
  className: ["isolate z-50", place === "bottom" && "after:fixed after:inset-x-0 after:bottom-0 after:-z-10 after:h-16 after:bg-neutral-50 sm:after:hidden"].join(" "),
7013
7107
  children: [/* @__PURE__ */ jsx(DialogBackdrop, {
7014
7108
  transition: true,
7015
- className: ["ease-exponential fixed inset-0 cursor-pointer transition-[opacity,background-color,backdrop-filter,-webkit-backdrop-filter] delay-100 duration-750 data-closed:opacity-0", readyToClose ? "bg-neutral-50/5 backdrop-blur-[1px] dark:bg-neutral-950/5" : "bg-neutral-50/25 backdrop-blur-sm dark:bg-neutral-950/25"].join(" "),
7016
- children: /* @__PURE__ */ jsx(Button, {
7109
+ ...readyToClose ? { "data-ready": "" } : {},
7110
+ className: "fixed inset-0 cursor-pointer bg-neutral-50/25 backdrop-blur-sm transition-[opacity,background-color,backdrop-filter,-webkit-backdrop-filter] delay-100 duration-750 ease-exponential data-closed:opacity-0 data-ready:bg-neutral-50/5 data-ready:backdrop-blur-[1px] dark:bg-neutral-950/25 dark:data-ready:bg-neutral-950/5",
7111
+ children: /* @__PURE__ */ jsxs(Button, {
7017
7112
  padding: "none",
7018
7113
  rounded: "full",
7019
- className: "group/button fixed top-4 right-4 size-7 overflow-x-hidden transition-[scale,width,filter] pointer-fine:hover:w-20",
7020
- children: /* @__PURE__ */ jsxs("div", {
7021
- className: "ease-exponential absolute top-1 right-1 flex items-center gap-1 pbs-px transition-transform duration-300 pointer-fine:group-hover/button:-translate-x-0.5",
7022
- children: [/* @__PURE__ */ jsxs("span", {
7023
- className: "block text-xs leading-none uppercase",
7024
- children: ["Close", /* @__PURE__ */ jsx("span", {
7025
- className: "sr-only",
7026
- children: "Modal"
7027
- })]
7028
- }), /* @__PURE__ */ jsx(Xmark, { className: "-top-px block size-4 scale-75 rotate-90 transition-transform duration-300 ease-in-out group-hover/button:rotate-0" })]
7029
- })
7114
+ className: "group/button fixed top-4 right-4 grid size-7 grid-cols-[1fr_calc(var(--spacing)*7)] gap-0 transition-[background-color,background-position-y,scale,grid-template-columns] pointer-fine:grid-cols-[0fr_calc(var(--spacing)*7)] pointer-fine:hover:grid-cols-[1fr_calc(var(--spacing)*7)]",
7115
+ children: [/* @__PURE__ */ jsxs("span", {
7116
+ className: "block overflow-x-hidden text-center text-xs leading-none uppercase",
7117
+ children: [/* @__PURE__ */ jsx("span", {
7118
+ className: "ps-2",
7119
+ children: "Close"
7120
+ }), /* @__PURE__ */ jsx("span", {
7121
+ className: "sr-only",
7122
+ children: "Modal"
7123
+ })]
7124
+ }), /* @__PURE__ */ jsx(Xmark, { className: "mx-auto size-3.5 rotate-90 transition-transform duration-300 ease-in-out group-hover/button:rotate-0" })]
7030
7125
  })
7031
7126
  }), /* @__PURE__ */ jsxs(DialogPanel, {
7032
- ref: dialogPanelRef,
7033
- transition: true,
7034
- className: twMerge("ease-exponential fixed left-1/2 -translate-x-1/2 overflow-y-scroll bg-neutral-50 p-4 shadow-[0_-15px_50px_-12px] shadow-neutral-950/25 transition-[transform,translate,opacity] duration-750 data-closed:scale-50 data-closed:opacity-0 sm:w-[calc(100vw-2rem)] sm:max-w-fit sm:p-6 sm:shadow-2xl lg:p-8 dark:bg-neutral-900", place === "center" ? "top-1/2 -translate-y-1/2 rounded-2xl data-enter:translate-y-[calc(-50%+12rem)] data-leave:translate-y-[calc(-50%-8rem)]" : "bottom-0 h-fit max-h-[calc(100dvh-4rem)] translate-y-0 rounded-t-4xl data-enter:translate-y-full data-leave:translate-y-full sm:top-1/2 sm:bottom-auto sm:rounded-t-2xl sm:rounded-b-2xl sm:data-enter:translate-y-[calc(-50%+12rem)] sm:data-leave:translate-y-[calc(-50%-8rem)] sm:data-open:-translate-y-1/2 pointer-fine:top-1/2 pointer-fine:bottom-auto pointer-fine:-translate-y-1/2 pointer-fine:rounded-2xl", className),
7127
+ ref: setDialogPanelRef,
7128
+ className: twMerge("fixed left-1/2 w-screen -translate-x-1/2 bg-neutral-50 px-4 shadow-[0_-15px_50px_-12px] shadow-neutral-950/25 ease-exponential sm:w-[calc(100vw-2rem)] sm:max-w-fit sm:px-6 sm:shadow-2xl lg:px-8 dark:bg-neutral-900", place === "center" ? "top-1/2 -translate-y-1/2 rounded-2xl" : "bottom-0 h-fit max-h-[calc(100dvh-4rem)] translate-y-0 rounded-ss-4xl rounded-se-4xl after:absolute after:inset-x-0 after:-bottom-64 after:h-64 after:bg-inherit sm:top-1/2 sm:bottom-auto sm:-translate-y-1/2 sm:rounded-ee-4xl sm:rounded-es-4xl sm:after:hidden pointer-fine:top-1/2 pointer-fine:bottom-auto pointer-fine:-translate-y-1/2 pointer-fine:rounded-3xl", className),
7129
+ style: isMobileDevice ? void 0 : { opacity: 0 },
7035
7130
  children: [/* @__PURE__ */ jsx("button", {
7036
- className: ["after:ease-exponential absolute inset-x-0 top-0 z-10 flex h-6 cursor-grab items-center justify-center after:h-1 after:w-8 after:rounded-full after:transition-[transform,background-color] after:duration-500 active:cursor-grabbing", readyToClose ? "after:scale-x-200 after:scale-y-200 after:bg-blue-500" : "after:bg-neutral-500/50 active:after:scale-x-150 active:after:scale-y-125 active:after:bg-neutral-500 pointer-fine:hover:after:scale-x-125 pointer-fine:hover:after:bg-neutral-500/75 pointer-fine:active:after:scale-x-150 pointer-fine:active:after:bg-neutral-500"].join(" "),
7037
- onTouchStart: enableTouchClose,
7038
- onMouseDown: enableMouseClose,
7131
+ className: "absolute inset-x-0 top-0 z-10 flex h-6 cursor-grab items-center justify-center after:h-1 after:w-8 after:rounded-full after:bg-neutral-500/50 after:transition-[scale,background-color] after:duration-500 after:ease-exponential active:cursor-grabbing active:after:scale-x-150 active:after:scale-y-125 active:after:bg-neutral-500 data-ready:after:scale-x-200 data-ready:after:scale-y-200 data-ready:after:bg-(--base-theme-color) pointer-fine:hover:after:scale-x-125 pointer-fine:hover:after:bg-neutral-500/75 pointer-fine:active:after:scale-x-150 pointer-fine:active:after:bg-neutral-500 data-ready:pointer-fine:hover:after:scale-x-200 data-ready:pointer-fine:hover:after:scale-y-200 data-ready:pointer-fine:hover:after:bg-(--base-theme-color) data-ready:pointer-fine:active:after:scale-x-200 data-ready:pointer-fine:active:after:scale-y-200 data-ready:pointer-fine:active:after:bg-(--base-theme-color)",
7132
+ ...readyToClose ? { "data-ready": "" } : {},
7133
+ ref: setDraggableTriggerRef,
7039
7134
  type: "button",
7040
7135
  children: /* @__PURE__ */ jsx("span", {
7041
7136
  className: "sr-only",
7042
7137
  children: "Drag down to close"
7043
7138
  })
7044
- }), /* @__PURE__ */ jsx("div", { ...props })]
7139
+ }), /* @__PURE__ */ jsx("div", {
7140
+ className: "overflow-y-scroll",
7141
+ children: /* @__PURE__ */ jsx("div", {
7142
+ ...props,
7143
+ className: "py-4 sm:py-6 lg:py-8"
7144
+ })
7145
+ })]
7045
7146
  })]
7046
7147
  });
7047
7148
  }
7048
- function ModalClose({ as, ...props }) {
7049
- return /* @__PURE__ */ jsx(as || Button$1, { ...props });
7149
+ function ModalClose({ as, onClick, ...props }) {
7150
+ const ModalCloseElement = as || Button$1;
7151
+ const [modalControls] = useModalControls((store) => store);
7152
+ const { closeModal } = modalControls || { closeModal: () => {} };
7153
+ const handleClick = (e) => {
7154
+ onClick?.(e);
7155
+ if (!e.defaultPrevented) closeModal();
7156
+ };
7157
+ return /* @__PURE__ */ jsx(ModalCloseElement, {
7158
+ ...props,
7159
+ onClick: handleClick
7160
+ });
7050
7161
  }
7051
7162
  function ModalDisplay({ children, className, onClose, onOpen, place = "bottom" }) {
7052
- const [bodyElement, setBodyElement] = useState(null);
7053
- const onVisible = useEffectEvent(() => {
7054
- setBodyElement(document.body);
7055
- });
7056
- useEffect(() => {
7057
- if (typeof window !== "undefined") onVisible();
7058
- }, []);
7059
- const [, setModalControls] = useModalControls(() => null);
7163
+ const [modalControls, setModalControls] = useModalControls((store) => store), isMobileDevice = useMobileDevice();
7060
7164
  const [isOpen, setIsOpen] = useState(false);
7061
- const dragMoveBoxRef = useRef(null), startDragCoords = useRef({
7062
- x: 0,
7063
- y: 0
7064
- }), localDialogPanelRef = useRef(null);
7065
- const [allowDragClose, setAllowDragClose] = useState(false), [readyToClose, setReadyToClose] = useState(false);
7165
+ const localDialogPanelRef = useRef(null);
7066
7166
  const openModal = () => {
7067
7167
  setIsOpen((previous) => {
7068
7168
  if (previous) return previous;
@@ -7070,67 +7170,47 @@ function ModalDisplay({ children, className, onClose, onOpen, place = "bottom" }
7070
7170
  return true;
7071
7171
  });
7072
7172
  };
7173
+ const closeFunctions = () => {
7174
+ onClose?.();
7175
+ modalControls?.pseudoContainerRef?.current?.remove();
7176
+ setModalControls?.((previous) => ({
7177
+ ...previous,
7178
+ pseudoContainerRef: { current: null },
7179
+ readyToClose: false
7180
+ }));
7181
+ };
7182
+ const mobileAnimation = {
7183
+ y: "100%",
7184
+ ease: "outExpo",
7185
+ duration: 500
7186
+ };
7187
+ const desktopAnimation = {
7188
+ opacity: 0,
7189
+ scale: .5,
7190
+ ease: "outExpo",
7191
+ duration: 500
7192
+ };
7193
+ const handleClose = () => {
7194
+ if (!localDialogPanelRef.current) return closeFunctions();
7195
+ animate(localDialogPanelRef.current, {
7196
+ ...isMobileDevice ? mobileAnimation : desktopAnimation,
7197
+ composition: "blend",
7198
+ onComplete: closeFunctions
7199
+ });
7200
+ };
7073
7201
  const closeModal = () => {
7074
7202
  setIsOpen((previous) => {
7075
7203
  if (!previous) return previous;
7076
- onClose?.();
7204
+ handleClose();
7077
7205
  return false;
7078
7206
  });
7079
7207
  };
7080
- const enableClose = (clientX, clientY) => {
7081
- startDragCoords.current.x = clientX;
7082
- startDragCoords.current.y = clientY;
7083
- if (localDialogPanelRef.current) localDialogPanelRef.current.style.transitionDuration = "0s";
7084
- setAllowDragClose(true);
7085
- };
7086
- const enableTouchClose = (e) => {
7087
- const { touches } = e, { clientY } = touches[0];
7088
- enableClose(0, clientY);
7089
- };
7090
- const enableMouseClose = (e) => {
7091
- const { clientX, clientY } = e;
7092
- enableClose(clientX, clientY);
7093
- };
7094
- const handleMove = (clientX, clientY) => {
7095
- if (!localDialogPanelRef.current) return;
7096
- let deltaX = clientX - startDragCoords.current.x, deltaY = clientY - startDragCoords.current.y;
7097
- if (deltaX > 0) deltaX = easeOutExpo(Math.abs(deltaX), 0, 25, 5e3);
7098
- if (deltaX < 0) deltaX = -easeOutExpo(Math.abs(deltaX), 0, 25, 5e3);
7099
- if (deltaY < 0) deltaY = -easeOutExpo(Math.abs(deltaY), 0, 25, 2e3);
7100
- if (deltaY >= 100 && !readyToClose) setReadyToClose(true);
7101
- else if (deltaY < 100 && readyToClose) setReadyToClose(false);
7102
- const greaterThanMediaSmall = innerWidth > 640;
7103
- localDialogPanelRef.current.style.translate = `calc(-50% + ${deltaX}px) ${greaterThanMediaSmall ? `calc(-50% + ${deltaY}px)` : `${deltaY}px`}`;
7104
- };
7105
- const handleMouseMove = (e) => {
7106
- if (!allowDragClose) return;
7107
- const { clientX, clientY } = e;
7108
- handleMove(clientX, clientY);
7109
- };
7110
- const disableDragClose = (clientY) => {
7111
- const deltaY = clientY - startDragCoords.current.y;
7112
- if (localDialogPanelRef.current) localDialogPanelRef.current.style.transitionDuration = "";
7113
- if (deltaY >= 100) {
7114
- closeModal();
7115
- setReadyToClose(false);
7116
- } else setTimeout(() => {
7117
- if (localDialogPanelRef.current) localDialogPanelRef.current.style.removeProperty("translate");
7118
- }, 50);
7119
- };
7120
- const disableMouseDragClose = (e) => {
7121
- if (allowDragClose) setAllowDragClose(false);
7122
- const { clientY } = e;
7123
- disableDragClose(clientY);
7124
- };
7125
7208
  useEffect(() => {
7126
7209
  setModalControls?.((previous) => ({
7127
7210
  ...previous,
7128
7211
  isOpen,
7129
- readyToClose,
7130
7212
  place,
7131
7213
  className,
7132
- enableMouseClose,
7133
- enableTouchClose,
7134
7214
  openModal,
7135
7215
  closeModal,
7136
7216
  dialogPanelRef: localDialogPanelRef
@@ -7138,25 +7218,16 @@ function ModalDisplay({ children, className, onClose, onOpen, place = "bottom" }
7138
7218
  }, [
7139
7219
  className,
7140
7220
  closeModal,
7141
- enableMouseClose,
7142
- enableTouchClose,
7143
7221
  isOpen,
7144
7222
  openModal,
7145
7223
  place,
7146
- readyToClose,
7147
7224
  setModalControls
7148
7225
  ]);
7149
- return /* @__PURE__ */ jsxs(Fragment, { children: [allowDragClose && bodyElement && createPortal(/* @__PURE__ */ jsx("div", {
7150
- ref: dragMoveBoxRef,
7151
- className: "fixed inset-0 z-99 h-dvh w-screen bg-transparent active:cursor-grabbing pointer-coarse:hidden",
7152
- onMouseMove: handleMouseMove,
7153
- onMouseUp: disableMouseDragClose
7154
- }), bodyElement), children] });
7226
+ return /* @__PURE__ */ jsx(Fragment, { children });
7155
7227
  }
7156
7228
  function Modal(props) {
7157
7229
  return /* @__PURE__ */ jsx(ModalControlsProvider, { children: /* @__PURE__ */ jsx(ModalDisplay, { ...props }) });
7158
7230
  }
7159
-
7160
7231
  //#endregion
7161
7232
  //#region src/symbols/chevron.up.chevron.down.tsx
7162
7233
  function ChevronUpChevronDown({ weight = "regular", ...props }) {
@@ -7208,7 +7279,6 @@ function ChevronUpChevronDown({ weight = "regular", ...props }) {
7208
7279
  });
7209
7280
  }
7210
7281
  }
7211
-
7212
7282
  //#endregion
7213
7283
  //#region src/components/select.tsx
7214
7284
  /**
@@ -7234,10 +7304,10 @@ function SelectOption({ children, className, name, ...props }) {
7234
7304
  className: "group/option contents",
7235
7305
  ...props,
7236
7306
  children: (bag) => bag.selectedOption ? /* @__PURE__ */ jsx("span", {
7237
- className: "mr-3 before:absolute before:-left-3 before:content-[\",_\"]",
7307
+ className: `mr-3 before:absolute before:-left-3 before:content-[',_']`,
7238
7308
  children: name
7239
7309
  }) : /* @__PURE__ */ jsxs("div", {
7240
- className: twMerge("ease-exponential corner-super-1.5 flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1 transition-[background-color] duration-200 select-none [--theme-color:var(--base-theme-color)] group-disabled/option:opacity-50 group-data-focus/option:bg-(--theme-color)/15 group-data-selected/option:cursor-default group-data-selected/option:text-(--theme-color) group-data-focus/option:group-data-selected/option:bg-transparent dark:group-data-focus/option:bg-(--theme-color)/15", className),
7310
+ className: twMerge("flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1 transition-[background-color] duration-200 ease-exponential select-none [--theme-color:var(--base-theme-color)] corner-super-1.5 group-disabled/option:opacity-50 group-data-focus/option:bg-(--theme-color)/15 group-data-selected/option:cursor-default group-data-selected/option:text-(--theme-color) group-data-focus/option:group-data-selected/option:bg-transparent dark:group-data-focus/option:bg-(--theme-color)/15", className),
7241
7311
  children: [/* @__PURE__ */ jsx(Checkmark, { className: "invisible size-3.5 group-data-selected/option:visible" }), typeof children === "function" ? children(bag) : children]
7242
7312
  })
7243
7313
  });
@@ -7284,7 +7354,7 @@ function Select({ buttonProps, children, className, description, descriptionProp
7284
7354
  children: [
7285
7355
  label && /* @__PURE__ */ jsx(Label, {
7286
7356
  ...labelProps,
7287
- className: (bag) => twMerge("text-sm font-medium", required ? "after:text-red-700 after:content-[\"_*\"]" : "", typeof labelClassName === "function" ? labelClassName(bag) : labelClassName),
7357
+ className: (bag) => twMerge("text-sm font-medium", required ? `after:text-red-700 after:content-['_*']` : "", typeof labelClassName === "function" ? labelClassName(bag) : labelClassName),
7288
7358
  children: label
7289
7359
  }),
7290
7360
  /* @__PURE__ */ jsxs(Listbox, {
@@ -7293,14 +7363,14 @@ function Select({ buttonProps, children, className, description, descriptionProp
7293
7363
  onChange: handleChange,
7294
7364
  children: [/* @__PURE__ */ jsxs(ListboxButton, {
7295
7365
  ...buttonProps,
7296
- className: (bag) => twMerge("ease-exponential corner-super-1.5 inline-block w-full overflow-clip rounded-xl border border-neutral-500/50 bg-neutral-100 py-1 pr-4.5 pl-2 text-left text-neutral-950 outline-offset-1 outline-blue-400/95 transition-[background-color] duration-300 dark:bg-neutral-700 dark:text-neutral-50", "focus:outline-3 focus-visible:bg-neutral-50 focus-visible:outline-3 active:bg-neutral-200 dark:focus-visible:bg-neutral-600 dark:active:bg-neutral-800 pointer-fine:hover:bg-neutral-50 pointer-fine:active:bg-neutral-200 dark:pointer-fine:hover:bg-neutral-600 dark:pointer-fine:active:bg-neutral-800", "data-invalid:border-red-500 data-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100)_5%)] data-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] data-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100))] dark:data-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)] dark:data-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:data-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)] data-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-500)_5%)] data-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] data-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100))] dark:data-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-800)_5%)] dark:data-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:data-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)]", typeof className === "function" ? className(bag) : className),
7366
+ className: (bag) => twMerge("inline-block w-full overflow-clip rounded-xl border border-neutral-500/50 bg-neutral-100 py-1 pr-4.5 pl-2 text-left text-neutral-950 outline-offset-1 outline-blue-400/95 transition-[background-color] duration-300 ease-exponential corner-super-1.5 dark:bg-neutral-700 dark:text-neutral-50", "focus:outline-3 focus-visible:bg-neutral-50 focus-visible:outline-3 active:bg-neutral-200 dark:focus-visible:bg-neutral-600 dark:active:bg-neutral-800 pointer-fine:hover:bg-neutral-50 pointer-fine:active:bg-neutral-200 dark:pointer-fine:hover:bg-neutral-600 dark:pointer-fine:active:bg-neutral-800", "data-invalid:border-red-500 data-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100)_5%)] data-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] data-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100))] dark:data-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)] dark:data-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:data-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)] data-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-500)_5%)] data-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] data-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-100))] dark:data-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-800)_5%)] dark:data-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:data-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_5%,var(--color-neutral-800)_5%)]", typeof className === "function" ? className(bag) : className),
7297
7367
  ref: listboxButtonRef,
7298
7368
  children: [
7299
7369
  /* @__PURE__ */ jsx("input", {
7300
7370
  "aria-hidden": "true",
7301
7371
  className: "sr-only top-0 left-1/2",
7302
7372
  id: props.name + ":input:id" + uniqueId,
7303
- name: props.name + ":input:name" + uniqueId,
7373
+ name: props.name,
7304
7374
  onChange: () => {},
7305
7375
  onInvalid: handleInvalid,
7306
7376
  onFocus: refocus,
@@ -7321,7 +7391,7 @@ function Select({ buttonProps, children, className, description, descriptionProp
7321
7391
  }), /* @__PURE__ */ jsx(ListboxOptions, {
7322
7392
  ...optionsProps,
7323
7393
  anchor: anchor || "bottom start",
7324
- className: (bag) => twMerge("ease-exponential corner-super-1.5 z-50 w-(--button-width) origin-top rounded-xl border border-neutral-500/50 bg-neutral-50/95 p-1 backdrop-blur-sm backdrop-brightness-110 transition-[opacity,scale,translate] duration-300 [--anchor-gap:--spacing(1)] focus:outline-none data-closed:-translate-y-0.5 data-closed:scale-y-0 data-closed:opacity-0 data-[anchor*=top]:origin-bottom dark:bg-neutral-800/95", typeof optionsClassName === "function" ? optionsClassName(bag) : optionsClassName),
7394
+ className: (bag) => twMerge("z-50 w-(--button-width) origin-top rounded-xl border border-neutral-500/50 bg-neutral-50/95 p-1 backdrop-blur-sm backdrop-brightness-110 transition-[opacity,scale,translate] duration-300 ease-exponential [--anchor-gap:--spacing(1)] corner-super-1.5 focus:outline-none data-closed:-translate-y-0.5 data-closed:scale-y-0 data-closed:opacity-0 data-[anchor*=top]:origin-bottom dark:bg-neutral-800/95", typeof optionsClassName === "function" ? optionsClassName(bag) : optionsClassName),
7325
7395
  transition: transition || true,
7326
7396
  children
7327
7397
  })]
@@ -7334,7 +7404,6 @@ function Select({ buttonProps, children, className, description, descriptionProp
7334
7404
  ]
7335
7405
  });
7336
7406
  }
7337
-
7338
7407
  //#endregion
7339
7408
  //#region src/symbols/circle.fill.tsx
7340
7409
  function CircleFill({ weight = "regular", ...props }) {
@@ -7386,7 +7455,6 @@ function CircleFill({ weight = "regular", ...props }) {
7386
7455
  });
7387
7456
  }
7388
7457
  }
7389
-
7390
7458
  //#endregion
7391
7459
  //#region src/components/submit-button.tsx
7392
7460
  /**
@@ -7419,15 +7487,15 @@ function SubmitButton({ children, className, customTheme, error, formStatus = "r
7419
7487
  }),
7420
7488
  "\xA0",
7421
7489
  /* @__PURE__ */ jsx(CircleFill, {
7422
- className: "animate-wave size-2",
7490
+ className: "size-2 animate-wave",
7423
7491
  weight: "black"
7424
7492
  }),
7425
7493
  /* @__PURE__ */ jsx(CircleFill, {
7426
- className: "animate-wave animation-delay-100 size-2",
7494
+ className: "size-2 animate-wave animation-delay-100",
7427
7495
  weight: "black"
7428
7496
  }),
7429
7497
  /* @__PURE__ */ jsx(CircleFill, {
7430
- className: "animate-wave animation-delay-200 size-2",
7498
+ className: "size-2 animate-wave animation-delay-200",
7431
7499
  weight: "black"
7432
7500
  }),
7433
7501
  "\xA0"
@@ -7462,7 +7530,7 @@ function SubmitButton({ children, className, customTheme, error, formStatus = "r
7462
7530
  ...dataFormState,
7463
7531
  className: twMerge([
7464
7532
  formStatusButtonClasses,
7465
- "w-full text-white",
7533
+ "flex w-full items-center justify-center gap-2 text-white",
7466
7534
  className
7467
7535
  ]),
7468
7536
  customTheme: { themeColor: twMerge("data-error:[--theme-color:var(--color-red-500)] data-incomplete:[--theme-color:var(--color-neutral-500)] data-loading:[--theme-color:var(--color-yellow-500)] data-readonly:[--theme-color:var(--color-neutral-500)] data-ready:[--theme-color:var(--base-theme-color)] data-success:[--theme-color:var(--color-green-500)]", customTheme?.themeColor) },
@@ -7471,7 +7539,6 @@ function SubmitButton({ children, className, customTheme, error, formStatus = "r
7471
7539
  children: buttonText
7472
7540
  });
7473
7541
  }
7474
-
7475
7542
  //#endregion
7476
7543
  //#region src/components/textarea.tsx
7477
7544
  /**
@@ -7529,7 +7596,7 @@ function Textarea({ children, className, description, descriptionProps: { classN
7529
7596
  }),
7530
7597
  /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Textarea$1, {
7531
7598
  ...props,
7532
- className: (bag) => twMerge("corner-super-1.5 ease-exponential w-full rounded-xl border border-neutral-500/50 bg-neutral-100 py-1 pl-2 text-neutral-950 outline-offset-1 outline-blue-400/95 transition-[background-color] duration-300 dark:bg-neutral-700 dark:text-neutral-50", "focus-visible:bg-neutral-50 focus-visible:outline-3 active:bg-neutral-200 dark:focus-visible:bg-neutral-600 dark:active:bg-neutral-800 pointer-fine:hover:bg-neutral-50 pointer-fine:active:bg-neutral-200 dark:pointer-fine:hover:bg-neutral-600 dark:pointer-fine:active:bg-neutral-800", "user-invalid:border-red-500 user-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_20%,var(--color-neutral-100))] user-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] user-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_25%,var(--color-neutral-100))] dark:user-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_20%,var(--color-neutral-800))] dark:user-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:user-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_25%,var(--color-neutral-800))] user-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-100))] user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] user-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_25%,var(--color-neutral-100))] dark:user-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_25%,var(--color-neutral-800))]", resizeClassName, typeof className === "function" ? className(bag) : className),
7599
+ className: (bag) => twMerge("w-full rounded-xl border border-neutral-500/50 bg-neutral-100 py-1 pl-2 text-neutral-950 outline-offset-1 outline-blue-400/95 transition-[background-color] duration-300 ease-exponential corner-super-1.5 dark:bg-neutral-700 dark:text-neutral-50", "focus-visible:bg-neutral-50 focus-visible:outline-3 active:bg-neutral-200 dark:focus-visible:bg-neutral-600 dark:active:bg-neutral-800 pointer-fine:hover:bg-neutral-50 pointer-fine:active:bg-neutral-200 dark:pointer-fine:hover:bg-neutral-600 dark:pointer-fine:active:bg-neutral-800", "user-invalid:border-red-500 user-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_20%,var(--color-neutral-100))] user-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] user-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_25%,var(--color-neutral-100))] dark:user-invalid:bg-[color-mix(in_oklch,var(--color-red-500)_20%,var(--color-neutral-800))] dark:user-invalid:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:user-invalid:active:bg-[color-mix(in_oklch,var(--color-red-500)_25%,var(--color-neutral-800))] user-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-100))] user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-100))] user-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_25%,var(--color-neutral-100))] dark:user-invalid:pointer-fine:hover:bg-[color-mix(in_oklch,var(--color-red-500)_10%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:focus-visible:bg-[color-mix(in_oklch,var(--color-red-500)_1%,var(--color-neutral-800))] dark:user-invalid:pointer-fine:active:bg-[color-mix(in_oklch,var(--color-red-500)_25%,var(--color-neutral-800))]", resizeClassName, typeof className === "function" ? className(bag) : className),
7533
7600
  required
7534
7601
  }), children] }),
7535
7602
  description && /* @__PURE__ */ jsx(Description, {
@@ -7540,7 +7607,6 @@ function Textarea({ children, className, description, descriptionProps: { classN
7540
7607
  ]
7541
7608
  });
7542
7609
  }
7543
-
7544
7610
  //#endregion
7545
7611
  //#region src/components/time.tsx
7546
7612
  /**
@@ -7553,45 +7619,48 @@ function Textarea({ children, className, description, descriptionProps: { classN
7553
7619
  * @prop dateTime - Set the dateTime itself.
7554
7620
  * @prop day - Include the day of the month in the display.
7555
7621
  * @prop hours - Include the hours in the display.
7622
+ * @prop militaryTime - Use military time (24-hour clock) instead of AM/PM.
7556
7623
  * @prop milliseconds - Include the milliseconds in the display.
7557
7624
  * @prop minutes - Include the minutes in the display.
7558
7625
  * @prop month - Include the month in the display.
7559
7626
  * @prop seconds - Include the seconds in the display.
7560
7627
  * @prop year - Include the year in the display.
7561
7628
  */
7562
- function Time({ children, dateObject, dateTime, day, hours, milliseconds, minutes, month, seconds, year, ref, ...props }) {
7629
+ function Time({ children, dateObject, dateTime, day, hours, militaryTime, milliseconds, minutes, month, seconds, year, ref, ...props }) {
7563
7630
  const [date, setDate] = useState(dateObject || void 0);
7564
7631
  const getDateAndTime = () => {
7565
7632
  if (dateTime) return dateTime;
7566
7633
  if (!date) return "";
7567
- return [
7568
- date.getFullYear(),
7569
- getMonth(date),
7570
- getDate(date),
7571
- getHours(date),
7572
- getMinutes(date),
7573
- getSeconds(date),
7574
- getMilliseconds(date)
7575
- ].join("-");
7634
+ const currentYear = date.getFullYear(), currentMonth = getMonth(date), currentDay = getDate(date), currentHour = getHours(date), currentMinute = getMinutes(date), currentSecond = getSeconds(date), currentMillisecond = getMilliseconds(date);
7635
+ return [[
7636
+ currentYear,
7637
+ currentMonth,
7638
+ currentDay
7639
+ ].join("-"), [
7640
+ currentHour,
7641
+ currentMinute,
7642
+ [currentSecond, currentMillisecond].join(".")
7643
+ ].join(":")].join(" ");
7576
7644
  };
7577
7645
  const dateAndTime = getDateAndTime();
7578
7646
  const getDateDisplay = () => {
7579
7647
  if (children) return children;
7580
7648
  if (dateAndTime === "") return "";
7581
- const [dtYear, dtMonth, dtDay, dtHour, dtMinute, dtSecond, dtMillisecond] = dateAndTime.split("-").map(Number);
7649
+ const [dateData, timeData] = dateAndTime.split(" "), [dtYear, dtMonth, dtDay] = dateData.split("-").map(Number), [dtHour, dtMinute, secondData] = timeData.split(":").map(Number), [dtSecond, dtMillisecond] = String(secondData).split(".").map(Number);
7582
7650
  return [
7583
- day && dtDay,
7584
- month && [getMonthName(Number(dtMonth) - 1), month && year && ","].filter(Boolean).join(""),
7651
+ [month && getMonthName(Number(dtMonth) - 1), !day && month && year && ","].filter(Boolean).join(""),
7652
+ [day && dtDay, day && month && year && ","].filter(Boolean).join(""),
7585
7653
  year && dtYear,
7586
7654
  hours && minutes && [
7587
7655
  "at ",
7588
- hours && dtHour,
7656
+ hours && militaryTime ? dtHour : dtHour % 12 || 12,
7589
7657
  hours && minutes && ":",
7590
7658
  minutes && dtMinute,
7591
7659
  minutes && seconds && ":",
7592
7660
  seconds && dtSecond,
7593
7661
  seconds && milliseconds && ".",
7594
- milliseconds && dtMillisecond
7662
+ milliseconds && dtMillisecond,
7663
+ !militaryTime && (dtHour < 12 ? "am" : "pm")
7595
7664
  ].filter(Boolean).join("")
7596
7665
  ].filter(Boolean).join(" ");
7597
7666
  };
@@ -7609,7 +7678,6 @@ function Time({ children, dateObject, dateTime, day, hours, milliseconds, minute
7609
7678
  children: dateDisplay
7610
7679
  });
7611
7680
  }
7612
-
7613
7681
  //#endregion
7614
7682
  //#region node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
7615
7683
  const min = Math.min;
@@ -7626,10 +7694,6 @@ const oppositeSideMap = {
7626
7694
  bottom: "top",
7627
7695
  top: "bottom"
7628
7696
  };
7629
- const oppositeAlignmentMap = {
7630
- start: "end",
7631
- end: "start"
7632
- };
7633
7697
  function clamp(start, value, end) {
7634
7698
  return max(start, min(value, end));
7635
7699
  }
@@ -7648,9 +7712,9 @@ function getOppositeAxis(axis) {
7648
7712
  function getAxisLength(axis) {
7649
7713
  return axis === "y" ? "height" : "width";
7650
7714
  }
7651
- const yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
7652
7715
  function getSideAxis(placement) {
7653
- return yAxisSides.has(getSide(placement)) ? "y" : "x";
7716
+ const firstChar = placement[0];
7717
+ return firstChar === "t" || firstChar === "b" ? "y" : "x";
7654
7718
  }
7655
7719
  function getAlignmentAxis(placement) {
7656
7720
  return getOppositeAxis(getSideAxis(placement));
@@ -7673,7 +7737,7 @@ function getExpandedPlacements(placement) {
7673
7737
  ];
7674
7738
  }
7675
7739
  function getOppositeAlignmentPlacement(placement) {
7676
- return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);
7740
+ return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start");
7677
7741
  }
7678
7742
  const lrPlacement = ["left", "right"];
7679
7743
  const rlPlacement = ["right", "left"];
@@ -7700,7 +7764,8 @@ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
7700
7764
  return list;
7701
7765
  }
7702
7766
  function getOppositePlacement(placement) {
7703
- return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);
7767
+ const side = getSide(placement);
7768
+ return oppositeSideMap[side] + placement.slice(side.length);
7704
7769
  }
7705
7770
  function expandPaddingObject(padding) {
7706
7771
  return {
@@ -7732,7 +7797,6 @@ function rectToClientRect(rect) {
7732
7797
  y
7733
7798
  };
7734
7799
  }
7735
-
7736
7800
  //#endregion
7737
7801
  //#region node_modules/@floating-ui/core/dist/floating-ui.core.mjs
7738
7802
  function computeCoordsFromPlacement(_ref, placement, rtl) {
@@ -7834,6 +7898,7 @@ async function detectOverflow(state, options) {
7834
7898
  right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
7835
7899
  };
7836
7900
  }
7901
+ const MAX_RESET_COUNT = 50;
7837
7902
  /**
7838
7903
  * Computes the `x` and `y` coordinates that will place the floating element
7839
7904
  * next to a given reference element.
@@ -7843,7 +7908,10 @@ async function detectOverflow(state, options) {
7843
7908
  */
7844
7909
  const computePosition$1 = async (reference, floating, config) => {
7845
7910
  const { placement = "bottom", strategy = "absolute", middleware = [], platform } = config;
7846
- const validMiddleware = middleware.filter(Boolean);
7911
+ const platformWithDetectOverflow = platform.detectOverflow ? platform : {
7912
+ ...platform,
7913
+ detectOverflow
7914
+ };
7847
7915
  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
7848
7916
  let rects = await platform.getElementRects({
7849
7917
  reference,
@@ -7852,11 +7920,12 @@ const computePosition$1 = async (reference, floating, config) => {
7852
7920
  });
7853
7921
  let { x, y } = computeCoordsFromPlacement(rects, placement, rtl);
7854
7922
  let statefulPlacement = placement;
7855
- let middlewareData = {};
7856
7923
  let resetCount = 0;
7857
- for (let i = 0; i < validMiddleware.length; i++) {
7858
- var _platform$detectOverf;
7859
- const { name, fn } = validMiddleware[i];
7924
+ const middlewareData = {};
7925
+ for (let i = 0; i < middleware.length; i++) {
7926
+ const currentMiddleware = middleware[i];
7927
+ if (!currentMiddleware) continue;
7928
+ const { name, fn } = currentMiddleware;
7860
7929
  const { x: nextX, y: nextY, data, reset } = await fn({
7861
7930
  x,
7862
7931
  y,
@@ -7865,10 +7934,7 @@ const computePosition$1 = async (reference, floating, config) => {
7865
7934
  strategy,
7866
7935
  middlewareData,
7867
7936
  rects,
7868
- platform: {
7869
- ...platform,
7870
- detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow
7871
- },
7937
+ platform: platformWithDetectOverflow,
7872
7938
  elements: {
7873
7939
  reference,
7874
7940
  floating
@@ -7876,14 +7942,11 @@ const computePosition$1 = async (reference, floating, config) => {
7876
7942
  });
7877
7943
  x = nextX != null ? nextX : x;
7878
7944
  y = nextY != null ? nextY : y;
7879
- middlewareData = {
7880
- ...middlewareData,
7881
- [name]: {
7882
- ...middlewareData[name],
7883
- ...data
7884
- }
7945
+ middlewareData[name] = {
7946
+ ...middlewareData[name],
7947
+ ...data
7885
7948
  };
7886
- if (reset && resetCount <= 50) {
7949
+ if (reset && resetCount < MAX_RESET_COUNT) {
7887
7950
  resetCount++;
7888
7951
  if (typeof reset === "object") {
7889
7952
  if (reset.placement) statefulPlacement = reset.placement;
@@ -8202,7 +8265,6 @@ const size$2 = function(options) {
8202
8265
  }
8203
8266
  };
8204
8267
  };
8205
-
8206
8268
  //#endregion
8207
8269
  //#region node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
8208
8270
  function hasWindow() {
@@ -8236,54 +8298,30 @@ function isShadowRoot(value) {
8236
8298
  if (!hasWindow() || typeof ShadowRoot === "undefined") return false;
8237
8299
  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
8238
8300
  }
8239
- const invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
8240
8301
  function isOverflowElement(element) {
8241
8302
  const { overflow, overflowX, overflowY, display } = getComputedStyle$1(element);
8242
- return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
8303
+ return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents";
8243
8304
  }
8244
- const tableElements = /* @__PURE__ */ new Set([
8245
- "table",
8246
- "td",
8247
- "th"
8248
- ]);
8249
8305
  function isTableElement(element) {
8250
- return tableElements.has(getNodeName(element));
8306
+ return /^(table|td|th)$/.test(getNodeName(element));
8251
8307
  }
8252
- const topLayerSelectors = [":popover-open", ":modal"];
8253
8308
  function isTopLayer(element) {
8254
- return topLayerSelectors.some((selector) => {
8255
- try {
8256
- return element.matches(selector);
8257
- } catch (_e) {
8258
- return false;
8259
- }
8260
- });
8261
- }
8262
- const transformProperties = [
8263
- "transform",
8264
- "translate",
8265
- "scale",
8266
- "rotate",
8267
- "perspective"
8268
- ];
8269
- const willChangeValues = [
8270
- "transform",
8271
- "translate",
8272
- "scale",
8273
- "rotate",
8274
- "perspective",
8275
- "filter"
8276
- ];
8277
- const containValues = [
8278
- "paint",
8279
- "layout",
8280
- "strict",
8281
- "content"
8282
- ];
8309
+ try {
8310
+ if (element.matches(":popover-open")) return true;
8311
+ } catch (_e) {}
8312
+ try {
8313
+ return element.matches(":modal");
8314
+ } catch (_e) {
8315
+ return false;
8316
+ }
8317
+ }
8318
+ const willChangeRe = /transform|translate|scale|rotate|perspective|filter/;
8319
+ const containRe = /paint|layout|strict|content/;
8320
+ const isNotNone = (value) => !!value && value !== "none";
8321
+ let isWebKitValue;
8283
8322
  function isContainingBlock(elementOrCss) {
8284
- const webkit = isWebKit();
8285
8323
  const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
8286
- return transformProperties.some((value) => css[value] ? css[value] !== "none" : false) || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || willChangeValues.some((value) => (css.willChange || "").includes(value)) || containValues.some((value) => (css.contain || "").includes(value));
8324
+ return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || "") || containRe.test(css.contain || "");
8287
8325
  }
8288
8326
  function getContainingBlock(element) {
8289
8327
  let currentNode = getParentNode(element);
@@ -8295,16 +8333,11 @@ function getContainingBlock(element) {
8295
8333
  return null;
8296
8334
  }
8297
8335
  function isWebKit() {
8298
- if (typeof CSS === "undefined" || !CSS.supports) return false;
8299
- return CSS.supports("-webkit-backdrop-filter", "none");
8336
+ if (isWebKitValue == null) isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none");
8337
+ return isWebKitValue;
8300
8338
  }
8301
- const lastTraversableNodeNames = /* @__PURE__ */ new Set([
8302
- "html",
8303
- "body",
8304
- "#document"
8305
- ]);
8306
8339
  function isLastTraversableNode(node) {
8307
- return lastTraversableNodeNames.has(getNodeName(node));
8340
+ return /^(html|body|#document)$/.test(getNodeName(node));
8308
8341
  }
8309
8342
  function getComputedStyle$1(element) {
8310
8343
  return getWindow(element).getComputedStyle(element);
@@ -8340,13 +8373,11 @@ function getOverflowAncestors(node, list, traverseIframes) {
8340
8373
  if (isBody) {
8341
8374
  const frameElement = getFrameElement(win);
8342
8375
  return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
8343
- }
8344
- return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
8376
+ } else return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
8345
8377
  }
8346
8378
  function getFrameElement(win) {
8347
8379
  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
8348
8380
  }
8349
-
8350
8381
  //#endregion
8351
8382
  //#region node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
8352
8383
  function getCssDimensions(element) {
@@ -8467,7 +8498,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
8467
8498
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
8468
8499
  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
8469
8500
  if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) scroll = getNodeScroll(offsetParent);
8470
- if (isHTMLElement(offsetParent)) {
8501
+ if (isOffsetParentAnElement) {
8471
8502
  const offsetRect = getBoundingClientRect(offsetParent);
8472
8503
  scale = getScale(offsetParent);
8473
8504
  offsets.x = offsetRect.x + offsetParent.clientLeft;
@@ -8535,7 +8566,6 @@ function getViewportRect(element, strategy) {
8535
8566
  y
8536
8567
  };
8537
8568
  }
8538
- const absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
8539
8569
  function getInnerBoundingClientRect(element, strategy) {
8540
8570
  const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
8541
8571
  const top = clientRect.top + element.clientTop;
@@ -8580,7 +8610,7 @@ function getClippingElementAncestors(element, cache) {
8580
8610
  const computedStyle = getComputedStyle$1(currentNode);
8581
8611
  const currentNodeIsContaining = isContainingBlock(currentNode);
8582
8612
  if (!currentNodeIsContaining && computedStyle.position === "fixed") currentContainingBlockComputedStyle = null;
8583
- if (elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode)) result = result.filter((ancestor) => ancestor !== currentNode);
8613
+ if (elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === "absolute" || currentContainingBlockComputedStyle.position === "fixed") || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode)) result = result.filter((ancestor) => ancestor !== currentNode);
8584
8614
  else currentContainingBlockComputedStyle = computedStyle;
8585
8615
  currentNode = getParentNode(currentNode);
8586
8616
  }
@@ -8590,20 +8620,23 @@ function getClippingElementAncestors(element, cache) {
8590
8620
  function getClippingRect(_ref) {
8591
8621
  let { element, boundary, rootBoundary, strategy } = _ref;
8592
8622
  const clippingAncestors = [...boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary), rootBoundary];
8593
- const firstClippingAncestor = clippingAncestors[0];
8594
- const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
8595
- const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
8596
- accRect.top = max(rect.top, accRect.top);
8597
- accRect.right = min(rect.right, accRect.right);
8598
- accRect.bottom = min(rect.bottom, accRect.bottom);
8599
- accRect.left = max(rect.left, accRect.left);
8600
- return accRect;
8601
- }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
8623
+ const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);
8624
+ let top = firstRect.top;
8625
+ let right = firstRect.right;
8626
+ let bottom = firstRect.bottom;
8627
+ let left = firstRect.left;
8628
+ for (let i = 1; i < clippingAncestors.length; i++) {
8629
+ const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);
8630
+ top = max(rect.top, top);
8631
+ right = min(rect.right, right);
8632
+ bottom = min(rect.bottom, bottom);
8633
+ left = max(rect.left, left);
8634
+ }
8602
8635
  return {
8603
- width: clippingRect.right - clippingRect.left,
8604
- height: clippingRect.bottom - clippingRect.top,
8605
- x: clippingRect.left,
8606
- y: clippingRect.top
8636
+ width: right - left,
8637
+ height: bottom - top,
8638
+ x: left,
8639
+ y: top
8607
8640
  };
8608
8641
  }
8609
8642
  function getDimensions(element) {
@@ -8765,7 +8798,7 @@ function autoUpdate(reference, floating, update, options) {
8765
8798
  if (options === void 0) options = {};
8766
8799
  const { ancestorScroll = true, ancestorResize = true, elementResize = typeof ResizeObserver === "function", layoutShift = typeof IntersectionObserver === "function", animationFrame = false } = options;
8767
8800
  const referenceEl = unwrapElement(reference);
8768
- const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : [];
8801
+ const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : [];
8769
8802
  ancestors.forEach((ancestor) => {
8770
8803
  ancestorScroll && ancestor.addEventListener("scroll", update, { passive: true });
8771
8804
  ancestorResize && ancestor.addEventListener("resize", update);
@@ -8776,7 +8809,7 @@ function autoUpdate(reference, floating, update, options) {
8776
8809
  if (elementResize) {
8777
8810
  resizeObserver = new ResizeObserver((_ref) => {
8778
8811
  let [firstEntry] = _ref;
8779
- if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
8812
+ if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {
8780
8813
  resizeObserver.unobserve(floating);
8781
8814
  cancelAnimationFrame(reobserveFrame);
8782
8815
  reobserveFrame = requestAnimationFrame(() => {
@@ -8787,7 +8820,7 @@ function autoUpdate(reference, floating, update, options) {
8787
8820
  update();
8788
8821
  });
8789
8822
  if (referenceEl && !animationFrame) resizeObserver.observe(referenceEl);
8790
- resizeObserver.observe(floating);
8823
+ if (floating) resizeObserver.observe(floating);
8791
8824
  }
8792
8825
  let frameId;
8793
8826
  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
@@ -8864,7 +8897,6 @@ const computePosition = (reference, floating, options) => {
8864
8897
  platform: platformWithCache
8865
8898
  });
8866
8899
  };
8867
-
8868
8900
  //#endregion
8869
8901
  //#region node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs
8870
8902
  var index = typeof document !== "undefined" ? useLayoutEffect : function noop() {};
@@ -9094,50 +9126,69 @@ const arrow$1 = (options) => {
9094
9126
  * object may be passed.
9095
9127
  * @see https://floating-ui.com/docs/offset
9096
9128
  */
9097
- const offset = (options, deps) => ({
9098
- ...offset$1(options),
9099
- options: [options, deps]
9100
- });
9129
+ const offset = (options, deps) => {
9130
+ const result = offset$1(options);
9131
+ return {
9132
+ name: result.name,
9133
+ fn: result.fn,
9134
+ options: [options, deps]
9135
+ };
9136
+ };
9101
9137
  /**
9102
9138
  * Optimizes the visibility of the floating element by shifting it in order to
9103
9139
  * keep it in view when it will overflow the clipping boundary.
9104
9140
  * @see https://floating-ui.com/docs/shift
9105
9141
  */
9106
- const shift = (options, deps) => ({
9107
- ...shift$1(options),
9108
- options: [options, deps]
9109
- });
9142
+ const shift = (options, deps) => {
9143
+ const result = shift$1(options);
9144
+ return {
9145
+ name: result.name,
9146
+ fn: result.fn,
9147
+ options: [options, deps]
9148
+ };
9149
+ };
9110
9150
  /**
9111
9151
  * Optimizes the visibility of the floating element by flipping the `placement`
9112
9152
  * in order to keep it in view when the preferred placement(s) will overflow the
9113
9153
  * clipping boundary. Alternative to `autoPlacement`.
9114
9154
  * @see https://floating-ui.com/docs/flip
9115
9155
  */
9116
- const flip = (options, deps) => ({
9117
- ...flip$1(options),
9118
- options: [options, deps]
9119
- });
9156
+ const flip = (options, deps) => {
9157
+ const result = flip$1(options);
9158
+ return {
9159
+ name: result.name,
9160
+ fn: result.fn,
9161
+ options: [options, deps]
9162
+ };
9163
+ };
9120
9164
  /**
9121
9165
  * Provides data that allows you to change the size of the floating element —
9122
9166
  * for instance, prevent it from overflowing the clipping boundary or match the
9123
9167
  * width of the reference element.
9124
9168
  * @see https://floating-ui.com/docs/size
9125
9169
  */
9126
- const size = (options, deps) => ({
9127
- ...size$1(options),
9128
- options: [options, deps]
9129
- });
9170
+ const size = (options, deps) => {
9171
+ const result = size$1(options);
9172
+ return {
9173
+ name: result.name,
9174
+ fn: result.fn,
9175
+ options: [options, deps]
9176
+ };
9177
+ };
9130
9178
  /**
9131
9179
  * Provides data to position an inner element of the floating element so that it
9132
9180
  * appears centered to the reference element.
9133
9181
  * This wraps the core `arrow` middleware to allow React refs as the element.
9134
9182
  * @see https://floating-ui.com/docs/arrow
9135
9183
  */
9136
- const arrow = (options, deps) => ({
9137
- ...arrow$1(options),
9138
- options: [options, deps]
9139
- });
9140
-
9184
+ const arrow = (options, deps) => {
9185
+ const result = arrow$1(options);
9186
+ return {
9187
+ name: result.name,
9188
+ fn: result.fn,
9189
+ options: [options, deps]
9190
+ };
9191
+ };
9141
9192
  //#endregion
9142
9193
  //#region src/components/tooltip.tsx
9143
9194
  const defaultTooltipContext = {
@@ -9278,6 +9329,8 @@ function TooltipPanel({ as, children, className, style, onMouseEnter, onMouseLea
9278
9329
  };
9279
9330
  return /* @__PURE__ */ jsxs(TooltipPanelElement, {
9280
9331
  ...props,
9332
+ "aria-live": isPositioned ? "assertive" : "off",
9333
+ className: twMerge("absolute top-0 left-0 z-50 w-max rounded-md bg-neutral-50 px-2 py-1 text-sm text-neutral-950 opacity-0 shadow-lg outline-1 outline-neutral-400 data-portal:fixed data-ready:animate-fade-in dark:bg-neutral-800 dark:text-neutral-50 dark:shadow-none dark:-outline-offset-1 dark:outline-neutral-600", className),
9281
9334
  ref: (node) => {
9282
9335
  if (node && typeof node.querySelector === "function") {
9283
9336
  refs?.setFloating(node);
@@ -9287,7 +9340,6 @@ function TooltipPanel({ as, children, className, style, onMouseEnter, onMouseLea
9287
9340
  }
9288
9341
  }
9289
9342
  },
9290
- className: twMerge("data-ready:animate-fade-in absolute top-0 left-0 z-50 w-max rounded-md bg-neutral-50 px-2 py-1 text-sm text-neutral-950 opacity-0 shadow-lg outline-1 outline-neutral-400 data-portal:fixed dark:bg-neutral-800 dark:text-neutral-50 dark:shadow-none dark:-outline-offset-1 dark:outline-neutral-600", className),
9291
9343
  style: {
9292
9344
  ...style,
9293
9345
  ...floatingStyles,
@@ -9298,7 +9350,7 @@ function TooltipPanel({ as, children, className, style, onMouseEnter, onMouseLea
9298
9350
  onMouseLeave: handleMouseLeave,
9299
9351
  onTouchStart: handleTouchStart,
9300
9352
  role: "tooltip",
9301
- ...isPositioned ? { "data-ready": true } : {},
9353
+ ...isPositioned ? { "data-ready": "" } : {},
9302
9354
  children: [children, contextArrow && /* @__PURE__ */ jsx(ArrowSvg, {
9303
9355
  className: twMerge("absolute", arrowLocationClasses, contextArrowClassName),
9304
9356
  style: arrowStyles,
@@ -9432,7 +9484,6 @@ function ArrowSvg({ className, ...props }) {
9432
9484
  ]
9433
9485
  });
9434
9486
  }
9435
-
9436
9487
  //#endregion
9437
9488
  //#region src/graphics/social-media/facebook-logo.tsx
9438
9489
  /**
@@ -9507,7 +9558,6 @@ function FacebookLogo({ className, cutout = false, targets, variant = "circle",
9507
9558
  ]
9508
9559
  });
9509
9560
  }
9510
-
9511
9561
  //#endregion
9512
9562
  //#region src/graphics/social-media/google-logo.tsx
9513
9563
  /**
@@ -9613,7 +9663,6 @@ function GoogleLogo({ gradient = true, ...props }) {
9613
9663
  ] }) : /* @__PURE__ */ jsx("path", { d: "M992.945,417.01L511.964,417.01L511.964,613.859L788.338,613.859C783.897,641.717 773.921,669.122 759.31,694.112C742.575,722.744 721.881,744.542 700.67,761.138C637.14,810.865 563.07,821.031 511.628,821.031C381.685,821.031 270.653,735.251 227.672,618.689C225.937,614.461 224.786,610.09 223.383,605.772C213.887,576.108 208.697,544.687 208.697,512.032C208.697,478.046 214.317,445.514 224.561,414.789C264.982,293.606 378.511,203.097 511.721,203.097C538.518,203.097 564.319,206.353 588.786,212.851C644.708,227.698 684.261,256.943 708.499,280.075L854.747,133.794C765.786,50.482 649.815,0 511.478,0C400.888,-0.004 298.788,35.19 215.121,94.667C147.265,142.902 91.616,207.482 54.06,282.487C19.128,352.029 0,429.093 0,511.953C0,594.821 19.158,672.685 54.09,741.588L54.09,742.052C90.988,815.198 144.943,878.178 210.526,926.192C267.816,968.135 370.54,1024 511.478,1024C592.529,1024 664.363,1009.08 727.713,981.104C773.413,960.926 813.904,934.608 850.563,900.787C899,856.093 936.938,800.815 962.829,737.214C988.724,673.612 1002.57,601.692 1002.57,523.719C1002.57,487.404 999.002,450.524 992.945,417.01Z" })
9614
9664
  });
9615
9665
  }
9616
-
9617
9666
  //#endregion
9618
9667
  //#region src/graphics/social-media/instagram-logo.tsx
9619
9668
  /**
@@ -9734,7 +9783,6 @@ function InstagramLogo({ gradient = true, ...props }) {
9734
9783
  ] })
9735
9784
  });
9736
9785
  }
9737
-
9738
9786
  //#endregion
9739
9787
  //#region src/graphics/social-media/linkedin-logo.tsx
9740
9788
  /**
@@ -9767,7 +9815,6 @@ function LinkedInLogo({ className, cutout, targets, ...props }) {
9767
9815
  })]
9768
9816
  });
9769
9817
  }
9770
-
9771
9818
  //#endregion
9772
9819
  //#region src/graphics/social-media/tiktok-logo.tsx
9773
9820
  /**
@@ -9806,7 +9853,6 @@ function TikTokLogo({ className, targets, variant = "multicolor", ...props }) {
9806
9853
  ] }), variant === "solid" && /* @__PURE__ */ jsx("path", { d: "M667.348,44.69C680.075,111.724 720.791,169.313 777.229,205.249L777.286,205.307C816.62,230.358 863.44,244.986 913.716,244.986L913.716,420.98C820.306,420.98 733.749,391.782 663.086,342.197L663.086,700.001C663.086,878.644 514.39,1024 331.543,1024C260.881,1024 195.401,1002.23 141.555,965.316L141.44,965.201C55.977,906.517 0,809.536 0,699.944C0,521.301 148.754,375.887 331.543,375.887C346.747,375.887 361.605,377.154 376.233,379.054L376.233,558.849C362.066,554.53 347.15,551.996 331.543,551.996C248.038,551.996 180.14,618.397 180.14,700.001C180.14,756.784 213.139,806.196 261.284,830.96C282.304,841.787 306.204,847.949 331.543,847.949C413.09,847.949 479.663,784.543 482.658,705.53L482.946,0L663.086,0C663.086,15.261 664.584,30.177 667.348,44.69Z" })]
9807
9854
  });
9808
9855
  }
9809
-
9810
9856
  //#endregion
9811
9857
  //#region src/graphics/social-media/x-logo.tsx
9812
9858
  /**
@@ -9819,7 +9865,6 @@ function XLogo(props) {
9819
9865
  children: /* @__PURE__ */ jsx("path", { d: "M806.464,0L963.472,0L620.432,392.08L1024,925.6L708.016,925.6L460.528,602.016L177.328,925.6L20.224,925.6L387.136,506.24L0,0L324,0L547.712,295.76L806.464,0ZM751.344,831.616L838.352,831.616L276.736,89.04L183.36,89.04L751.344,831.616Z" })
9820
9866
  });
9821
9867
  }
9822
-
9823
9868
  //#endregion
9824
9869
  //#region src/graphics/social-media/youtube-logo.tsx
9825
9870
  /**
@@ -9853,6 +9898,5 @@ function YouTubeLogo({ className, cutout = false, targets, ...props }) {
9853
9898
  })] })
9854
9899
  });
9855
9900
  }
9856
-
9857
9901
  //#endregion
9858
- export { Anchor, Button, Checkbox, Details, DetailsBody, DetailsSummary, DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSection, DropDownSeparator, FacebookLogo, Fieldset, Form, FormStatusProvider, Ghost, GoogleLogo, Heading, HumanVerification, IFrame, Input, InstagramLogo, Link, LinkedInLogo, Modal, ModalClose, ModalDialog, ModalTitle, ModalTrigger, Select, SelectOption, SelectSectionTitle, SubmitButton, Textarea, TikTokLogo, Time, Tooltip, TooltipPanel, TooltipTrigger, XLogo, YouTubeLogo, addClass, createFastContext, currentMonthName, currentWeekdayName, daysInMonth, easeOutExpo, emailRegex, extendMadoTailwindMerge, firstOfMonth, formatPhoneNumber, generateHumanValidationToken, getDate, getHours, getHoursIn12, getLinkClasses, getLocalTime, getMeridianFromHour, getMilliseconds, getMinutes, getMonth, getMonthIndexFromName, getMonthName, getNextMonth, getPreviousMonth, getSeconds, getTimezone, getUserReadableDate, getUserReadableDateFromTimestampz, getWeekdayName, getYearsInRange, hasClass, isEmail, isPhoneNumber, monthNamesList, removeClass, splitCamelCase, telRegex, toCamelCase, toFullDateString, toLowerCase, toTitleCase, toggleClass, twMerge, useFormStatus, usePointerMovement, validateHuman, weekdayNamesList };
9902
+ export { Anchor, Button, Checkbox, Details, DetailsBody, DetailsSummary, DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSection, DropDownSeparator, FacebookLogo, Fieldset, Form, FormStatusProvider, Ghost, GoogleLogo, Heading, HumanVerification, IFrame, Input, InstagramLogo, Link, LinkedInLogo, Modal, ModalClose, ModalDialog, ModalTitle, ModalTrigger, Select, SelectOption, SelectSectionTitle, SubmitButton, Textarea, TikTokLogo, Time, Tooltip, TooltipPanel, TooltipTrigger, XLogo, YouTubeLogo, addClass, createFastContext, currentMonthName, currentWeekdayName, daysInMonth, easeOutExpo, emailRegex, extendMadoTailwindMerge, firstOfMonth, formatPhoneNumber, generateHumanValidationToken, getDate, getHours, getHoursIn12, getLinkClasses, getLocalTime, getMeridianFromHour, getMilliseconds, getMinutes, getMonth, getMonthIndexFromName, getMonthName, getNextMonth, getPreviousMonth, getSeconds, getTimezone, getUserReadableDate, getUserReadableDateFromTimestampz, getWeekdayName, getYearsInRange, hasClass, isEmail, isPhoneNumber, monthNamesList, removeClass, splitCamelCase, telRegex, toCamelCase, toFullDateString, toLowerCase, toTitleCase, toggleClass, twMerge, useFormStatus, useMobileDevice, usePointerMovement, validateHuman, weekdayNamesList };