@datatechsolutions/ui 2.7.139 → 2.7.140

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.
@@ -627,7 +627,7 @@ function LoadingSpinner({ className }) {
627
627
  return /* @__PURE__ */ jsxs(
628
628
  "svg",
629
629
  {
630
- className: clsx("h-4 w-4 animate-spin", className),
630
+ className: clsx("h-4 w-4 animate-spin motion-reduce:animate-none", className),
631
631
  xmlns: "http://www.w3.org/2000/svg",
632
632
  fill: "none",
633
633
  viewBox: "0 0 24 24",
@@ -1580,11 +1580,11 @@ var Select = forwardRef(
1580
1580
  cursor-pointer
1581
1581
  `,
1582
1582
  children: [
1583
- /* @__PURE__ */ jsx("span", { className: selectedOption ? "" : "text-slate-400", children: selectedOption?.label || placeholder }),
1583
+ /* @__PURE__ */ jsx("span", { className: selectedOption ? "" : "text-slate-500", children: selectedOption?.label || placeholder }),
1584
1584
  /* @__PURE__ */ jsx(
1585
1585
  ChevronDownIcon,
1586
1586
  {
1587
- className: `h-5 w-5 text-slate-400 transition-transform duration-200
1587
+ className: `h-5 w-5 text-slate-500 transition-transform duration-200
1588
1588
  ${isOpen ? "rotate-180" : ""}`
1589
1589
  }
1590
1590
  )
@@ -1621,7 +1621,7 @@ var Select = forwardRef(
1621
1621
  }
1622
1622
  ) })
1623
1623
  ] }),
1624
- error && /* @__PURE__ */ jsx("p", { className: "text-sm text-ios-red", children: error })
1624
+ error && /* @__PURE__ */ jsx("p", { className: "text-sm text-ios-red", role: "alert", "aria-live": "polite", children: error })
1625
1625
  ] });
1626
1626
  }
1627
1627
  return /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
@@ -1653,11 +1653,11 @@ var Select = forwardRef(
1653
1653
  /* @__PURE__ */ jsx(
1654
1654
  ChevronDownIcon,
1655
1655
  {
1656
- className: "absolute right-3 top-1/2 -translate-y-1/2 h-5 w-5 text-slate-400 pointer-events-none"
1656
+ className: "absolute right-3 top-1/2 -translate-y-1/2 h-5 w-5 text-slate-500 pointer-events-none"
1657
1657
  }
1658
1658
  )
1659
1659
  ] }),
1660
- error && /* @__PURE__ */ jsx("p", { className: "text-sm text-ios-red", children: error })
1660
+ error && /* @__PURE__ */ jsx("p", { className: "text-sm text-ios-red", role: "alert", "aria-live": "polite", children: error })
1661
1661
  ] });
1662
1662
  }
1663
1663
  );
