@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.
@@ -656,7 +656,7 @@ function LoadingSpinner({ className }) {
656
656
  return /* @__PURE__ */ jsxRuntime.jsxs(
657
657
  "svg",
658
658
  {
659
- className: clsx__default.default("h-4 w-4 animate-spin", className),
659
+ className: clsx__default.default("h-4 w-4 animate-spin motion-reduce:animate-none", className),
660
660
  xmlns: "http://www.w3.org/2000/svg",
661
661
  fill: "none",
662
662
  viewBox: "0 0 24 24",
@@ -1609,11 +1609,11 @@ var Select = React11.forwardRef(
1609
1609
  cursor-pointer
1610
1610
  `,
1611
1611
  children: [
1612
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: selectedOption ? "" : "text-slate-400", children: selectedOption?.label || placeholder }),
1612
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: selectedOption ? "" : "text-slate-500", children: selectedOption?.label || placeholder }),
1613
1613
  /* @__PURE__ */ jsxRuntime.jsx(
1614
1614
  solid.ChevronDownIcon,
1615
1615
  {
1616
- className: `h-5 w-5 text-slate-400 transition-transform duration-200
1616
+ className: `h-5 w-5 text-slate-500 transition-transform duration-200
1617
1617
  ${isOpen ? "rotate-180" : ""}`
1618
1618
  }
1619
1619
  )
@@ -1650,7 +1650,7 @@ var Select = React11.forwardRef(
1650
1650
  }
1651
1651
  ) })
1652
1652
  ] }),
1653
- error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-ios-red", children: error })
1653
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-ios-red", role: "alert", "aria-live": "polite", children: error })
1654
1654
  ] });
1655
1655
  }
1656
1656
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
@@ -1682,11 +1682,11 @@ var Select = React11.forwardRef(
1682
1682
  /* @__PURE__ */ jsxRuntime.jsx(
1683
1683
  solid.ChevronDownIcon,
1684
1684
  {
1685
- className: "absolute right-3 top-1/2 -translate-y-1/2 h-5 w-5 text-slate-400 pointer-events-none"
1685
+ className: "absolute right-3 top-1/2 -translate-y-1/2 h-5 w-5 text-slate-500 pointer-events-none"
1686
1686
  }
1687
1687
  )
1688
1688
  ] }),
1689
- error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-ios-red", children: error })
1689
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-ios-red", role: "alert", "aria-live": "polite", children: error })
1690
1690
  ] });
1691
1691
  }
1692
1692
  );
@@ -1734,13 +1734,13 @@ function DropdownSelect({
1734
1734
  ${error ? "border-ios-red ring-4 ring-ios-red/10" : ""}
1735
1735
  `,
1736
1736
  children: [
1737
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: selectedOption ? "" : "text-slate-400", children: selectedOption?.label || placeholder }),
1737
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: selectedOption ? "" : "text-slate-500", children: selectedOption?.label || placeholder }),
1738
1738
  /* @__PURE__ */ jsxRuntime.jsx(
1739
1739
  framerMotion.motion.div,
1740
1740
  {
1741
1741
  animate: { rotate: isOpen ? 180 : 0 },
1742
1742
  transition: { duration: 0.2 },
1743
- children: /* @__PURE__ */ jsxRuntime.jsx(solid.ChevronDownIcon, { className: "h-5 w-5 text-slate-400" })
1743
+ children: /* @__PURE__ */ jsxRuntime.jsx(solid.ChevronDownIcon, { className: "h-5 w-5 text-slate-500" })
1744
1744
  }
1745
1745
  )
1746
1746
  ]
@@ -1784,7 +1784,7 @@ function DropdownSelect({
1784
1784
  }
1785
1785
  )
1786
1786
  ] }) }),
1787
- error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-ios-red", children: error })
1787
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-ios-red", role: "alert", "aria-live": "polite", children: error })
1788
1788
  ] });
1789
1789
  }
1790
1790
  var sizes = {
@@ -4349,7 +4349,7 @@ function TableSkeletonRow({
4349
4349
  "div",
4350
4350
  {
4351
4351
  className: clsx__default.default(
4352
- "h-4 rounded bg-slate-200 dark:bg-slate-700 animate-pulse",
4352
+ "h-4 rounded bg-slate-200 dark:bg-slate-700 animate-pulse motion-reduce:animate-none",
4353
4353
  i === 0 ? "w-32" : i === columns - 1 ? "w-16" : "w-24"
4354
4354
  )
4355
4355
  }
@@ -5030,7 +5030,7 @@ function DynamicIslandNotification({
5030
5030
  icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-8 w-8 rounded-full ${styles2.iconBg} flex items-center justify-center shrink-0`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-5 w-5 text-white", children: icon }) }),
5031
5031
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
5032
5032
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold truncate", children: title }),
5033
- message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-gray-400 truncate", children: message })
5033
+ message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-gray-500 truncate", children: message })
5034
5034
  ] })
