@datatechsolutions/ui 2.7.137 → 2.7.139

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.
@@ -5,7 +5,7 @@ import { Button as Button$1, Transition, Dialog, TransitionChild, DialogPanel, D
5
5
  import clsx, { clsx as clsx$1 } from 'clsx';
6
6
  import * as React11 from 'react';
7
7
  import React11__default, { forwardRef, useId, useState, useCallback, createContext, memo, useRef, useEffect, Fragment as Fragment$1, useMemo, useContext, Suspense } from 'react';
8
- import { AnimatePresence, motion, useMotionValue, useTransform, animate, useInView, useSpring } from 'framer-motion';
8
+ import { AnimatePresence, motion, useReducedMotion, useMotionValue, useTransform, animate, useInView, useSpring } from 'framer-motion';
9
9
  import NextLink from 'next/link';
10
10
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
11
  import { useTranslations, useLocale } from 'next-intl';
@@ -737,7 +737,8 @@ function IconButton({
737
737
  isIosColor && finalColor === "ios-red" && "text-[#FF3B30] dark:text-[#FF453A]",
738
738
  isIosColor && finalColor === "ios-green" && "text-[#34C759] dark:text-[#30D158]",
739
739
  isIosColor && finalColor === "ios-orange" && "text-[#FF9500] dark:text-[#FF9F0A]",
740
- isIosColor && finalColor === "ios-purple" && "text-[#AF52DE] dark:text-[#BF5AF2]"
740
+ isIosColor && finalColor === "ios-purple" && "text-[#AF52DE] dark:text-[#BF5AF2]",
741
+ !isIosColor && "text-slate-700 dark:text-slate-300"
741
742
  ),
742
743
  outline: clsx(
743
744
  "bg-transparent border",
@@ -925,6 +926,7 @@ var Input = forwardRef(
925
926
  const helperId = `${inputId}-helper`;
926
927
  const [isFocused, setIsFocused] = useState(false);
927
928
  const [showPassword, setShowPassword] = useState(false);
929
+ const prefersReducedMotion2 = useReducedMotion();
928
930
  const hasValue = value !== void 0 && value !== "";
929
931
  const characterCount = typeof value === "string" ? value.length : 0;
930
932
  const isOverLimit = maxCharacters ? characterCount > maxCharacters : false;
@@ -959,14 +961,14 @@ var Input = forwardRef(
959
961
  liquid-surface h-12 w-full rounded-xl border-0
960
962
  px-4 py-3 text-base
961
963
  text-slate-900 dark:text-white
962
- placeholder:text-slate-400 dark:placeholder:text-slate-500
964
+ placeholder:text-slate-500 dark:placeholder:text-slate-500
963
965
  transition-all duration-200
964
966
  disabled:cursor-not-allowed disabled:opacity-50
965
967
  ` : `
966
968
  liquid-surface h-11 w-full rounded-xl
967
969
  px-3.5 py-2.5 text-base
968
970
  text-slate-900 dark:text-white
969
- placeholder:text-slate-400 dark:placeholder:text-slate-500
971
+ placeholder:text-slate-500 dark:placeholder:text-slate-500
970
972
  transition-all duration-200
971
973
  disabled:cursor-not-allowed disabled:opacity-50
972
974
  `;
@@ -994,7 +996,7 @@ var Input = forwardRef(
994
996
  exit: { opacity: 0, scale: 0.8 },
995
997
  transition: { duration: 0.15 },
996
998
  onClick: togglePassword,
997
- className: "p-1 rounded-full text-slate-400 hover:text-slate-600 dark:hover:text-slate-300 hover:bg-white/40 dark:hover:bg-white/[0.08] transition-colors",
999
+ className: "p-2 min-h-[44px] min-w-[44px] flex items-center justify-center rounded-full text-slate-400 hover:text-slate-600 dark:hover:text-slate-300 hover:bg-white/40 dark:hover:bg-white/[0.08] transition-colors",
998
1000
  "aria-label": showPassword ? t("hidePassword") : t("showPassword"),
999
1001
  children: showPassword ? /* @__PURE__ */ jsx(EyeSlashIcon, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx(EyeIcon, { className: "h-5 w-5" })
1000
1002
  }
@@ -1008,7 +1010,8 @@ var Input = forwardRef(
1008
1010
  exit: { opacity: 0, scale: 0.8 },
1009
1011
  transition: { duration: 0.15 },
1010
1012
  onClick: handleClear,
1011
- className: "p-1 rounded-full text-slate-400 hover:text-slate-600 dark:hover:text-slate-300 hover:bg-white/40 dark:hover:bg-white/[0.08] transition-colors",
1013
+ className: "p-2 min-h-[44px] min-w-[44px] flex items-center justify-center rounded-full text-slate-400 hover:text-slate-600 dark:hover:text-slate-300 hover:bg-white/40 dark:hover:bg-white/[0.08] transition-colors",
1014
+ "aria-label": "Clear input",
1012
1015
  children: /* @__PURE__ */ jsx(XMarkIcon, { className: "h-5 w-5" })
1013
1016
  }
1014
1017
  ) })
@@ -1036,7 +1039,7 @@ var Input = forwardRef(
1036
1039
  children: successMessage
1037
1040
  }
1038
1041
  ),
1039
- !error && !successMessage && helperText && /* @__PURE__ */ jsx("p", { id: helperId, className: "text-sm text-slate-500 dark:text-slate-400", children: helperText })
1042
+ !error && !successMessage && helperText && /* @__PURE__ */ jsx("p", { id: helperId, className: "text-sm text-slate-600 dark:text-slate-400", children: helperText })
1040
1043
  ] }),
1041
1044
  showCharacterCount && /* @__PURE__ */ jsxs(
1042
1045
  "span",
@@ -1079,16 +1082,33 @@ var Input = forwardRef(
1079
1082
  ...props
1080
1083
  }
1081
1084
  ),
1082
- /* @__PURE__ */ jsx(
1085
+ prefersReducedMotion2 ? /* @__PURE__ */ jsx(
1086
+ "label",
1087
+ {
1088
+ htmlFor: inputId,
1089
+ className: `
1090
+ absolute left-3.5 pointer-events-none
1091
+ text-slate-500 dark:text-slate-400
1092
+ transition-all duration-200
1093
+ ${icon ? "left-11" : ""}
1094
+ `,
1095
+ style: {
1096
+ top: hasValue || isFocused ? "0.5rem" : "50%",
1097
+ transform: hasValue || isFocused ? "none" : "translateY(-50%)",
1098
+ fontSize: hasValue || isFocused ? "0.75rem" : "1rem"
1099
+ },
1100
+ children: label
1101
+ }
1102
+ ) : /* @__PURE__ */ jsx(
1083
1103
  motion.label,
1084
1104
  {
1085
1105
  htmlFor: inputId,
1086
1106
  className: `
1087
- absolute left-3.5 pointer-events-none
1088
- text-slate-500 dark:text-slate-400
1089
- transition-all duration-200
1090
- ${icon ? "left-11" : ""}
1091
- `,
1107
+ absolute left-3.5 pointer-events-none
1108
+ text-slate-500 dark:text-slate-400
1109
+ transition-all duration-200
1110
+ ${icon ? "left-11" : ""}
1111
+ `,
1092
1112
  initial: false,
1093
1113
  animate: {
1094
1114
  top: hasValue || isFocused ? "0.5rem" : "50%",
@@ -1985,24 +2005,46 @@ function HeroSection({
1985
2005
  labelExtra,
1986
2006
  children
1987
2007
  }) {
1988
- return /* @__PURE__ */ jsxs("div", { className: "liquid-surface overflow-hidden rounded-2xl", children: [
1989
- gradient && /* @__PURE__ */ jsx("div", { className: `h-1.5 w-full bg-gradient-to-r ${gradient}` }),
1990
- /* @__PURE__ */ jsxs("div", { className: "p-5 sm:p-8", children: [
1991
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-slate-600 dark:text-white/70", children: [
1992
- icon,
1993
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: label }),
1994
- labelExtra
1995
- ] }),
1996
- /* @__PURE__ */ jsxs("div", { className: "mt-2 flex flex-wrap items-center justify-between gap-4", children: [
1997
- /* @__PURE__ */ jsx("h1", { className: "text-2xl font-bold tracking-tight text-slate-900 dark:text-white sm:text-4xl", children: title }),
1998
- actions && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: actions })
1999
- ] }),
2000
- /* @__PURE__ */ jsx("p", { className: "mt-2 max-w-xl text-sm text-slate-500 dark:text-white/60 sm:mt-3 sm:text-lg", children: subtitle }),
2001
- toolbar && /* @__PURE__ */ jsx("div", { className: "mt-4", children: toolbar }),
2002
- badges && /* @__PURE__ */ jsx("div", { className: "mt-6 flex flex-wrap items-center gap-4", children: badges }),
2003
- children
2004
- ] })
2005
- ] });
2008
+ return /* @__PURE__ */ jsxs(
2009
+ "div",
2010
+ {
2011
+ role: "banner",
2012
+ "data-testid": "hero-section",
2013
+ className: "liquid-surface overflow-hidden rounded-2xl",
2014
+ children: [
2015
+ gradient && /* @__PURE__ */ jsx("div", { className: `h-1.5 w-full bg-gradient-to-r ${gradient}` }),
2016
+ /* @__PURE__ */ jsxs("div", { className: "p-5 sm:p-8", children: [
2017
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-slate-600 dark:text-white/70", children: [
2018
+ icon,
2019
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: label }),
2020
+ labelExtra
2021
+ ] }),
2022
+ /* @__PURE__ */ jsxs("div", { className: "mt-2 flex flex-wrap items-center justify-between gap-4", children: [
2023
+ /* @__PURE__ */ jsx(
2024
+ "h1",
2025
+ {
2026
+ "data-testid": "hero-title",
2027
+ className: "text-2xl font-bold tracking-tight text-slate-900 dark:text-white sm:text-4xl",
2028
+ children: title
2029
+ }
2030
+ ),
2031
+ actions && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: actions })
2032
+ ] }),
2033
+ /* @__PURE__ */ jsx(
2034
+ "p",
2035
+ {
2036
+ "data-testid": "hero-subtitle",
2037
+ className: "mt-2 max-w-xl text-sm text-slate-500 dark:text-white/60 sm:mt-3 sm:text-lg",
2038
+ children: subtitle
2039
+ }
2040
+ ),
2041
+ toolbar && /* @__PURE__ */ jsx("div", { "data-testid": "hero-toolbar", className: "mt-4", children: toolbar }),
2042
+ badges && /* @__PURE__ */ jsx("div", { className: "mt-6 flex flex-wrap items-center gap-4", children: badges }),
2043
+ children
2044
+ ] })
2045
+ ]
2046
+ }
2047
+ );
2006
2048
  }