@@ -1705,13 +1705,13 @@ function DropdownSelect({
1705
1705
  ${error ? "border-ios-red ring-4 ring-ios-red/10" : ""}
1706
1706
  `,
1707
1707
  children: [
1708
- /* @__PURE__ */ jsx("span", { className: selectedOption ? "" : "text-slate-400", children: selectedOption?.label || placeholder }),
1708
+ /* @__PURE__ */ jsx("span", { className: selectedOption ? "" : "text-slate-500", children: selectedOption?.label || placeholder }),
1709
1709
  /* @__PURE__ */ jsx(
1710
1710
  motion.div,
1711
1711
  {
1712
1712
  animate: { rotate: isOpen ? 180 : 0 },
1713
1713
  transition: { duration: 0.2 },
1714
- children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-5 w-5 text-slate-400" })
1714
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-5 w-5 text-slate-500" })
1715
1715
  }
1716
1716
  )
1717
1717
  ]
@@ -1755,7 +1755,7 @@ function DropdownSelect({
1755
1755
  }
1756
1756
  )
1757
1757
  ] }) }),
1758
- error && /* @__PURE__ */ jsx("p", { className: "text-sm text-ios-red", children: error })
1758
+ error && /* @__PURE__ */ jsx("p", { className: "text-sm text-ios-red", role: "alert", "aria-live": "polite", children: error })
1759
1759
  ] });
1760
1760
  }
1761
1761
  var sizes = {
@@ -4320,7 +4320,7 @@ function TableSkeletonRow({
4320
4320
  "div",
4321
4321
  {
4322
4322
  className: clsx(
4323
- "h-4 rounded bg-slate-200 dark:bg-slate-700 animate-pulse",
4323
+ "h-4 rounded bg-slate-200 dark:bg-slate-700 animate-pulse motion-reduce:animate-none",
4324
4324
  i === 0 ? "w-32" : i === columns - 1 ? "w-16" : "w-24"
4325
4325
  )
4326
4326
  }
@@ -5001,7 +5001,7 @@ function DynamicIslandNotification({
5001
5001
  icon && /* @__PURE__ */ jsx("div", { className: `h-8 w-8 rounded-full ${styles2.iconBg} flex items-center justify-center shrink-0`, children: /* @__PURE__ */ jsx("div", { className: "h-5 w-5 text-white", children: icon }) }),
5002
5002
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
5003
5003
  /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold truncate", children: title }),
5004
- message && /* @__PURE__ */ jsx("p", { className: "text-xs text-gray-400 truncate", children: message })
5004
+ message && /* @__PURE__ */ jsx("p", { className: "text-xs text-gray-500 truncate", children: message })
5005
5005
  ] })
5006
5006
  ] })
5007
5007
  ),
@@ -5012,7 +5012,7 @@ function DynamicIslandNotification({
5012
5012
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
5013
5013
  appName && /* @__PURE__ */ jsx("p", { className: `text-[11px] uppercase tracking-wide font-medium ${styles2.accentColor}`, children: appName }),
5014
5014
  /* @__PURE__ */ jsx("p", { className: "text-[15px] font-semibold leading-tight", children: title }),
5015
- message && /* @__PURE__ */ jsx("p", { className: "text-[13px] text-gray-400 mt-0.5 truncate", children: message })
5015
+ message && /* @__PURE__ */ jsx("p", { className: "text-[13px] text-gray-500 mt-0.5 truncate", children: message })
5016
5016
  ] })
5017
5017
  ] })
5018
5018
  )
@@ -5129,7 +5129,7 @@ function NotificationBellButton() {
5129
5129
  children: [
5130
5130
  /* @__PURE__ */ jsx(BellIcon, { className: "h-5 w-5" }),
5131
5131
  totalCount > 0 ? /* @__PURE__ */ jsxs("span", { className: "absolute top-1 right-1 flex h-2 w-2", children: [
5132
- /* @__PURE__ */ jsx("span", { className: "animate-ping absolute inline-flex h-full w-full rounded-full bg-indigo-400 opacity-75" }),
5132
+ /* @__PURE__ */ jsx("span", { className: "animate-ping motion-reduce:animate-none absolute inline-flex h-full w-full rounded-full bg-indigo-400 opacity-75" }),
5133
5133
  /* @__PURE__ */ jsx("span", { className: "relative inline-flex rounded-full h-2 w-2 bg-indigo-500" })
5134
5134
  ] }) : null
5135
5135
  ]
@@ -5236,7 +5236,7 @@ function NotificationDrawer({
5236
5236
  {
5237
5237
  type: "button",
5238
5238
  onClick: () => onRemove(item.id),
5239
- className: "absolute right-2.5 top-2.5 rounded-lg p-1 text-gray-300 opacity-0 transition-all group-hover:opacity-100 hover:text-gray-500 active:scale-95 dark:text-gray-600 dark:hover:text-gray-400",
5239
+ className: "absolute right-2.5 top-2.5 rounded-lg p-1 text-gray-300 opacity-0 transition-all group-hover:opacity-100 group-focus-within:opacity-100 hover:text-gray-500 active:scale-95 dark:text-gray-600 dark:hover:text-gray-400",
5240
5240
  "aria-label": t("dismiss"),
5241
5241
  children: /* @__PURE__ */ jsx(XMarkIcon$1, { className: "h-3.5 w-3.5" })
5242
5242
  }
@@ -5441,7 +5441,7 @@ var StatusBadge = forwardRef(function StatusBadge2({ status, label, size = "md",
5441
5441
  "data-testid": `status-badge-${status}`,
5442
5442
  className: `inline-flex items-center gap-1.5 rounded-full border font-semibold backdrop-blur-sm ${SIZE_STYLES[size]} ${toneStyle.container} ${className}`,
5443
5443
  children: [
5444
- IconComponent ? /* @__PURE__ */ jsx(IconComponent, { className: `h-3 w-3 ${configuredStatus.animateIcon ? "animate-spin" : ""}` }) : /* @__PURE__ */ jsx("span", { className: `h-2 w-2 rounded-full ${toneStyle.dot}` }),
5444
+ IconComponent ? /* @__PURE__ */ jsx(IconComponent, { className: `h-3 w-3 ${configuredStatus.animateIcon ? "animate-spin motion-reduce:animate-none" : ""}` }) : /* @__PURE__ */ jsx("span", { className: `h-2 w-2 rounded-full ${toneStyle.dot}` }),
5445
5445
  resolvedLabel2
5446
5446
  ]
5447
5447
  }
@@ -6715,12 +6715,13 @@ function wrapperClass(error) {
6715
6715
  error ? "focus-within:ring-2 focus-within:ring-offset-2 focus-within:ring-red-400/30" : "focus-within:ring-2 focus-within:ring-offset-2 focus-within:ring-indigo-500 dark:focus-within:ring-offset-gray-900"
6716
6716
  ].join(" ");
6717
6717
  }
6718
- function FieldMeta({ hint, error }) {
6718
+ function FieldMeta({ hint, error, errorId, hintId }) {
6719
6719
  if (!hint && !error) return null;
6720
6720
  return /* @__PURE__ */ jsx(
6721
6721
  "p",
6722
6722
  {
6723
- className: `mt-1.5 text-xs ${error ? "text-red-500" : "text-gray-500 dark:text-gray-400"}`,
6723
+ id: error ? errorId : hintId,
6724
+ className: `mt-1.5 text-xs ${error ? "text-red-500" : "text-slate-600 dark:text-gray-400"}`,
6724
6725
  ...error ? { role: "alert", "aria-live": "polite" } : {},
6725
6726
  children: error ?? hint
6726
6727
  }
@@ -6737,8 +6738,13 @@ function FormInput({
6737
6738
  onValueChange,
6738
6739
  ...props
6739
6740
  }) {
6741
+ const autoId = useId();
6742
+ const inputId = props.id ?? autoId;
6743
+ const errorId = `${inputId}-error`;
6744
+ const hintId = `${inputId}-hint`;
6745
+ const describedBy = error ? errorId : hint ? hintId : void 0;
6740
6746
  return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6741
- label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6747
+ label ? /* @__PURE__ */ jsxs("label", { htmlFor: inputId, className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6742
6748
  label,
6743
6749
  required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
6744
6750
  ] }) : null,
@@ -6748,12 +6754,16 @@ function FormInput({
6748
6754
  "input",
6749
6755
  {
6750
6756
  ...props,
6751
- className: "w-full bg-transparent text-gray-900 placeholder:text-gray-400 focus:outline-none dark:text-white dark:placeholder:text-gray-500",
6757
+ id: inputId,
6758
+ required,
6759
+ "aria-invalid": error ? true : void 0,
6760
+ "aria-describedby": describedBy,
6761
+ className: "w-full bg-transparent text-gray-900 placeholder:text-slate-500 focus:outline-none dark:text-white dark:placeholder:text-gray-500",
6752
6762
  onChange: (event) => onValueChange?.(event.target.value)
6753
6763
  }
6754
6764
  )
6755
6765
  ] }) }),
6756
- /* @__PURE__ */ jsx(FieldMeta, { hint, error })
6766
+ /* @__PURE__ */ jsx(FieldMeta, { hint, error, errorId, hintId })
6757
6767
  ] });
6758
6768
  }
6759
6769
  function FormTextarea({
@@ -6766,8 +6776,13 @@ function FormTextarea({
6766
6776
  onValueChange,
6767
6777
  ...props
6768
6778
  }) {
6779
+ const autoId = useId();
6780
+ const inputId = props.id ?? autoId;
6781
+ const errorId = `${inputId}-error`;
6782
+ const hintId = `${inputId}-hint`;
6783
+ const describedBy = error ? errorId : hint ? hintId : void 0;
6769
6784
  return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6770
- label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6785
+ label ? /* @__PURE__ */ jsxs("label", { htmlFor: inputId, className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6771
6786
  label,
6772
6787
  required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
6773
6788
  ] }) : null,
@@ -6775,11 +6790,15 @@ function FormTextarea({
6775
6790
  "textarea",
6776
6791
  {
6777
6792
  ...props,
6778
- className: `w-full resize-y bg-transparent px-3.5 py-2.5 text-gray-900 placeholder:text-gray-400 focus:outline-none dark:text-white dark:placeholder:text-gray-500 ${className}`,
6793
+ id: inputId,
6794
+ required,
6795
+ "aria-invalid": error ? true : void 0,
6796
+ "aria-describedby": describedBy,
6797
+ className: `w-full resize-y bg-transparent px-3.5 py-2.5 text-gray-900 placeholder:text-slate-500 focus:outline-none dark:text-white dark:placeholder:text-gray-500 ${className}`,
6779
6798
  onChange: (event) => onValueChange?.(event.target.value)
6780
6799
  }
6781
6800
  ) }),
6782
- /* @__PURE__ */ jsx(FieldMeta, { hint, error })
6801
+ /* @__PURE__ */ jsx(FieldMeta, { hint, error, errorId, hintId })
6783
6802
  ] });
6784
6803
  }
6785
6804
  var priceSizeConfig = {
@@ -6811,9 +6830,14 @@ function FormPriceInput({
6811
6830
  max,
6812
6831
  className = ""
6813
6832
  }) {
6833
+ const autoId = useId();
6834
+ const inputId = autoId;
6835
+ const errorId = `${inputId}-error`;
6836
+ const hintId = `${inputId}-hint`;
6837
+ const describedBy = error ? errorId : hint ? hintId : void 0;
6814
6838
  const sizes3 = priceSizeConfig[priceSize ?? defaultPriceSize(inputSize)];
6815
6839
  return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6816
- label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6840
+ label ? /* @__PURE__ */ jsxs("label", { htmlFor: inputId, className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6817
6841
  label,
6818
6842
  required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
6819
6843
  ] }) : null,
@@ -6829,19 +6853,24 @@ function FormPriceInput({
6829
6853
  /* @__PURE__ */ jsx(
6830
6854
  "input",
6831
6855
  {
6856
+ id: inputId,
6832
6857
  type: "number",
6833
6858
  step,
6834
6859
  value,
6835
6860
  onChange: (event) => onValueChange?.(event.target.value),
6836
6861
  placeholder,
6837
6862
  disabled,
6863
+ required,
6838
6864
  min,
6839
6865
  max,
6840
- className: `w-full bg-transparent tabular-nums ${sizes3.input} ${sizes3.padding} text-gray-900 placeholder:text-gray-400 focus:outline-none dark:text-white dark:placeholder:text-gray-500 ${colorClass ?? ""} ${className}`
6866
+ "aria-invalid": error ? true : void 0,
6867
+ "aria-describedby": describedBy,
6868
+ "aria-label": label ? `${label} in ${currencySymbol}` : void 0,
6869
+ className: `w-full bg-transparent tabular-nums ${sizes3.input} ${sizes3.padding} text-gray-900 placeholder:text-slate-500 focus:outline-none dark:text-white dark:placeholder:text-gray-500 ${colorClass ?? ""} ${className}`
6841
6870
  }
6842
6871
  )
6843
6872
  ] }) }),
6844
- /* @__PURE__ */ jsx(FieldMeta, { hint, error })
6873
+ /* @__PURE__ */ jsx(FieldMeta, { hint, error, errorId, hintId })
6845
6874
  ] });
6846
6875
  }
6847
6876
  function FormSelect({
@@ -6855,8 +6884,13 @@ function FormSelect({
6855
6884
  options,
6856
6885
  ...props
6857
6886
  }) {
6887
+ const autoId = useId();
6888
+ const inputId = props.id ?? autoId;
6889
+ const errorId = `${inputId}-error`;
6890
+ const hintId = `${inputId}-hint`;
6891
+ const describedBy = error ? errorId : hint ? hintId : void 0;
6858
6892
  return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6859
- label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6893
+ label ? /* @__PURE__ */ jsxs("label", { htmlFor: inputId, className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6860
6894
  label,
6861
6895
  required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
6862
6896
  ] }) : null,
@@ -6864,12 +6898,16 @@ function FormSelect({
6864
6898
  "select",
6865
6899
  {
6866
6900
  ...props,
6901
+ id: inputId,
6902
+ required,
6903
+ "aria-invalid": error ? true : void 0,
6904
+ "aria-describedby": describedBy,
6867
6905
  className: `w-full bg-transparent ${sizeClasses3[inputSize]} text-gray-900 focus:outline-none dark:text-white ${className}`,
6868
6906
  onChange: (event) => onValueChange?.(event.target.value),
6869
6907
  children: options.map((option) => /* @__PURE__ */ jsx("option", { value: option.value, children: option.label }, option.value))
6870
6908
  }
6871
6909
  ) }),
6872
- /* @__PURE__ */ jsx(FieldMeta, { hint, error })
6910
+ /* @__PURE__ */ jsx(FieldMeta, { hint, error, errorId, hintId })
6873
6911
  ] });
6874
6912
  }
6875
6913
  var Form = React11__default.forwardRef(
@@ -7051,7 +7089,7 @@ function BaseForm({
7051
7089
  color: "ios-glass-blue",
7052
7090
  disabled: isLoading || submitDisabled,
7053
7091
  children: [
7054
- isLoading && /* @__PURE__ */ jsx("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-white border-t-transparent" }),
7092
+ isLoading && /* @__PURE__ */ jsx("span", { className: "h-4 w-4 animate-spin motion-reduce:animate-none rounded-full border-2 border-white border-t-transparent" }),
7055
7093
  submitLabel
7056
7094
  ]
7057
7095
  }
@@ -7372,7 +7410,7 @@ function StepNavigationButtons({
7372
7410
  onClick: onContinue,
7373
7411
  className: `${CONTINUE_BUTTON_CLASSES}${!onBack ? " w-full" : ""}`,
7374
7412
  children: isLoading && showSpinner ? /* @__PURE__ */ jsxs("span", { className: "flex items-center justify-center gap-2", children: [
7375
- /* @__PURE__ */ jsx("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-white border-t-transparent" }),
7413
+ /* @__PURE__ */ jsx("span", { className: "h-4 w-4 animate-spin motion-reduce:animate-none rounded-full border-2 border-white border-t-transparent" }),
7376
7414
  displayLabel
7377
7415
  ] }) : displayLabel
7378
7416
  }
@@ -7416,7 +7454,7 @@ function SearchFilterToolbar({
7416
7454
  placeholder,
7417
7455
  "aria-label": label,
7418
7456
  "data-testid": "search-input",
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"
7457
+ className: "min-w-[100px] flex-1 bg-transparent py-1 text-base text-gray-900 outline-none focus-visible:ring-2 focus-visible:ring-blue-500 placeholder:text-slate-400 dark:text-white dark:placeholder:text-slate-500"
7420
7458
  }
7421
7459
  )
7422
7460
  ] }),
@@ -8167,8 +8205,8 @@ function AnalysisSkeleton() {
8167
8205
  }
8168
8206
 
8169
8207
  // src/components/skeletons/shimmer.tsx
8170
- var shimmerClass = "bg-gradient-to-r from-gray-200 via-gray-100 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700 animate-shimmer bg-[length:200%_100%]";
8171
- var shimmerWhiteClass = "bg-white/20 animate-pulse";
8208
+ var shimmerClass = "bg-gradient-to-r from-gray-200 via-gray-100 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700 animate-shimmer motion-reduce:animate-none bg-[length:200%_100%]";
8209
+ var shimmerWhiteClass = "bg-white/20 animate-pulse motion-reduce:animate-none";
8172
8210
  function SectionHeaderSkeleton() {
8173
8211
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
8174
8212
  /* @__PURE__ */ jsx("div", { className: `h-10 w-10 rounded-lg ${shimmerClass}` }),
@@ -8984,7 +9022,7 @@ function DynamicIslandConfirm({
8984
9022
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 px-2 py-1", children: [
8985
9023
  /* @__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" }) }),
8986
9024
  /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
8987
- /* @__PURE__ */ jsx("p", { className: "text-[11px] uppercase tracking-wide text-gray-400", children: appName }),
9025
+ /* @__PURE__ */ jsx("p", { className: "text-[11px] uppercase tracking-wide text-gray-500", children: appName }),
8988
9026
  /* @__PURE__ */ jsx("p", { id: "dynamic-island-title", className: "text-sm font-semibold", children: title })
8989
9027
  ] })
8990
9028
  ] }),
@@ -9657,7 +9695,7 @@ function BrandedLoader({
9657
9695
  "div",
9658
9696
  {
9659
9697
  className: clsx(
9660
- "absolute -inset-3 animate-ping rounded-3xl opacity-20",
9698
+ "absolute -inset-3 animate-ping motion-reduce:animate-none rounded-3xl opacity-20",
9661
9699
  `bg-gradient-to-br ${gradient}`
9662
9700
  ),
9663
9701
  style: { animationDuration: "2s" }
@@ -9669,7 +9707,7 @@ function BrandedLoader({
9669
9707
  className: clsx(
9670
9708
  "absolute -inset-1.5 rounded-[22px] ring-2",
9671
9709
  accentRing,
9672
- "animate-pulse"
9710
+ "animate-pulse motion-reduce:animate-none"
9673
9711
  ),
9674
9712
  style: { animationDuration: "1.5s" }
9675
9713
  }
@@ -9706,7 +9744,7 @@ function BrandedLoader({
9706
9744
  className: clsx(
9707
9745
  "h-1.5 w-1.5 rounded-full",
9708
9746
  `bg-gradient-to-br ${gradient}`,
9709
- "animate-bounce"
9747
+ "animate-bounce motion-reduce:animate-none"
9710
9748
  ),
9711
9749
  style: { animationDelay: `${i * 150}ms`, animationDuration: "0.8s" }
9712
9750
  },
@@ -9721,7 +9759,7 @@ function BrandedLoader({
9721
9759
  className: clsx(
9722
9760
  "h-2 w-2 rounded-full",
9723
9761
  `bg-gradient-to-br ${gradient}`,
9724
- "animate-bounce"
9762
+ "animate-bounce motion-reduce:animate-none"
9725
9763
  ),
9726
9764
  style: { animationDelay: `${i * 150}ms`, animationDuration: "0.8s" }
9727
9765
  },
@@ -12771,7 +12809,7 @@ function DataPagination({
12771
12809
  value: params?.limit ?? effectivePageSize,
12772
12810
  onChange: (event) => handlePageSizeChange(event.target.value),
12773
12811
  disabled: loading,
12774
- className: "rounded-xl liquid-surface px-2 py-1.5 text-xs font-medium text-slate-700 outline-none dark:text-slate-300",
12812
+ className: "rounded-xl liquid-surface px-2 py-1.5 text-xs font-medium text-slate-700 outline-none focus-visible:ring-2 focus-visible:ring-blue-500 dark:text-slate-300",
12775
12813
  children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
12776
12814
  }
12777
12815
  ),
@@ -12790,7 +12828,7 @@ function DataPagination({
12790
12828
  (page, index) => page === "..." ? /* @__PURE__ */ jsx(
12791
12829
  "span",
12792
12830
  {
12793
- className: "inline-flex h-9 w-6 items-center justify-center text-xs text-slate-400",
12831
+ className: "inline-flex h-9 w-6 items-center justify-center text-xs text-slate-500",
12794
12832
  children: "\u2026"
12795
12833
  },
12796
12834
  `ellipsis-${index}`
@@ -13990,7 +14028,21 @@ function PlatformShell({
13990
14028
  extras
13991
14029
  ] });
13992
14030
  }
14031
+ function SkipToContent({
14032
+ targetId = "main-content",
14033
+ label = "Skip to main content"
14034
+ }) {
14035
+ return /* @__PURE__ */ jsx(
14036
+ "a",
14037
+ {
14038
+ href: `#${targetId}`,
14039
+ className: "sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[9999] focus:rounded-lg focus:bg-white focus:px-4 focus:py-2 focus:text-sm focus:font-semibold focus:text-indigo-600 focus:shadow-lg focus:ring-2 focus:ring-indigo-500 focus:outline-none dark:focus:bg-gray-800 dark:focus:text-indigo-400",
14040
+ "data-testid": "skip-to-content",
14041
+ children: label
14042
+ }
14043
+ );
14044
+ }
13993
14045
 
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 };
13995
- //# sourceMappingURL=chunk-WTPYTOK4.mjs.map
13996
- //# sourceMappingURL=chunk-WTPYTOK4.mjs.map
14046
+ 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, SkipToContent, 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 };
14047
+ //# sourceMappingURL=chunk-SCGWR7XZ.mjs.map
14048
+ //# sourceMappingURL=chunk-SCGWR7XZ.mjs.map