5035
5035
  ] })
5036
5036
  ),
@@ -5041,7 +5041,7 @@ function DynamicIslandNotification({
5041
5041
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
5042
5042
  appName && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-[11px] uppercase tracking-wide font-medium ${styles2.accentColor}`, children: appName }),
5043
5043
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[15px] font-semibold leading-tight", children: title }),
5044
- message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-gray-400 mt-0.5 truncate", children: message })
5044
+ message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-gray-500 mt-0.5 truncate", children: message })
5045
5045
  ] })
5046
5046
  ] })
5047
5047
  )
@@ -5158,7 +5158,7 @@ function NotificationBellButton() {
5158
5158
  children: [
5159
5159
  /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.BellIcon, { className: "h-5 w-5" }),
5160
5160
  totalCount > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "absolute top-1 right-1 flex h-2 w-2", children: [
5161
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "animate-ping absolute inline-flex h-full w-full rounded-full bg-indigo-400 opacity-75" }),
5161
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "animate-ping motion-reduce:animate-none absolute inline-flex h-full w-full rounded-full bg-indigo-400 opacity-75" }),
5162
5162
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative inline-flex rounded-full h-2 w-2 bg-indigo-500" })
5163
5163
  ] }) : null
5164
5164
  ]
@@ -5265,7 +5265,7 @@ function NotificationDrawer({
5265
5265
  {
5266
5266
  type: "button",
5267
5267
  onClick: () => onRemove(item.id),
5268
- 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",
5268
+ 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",
5269
5269
  "aria-label": t("dismiss"),
5270
5270
  children: /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.XMarkIcon, { className: "h-3.5 w-3.5" })
5271
5271
  }
@@ -5470,7 +5470,7 @@ var StatusBadge = React11.forwardRef(function StatusBadge2({ status, label, size
5470
5470
  "data-testid": `status-badge-${status}`,
5471
5471
  className: `inline-flex items-center gap-1.5 rounded-full border font-semibold backdrop-blur-sm ${SIZE_STYLES[size]} ${toneStyle.container} ${className}`,
5472
5472
  children: [
5473
- IconComponent ? /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: `h-3 w-3 ${configuredStatus.animateIcon ? "animate-spin" : ""}` }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: `h-2 w-2 rounded-full ${toneStyle.dot}` }),
5473
+ IconComponent ? /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: `h-3 w-3 ${configuredStatus.animateIcon ? "animate-spin motion-reduce:animate-none" : ""}` }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: `h-2 w-2 rounded-full ${toneStyle.dot}` }),
5474
5474
  resolvedLabel2
5475
5475
  ]
5476
5476
  }
@@ -6744,12 +6744,13 @@ function wrapperClass(error) {
6744
6744
  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"
6745
6745
  ].join(" ");
6746
6746
  }
6747
- function FieldMeta({ hint, error }) {
6747
+ function FieldMeta({ hint, error, errorId, hintId }) {
6748
6748
  if (!hint && !error) return null;
6749
6749
  return /* @__PURE__ */ jsxRuntime.jsx(
6750
6750
  "p",
6751
6751
  {
6752
- className: `mt-1.5 text-xs ${error ? "text-red-500" : "text-gray-500 dark:text-gray-400"}`,
6752
+ id: error ? errorId : hintId,
6753
+ className: `mt-1.5 text-xs ${error ? "text-red-500" : "text-slate-600 dark:text-gray-400"}`,
6753
6754
  ...error ? { role: "alert", "aria-live": "polite" } : {},
6754
6755
  children: error ?? hint
6755
6756
  }
@@ -6766,8 +6767,13 @@ function FormInput({
6766
6767
  onValueChange,
6767
6768
  ...props
6768
6769
  }) {
6770
+ const autoId = React11.useId();
6771
+ const inputId = props.id ?? autoId;
6772
+ const errorId = `${inputId}-error`;
6773
+ const hintId = `${inputId}-hint`;
6774
+ const describedBy = error ? errorId : hint ? hintId : void 0;
6769
6775
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6770
- label ? /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6776
+ label ? /* @__PURE__ */ jsxRuntime.jsxs("label", { htmlFor: inputId, className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6771
6777
  label,
6772
6778
  required ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
6773
6779
  ] }) : null,
@@ -6777,12 +6783,16 @@ function FormInput({
6777
6783
  "input",
6778
6784
  {
6779
6785
  ...props,
6780
- className: "w-full bg-transparent text-gray-900 placeholder:text-gray-400 focus:outline-none dark:text-white dark:placeholder:text-gray-500",
6786
+ id: inputId,
6787
+ required,
6788
+ "aria-invalid": error ? true : void 0,
6789
+ "aria-describedby": describedBy,
6790
+ className: "w-full bg-transparent text-gray-900 placeholder:text-slate-500 focus:outline-none dark:text-white dark:placeholder:text-gray-500",
6781
6791
  onChange: (event) => onValueChange?.(event.target.value)
6782
6792
  }
6783
6793
  )
6784
6794
  ] }) }),
6785
- /* @__PURE__ */ jsxRuntime.jsx(FieldMeta, { hint, error })
6795
+ /* @__PURE__ */ jsxRuntime.jsx(FieldMeta, { hint, error, errorId, hintId })
6786
6796
  ] });
6787
6797
  }
6788
6798
  function FormTextarea({
@@ -6795,8 +6805,13 @@ function FormTextarea({
6795
6805
  onValueChange,
6796
6806
  ...props
6797
6807
  }) {
6808
+ const autoId = React11.useId();
6809
+ const inputId = props.id ?? autoId;
6810
+ const errorId = `${inputId}-error`;
6811
+ const hintId = `${inputId}-hint`;
6812
+ const describedBy = error ? errorId : hint ? hintId : void 0;
6798
6813
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6799
- label ? /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6814
+ label ? /* @__PURE__ */ jsxRuntime.jsxs("label", { htmlFor: inputId, className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6800
6815
  label,
6801
6816
  required ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
6802
6817
  ] }) : null,
@@ -6804,11 +6819,15 @@ function FormTextarea({
6804
6819
  "textarea",
6805
6820
  {
6806
6821
  ...props,
6807
- 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}`,
6822
+ id: inputId,
6823
+ required,
6824
+ "aria-invalid": error ? true : void 0,
6825
+ "aria-describedby": describedBy,
6826
+ 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}`,
6808
6827
  onChange: (event) => onValueChange?.(event.target.value)
6809
6828
  }
6810
6829
  ) }),
6811
- /* @__PURE__ */ jsxRuntime.jsx(FieldMeta, { hint, error })
6830
+ /* @__PURE__ */ jsxRuntime.jsx(FieldMeta, { hint, error, errorId, hintId })
6812
6831
  ] });
6813
6832
  }
6814
6833
  var priceSizeConfig = {
@@ -6840,9 +6859,14 @@ function FormPriceInput({
6840
6859
  max,
6841
6860
  className = ""
6842
6861
  }) {
6862
+ const autoId = React11.useId();
6863
+ const inputId = autoId;
6864
+ const errorId = `${inputId}-error`;
6865
+ const hintId = `${inputId}-hint`;
6866
+ const describedBy = error ? errorId : hint ? hintId : void 0;
6843
6867
  const sizes3 = priceSizeConfig[priceSize ?? defaultPriceSize(inputSize)];
6844
6868
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6845
- label ? /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6869
+ label ? /* @__PURE__ */ jsxRuntime.jsxs("label", { htmlFor: inputId, className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6846
6870
  label,
6847
6871
  required ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
6848
6872
  ] }) : null,
@@ -6858,19 +6882,24 @@ function FormPriceInput({
6858
6882
  /* @__PURE__ */ jsxRuntime.jsx(
6859
6883
  "input",
6860
6884
  {
6885
+ id: inputId,
6861
6886
  type: "number",
6862
6887
  step,
6863
6888
  value,
6864
6889
  onChange: (event) => onValueChange?.(event.target.value),
6865
6890
  placeholder,
6866
6891
  disabled,
6892
+ required,
6867
6893
  min,
6868
6894
  max,
6869
- 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}`
6895
+ "aria-invalid": error ? true : void 0,
6896
+ "aria-describedby": describedBy,
6897
+ "aria-label": label ? `${label} in ${currencySymbol}` : void 0,
6898
+ 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}`
6870
6899
  }
6871
6900
  )
6872
6901
  ] }) }),
6873
- /* @__PURE__ */ jsxRuntime.jsx(FieldMeta, { hint, error })
6902
+ /* @__PURE__ */ jsxRuntime.jsx(FieldMeta, { hint, error, errorId, hintId })
6874
6903
  ] });
6875
6904
  }
6876
6905
  function FormSelect({
@@ -6884,8 +6913,13 @@ function FormSelect({
6884
6913
  options,
6885
6914
  ...props
6886
6915
  }) {
6916
+ const autoId = React11.useId();
6917
+ const inputId = props.id ?? autoId;
6918
+ const errorId = `${inputId}-error`;
6919
+ const hintId = `${inputId}-hint`;
6920
+ const describedBy = error ? errorId : hint ? hintId : void 0;
6887
6921
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
6888
- label ? /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6922
+ label ? /* @__PURE__ */ jsxRuntime.jsxs("label", { htmlFor: inputId, className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
6889
6923
  label,
6890
6924
  required ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
6891
6925
  ] }) : null,
@@ -6893,12 +6927,16 @@ function FormSelect({
6893
6927
  "select",
6894
6928
  {
6895
6929
  ...props,
6930
+ id: inputId,
6931
+ required,
6932
+ "aria-invalid": error ? true : void 0,
6933
+ "aria-describedby": describedBy,
6896
6934
  className: `w-full bg-transparent ${sizeClasses3[inputSize]} text-gray-900 focus:outline-none dark:text-white ${className}`,
6897
6935
  onChange: (event) => onValueChange?.(event.target.value),
6898
6936
  children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: option.label }, option.value))
6899
6937
  }
6900
6938
  ) }),
6901
- /* @__PURE__ */ jsxRuntime.jsx(FieldMeta, { hint, error })
6939
+ /* @__PURE__ */ jsxRuntime.jsx(FieldMeta, { hint, error, errorId, hintId })
6902
6940
  ] });
6903
6941
  }
6904
6942
  var Form = React11__namespace.default.forwardRef(
@@ -7080,7 +7118,7 @@ function BaseForm({
7080
7118
  color: "ios-glass-blue",
7081
7119
  disabled: isLoading || submitDisabled,
7082
7120
  children: [
7083
- isLoading && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-white border-t-transparent" }),
7121
+ isLoading && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-4 w-4 animate-spin motion-reduce:animate-none rounded-full border-2 border-white border-t-transparent" }),
7084
7122
  submitLabel
7085
7123
  ]
7086
7124
  }
@@ -7401,7 +7439,7 @@ function StepNavigationButtons({
7401
7439
  onClick: onContinue,
7402
7440
  className: `${CONTINUE_BUTTON_CLASSES}${!onBack ? " w-full" : ""}`,
7403
7441
  children: isLoading && showSpinner ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center justify-center gap-2", children: [
7404
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-white border-t-transparent" }),
7442
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-4 w-4 animate-spin motion-reduce:animate-none rounded-full border-2 border-white border-t-transparent" }),
7405
7443
  displayLabel
7406
7444
  ] }) : displayLabel
7407
7445
  }
@@ -7445,7 +7483,7 @@ function SearchFilterToolbar({
7445
7483
  placeholder,
7446
7484
  "aria-label": label,
7447
7485
  "data-testid": "search-input",
7448
- 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"
7486
+ 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"
7449
7487
  }
7450
7488
  )
7451
7489
  ] }),
@@ -8196,8 +8234,8 @@ function AnalysisSkeleton() {
8196
8234
  }
8197
8235
 
8198
8236
  // src/components/skeletons/shimmer.tsx
8199
- 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%]";
8200
- var shimmerWhiteClass = "bg-white/20 animate-pulse";
8237
+ 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%]";
8238
+ var shimmerWhiteClass = "bg-white/20 animate-pulse motion-reduce:animate-none";
8201
8239
  function SectionHeaderSkeleton() {
8202
8240
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
8203
8241
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-10 w-10 rounded-lg ${shimmerClass}` }),
@@ -9013,7 +9051,7 @@ function DynamicIslandConfirm({
9013
9051
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 px-2 py-1", children: [
9014
9052
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-9 w-9 shrink-0 rounded-xl ${iconBackground} flex items-center justify-center`, children: icon ?? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.TrashIcon, { className: "h-5 w-5 text-white" }) }),
9015
9053
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
9016
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] uppercase tracking-wide text-gray-400", children: appName }),
9054
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] uppercase tracking-wide text-gray-500", children: appName }),
9017
9055
  /* @__PURE__ */ jsxRuntime.jsx("p", { id: "dynamic-island-title", className: "text-sm font-semibold", children: title })
9018
9056
  ] })
9019
9057
  ] }),
@@ -9686,7 +9724,7 @@ function BrandedLoader({
9686
9724
  "div",
9687
9725
  {
9688
9726
  className: clsx__default.default(
9689
- "absolute -inset-3 animate-ping rounded-3xl opacity-20",
9727
+ "absolute -inset-3 animate-ping motion-reduce:animate-none rounded-3xl opacity-20",
9690
9728
  `bg-gradient-to-br ${gradient}`
9691
9729
  ),
9692
9730
  style: { animationDuration: "2s" }
@@ -9698,7 +9736,7 @@ function BrandedLoader({
9698
9736
  className: clsx__default.default(
9699
9737
  "absolute -inset-1.5 rounded-[22px] ring-2",
9700
9738
  accentRing,
9701
- "animate-pulse"
9739
+ "animate-pulse motion-reduce:animate-none"
9702
9740
  ),
9703
9741
  style: { animationDuration: "1.5s" }
9704
9742
  }
@@ -9735,7 +9773,7 @@ function BrandedLoader({
9735
9773
  className: clsx__default.default(
9736
9774
  "h-1.5 w-1.5 rounded-full",
9737
9775
  `bg-gradient-to-br ${gradient}`,
9738
- "animate-bounce"
9776
+ "animate-bounce motion-reduce:animate-none"
9739
9777
  ),
9740
9778
  style: { animationDelay: `${i * 150}ms`, animationDuration: "0.8s" }
9741
9779
  },
@@ -9750,7 +9788,7 @@ function BrandedLoader({
9750
9788
  className: clsx__default.default(
9751
9789
  "h-2 w-2 rounded-full",
9752
9790
  `bg-gradient-to-br ${gradient}`,
9753
- "animate-bounce"
9791
+ "animate-bounce motion-reduce:animate-none"
9754
9792
  ),
9755
9793
  style: { animationDelay: `${i * 150}ms`, animationDuration: "0.8s" }
9756
9794
  },
@@ -12800,7 +12838,7 @@ function DataPagination({
12800
12838
  value: params?.limit ?? effectivePageSize,
12801
12839
  onChange: (event) => handlePageSizeChange(event.target.value),
12802
12840
  disabled: loading,
12803
- className: "rounded-xl liquid-surface px-2 py-1.5 text-xs font-medium text-slate-700 outline-none dark:text-slate-300",
12841
+ 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",
12804
12842
  children: pageSizeOptions.map((size) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: size, children: size }, size))
12805
12843
  }
12806
12844
  ),
@@ -12819,7 +12857,7 @@ function DataPagination({
12819
12857
  (page, index) => page === "..." ? /* @__PURE__ */ jsxRuntime.jsx(
12820
12858
  "span",
12821
12859
  {
12822
- className: "inline-flex h-9 w-6 items-center justify-center text-xs text-slate-400",
12860
+ className: "inline-flex h-9 w-6 items-center justify-center text-xs text-slate-500",
12823
12861
  children: "\u2026"
12824
12862
  },
12825
12863
  `ellipsis-${index}`
@@ -14019,6 +14057,20 @@ function PlatformShell({
14019
14057
  extras
14020
14058
  ] });
14021
14059
  }
14060
+ function SkipToContent({
14061
+ targetId = "main-content",
14062
+ label = "Skip to main content"
14063
+ }) {
14064
+ return /* @__PURE__ */ jsxRuntime.jsx(
14065
+ "a",
14066
+ {
14067
+ href: `#${targetId}`,
14068
+ 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",
14069
+ "data-testid": "skip-to-content",
14070
+ children: label
14071
+ }
14072
+ );
14073
+ }
14022
14074
 