2007
2049
  var DEFAULT_STYLE_CONFIG = {
2008
2050
  default: {
@@ -2275,6 +2317,9 @@ function StatCard({
2275
2317
  return /* @__PURE__ */ jsxs(
2276
2318
  "div",
2277
2319
  {
2320
+ role: "status",
2321
+ "aria-label": label,
2322
+ "data-testid": label ? `stat-card-${label.toLowerCase().replace(/\s+/g, "-")}` : "stat-card",
2278
2323
  onClick,
2279
2324
  className: `group relative overflow-hidden rounded-xl p-5 transition-all duration-200 ${isClickable ? "cursor-pointer" : ""} ${isActive ? `bg-gradient-to-br ${colorConfig.activeGradient} ring-2 ring-offset-2 ${colorConfig.activeRing} shadow-xl` : `liquid-surface hover:shadow-md ${isFiltered ? "ring-indigo-300 dark:ring-indigo-500/50" : isUrgent ? "ring-amber-300 dark:ring-amber-500/50" : ""}`} ${className}`,
2280
2325
  children: [
@@ -2306,6 +2351,7 @@ function StatCard({
2306
2351
  /* @__PURE__ */ jsx(
2307
2352
  "p",
2308
2353
  {
2354
+ "data-testid": "stat-card-value",
2309
2355
  className: `mt-4 text-3xl font-bold ${isActive ? "text-white" : isUrgent ? colorConfig.urgentValueColor || colorConfig.valueColor : colorConfig.valueColor}`,
2310
2356
  children: value
2311
2357
  }
@@ -2313,6 +2359,7 @@ function StatCard({
2313
2359
  /* @__PURE__ */ jsx(
2314
2360
  "p",
2315
2361
  {
2362
+ "data-testid": "stat-card-label",
2316
2363
  className: `mt-1 text-sm ${isActive ? "text-white/75" : "text-slate-500 dark:text-slate-400"}`,
2317
2364
  children: label
2318
2365
  }
@@ -2616,7 +2663,7 @@ function CircleSpinner({ size, color, className, ariaLabel }) {
2616
2663
  "div",
2617
2664
  {
2618
2665
  className: clsx$1(
2619
- "rounded-full animate-spin",
2666
+ "rounded-full animate-spin motion-reduce:animate-none",
2620
2667
  config.size,
2621
2668
  config.border,
2622
2669
  colors3.track,
@@ -2631,9 +2678,10 @@ function CircleSpinner({ size, color, className, ariaLabel }) {
2631
2678
  function DotsSpinner({ size, color, className, ariaLabel }) {
2632
2679
  const config = sizeConfig[size];
2633
2680
  const colors3 = colorClasses2[color];
2681
+ const prefersReducedMotion2 = useReducedMotion();
2634
2682
  const dotVariants = {
2635
2683
  initial: { scale: 0.8, opacity: 0.4 },
2636
- animate: { scale: 1, opacity: 1 }
2684
+ animate: prefersReducedMotion2 ? { scale: 1, opacity: 1 } : { scale: 1, opacity: 1 }
2637
2685
  };
2638
2686
  return /* @__PURE__ */ jsx("div", { className: clsx$1("flex items-center gap-1", className), role: "status", "aria-label": ariaLabel, children: [0, 1, 2].map((index) => /* @__PURE__ */ jsx(
2639
2687
  motion.div,
@@ -2646,7 +2694,7 @@ function DotsSpinner({ size, color, className, ariaLabel }) {
2646
2694
  variants: dotVariants,
2647
2695
  initial: "initial",
2648
2696
  animate: "animate",
2649
- transition: {
2697
+ transition: prefersReducedMotion2 ? { duration: 0 } : {
2650
2698
  duration: 0.5,
2651
2699
  repeat: Infinity,
2652
2700
  repeatType: "reverse",
@@ -2659,16 +2707,17 @@ function DotsSpinner({ size, color, className, ariaLabel }) {
2659
2707
  function PulseSpinner({ size, color, className, ariaLabel }) {
2660
2708
  const config = sizeConfig[size];
2661
2709
  const colors3 = colorClasses2[color];
2710
+ const prefersReducedMotion2 = useReducedMotion();
2662
2711
  return /* @__PURE__ */ jsxs("div", { className: clsx$1("relative", config.size, className), role: "status", "aria-label": ariaLabel, children: [
2663
2712
  /* @__PURE__ */ jsx(
2664
2713
  motion.div,
2665
2714
  {
2666
2715
  className: clsx$1("absolute inset-0 rounded-full", colors3.dot),
2667
- animate: {
2716
+ animate: prefersReducedMotion2 ? {} : {
2668
2717
  scale: [1, 1.5, 1],
2669
2718
  opacity: [0.7, 0, 0.7]
2670
2719
  },
2671
- transition: {
2720
+ transition: prefersReducedMotion2 ? { duration: 0 } : {
2672
2721
  duration: 1.5,
2673
2722
  repeat: Infinity,
2674
2723
  ease: "easeInOut"
@@ -2703,7 +2752,8 @@ function Spinner({
2703
2752
  {
2704
2753
  size,
2705
2754
  color,
2706
- className
2755
+ className,
2756
+ ariaLabel
2707
2757
  }
2708
2758
  );
2709
2759
  }
@@ -3008,10 +3058,42 @@ function SegmentedControl({
3008
3058
  triggerHaptic("light");
3009
3059
  onChange(segmentValue);
3010
3060
  };
3061
+ const handleKeyDown = useCallback(
3062
+ (event) => {
3063
+ if (disabled) return;
3064
+ const currentIndex = normalizedSegments.findIndex((seg) => seg.value === value);
3065
+ let nextIndex = -1;
3066
+ if (event.key === "ArrowRight" || event.key === "ArrowDown") {
3067
+ event.preventDefault();
3068
+ nextIndex = (currentIndex + 1) % normalizedSegments.length;
3069
+ } else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
3070
+ event.preventDefault();
3071
+ nextIndex = (currentIndex - 1 + normalizedSegments.length) % normalizedSegments.length;
3072
+ } else if (event.key === "Home") {
3073
+ event.preventDefault();
3074
+ nextIndex = 0;
3075
+ } else if (event.key === "End") {
3076
+ event.preventDefault();
3077
+ nextIndex = normalizedSegments.length - 1;
3078
+ }
3079
+ if (nextIndex >= 0) {
3080
+ const nextSegment = normalizedSegments[nextIndex];
3081
+ onChange(nextSegment.value);
3082
+ triggerHaptic("light");
3083
+ const buttons = containerRef.current?.querySelectorAll("button");
3084
+ buttons?.[nextIndex]?.focus();
3085
+ }
3086
+ },
3087
+ [disabled, normalizedSegments, value, onChange]
3088
+ );
3011
3089
  return /* @__PURE__ */ jsxs(
3012
3090
  "div",
3013
3091
  {
3014
3092
  ref: containerRef,
3093
+ role: "tablist",
3094
+ "aria-live": "polite",
3095
+ "data-testid": "segmented-control",
3096
+ onKeyDown: handleKeyDown,
3015
3097
  className: `
3016
3098
  relative inline-flex items-center rounded-xl
3017
3099
  bg-white/40 dark:bg-white/[0.08]
@@ -3038,6 +3120,11 @@ function SegmentedControl({
3038
3120
  "button",
3039
3121
  {
3040
3122
  type: "button",
3123
+ role: "tab",
3124
+ "aria-selected": isSelected,
3125
+ "aria-label": segment.label,
3126
+ tabIndex: isSelected ? 0 : -1,
3127
+ "data-testid": `tab-${segment.value}`,
3041
3128
  onClick: () => handleSelect(segment.value),
3042
3129
  className: `
3043
3130
  relative z-10 flex items-center justify-center gap-1.5
@@ -5384,11 +5471,14 @@ function GlassModal({
5384
5471
  children,
5385
5472
  panelClassName = "rounded-[2rem]",
5386
5473
  contentClassName = "fixed inset-0 flex items-center justify-center overflow-y-auto p-3 sm:p-5 lg:p-6",
5387
- zIndex = "z-50"
5388
- }) {
5389
- return /* @__PURE__ */ jsxs(Dialog, { open, onClose, className: `relative ${zIndex}`, children: [
5390
- /* @__PURE__ */ jsx(DialogBackdrop, { className: "fixed inset-0 bg-slate-900/40 backdrop-blur-md dark:bg-black/50" }),
5391
- /* @__PURE__ */ jsx("div", { className: contentClassName, children: /* @__PURE__ */ jsx(DialogPanel, { className: panelClassName, children }) })
5474
+ zIndex = "z-50",
5475
+ overlayTestId,
5476
+ panelTestId,
5477
+ ariaLabelledBy
5478
+ }) {
5479
+ return /* @__PURE__ */ jsxs(Dialog, { open, onClose, className: `relative ${zIndex}`, "aria-labelledby": ariaLabelledBy, children: [
5480
+ /* @__PURE__ */ jsx(DialogBackdrop, { className: "fixed inset-0 bg-slate-900/40 backdrop-blur-md dark:bg-black/50", "data-testid": overlayTestId }),
5481
+ /* @__PURE__ */ jsx("div", { className: contentClassName, children: /* @__PURE__ */ jsx(DialogPanel, { className: panelClassName, "data-testid": panelTestId, children }) })
5392
5482
  ] });
5393
5483
  }
5394
5484
  function Text({ className, ...props }) {
@@ -5891,7 +5981,8 @@ function GlassModalShell({
5891
5981
  type: "button",
5892
5982
  onClick: onClose,
5893
5983
  "aria-label": closeLabel,
5894
- className: "absolute right-4 top-4 inline-flex h-9 w-9 items-center justify-center rounded-xl text-slate-400 transition hover:bg-white/40 hover:text-slate-700 dark:hover:bg-white/[0.08] dark:hover:text-white",
5984
+ "data-testid": "modal-close",
5985
+ className: "absolute right-4 top-4 inline-flex h-9 w-9 items-center justify-center rounded-xl text-slate-400 transition hover:bg-white/40 hover:text-slate-700 dark:hover:bg-white/[0.08] dark:hover:text-white focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2",
5895
5986
  children: /* @__PURE__ */ jsx(XMarkIcon$1, { className: "h-5 w-5" })
5896
5987
  }
5897
5988
  ),
@@ -5901,14 +5992,14 @@ function GlassModalShell({
5901
5992
  ] }),
5902
5993
  /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3 pr-10", children: [
5903
5994
  /* @__PURE__ */ jsxs("div", { children: [
5904
- /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-slate-900 dark:text-white sm:text-2xl", children: title }),
5995
+ /* @__PURE__ */ jsx("h2", { id: "modal-title", "data-testid": "modal-title", className: "text-xl font-bold text-slate-900 dark:text-white sm:text-2xl", children: title }),
5905
5996
  subtitle && /* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-slate-500 dark:text-slate-400", children: subtitle })
5906
5997
  ] }),
5907
5998
  headerActions && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: headerActions })
5908
5999
  ] })
5909
6000
  ] }),
5910
6001
  /* @__PURE__ */ jsx("div", { className: "max-h-[72vh] overflow-y-auto px-5 pb-5 sm:px-8 sm:pb-8", children }),
5911
- footer && /* @__PURE__ */ jsx("div", { className: "border-t border-white/20 px-5 py-4 dark:border-white/10 sm:px-8", children: footer })
6002
+ footer && /* @__PURE__ */ jsx("div", { "data-testid": "modal-footer", className: "border-t border-white/20 px-5 py-4 dark:border-white/10 sm:px-8", children: footer })
5912
6003
  ] });
5913
6004
  return /* @__PURE__ */ jsx(
5914
6005
  GlassModal,
@@ -5917,7 +6008,10 @@ function GlassModalShell({
5917
6008
  onClose,
5918
6009
  contentClassName: "fixed inset-0 overflow-y-auto p-3 sm:p-6",
5919
6010
  panelClassName: `liquid-surface-strong w-full overflow-hidden rounded-2xl mx-auto mt-[4vh] sm:mt-[8vh] ${SIZE_CLASSES2[maxWidth]} ${className}`,
6011
+ ariaLabelledBy: "modal-title",
5920
6012
  zIndex,
6013
+ overlayTestId: "modal-overlay",
6014
+ panelTestId: "modal-panel",
5921
6015
  children: onSubmit ? /* @__PURE__ */ jsx("form", { onSubmit: handleSubmit, children: inner }) : inner
5922
6016
  }
5923
6017
  );
@@ -5948,6 +6042,7 @@ function GlassFormModal({
5948
6042
  disabled: isLoading,
5949
6043
  outline: true,
5950
6044
  className: "w-full sm:w-auto",
6045
+ "data-testid": "form-modal-cancel",
5951
6046
  children: cancelLabel
5952
6047
  }
5953
6048
  ),
@@ -5960,11 +6055,12 @@ function GlassFormModal({
5960
6055
  loadingText: submitLabel,
5961
6056
  color: "ios-glass-blue",
5962
6057
  className: "w-full sm:w-auto",
6058
+ "data-testid": "form-modal-submit",
5963
6059
  children: submitLabel
5964
6060
  }
5965
6061
  )
5966
6062
  ] }) }) : void 0;
5967
- return /* @__PURE__ */ jsx(
6063
+ return /* @__PURE__ */ jsx("div", { "data-testid": "form-modal", role: "dialog", "aria-modal": "true", "aria-label": title, children: /* @__PURE__ */ jsx(
5968
6064
  GlassModalShell,
5969
6065
  {
5970
6066
  open,
@@ -5978,7 +6074,7 @@ function GlassFormModal({
5978
6074
  footer: defaultFooter,
5979
6075
  children
5980
6076
  }
5981
- );
6077
+ ) });
5982
6078
  }
5983
6079
  function ContextMenu({
5984
6080
  position,
@@ -6641,13 +6737,13 @@ function FormInput({
6641
6737
  onValueChange,
6642
6738
  ...props
6643
6739
  }) {
6644
- return /* @__PURE__ */ jsxs("div", { children: [
6740
+ return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6645
6741
  label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6646
6742
  label,
6647
6743
  required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
6648
6744
  ] }) : null,
6649
6745
  /* @__PURE__ */ jsx("div", { className: wrapperClass(error), children: /* @__PURE__ */ jsxs("div", { className: `relative flex items-center ${sizeClasses3[inputSize]} ${className}`, children: [
6650
- icon ? /* @__PURE__ */ jsx("span", { className: "mr-2 text-gray-400 dark:text-gray-500", children: icon }) : null,
6746
+ icon ? /* @__PURE__ */ jsx("span", { className: "mr-2 text-gray-400 dark:text-gray-500", "aria-hidden": "true", children: icon }) : null,
6651
6747
  /* @__PURE__ */ jsx(
6652
6748
  "input",
6653
6749
  {
@@ -6670,7 +6766,7 @@ function FormTextarea({
6670
6766
  onValueChange,
6671
6767
  ...props
6672
6768
  }) {
6673
- return /* @__PURE__ */ jsxs("div", { children: [
6769
+ return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6674
6770
  label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6675
6771
  label,
6676
6772
  required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
@@ -6716,7 +6812,7 @@ function FormPriceInput({
6716
6812
  className = ""
6717
6813
  }) {
6718
6814
  const sizes3 = priceSizeConfig[priceSize ?? defaultPriceSize(inputSize)];
6719
- return /* @__PURE__ */ jsxs("div", { children: [
6815
+ return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6720
6816
  label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6721
6817
  label,
6722
6818
  required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
@@ -6759,7 +6855,7 @@ function FormSelect({
6759
6855
  options,
6760
6856
  ...props
6761
6857
  }) {
6762
- return /* @__PURE__ */ jsxs("div", { children: [
6858
+ return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6763
6859
  label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6764
6860
  label,
6765
6861
  required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
@@ -7307,7 +7403,7 @@ function SearchFilterToolbar({
7307
7403
  label
7308
7404
  };
7309
7405
  return /* @__PURE__ */ jsxs(Fragment, { children: [
7310
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
7406
+ /* @__PURE__ */ jsxs("div", { role: "search", "data-testid": "search-toolbar", className: "flex items-center gap-3", children: [
7311
7407
  /* @__PURE__ */ jsxs("div", { className: "liquid-surface flex flex-1 items-center gap-2 flex-wrap min-h-12 rounded-xl px-3.5 py-1.5 transition-colors duration-200 focus-within:ring-2 focus-within:ring-offset-2 focus-within:ring-blue-500 dark:focus-within:ring-offset-gray-900", children: [
7312
7408
  /* @__PURE__ */ jsx(MagnifyingGlassIcon, { className: "h-5 w-5 shrink-0 text-slate-400 dark:text-slate-500" }),
7313
7409
  filterPills,
@@ -7318,6 +7414,8 @@ function SearchFilterToolbar({
7318
7414
  value: query,
7319
7415
  onChange: (event) => onQueryChange(event.target.value),
7320
7416
  placeholder,
7417
+ "aria-label": label,
7418
+ "data-testid": "search-input",
7321
7419
  className: "min-w-[100px] flex-1 bg-transparent py-1 text-base text-gray-900 outline-none placeholder:text-slate-400 dark:text-white dark:placeholder:text-slate-500"
7322
7420
  }
7323
7421
  )
@@ -7406,6 +7504,12 @@ function SearchFilterToolbar({
7406
7504
  function isPlainTextTitle(title) {
7407
7505
  return typeof title === "string" || typeof title === "number";
7408
7506
  }
7507
+ function getTestIdFromTitle(title) {
7508
+ if (isPlainTextTitle(title)) {
7509
+ return `entity-card-${String(title).toLowerCase().replace(/\s+/g, "-")}`;
7510
+ }
7511
+ return "entity-card";
7512
+ }
7409
7513
  function StatusBadgeInternal({ status }) {
7410
7514
  const tCommon = useTranslations("common");
7411
7515
  if (typeof status !== "boolean") {
@@ -7432,9 +7536,24 @@ function EntityCard({
7432
7536
  dragProps
7433
7537
  }) {
7434
7538
  const isInteractive = Boolean(onClick);
7539
+ const plainTextTitle = isPlainTextTitle(title) ? String(title) : void 0;
7540
+ const handleKeyDown = useCallback(
7541
+ (event) => {
7542
+ if (onClick && (event.key === "Enter" || event.key === " ")) {
7543
+ event.preventDefault();
7544
+ onClick();
7545
+ }
7546
+ },
7547
+ [onClick]
7548
+ );
7435
7549
  return /* @__PURE__ */ jsxs(
7436
7550
  Card,
7437
7551
  {
7552
+ role: isInteractive ? "article" : "listitem",
7553
+ "aria-label": isInteractive ? plainTextTitle : void 0,
7554
+ "data-testid": getTestIdFromTitle(title),
7555
+ tabIndex: isInteractive ? 0 : void 0,
7556
+ onKeyDown: isInteractive ? handleKeyDown : void 0,
7438
7557
  className: `group overflow-hidden transition-all duration-200 hover:-translate-y-0.5 hover:shadow-md ${isInteractive ? "cursor-pointer" : ""} ${className}`,
7439
7558
  onPress: onClick,
7440
7559
  pressable: isInteractive,
@@ -7443,21 +7562,21 @@ function EntityCard({
7443
7562
  accentGradient && /* @__PURE__ */ jsx("div", { className: `h-1.5 w-full bg-gradient-to-r ${accentGradient}` }),
7444
7563
  /* @__PURE__ */ jsxs("div", { className: "p-4", children: [
7445
7564
  /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
7446
- /* @__PURE__ */ jsx(
7565
+ /* @__PURE__ */ jsx("div", { "data-testid": "entity-card-title", children: /* @__PURE__ */ jsx(
7447
7566
  ItemSummary,
7448
7567
  {
7449
7568
  icon,
7450
7569
  title,
7451
- subtitle,
7570
+ subtitle: subtitle ? /* @__PURE__ */ jsx("span", { "data-testid": "entity-card-subtitle", children: subtitle }) : void 0,
7452
7571
  iconContainerClassName: "shrink-0",
7453
7572
  titleClassName: isPlainTextTitle(title) ? "truncate font-semibold text-slate-900 dark:text-white" : "font-semibold text-slate-900 dark:text-white",
7454
7573
  subtitleClassName: "mt-0.5 text-xs text-slate-500 dark:text-slate-400"
7455
7574
  }
7456
- ),
7575
+ ) }),
7457
7576
  status !== void 0 && /* @__PURE__ */ jsx(StatusBadgeInternal, { status })
7458
7577
  ] }),
7459
7578
  children && /* @__PURE__ */ jsx("div", { className: "mt-3", children }),
7460
- footer && /* @__PURE__ */ jsx("div", { className: "mt-3 border-t border-white/30 pt-3 dark:border-white/10 flex gap-2 justify-end opacity-0 transition-opacity duration-200 group-hover:opacity-100", children: footer })
7579
+ footer && /* @__PURE__ */ jsx("div", { className: "mt-3 border-t border-white/30 pt-3 dark:border-white/10 flex gap-2 justify-end opacity-0 transition-opacity duration-200 group-hover:opacity-100 group-focus-within:opacity-100", children: footer })
7461
7580
  ] })
7462
7581
  ]
7463
7582
  }
@@ -7606,6 +7725,10 @@ function FilterTileButton({
7606
7725
  {
7607
7726
  type: "button",
7608
7727
  onClick,
7728
+ role: "checkbox",
7729
+ "aria-checked": isActive,
7730
+ "aria-label": label,
7731
+ "data-testid": `filter-tile-${label.toLowerCase().replace(/\s+/g, "-")}`,
7609
7732
  className: `relative overflow-hidden rounded-2xl p-4 text-left transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 ${tokens.focusRing} dark:ring-offset-gray-900 ${isActive ? tokens.activeGradient : INACTIVE_CLASSES}`,
7610
7733
  children: [
7611
7734
  /* @__PURE__ */ jsx(
@@ -8640,6 +8763,7 @@ function Badge({ color = "zinc", className, ...props }) {
8640
8763
  return /* @__PURE__ */ jsx(
8641
8764
  "span",
8642
8765
  {
8766
+ "data-testid": "badge",
8643
8767
  ...props,
8644
8768
  className: clsx(
8645
8769
  className,
@@ -8854,14 +8978,14 @@ function DynamicIslandConfirm({
8854
8978
  triggerHaptic("warning");
8855
8979
  }
8856
8980
  }, [open]);
8857
- return /* @__PURE__ */ jsxs(Dialog, { open, onClose, className: "relative z-[120]", children: [
8981
+ return /* @__PURE__ */ jsxs(Dialog, { open, onClose, className: "relative z-[120]", "aria-labelledby": "dynamic-island-title", children: [
8858
8982
  /* @__PURE__ */ jsx("div", { className: "fixed inset-0 bg-black/10 backdrop-blur-[2px]" }),
8859
8983
  /* @__PURE__ */ jsx("div", { className: "fixed inset-0 flex items-start justify-center pt-3 px-4", children: /* @__PURE__ */ jsxs(DialogPanel, { className: "w-full max-w-sm rounded-[28px] bg-black/95 p-3 text-white shadow-2xl", children: [
8860
8984
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 px-2 py-1", children: [
8861
8985
  /* @__PURE__ */ jsx("div", { className: `h-9 w-9 shrink-0 rounded-xl ${iconBackground} flex items-center justify-center`, children: icon ?? /* @__PURE__ */ jsx(TrashIcon, { className: "h-5 w-5 text-white" }) }),
8862
8986
  /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
8863
8987
  /* @__PURE__ */ jsx("p", { className: "text-[11px] uppercase tracking-wide text-gray-400", children: appName }),
8864
- /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold", children: title })
8988
+ /* @__PURE__ */ jsx("p", { id: "dynamic-island-title", className: "text-sm font-semibold", children: title })
8865
8989
  ] })
8866
8990
  ] }),
8867
8991
  /* @__PURE__ */ jsxs("div", { className: "mt-2 grid grid-cols-2 gap-2", children: [
@@ -8870,7 +8994,7 @@ function DynamicIslandConfirm({
8870
8994
  {
8871
8995
  type: "button",
8872
8996
  onClick: onClose,
8873
- className: "rounded-xl bg-white/10 px-3 py-2 text-sm font-medium hover:bg-white/15",
8997
+ className: "rounded-xl bg-white/10 px-3 py-3 text-sm font-medium hover:bg-white/15 focus-visible:ring-2 focus-visible:ring-white/70",
8874
8998
  children: resolvedCancelLabel
8875
8999
  }
8876
9000
  ),
@@ -8879,7 +9003,7 @@ function DynamicIslandConfirm({
8879
9003
  {
8880
9004
  type: "button",
8881
9005
  onClick: onConfirm,
8882
- className: "rounded-xl bg-ios-red px-3 py-2 text-sm font-semibold text-white hover:bg-ios-red-hover",
9006
+ className: "rounded-xl bg-ios-red px-3 py-3 text-sm font-semibold text-white hover:bg-ios-red-hover focus-visible:ring-2 focus-visible:ring-white/70",
8883
9007
  children: resolvedConfirmLabel
8884
9008
  }
8885
9009
  )
@@ -9431,66 +9555,80 @@ var ACCENT_MAP = {
9431
9555
  function PageEmptyState({ title, message, iconName }) {
9432
9556
  const Icon = ICON_MAP[iconName] || FallbackIcon;
9433
9557
  const accent = ACCENT_MAP[iconName] || ACCENT_MAP["folder-open"];
9434
- return /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center py-20", children: /* @__PURE__ */ jsxs(
9435
- motion.div,
9558
+ const prefersReducedMotion2 = useReducedMotion();
9559
+ const noMotion = { opacity: 1, scale: 1, y: 0 };
9560
+ const noTransition = { duration: 0 };
9561
+ return /* @__PURE__ */ jsx(
9562
+ "div",
9436
9563
  {
9437
- initial: { opacity: 0, scale: 0.95 },
9438
- animate: { opacity: 1, scale: 1 },
9439
- transition: springPresets.gentle,
9440
- className: "liquid-surface w-full max-w-lg rounded-2xl px-8 py-14 text-center",
9441
- children: [
9442
- /* @__PURE__ */ jsx(
9443
- motion.div,
9444
- {
9445
- initial: { scale: 0.6, opacity: 0 },
9446
- animate: { scale: 1, opacity: 1 },
9447
- transition: springPresets.bouncy,
9448
- className: "mx-auto mb-6",
9449
- children: /* @__PURE__ */ jsx("div", { className: `inline-flex h-20 w-20 items-center justify-center rounded-full backdrop-blur-md border ${accent.container}`, children: /* @__PURE__ */ jsx(Icon, { className: `h-10 w-10 ${accent.icon}` }) })
9450
- }
9451
- ),
9452
- /* @__PURE__ */ jsx(
9453
- motion.h3,
9454
- {
9455
- initial: { y: 12, opacity: 0 },
9456
- animate: { y: 0, opacity: 1 },
9457
- transition: { ...springPresets.default, delay: 0.1 },
9458
- className: "text-xl font-semibold text-gray-900 dark:text-white",
9459
- children: title
9460
- }
9461
- ),
9462
- /* @__PURE__ */ jsx(
9463
- motion.p,
9464
- {
9465
- initial: { y: 12, opacity: 0 },
9466
- animate: { y: 0, opacity: 1 },
9467
- transition: { ...springPresets.default, delay: 0.15 },
9468
- className: "mt-3 text-sm text-gray-500 dark:text-gray-400 max-w-sm mx-auto leading-relaxed",
9469
- children: message
9470
- }
9471
- ),
9472
- /* @__PURE__ */ jsx(
9473
- motion.div,
9474
- {
9475
- initial: { opacity: 0 },
9476
- animate: { opacity: 1 },
9477
- transition: { delay: 0.3 },
9478
- className: "mt-8 flex items-center justify-center gap-1.5",
9479
- children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx(
9564
+ role: "region",
9565
+ "aria-label": title,
9566
+ "data-testid": "empty-state",
9567
+ className: "flex items-center justify-center py-20",
9568
+ children: /* @__PURE__ */ jsxs(
9569
+ motion.div,
9570
+ {
9571
+ initial: prefersReducedMotion2 ? false : { opacity: 0, scale: 0.95 },
9572
+ animate: prefersReducedMotion2 ? noMotion : { opacity: 1, scale: 1 },
9573
+ transition: prefersReducedMotion2 ? noTransition : springPresets.gentle,
9574
+ className: "liquid-surface w-full max-w-lg rounded-2xl px-8 py-14 text-center",
9575
+ children: [
9576
+ /* @__PURE__ */ jsx(
9480
9577
  motion.div,
9481
9578
  {
9482
- initial: { scale: 0 },
9483
- animate: { scale: 1 },
9484
- transition: { ...springPresets.bouncy, delay: 0.35 + i * 0.08 },
9485
- className: "h-1.5 w-1.5 rounded-full bg-gray-300 dark:bg-gray-600"
9486
- },
9487
- i
9488
- ))
9489
- }
9490
- )
9491
- ]
9579
+ initial: prefersReducedMotion2 ? false : { scale: 0.6, opacity: 0 },
9580
+ animate: prefersReducedMotion2 ? noMotion : { scale: 1, opacity: 1 },
9581
+ transition: prefersReducedMotion2 ? noTransition : springPresets.bouncy,
9582
+ className: "mx-auto mb-6",
9583
+ children: /* @__PURE__ */ jsx("div", { className: `inline-flex h-20 w-20 items-center justify-center rounded-full backdrop-blur-md border ${accent.container}`, children: /* @__PURE__ */ jsx(Icon, { className: `h-10 w-10 ${accent.icon}` }) })
9584
+ }
9585
+ ),
9586
+ /* @__PURE__ */ jsx(
9587
+ motion.h3,
9588
+ {
9589
+ "data-testid": "empty-state-title",
9590
+ initial: prefersReducedMotion2 ? false : { y: 12, opacity: 0 },
9591
+ animate: prefersReducedMotion2 ? noMotion : { y: 0, opacity: 1 },
9592
+ transition: prefersReducedMotion2 ? noTransition : { ...springPresets.default, delay: 0.1 },
9593
+ className: "text-xl font-semibold text-gray-900 dark:text-white",
9594
+ children: title
9595
+ }
9596
+ ),
9597
+ /* @__PURE__ */ jsx(
9598
+ motion.p,
9599
+ {
9600
+ "data-testid": "empty-state-message",
9601
+ initial: prefersReducedMotion2 ? false : { y: 12, opacity: 0 },
9602
+ animate: prefersReducedMotion2 ? noMotion : { y: 0, opacity: 1 },
9603
+ transition: prefersReducedMotion2 ? noTransition : { ...springPresets.default, delay: 0.15 },
9604
+ className: "mt-3 text-sm text-gray-500 dark:text-gray-400 max-w-sm mx-auto leading-relaxed",
9605
+ children: message
9606
+ }
9607
+ ),
9608
+ /* @__PURE__ */ jsx(
9609
+ motion.div,
9610
+ {
9611
+ initial: prefersReducedMotion2 ? false : { opacity: 0 },
9612
+ animate: prefersReducedMotion2 ? noMotion : { opacity: 1 },
9613
+ transition: prefersReducedMotion2 ? noTransition : { delay: 0.3 },
9614
+ className: "mt-8 flex items-center justify-center gap-1.5",
9615
+ children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx(
9616
+ motion.div,
9617
+ {
9618
+ initial: prefersReducedMotion2 ? false : { scale: 0 },
9619
+ animate: prefersReducedMotion2 ? noMotion : { scale: 1 },
9620
+ transition: prefersReducedMotion2 ? noTransition : { ...springPresets.bouncy, delay: 0.35 + i * 0.08 },
9621
+ className: "h-1.5 w-1.5 rounded-full bg-gray-300 dark:bg-gray-600"
9622
+ },
9623
+ i
9624
+ ))
9625
+ }
9626
+ )
9627
+ ]
9628
+ }
9629
+ )
9492
9630
  }
9493
- ) });
9631
+ );
9494
9632
  }
9495
9633
  var WINDSOCK_LOADER = { gradient: "from-emerald-500 to-teal-600", accentRing: "ring-emerald-500/30" };
9496
9634
  var FUEL_PRICE_LOADER = { gradient: "from-blue-500 to-indigo-600", accentRing: "ring-blue-500/30" };
@@ -11130,7 +11268,7 @@ function NotificationBadge({ count, className = "" }) {
11130
11268
  return /* @__PURE__ */ jsx(
11131
11269
  "span",
11132
11270
  {
11133
- className: `absolute -top-1 -right-1 flex items-center justify-center min-w-[18px] h-[18px] px-1 text-[10px] font-bold text-white bg-red-500 rounded-full ring-2 ring-white dark:ring-gray-800 ${count > 0 ? "animate-pulse" : ""} ${className}`,
11271
+ className: `absolute -top-1 -right-1 flex items-center justify-center min-w-[18px] h-[18px] px-1 text-[10px] font-bold text-white bg-red-500 rounded-full ring-2 ring-white dark:ring-gray-800 ${count > 0 ? "animate-pulse motion-reduce:animate-none" : ""} ${className}`,
11134
11272
  children: displayCount
11135
11273
  }
11136
11274
  );
@@ -12360,11 +12498,15 @@ function FilterPill({ icon, label, variant, onRemove }) {
12360
12498
  {
12361
12499
  type: "button",
12362
12500
  onClick: onRemove,
12501
+ role: "option",
12502
+ "aria-selected": true,
12503
+ "aria-label": typeof label === "string" ? label : void 0,
12504
+ "data-testid": "filter-pill",
12363
12505
  className: `liquid-pill liquid-pill-${variant}`,
12364
12506
  children: [
12365
12507
  icon,
12366
12508
  label,
12367
- /* @__PURE__ */ jsx(XMarkIcon$1, { className: "liquid-pill-dismiss" })
12509
+ /* @__PURE__ */ jsx(XMarkIcon$1, { className: "liquid-pill-dismiss", "data-testid": "filter-pill-remove" })
12368
12510
  ]
12369
12511
  }
12370
12512
  );
@@ -13850,5 +13992,5 @@ function PlatformShell({
13850
13992
  }
13851
13993
 
13852
13994
  export { ActionMenu, ActionSheet, ActiveFilterChips, AnalysisSkeleton, AnimatedNumber, AnimatedTableRow, AppLogo, AppNavigation, AppShell, ArchiveSwipeAction, AuthLayout, Avatar, AvatarButton, BRAZIL_ACCENT_MAP, BRAZIL_MACRO_REGIONS, BRAZIL_MAP_CENTER, BRAZIL_STATE_COORDINATES, BRAZIL_STATE_PALETTES, BR_THEME_CONFIG, BackupCodeGrid, BadRequestPage, Badge, BaseForm, BentoCard, BooleanFlagsPicker, BottomSafeArea, BrandFilterSkeleton, BrandedLoader, Breadcrumb, Button, Card, CardActionMenu, CardContent, CardDescription, CardDivider, CardFooter, CardGridSkeleton, CardHeader, CardSectionHeader, CardTitle, CategoryBadge, CategoryTab, CategoryTabs, ChipPicker, CircularRefreshIndicator, Code, CollapsibleGroupedList, CompactSegmentedControl, ContactCard, ContactSection, Container, ContextMenu, CookieConsent, CopyableId, CountPill, CreateActionButton, DashboardProgressShell, DataPagination, DatePicker, DeleteSwipeAction, Description4 as Description, DetailsPopover, DevModeBanner, Dialog4 as Dialog, DialogActions, DialogBody, DialogDescription, DialogTitle3 as DialogTitle, Divider, Dock, DockContainer, DockSkeleton, DotRefreshIndicator, Dropdown, DropdownButton, DropdownDivider, DropdownItem, DropdownLabel, DropdownMenu, DropdownSelect, DynamicIsland, DynamicIslandConfirm, DynamicIslandNotification, EdgeSwipeIndicator, EdgeSwipeProvider, EditSwipeAction, EmptyState, EntityCard, EntityDrawer, ErrorMessage, ErrorState, ExpandableHistoryList, ExpandingPageIndicator, FUEL_PRICE_LOADER, FavoriteSwipeAction, FeatureCard, FeedItemCard, Field2 as Field, FieldGroup, Fieldset2 as Fieldset, FilterBadge, FilterPill, FilterSectionHeader, FilterTileButton, FloatingActionButton, FlyoutMenu, FlyoutNavGrid, FlyoutQuickActions, ForceTouchMenu, Form, FormActions, FormActionsRow, FormCheckbox, FormField, FormGrid, FormInput, FormPriceInput, FormSection, FormSelect, FormTextarea, FormToggle, GeoMapCanvas, GeoMapLegend, GlassFormModal, GlassModal, GlassModalShell, Gradient, GradientBackground, GrowthIndicator, Heading, HeroPanel, HeroSection, IconButton, InfoPopover, InlineForm, InlineSpinner, Input, InteractiveGeoMap, ItemSummary, KORI_ERP_LOADER, Label2 as Label, LabeledToggle, LanguageSwitcher, LaunchpadGrid, Lead, Legend2 as Legend, LiquidFilterInput, ListCard, ListCardItem, ListItem, LoadingOverlay, ManagementPageLayout, ManagementSurface, MapZoomControls, MetricCard, MonthPicker, MultiColumnPicker, NavigationProgress, NoDataState, NoResultsState, NotFoundPage, NotificationBadge, NotificationBellButton, NotificationProvider, OfficeCard, OfflineState, OptionGrid, OtpInput, PageEmptyState, PageHeader, PageHeading, PageIndicator, PageLoadingState, PageSectionHeader, Pagination, PasswordInput, PasswordStrengthMeter, Pill, PlatformShell, PlusGrid, PlusGridItem, PlusGridRow, PreferenceSection, PriceChangeBadge, ProfileIdentityCard, Progress, ProgressIndicator, PullToRefreshContainer, PullToRefreshIndicator, RadiantHeading, RadiantStatCard, RadiantSubheading, RegionFilterSkeleton, RoleBadge, SafeArea, SafeAreaSpacer, SafeAreaView, SearchBar, SearchFilterToolbar, SearchInput, SectionCard, SectionHeader, SectionHeaderSkeleton, SegmentedControl, Select, SelectableChipPicker, SelectableListPicker, SelectableOptionsGrid, SelectableTableRow, SelectionCard, ServerErrorPage, SettingsDialog, SettingsModal, Sheet, SocialLoginButtons, SortableTableHeader, Spinner, Stat, StatCard, StatCardSkeleton, StatusBadge, StatusToggle, StepFormPage, StepNavigationButtons, StepTimeline, Strong, Subheading, SwipeableRow, Switch2 as Switch, Table, TableBody, TableCell, TableEmptyState, TableHead, TableHeader, TableRow, TableSkeleton, TableSkeletonRow, Tabs, TabsContent, TabsList, TabsTrigger, TagBadge, Text, TextLink, Textarea, ThemeSwitch, ThemeToggle, ThemeToggleCompact, TimePicker, ToggleSwitch, TouchTarget, US_ACCENT_MAP, US_MACRO_REGIONS, US_MAP_CENTER, US_STATE_COORDINATES, US_STATE_PALETTES, US_THEME_CONFIG, UserAvatar, UserMobileInfo, WINDSOCK_LOADER, WIRE_LOADER, WheelPicker, WindsockIcon, buildDockActions, buildFlyoutNavItems, buildLaunchpadItems, buttonPress, buttonPressReduced, buttonTap, cardHover, cardHoverReduced, cardPress, createMotionProps, durations, durationsReduced, easings, fadeOnly, fadeScale, filterByPermission, formatCurrency, formatDate, formatPercentage, getBrazilAccent, getBrazilColors, getBrazilFlagUrl, getBrazilGradient, getBrazilHexColor, getBrazilPalette, getStatusColor, getSubdivisionAccent, getSubdivisionColors, getSubdivisionFlagUrl, getSubdivisionGradient, getSubdivisionHexColor, getSubdivisionPalette, getTransition, getUsAccent, getUsColors, getUsFlagUrl, getUsGradient, getUsHexColor, getUsPalette, getVariants, iosColors, isValidBrazilState, isValidSubdivision, isValidUsState, listItem, listItemReduced, notificationBanner, notificationBannerReduced, pageControlDot, prefersReducedMotion, registerSubdivisionTheme, resolveGlassAccentRgb, selectIsAuthenticated, selectShowShellChrome, selectUserInitial, selectUserName, shimmerClass, shimmerWhiteClass, slideDown, slideRight, slideUp, springPresets, springPresetsReduced, staggerContainer, swipeActionThreshold, swipeConstraints, useGeoMapState, useNotifications, usePlatformShellStore, usePullToRefresh };
13853
- //# sourceMappingURL=chunk-3OGFL5RQ.mjs.map
13854
- //# sourceMappingURL=chunk-3OGFL5RQ.mjs.map
13995
+ //# sourceMappingURL=chunk-WTPYTOK4.mjs.map
13996
+ //# sourceMappingURL=chunk-WTPYTOK4.mjs.map