14023
14075
  Object.defineProperty(exports, "LOCALE_FLAGS", {
14024
14076
  enumerable: true,
@@ -14238,6 +14290,7 @@ exports.ServerErrorPage = ServerErrorPage;
14238
14290
  exports.SettingsDialog = SettingsDialog;
14239
14291
  exports.SettingsModal = SettingsModal;
14240
14292
  exports.Sheet = Sheet;
14293
+ exports.SkipToContent = SkipToContent;
14241
14294
  exports.SocialLoginButtons = SocialLoginButtons;
14242
14295
  exports.SortableTableHeader = SortableTableHeader;
14243
14296
  exports.Spinner = Spinner;
@@ -14358,5 +14411,5 @@ exports.useGeoMapState = useGeoMapState;
14358
14411
  exports.useNotifications = useNotifications;
14359
14412
  exports.usePlatformShellStore = usePlatformShellStore;
14360
14413
  exports.usePullToRefresh = usePullToRefresh;
14361
- //# sourceMappingURL=chunk-JYX3ILSA.js.map
14362
- //# sourceMappingURL=chunk-JYX3ILSA.js.map
14414
+ //# sourceMappingURL=chunk-WXI7OCNY.js.map
14415
+ //# sourceMappingURL=chunk-WXI7OCNY.js.map