@raydenui/ui 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -5709,11 +5709,7 @@ var Accordion = react.forwardRef(
5709
5709
  "div",
5710
5710
  {
5711
5711
  ref,
5712
- className: cn(
5713
- "w-full",
5714
- type === "nested" && "flex flex-col gap-3",
5715
- className
5716
- ),
5712
+ className: cn("w-full", type === "nested" && "flex flex-col gap-3", className),
5717
5713
  ...rest,
5718
5714
  children
5719
5715
  }
@@ -5734,13 +5730,7 @@ var AccordionItem = react.forwardRef(
5734
5730
  ref,
5735
5731
  className: cn(
5736
5732
  "border-solid transition-colors",
5737
- type === "default" ? cn(
5738
- "border-b",
5739
- isOpen ? "border-primary-300" : "border-grey-100"
5740
- ) : cn(
5741
- "border rounded-[10px]",
5742
- isOpen ? "border-primary-300" : "border-grey-75"
5743
- ),
5733
+ type === "default" ? cn("border-b", isOpen ? "border-primary-300" : "border-grey-100") : cn("border rounded-[10px]", isOpen ? "border-primary-300" : "border-grey-75"),
5744
5734
  className
5745
5735
  ),
5746
5736
  ...rest,
@@ -6001,7 +5991,7 @@ var Input = react.forwardRef(
6001
5991
  disabled && "cursor-not-allowed"
6002
5992
  ),
6003
5993
  children: [
6004
- leadingIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-6 text-grey-400", children: resolveIcon(leadingIcon, "md") }),
5994
+ leadingIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-6 text-grey-400", "aria-hidden": "true", children: resolveIcon(leadingIcon, "md") }),
6005
5995
  /* @__PURE__ */ jsxRuntime.jsx(
6006
5996
  "input",
6007
5997
  {
@@ -6021,7 +6011,7 @@ var Input = react.forwardRef(
6021
6011
  }
6022
6012
  ),
6023
6013
  addonRight && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-sm text-grey-500", children: addonRight }),
6024
- trailingIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-6 text-grey-400", children: resolveIcon(trailingIcon, "md") })
6014
+ trailingIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-6 text-grey-400", "aria-hidden": "true", children: resolveIcon(trailingIcon, "md") })
6025
6015
  ]
6026
6016
  }
6027
6017
  ),
@@ -6061,7 +6051,7 @@ var Input = react.forwardRef(
6061
6051
  readOnly ? "bg-grey-100 border-grey-300" : disabled ? "bg-grey-50 border-grey-200 cursor-not-allowed" : cn("bg-white dark:bg-grey-50", borderColor)
6062
6052
  ),
6063
6053
  children: [
6064
- leadingIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-6 text-grey-400", children: resolveIcon(leadingIcon, "md") }),
6054
+ leadingIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-6 text-grey-400", "aria-hidden": "true", children: resolveIcon(leadingIcon, "md") }),
6065
6055
  /* @__PURE__ */ jsxRuntime.jsx(
6066
6056
  "input",
6067
6057
  {
@@ -6081,7 +6071,7 @@ var Input = react.forwardRef(
6081
6071
  }
6082
6072
  ),
6083
6073
  addonRight && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-sm text-grey-500", children: addonRight }),
6084
- trailingIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-6 text-grey-400", children: resolveIcon(trailingIcon, "md") })
6074
+ trailingIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-6 text-grey-400", "aria-hidden": "true", children: resolveIcon(trailingIcon, "md") })
6085
6075
  ]
6086
6076
  }
6087
6077
  ),
@@ -6519,24 +6509,37 @@ var RaydenChart = react.forwardRef(
6519
6509
  [type, options]
6520
6510
  );
6521
6511
  const ChartComponent = chartComponentMap[type];
6522
- return /* @__PURE__ */ jsxRuntime.jsx(
6523
- "div",
6524
- {
6525
- ref,
6526
- className: cn("relative", className),
6527
- style: { height, width },
6528
- ...rest,
6529
- children: /* @__PURE__ */ jsxRuntime.jsx(ChartComponent, { data, options: mergedOptions })
6530
- }
6531
- );
6512
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("relative", className), style: { height, width }, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(ChartComponent, { data, options: mergedOptions }) });
6532
6513
  }
6533
6514
  );
6534
6515
  RaydenChart.displayName = "RaydenChart";
6535
6516
  function MinusIcon({ className }) {
6536
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 12h14" }) });
6517
+ return /* @__PURE__ */ jsxRuntime.jsx(
6518
+ "svg",
6519
+ {
6520
+ className,
6521
+ viewBox: "0 0 24 24",
6522
+ fill: "none",
6523
+ stroke: "currentColor",
6524
+ strokeWidth: 2,
6525
+ strokeLinecap: "round",
6526
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 12h14" })
6527
+ }
6528
+ );
6537
6529
  }
6538
6530
  function PlusIcon({ className }) {
6539
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 5v14M5 12h14" }) });
6531
+ return /* @__PURE__ */ jsxRuntime.jsx(
6532
+ "svg",
6533
+ {
6534
+ className,
6535
+ viewBox: "0 0 24 24",
6536
+ fill: "none",
6537
+ stroke: "currentColor",
6538
+ strokeWidth: 2,
6539
+ strokeLinecap: "round",
6540
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 5v14M5 12h14" })
6541
+ }
6542
+ );
6540
6543
  }
6541
6544
  var buttonSize = {
6542
6545
  sm: "size-8 rounded-[10px]",
@@ -6614,10 +6617,7 @@ var Counter = react.forwardRef(
6614
6617
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
6615
6618
  "span",
6616
6619
  {
6617
- className: cn(
6618
- "font-medium text-grey-900 text-center leading-[1.45]",
6619
- valueText[size]
6620
- ),
6620
+ className: cn("font-medium text-grey-900 text-center leading-[1.45]", valueText[size]),
6621
6621
  children: val
6622
6622
  }
6623
6623
  ) }),
@@ -6661,14 +6661,15 @@ var NumberCounter = react.forwardRef(
6661
6661
  "div",
6662
6662
  {
6663
6663
  ref,
6664
- className: cn(
6665
- "inline-flex items-center justify-center",
6666
- s.container,
6667
- c.bg,
6668
- className
6669
- ),
6664
+ className: cn("inline-flex items-center justify-center", s.container, c.bg, className),
6670
6665
  ...rest,
6671
- children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold text-center leading-[1.45] tracking-tight", s.text, c.text), children: value })
6666
+ children: /* @__PURE__ */ jsxRuntime.jsx(
6667
+ "span",
6668
+ {
6669
+ className: cn("font-semibold text-center leading-[1.45] tracking-tight", s.text, c.text),
6670
+ children: value
6671
+ }
6672
+ )
6672
6673
  }
6673
6674
  );
6674
6675
  }
@@ -6716,15 +6717,54 @@ function isDateDisabled(date, minDate, maxDate) {
6716
6717
  return false;
6717
6718
  }
6718
6719
  function ChevronLeft({ className }) {
6719
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 3L5 7l4 4" }) });
6720
+ return /* @__PURE__ */ jsxRuntime.jsx(
6721
+ "svg",
6722
+ {
6723
+ className,
6724
+ viewBox: "0 0 14 14",
6725
+ fill: "none",
6726
+ stroke: "currentColor",
6727
+ strokeWidth: 2,
6728
+ strokeLinecap: "round",
6729
+ strokeLinejoin: "round",
6730
+ "aria-hidden": "true",
6731
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 3L5 7l4 4" })
6732
+ }
6733
+ );
6720
6734
  }
6721
6735
  function ChevronRight({ className }) {
6722
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 3l4 4-4 4" }) });
6736
+ return /* @__PURE__ */ jsxRuntime.jsx(
6737
+ "svg",
6738
+ {
6739
+ className,
6740
+ viewBox: "0 0 14 14",
6741
+ fill: "none",
6742
+ stroke: "currentColor",
6743
+ strokeWidth: 2,
6744
+ strokeLinecap: "round",
6745
+ strokeLinejoin: "round",
6746
+ "aria-hidden": "true",
6747
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 3l4 4-4 4" })
6748
+ }
6749
+ );
6723
6750
  }
6724
6751
  function ChevronDown2({ className }) {
6725
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M6 9l6 6 6-6" }) });
6752
+ return /* @__PURE__ */ jsxRuntime.jsx(
6753
+ "svg",
6754
+ {
6755
+ className,
6756
+ viewBox: "0 0 24 24",
6757
+ fill: "none",
6758
+ stroke: "currentColor",
6759
+ strokeWidth: 2,
6760
+ strokeLinecap: "round",
6761
+ strokeLinejoin: "round",
6762
+ "aria-hidden": "true",
6763
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M6 9l6 6 6-6" })
6764
+ }
6765
+ );
6726
6766
  }
6727
- function DayCell({ day, state, onClick }) {
6767
+ function DayCell({ day, state, fullDate, onClick }) {
6728
6768
  const isInteractive = state !== "disabled";
6729
6769
  const cellClasses = cn(
6730
6770
  "flex items-center justify-center w-10 h-10 text-sm font-medium relative select-none",
@@ -6737,6 +6777,13 @@ function DayCell({ day, state, onClick }) {
6737
6777
  state === "today" && "text-grey-900 hover:bg-grey-75 rounded-[10px]",
6738
6778
  isInteractive && "cursor-pointer"
6739
6779
  );
6780
+ const dateLabel = fullDate.toLocaleDateString("en-US", {
6781
+ weekday: "long",
6782
+ year: "numeric",
6783
+ month: "long",
6784
+ day: "numeric"
6785
+ });
6786
+ const stateLabel = state === "today" ? "Today, " : state === "selected" ? "Selected, " : state === "start-range" ? "Start of range, " : state === "end-range" ? "End of range, " : state === "mid-range" ? "In selected range, " : "";
6740
6787
  return /* @__PURE__ */ jsxRuntime.jsxs(
6741
6788
  "button",
6742
6789
  {
@@ -6745,9 +6792,12 @@ function DayCell({ day, state, onClick }) {
6745
6792
  onClick: isInteractive ? onClick : void 0,
6746
6793
  disabled: !isInteractive,
6747
6794
  tabIndex: isInteractive ? 0 : -1,
6795
+ "aria-label": `${stateLabel}${dateLabel}`,
6796
+ "aria-current": state === "today" ? "date" : void 0,
6797
+ "aria-pressed": state === "selected" || state === "start-range" || state === "end-range" ? true : void 0,
6748
6798
  children: [
6749
6799
  day,
6750
- state === "today" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute bottom-[5px] left-1/2 -translate-x-1/2 size-1 rounded-full bg-primary-400" })
6800
+ state === "today" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute bottom-[5px] left-1/2 -translate-x-1/2 size-1 rounded-full bg-primary-400", "aria-hidden": "true" })
6751
6801
  ]
6752
6802
  }
6753
6803
  );
@@ -6803,20 +6853,24 @@ function MonthGrid({
6803
6853
  if (rows.length === 6 && rows[5].every((c) => c.state === "disabled")) {
6804
6854
  rows.pop();
6805
6855
  }
6806
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
6807
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 items-center", children: DAY_LABELS.map((label, i) => /* @__PURE__ */ jsxRuntime.jsx(
6856
+ const fullDayNames = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
6857
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", role: "grid", "aria-label": "Calendar", children: [
6858
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 items-center", role: "row", children: DAY_LABELS.map((label, i) => /* @__PURE__ */ jsxRuntime.jsx(
6808
6859
  "div",
6809
6860
  {
6861
+ role: "columnheader",
6862
+ "aria-label": fullDayNames[i],
6810
6863
  className: "flex items-center justify-center w-10 h-10 text-sm font-medium text-grey-400",
6811
6864
  children: label
6812
6865
  },
6813
6866
  i
6814
6867
  )) }),
6815
- rows.map((row, ri) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 items-center", children: row.map((cell, ci) => /* @__PURE__ */ jsxRuntime.jsx(
6868
+ rows.map((row, ri) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 items-center", role: "row", children: row.map((cell, ci) => /* @__PURE__ */ jsxRuntime.jsx(
6816
6869
  DayCell,
6817
6870
  {
6818
6871
  day: cell.day,
6819
6872
  state: cell.state,
6873
+ fullDate: cell.date,
6820
6874
  onClick: () => onDayClick(cell.date)
6821
6875
  },
6822
6876
  ci
@@ -6832,10 +6886,12 @@ function YearGrid({ baseYear, selectedYear, onYearClick }) {
6832
6886
  for (let i = 0; i < years.length; i += 4) {
6833
6887
  rows.push(years.slice(i, i + 4));
6834
6888
  }
6835
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-2 w-full", children: rows.map((row, ri) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4 h-10 items-center w-full", children: row.map((year) => /* @__PURE__ */ jsxRuntime.jsx(
6889
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-2 w-full", role: "grid", "aria-label": "Year selection", children: rows.map((row, ri) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4 h-10 items-center w-full", role: "row", children: row.map((year) => /* @__PURE__ */ jsxRuntime.jsx(
6836
6890
  "button",
6837
6891
  {
6838
6892
  type: "button",
6893
+ "aria-label": year === selectedYear ? `${year}, selected` : String(year),
6894
+ "aria-pressed": year === selectedYear || void 0,
6839
6895
  className: cn(
6840
6896
  "flex-1 flex items-center justify-center py-2.5 px-4 rounded-[10px] text-sm font-medium cursor-pointer select-none",
6841
6897
  year === selectedYear ? "bg-primary-400 text-white" : "text-grey-900 hover:bg-grey-75"
@@ -6856,6 +6912,9 @@ function NavButton({
6856
6912
  {
6857
6913
  type: "button",
6858
6914
  onClick,
6915
+ "aria-label": direction === "left" ? "Previous month" : "Next month",
6916
+ "aria-hidden": hidden || void 0,
6917
+ tabIndex: hidden ? -1 : void 0,
6859
6918
  className: cn(
6860
6919
  "flex items-center justify-center p-2 rounded-lg bg-grey-75 hover:bg-grey-200 transition-colors cursor-pointer",
6861
6920
  hidden && "opacity-0 pointer-events-none"
@@ -7350,37 +7409,91 @@ function ProgressCircle({
7350
7409
  var statusColors = {
7351
7410
  information: {
7352
7411
  bold: { bg: "bg-[#4a9fed]", divider: "bg-[#f0f7ff]" },
7353
- subtle: { bg: "bg-[#f0f7ff]", text: "text-grey-900", descText: "text-grey-600", divider: "bg-[#0063ad]" }
7412
+ subtle: {
7413
+ bg: "bg-[#f0f7ff]",
7414
+ text: "text-grey-900",
7415
+ descText: "text-grey-600",
7416
+ divider: "bg-[#0063ad]"
7417
+ }
7354
7418
  },
7355
7419
  success: {
7356
7420
  bold: { bg: "bg-success-400", divider: "bg-success-50" },
7357
- subtle: { bg: "bg-success-50", text: "text-grey-900", descText: "text-grey-600", divider: "bg-success-400" }
7421
+ subtle: {
7422
+ bg: "bg-success-50",
7423
+ text: "text-grey-900",
7424
+ descText: "text-grey-600",
7425
+ divider: "bg-success-400"
7426
+ }
7358
7427
  },
7359
7428
  error: {
7360
7429
  bold: { bg: "bg-error-400", divider: "bg-error-50" },
7361
- subtle: { bg: "bg-error-50", text: "text-grey-900", descText: "text-grey-600", divider: "bg-error-400" }
7430
+ subtle: {
7431
+ bg: "bg-error-50",
7432
+ text: "text-grey-900",
7433
+ descText: "text-grey-600",
7434
+ divider: "bg-error-400"
7435
+ }
7362
7436
  },
7363
7437
  warning: {
7364
7438
  bold: { bg: "bg-warning-400", divider: "bg-warning-50" },
7365
- subtle: { bg: "bg-warning-50", text: "text-grey-900", descText: "text-grey-600", divider: "bg-warning-700" }
7439
+ subtle: {
7440
+ bg: "bg-warning-50",
7441
+ text: "text-grey-900",
7442
+ descText: "text-grey-600",
7443
+ divider: "bg-warning-700"
7444
+ }
7366
7445
  },
7367
7446
  feature: {
7368
7447
  bold: { bg: "bg-grey-900", divider: "bg-grey-100" },
7369
- subtle: { bg: "bg-grey-50", text: "text-black", descText: "text-black", divider: "bg-grey-300" }
7448
+ subtle: {
7449
+ bg: "bg-grey-50",
7450
+ text: "text-black",
7451
+ descText: "text-black",
7452
+ divider: "bg-grey-300"
7453
+ }
7370
7454
  },
7371
7455
  opportunity: {
7372
7456
  bold: { bg: "bg-[#475ccc]", divider: "bg-[#b1bae9]" },
7373
- subtle: { bg: "bg-[#f7f8fd]", text: "text-grey-900", descText: "text-grey-600", divider: "bg-[#b1bae9]" }
7457
+ subtle: {
7458
+ bg: "bg-[#f7f8fd]",
7459
+ text: "text-grey-900",
7460
+ descText: "text-grey-600",
7461
+ divider: "bg-[#b1bae9]"
7462
+ }
7374
7463
  }
7375
7464
  };
7376
7465
  function InfoIcon({ className }) {
7377
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [
7378
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
7379
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 16v-4M12 8h.01" })
7380
- ] });
7466
+ return /* @__PURE__ */ jsxRuntime.jsxs(
7467
+ "svg",
7468
+ {
7469
+ className,
7470
+ viewBox: "0 0 24 24",
7471
+ fill: "none",
7472
+ stroke: "currentColor",
7473
+ strokeWidth: 2,
7474
+ strokeLinecap: "round",
7475
+ strokeLinejoin: "round",
7476
+ children: [
7477
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
7478
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 16v-4M12 8h.01" })
7479
+ ]
7480
+ }
7481
+ );
7381
7482
  }
7382
7483
  function CloseIcon({ className }) {
7383
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18 6L6 18M6 6l12 12" }) });
7484
+ return /* @__PURE__ */ jsxRuntime.jsx(
7485
+ "svg",
7486
+ {
7487
+ className,
7488
+ viewBox: "0 0 24 24",
7489
+ fill: "none",
7490
+ stroke: "currentColor",
7491
+ strokeWidth: 2,
7492
+ strokeLinecap: "round",
7493
+ strokeLinejoin: "round",
7494
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18 6L6 18M6 6l12 12" })
7495
+ }
7496
+ );
7384
7497
  }
7385
7498
  var Banner = react.forwardRef(
7386
7499
  ({
@@ -7420,7 +7533,13 @@ var Banner = react.forwardRef(
7420
7533
  children: [
7421
7534
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-1 items-center", size === "sm" ? "gap-2" : "gap-3"), children: [
7422
7535
  icon ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("shrink-0", iconSize4, textColor), children: resolveIcon(icon, size === "sm" ? "sm" : "md") }) : /* @__PURE__ */ jsxRuntime.jsx(InfoIcon, { className: cn("shrink-0", iconSize4, textColor) }),
7423
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold leading-[1.45] whitespace-nowrap", textSize2, textColor), children: title }),
7536
+ /* @__PURE__ */ jsxRuntime.jsx(
7537
+ "span",
7538
+ {
7539
+ className: cn("font-semibold leading-[1.45] whitespace-nowrap", textSize2, textColor),
7540
+ children: title
7541
+ }
7542
+ ),
7424
7543
  description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("leading-[1.45] whitespace-nowrap", textSize2, descColor), children: description }),
7425
7544
  buttonLabel && /* @__PURE__ */ jsxRuntime.jsx(
7426
7545
  "button",
@@ -8071,10 +8190,34 @@ var Toggle = react.forwardRef(
8071
8190
  );
8072
8191
  Toggle.displayName = "Toggle";
8073
8192
  function ChevronRight3({ className }) {
8074
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7.5 5l5 5-5 5" }) });
8193
+ return /* @__PURE__ */ jsxRuntime.jsx(
8194
+ "svg",
8195
+ {
8196
+ className,
8197
+ viewBox: "0 0 20 20",
8198
+ fill: "none",
8199
+ stroke: "currentColor",
8200
+ strokeWidth: 2,
8201
+ strokeLinecap: "round",
8202
+ strokeLinejoin: "round",
8203
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7.5 5l5 5-5 5" })
8204
+ }
8205
+ );
8075
8206
  }
8076
8207
  function DoubleChevronRight({ className }) {
8077
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5.5 5l5 5-5 5M10.5 5l5 5-5 5" }) });
8208
+ return /* @__PURE__ */ jsxRuntime.jsx(
8209
+ "svg",
8210
+ {
8211
+ className,
8212
+ viewBox: "0 0 20 20",
8213
+ fill: "none",
8214
+ stroke: "currentColor",
8215
+ strokeWidth: 2,
8216
+ strokeLinecap: "round",
8217
+ strokeLinejoin: "round",
8218
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5.5 5l5 5-5 5M10.5 5l5 5-5 5" })
8219
+ }
8220
+ );
8078
8221
  }
8079
8222
  function SeparatorElement({ type }) {
8080
8223
  switch (type) {
@@ -8097,11 +8240,7 @@ function Breadcrumb({
8097
8240
  "nav",
8098
8241
  {
8099
8242
  "aria-label": "Breadcrumb",
8100
- className: cn(
8101
- "py-2.5",
8102
- hasBorders && "border-y border-grey-100",
8103
- className
8104
- ),
8243
+ className: cn("py-2.5", hasBorders && "border-y border-grey-100", className),
8105
8244
  ...rest,
8106
8245
  children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "flex items-center gap-4 text-sm font-medium", children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-4", children: [
8107
8246
  i > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(SeparatorElement, { type: separator }) }),
@@ -8274,13 +8413,37 @@ var AvatarGroup = react.forwardRef(
8274
8413
  );
8275
8414
  AvatarGroup.displayName = "AvatarGroup";
8276
8415
  function CloseIcon2({ className }) {
8277
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 3L3 9M3 3l6 6" }) });
8416
+ return /* @__PURE__ */ jsxRuntime.jsx(
8417
+ "svg",
8418
+ {
8419
+ className,
8420
+ viewBox: "0 0 12 12",
8421
+ fill: "none",
8422
+ stroke: "currentColor",
8423
+ strokeWidth: 1.5,
8424
+ strokeLinecap: "round",
8425
+ strokeLinejoin: "round",
8426
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 3L3 9M3 3l6 6" })
8427
+ }
8428
+ );
8278
8429
  }
8279
8430
  function BoxIcon({ className }) {
8280
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 1.2, strokeLinecap: "round", strokeLinejoin: "round", children: [
8281
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2.67 4.67L8 7.33l5.33-2.66M8 14V7.33" }),
8282
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M13.33 10.67V5.33a1.33 1.33 0 00-.66-1.15L8.67 2a1.33 1.33 0 00-1.34 0L3.33 4.18A1.33 1.33 0 002.67 5.33v5.34a1.33 1.33 0 00.66 1.15L7.33 14a1.33 1.33 0 001.34 0l4-2.18a1.33 1.33 0 00.66-1.15z" })
8283
- ] });
8431
+ return /* @__PURE__ */ jsxRuntime.jsxs(
8432
+ "svg",
8433
+ {
8434
+ className,
8435
+ viewBox: "0 0 16 16",
8436
+ fill: "none",
8437
+ stroke: "currentColor",
8438
+ strokeWidth: 1.2,
8439
+ strokeLinecap: "round",
8440
+ strokeLinejoin: "round",
8441
+ children: [
8442
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2.67 4.67L8 7.33l5.33-2.66M8 14V7.33" }),
8443
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M13.33 10.67V5.33a1.33 1.33 0 00-.66-1.15L8.67 2a1.33 1.33 0 00-1.34 0L3.33 4.18A1.33 1.33 0 002.67 5.33v5.34a1.33 1.33 0 00.66 1.15L7.33 14a1.33 1.33 0 001.34 0l4-2.18a1.33 1.33 0 00.66-1.15z" })
8444
+ ]
8445
+ }
8446
+ );
8284
8447
  }
8285
8448
  var sizeClasses2 = {
8286
8449
  sm: "w-[400px]",
@@ -8871,6 +9034,8 @@ var FileUploadDropZone = react.forwardRef(
8871
9034
  "div",
8872
9035
  {
8873
9036
  ref,
9037
+ role: "region",
9038
+ "aria-label": "File upload dropzone",
8874
9039
  className: cn(
8875
9040
  "flex flex-col items-center justify-center rounded-xl p-8 transition-colors",
8876
9041
  state === "dragging" ? "border-2 border-dashed border-primary-400 bg-primary-50/10" : state === "uploading" || state === "success" || state === "error" ? "border border-grey-200 bg-white dark:bg-grey-50" : "border-2 border-dashed border-grey-300 bg-white dark:bg-grey-50",
@@ -8891,11 +9056,12 @@ var FileUploadDropZone = react.forwardRef(
8891
9056
  multiple,
8892
9057
  onChange: handleFileChange,
8893
9058
  className: "sr-only",
8894
- tabIndex: -1
9059
+ tabIndex: -1,
9060
+ "aria-label": multiple ? "Choose files to upload" : "Choose file to upload"
8895
9061
  }
8896
9062
  ),
8897
9063
  (state === "default" || state === "dragging") && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", children: [
8898
- /* @__PURE__ */ jsxRuntime.jsx(UploadStateIcon, { state: "default", size: 56 }),
9064
+ /* @__PURE__ */ jsxRuntime.jsx(UploadStateIcon, { state: "default", size: 56, "aria-hidden": "true" }),
8899
9065
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-1", children: [
8900
9066
  /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-body-sm font-medium text-grey-600", children: [
8901
9067
  "Click to upload ",
@@ -8905,12 +9071,12 @@ var FileUploadDropZone = react.forwardRef(
8905
9071
  ] }),
8906
9072
  /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "primary", size: "sm", onClick: handleBrowse, children: "Browse Files" })
8907
9073
  ] }),
8908
- state === "uploading" && uploadingFile && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col items-center gap-4", children: [
8909
- /* @__PURE__ */ jsxRuntime.jsx(FileTypeIcon, { type: getFileType(uploadingFile.name) }),
9074
+ state === "uploading" && uploadingFile && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col items-center gap-4", "aria-live": "polite", "aria-atomic": "true", children: [
9075
+ /* @__PURE__ */ jsxRuntime.jsx(FileTypeIcon, { type: getFileType(uploadingFile.name), "aria-hidden": "true" }),
8910
9076
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full max-w-xs flex-col gap-2", children: [
8911
9077
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
8912
9078
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-body-sm font-medium text-grey-700 truncate", children: uploadingFile.name }),
8913
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-body-xs font-medium text-grey-500 ml-2 shrink-0", children: [
9079
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-body-xs font-medium text-grey-500 ml-2 shrink-0", "aria-label": `Upload progress: ${Math.round(uploadingFile.progress)} percent`, children: [
8914
9080
  Math.round(uploadingFile.progress),
8915
9081
  "%"
8916
9082
  ] })
@@ -8918,8 +9084,8 @@ var FileUploadDropZone = react.forwardRef(
8918
9084
  /* @__PURE__ */ jsxRuntime.jsx(ProgressBar, { value: uploadingFile.progress, size: "sm", showPercentage: false })
8919
9085
  ] })
8920
9086
  ] }),
8921
- state === "success" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", children: [
8922
- /* @__PURE__ */ jsxRuntime.jsx(UploadStateIcon, { state: "success", size: 56 }),
9087
+ state === "success" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", role: "status", children: [
9088
+ /* @__PURE__ */ jsxRuntime.jsx(UploadStateIcon, { state: "success", size: 56, "aria-hidden": "true" }),
8923
9089
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-center gap-1", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-body-sm font-semibold text-grey-800", children: "Document Uploaded Successfully" }) }),
8924
9090
  /* @__PURE__ */ jsxRuntime.jsx(
8925
9091
  "button",
@@ -8931,8 +9097,8 @@ var FileUploadDropZone = react.forwardRef(
8931
9097
  }
8932
9098
  )
8933
9099
  ] }),
8934
- state === "error" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", children: [
8935
- /* @__PURE__ */ jsxRuntime.jsx(UploadStateIcon, { state: "error", size: 56 }),
9100
+ state === "error" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", role: "alert", children: [
9101
+ /* @__PURE__ */ jsxRuntime.jsx(UploadStateIcon, { state: "error", size: 56, "aria-hidden": "true" }),
8936
9102
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-1", children: [
8937
9103
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-body-sm font-semibold text-grey-800", children: "Failed to Upload" }),
8938
9104
  errorMessage && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-body-xs text-grey-400", children: errorMessage })
@@ -9264,7 +9430,7 @@ var SidebarMenu = react.forwardRef(
9264
9430
  "nav",
9265
9431
  {
9266
9432
  ref,
9267
- role: "navigation",
9433
+ "aria-label": "Main navigation",
9268
9434
  className: cn(
9269
9435
  "flex flex-col gap-3 overflow-y-auto rounded-xl py-6",
9270
9436
  ts.container,
@@ -9354,7 +9520,7 @@ var SidebarMenuItem = react.forwardRef(
9354
9520
  onClick: () => {
9355
9521
  if (!disabled && !isExpandable) onSelect(value);
9356
9522
  },
9357
- title: typeof labelContent === "string" ? labelContent : void 0,
9523
+ "aria-label": typeof labelContent === "string" ? labelContent : void 0,
9358
9524
  className: cn(
9359
9525
  "flex size-11 cursor-pointer items-center justify-center rounded transition-colors",
9360
9526
  highlighted ? cn(ts.selectedBg, ts.selectedIcon) : cn(ts.defaultIcon, ts.hoverBg),
@@ -9373,6 +9539,8 @@ var SidebarMenuItem = react.forwardRef(
9373
9539
  ref,
9374
9540
  type: "button",
9375
9541
  role: "menuitem",
9542
+ "aria-expanded": isExpandable ? open : void 0,
9543
+ "aria-haspopup": isExpandable ? "menu" : void 0,
9376
9544
  disabled,
9377
9545
  onClick: handleClick,
9378
9546
  className: cn(
@@ -9400,6 +9568,7 @@ var SidebarMenuItem = react.forwardRef(
9400
9568
  {
9401
9569
  name: open ? "chevron-up" : "chevron-down",
9402
9570
  size: "sm",
9571
+ "aria-hidden": "true",
9403
9572
  className: cn(
9404
9573
  "ml-1 shrink-0 transition-transform",
9405
9574
  highlighted ? ts.selectedIcon : ts.defaultIcon
@@ -12864,6 +13033,7 @@ var TableHead = react.forwardRef(
12864
13033
  {
12865
13034
  name: sortDirection === "asc" ? "chevron-up" : "chevron-down",
12866
13035
  size: "sm",
13036
+ "aria-hidden": "true",
12867
13037
  className: cn("shrink-0", sortDirection ? "text-grey-700" : "text-grey-400")
12868
13038
  }
12869
13039
  )
@@ -13133,8 +13303,33 @@ function ThinSpinner({ size, color }) {
13133
13303
  const r = size / 2 - 2;
13134
13304
  const c = size / 2;
13135
13305
  return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, className: "animate-spin", children: [
13136
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: c, cy: c, r, fill: "none", stroke: "currentColor", strokeWidth: 1.5, opacity: 0.2, className: color }),
13137
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: c, cy: c, r, fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeDasharray: `${r * Math.PI * 0.75} ${r * Math.PI * 1.25}`, strokeLinecap: "round", className: color })
13306
+ /* @__PURE__ */ jsxRuntime.jsx(
13307
+ "circle",
13308
+ {
13309
+ cx: c,
13310
+ cy: c,
13311
+ r,
13312
+ fill: "none",
13313
+ stroke: "currentColor",
13314
+ strokeWidth: 1.5,
13315
+ opacity: 0.2,
13316
+ className: color
13317
+ }
13318
+ ),
13319
+ /* @__PURE__ */ jsxRuntime.jsx(
13320
+ "circle",
13321
+ {
13322
+ cx: c,
13323
+ cy: c,
13324
+ r,
13325
+ fill: "none",
13326
+ stroke: "currentColor",
13327
+ strokeWidth: 1.5,
13328
+ strokeDasharray: `${r * Math.PI * 0.75} ${r * Math.PI * 1.25}`,
13329
+ strokeLinecap: "round",
13330
+ className: color
13331
+ }
13332
+ )
13138
13333
  ] });
13139
13334
  }
13140
13335
  function BoldSpinner({ size, color }) {
@@ -13142,8 +13337,33 @@ function BoldSpinner({ size, color }) {
13142
13337
  const r = size / 2 - sw;
13143
13338
  const c = size / 2;
13144
13339
  return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, className: "animate-spin", children: [
13145
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: c, cy: c, r, fill: "none", stroke: "currentColor", strokeWidth: sw, opacity: 0.2, className: color }),
13146
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: c, cy: c, r, fill: "none", stroke: "currentColor", strokeWidth: sw, strokeDasharray: `${r * Math.PI * 0.75} ${r * Math.PI * 1.25}`, strokeLinecap: "round", className: color })
13340
+ /* @__PURE__ */ jsxRuntime.jsx(
13341
+ "circle",
13342
+ {
13343
+ cx: c,
13344
+ cy: c,
13345
+ r,
13346
+ fill: "none",
13347
+ stroke: "currentColor",
13348
+ strokeWidth: sw,
13349
+ opacity: 0.2,
13350
+ className: color
13351
+ }
13352
+ ),
13353
+ /* @__PURE__ */ jsxRuntime.jsx(
13354
+ "circle",
13355
+ {
13356
+ cx: c,
13357
+ cy: c,
13358
+ r,
13359
+ fill: "none",
13360
+ stroke: "currentColor",
13361
+ strokeWidth: sw,
13362
+ strokeDasharray: `${r * Math.PI * 0.75} ${r * Math.PI * 1.25}`,
13363
+ strokeLinecap: "round",
13364
+ className: color
13365
+ }
13366
+ )
13147
13367
  ] });
13148
13368
  }
13149
13369
  function DuoToneSpinner({ size, color }) {
@@ -13151,8 +13371,33 @@ function DuoToneSpinner({ size, color }) {
13151
13371
  const r = size / 2 - sw;
13152
13372
  const c = size / 2;
13153
13373
  return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, className: "animate-spin", children: [
13154
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: c, cy: c, r, fill: "none", stroke: "currentColor", strokeWidth: sw, opacity: 0.15, className: color }),
13155
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: c, cy: c, r, fill: "none", stroke: "currentColor", strokeWidth: sw, strokeDasharray: `${r * Math.PI} ${r * Math.PI}`, strokeLinecap: "round", className: color })
13374
+ /* @__PURE__ */ jsxRuntime.jsx(
13375
+ "circle",
13376
+ {
13377
+ cx: c,
13378
+ cy: c,
13379
+ r,
13380
+ fill: "none",
13381
+ stroke: "currentColor",
13382
+ strokeWidth: sw,
13383
+ opacity: 0.15,
13384
+ className: color
13385
+ }
13386
+ ),
13387
+ /* @__PURE__ */ jsxRuntime.jsx(
13388
+ "circle",
13389
+ {
13390
+ cx: c,
13391
+ cy: c,
13392
+ r,
13393
+ fill: "none",
13394
+ stroke: "currentColor",
13395
+ strokeWidth: sw,
13396
+ strokeDasharray: `${r * Math.PI} ${r * Math.PI}`,
13397
+ strokeLinecap: "round",
13398
+ className: color
13399
+ }
13400
+ )
13156
13401
  ] });
13157
13402
  }
13158
13403
  function BufferingThinSpinner({ size, color }) {
@@ -13160,8 +13405,33 @@ function BufferingThinSpinner({ size, color }) {
13160
13405
  const c = size / 2;
13161
13406
  const circumference = 2 * Math.PI * r;
13162
13407
  return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [
13163
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: c, cy: c, r, fill: "none", stroke: "currentColor", strokeWidth: 1.5, opacity: 0.2, className: color }),
13164
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: c, cy: c, r, fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", className: cn(color, "animate-[spinner-dash_1.5s_ease-in-out_infinite]"), style: { strokeDasharray: circumference, transformOrigin: "center" } })
13408
+ /* @__PURE__ */ jsxRuntime.jsx(
13409
+ "circle",
13410
+ {
13411
+ cx: c,
13412
+ cy: c,
13413
+ r,
13414
+ fill: "none",
13415
+ stroke: "currentColor",
13416
+ strokeWidth: 1.5,
13417
+ opacity: 0.2,
13418
+ className: color
13419
+ }
13420
+ ),
13421
+ /* @__PURE__ */ jsxRuntime.jsx(
13422
+ "circle",
13423
+ {
13424
+ cx: c,
13425
+ cy: c,
13426
+ r,
13427
+ fill: "none",
13428
+ stroke: "currentColor",
13429
+ strokeWidth: 1.5,
13430
+ strokeLinecap: "round",
13431
+ className: cn(color, "animate-[spinner-dash_1.5s_ease-in-out_infinite]"),
13432
+ style: { strokeDasharray: circumference, transformOrigin: "center" }
13433
+ }
13434
+ )
13165
13435
  ] });
13166
13436
  }
13167
13437
  function BufferingBoldSpinner({ size, color }) {
@@ -13170,8 +13440,33 @@ function BufferingBoldSpinner({ size, color }) {
13170
13440
  const c = size / 2;
13171
13441
  const circumference = 2 * Math.PI * r;
13172
13442
  return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [
13173
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: c, cy: c, r, fill: "none", stroke: "currentColor", strokeWidth: sw, opacity: 0.2, className: color }),
13174
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: c, cy: c, r, fill: "none", stroke: "currentColor", strokeWidth: sw, strokeLinecap: "round", className: cn(color, "animate-[spinner-dash_1.5s_ease-in-out_infinite]"), style: { strokeDasharray: circumference, transformOrigin: "center" } })
13443
+ /* @__PURE__ */ jsxRuntime.jsx(
13444
+ "circle",
13445
+ {
13446
+ cx: c,
13447
+ cy: c,
13448
+ r,
13449
+ fill: "none",
13450
+ stroke: "currentColor",
13451
+ strokeWidth: sw,
13452
+ opacity: 0.2,
13453
+ className: color
13454
+ }
13455
+ ),
13456
+ /* @__PURE__ */ jsxRuntime.jsx(
13457
+ "circle",
13458
+ {
13459
+ cx: c,
13460
+ cy: c,
13461
+ r,
13462
+ fill: "none",
13463
+ stroke: "currentColor",
13464
+ strokeWidth: sw,
13465
+ strokeLinecap: "round",
13466
+ className: cn(color, "animate-[spinner-dash_1.5s_ease-in-out_infinite]"),
13467
+ style: { strokeDasharray: circumference, transformOrigin: "center" }
13468
+ }
13469
+ )
13175
13470
  ] });
13176
13471
  }
13177
13472
  function DotSpinner({ size, color }) {
@@ -13182,14 +13477,36 @@ function DotSpinner({ size, color }) {
13182
13477
  const angle = i * 45 * Math.PI / 180;
13183
13478
  const x = c + r * Math.cos(angle);
13184
13479
  const y = c + r * Math.sin(angle);
13185
- return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: x, cy: y, r: dotSize / 2, fill: "currentColor", opacity: 0.15 + i / 8 * 0.85, className: color }, i);
13480
+ return /* @__PURE__ */ jsxRuntime.jsx(
13481
+ "circle",
13482
+ {
13483
+ cx: x,
13484
+ cy: y,
13485
+ r: dotSize / 2,
13486
+ fill: "currentColor",
13487
+ opacity: 0.15 + i / 8 * 0.85,
13488
+ className: color
13489
+ },
13490
+ i
13491
+ );
13186
13492
  }) });
13187
13493
  }
13188
13494
  function JugglingSpinner({ size, color }) {
13189
13495
  const dotSize = Math.max(3, size * 0.18);
13190
13496
  return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [0, 1, 2].map((i) => {
13191
13497
  const cx = size / 2 + (i - 1) * (size * 0.35);
13192
- return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: size / 2, r: dotSize / 2, fill: "currentColor", className: cn(color, "animate-[juggle_1.4s_ease-in-out_infinite]"), style: { animationDelay: `${i * 0.16}s` } }, i);
13498
+ return /* @__PURE__ */ jsxRuntime.jsx(
13499
+ "circle",
13500
+ {
13501
+ cx,
13502
+ cy: size / 2,
13503
+ r: dotSize / 2,
13504
+ fill: "currentColor",
13505
+ className: cn(color, "animate-[juggle_1.4s_ease-in-out_infinite]"),
13506
+ style: { animationDelay: `${i * 0.16}s` }
13507
+ },
13508
+ i
13509
+ );
13193
13510
  }) });
13194
13511
  }
13195
13512
  var Spinner = react.forwardRef(
@@ -13248,7 +13565,19 @@ var Spinner = react.forwardRef(
13248
13565
  );
13249
13566
  Spinner.displayName = "Spinner";
13250
13567
  function CheckIcon({ className }) {
13251
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 3, strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 12l5 5L20 7" }) });
13568
+ return /* @__PURE__ */ jsxRuntime.jsx(
13569
+ "svg",
13570
+ {
13571
+ className,
13572
+ viewBox: "0 0 24 24",
13573
+ fill: "none",
13574
+ stroke: "currentColor",
13575
+ strokeWidth: 3,
13576
+ strokeLinecap: "round",
13577
+ strokeLinejoin: "round",
13578
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 12l5 5L20 7" })
13579
+ }
13580
+ );
13252
13581
  }
13253
13582
  function StepCircle({
13254
13583
  status,
@@ -13277,7 +13606,16 @@ function StepCircle({
13277
13606
  isActive ? "bg-primary-400 border-primary-400" : isDisabled ? "bg-grey-300 border-grey-300" : "bg-grey-400 border-grey-300"
13278
13607
  )
13279
13608
  }
13280
- ) : indicator === "number" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-xs font-medium", isActive ? "text-primary-400" : isDisabled ? "text-grey-300" : "text-grey-500"), children: stepNumber }) : icon ?? /* @__PURE__ */ jsxRuntime.jsx(
13609
+ ) : indicator === "number" ? /* @__PURE__ */ jsxRuntime.jsx(
13610
+ "span",
13611
+ {
13612
+ className: cn(
13613
+ "text-xs font-medium",
13614
+ isActive ? "text-primary-400" : isDisabled ? "text-grey-300" : "text-grey-500"
13615
+ ),
13616
+ children: stepNumber
13617
+ }
13618
+ ) : icon ?? /* @__PURE__ */ jsxRuntime.jsx(
13281
13619
  "div",
13282
13620
  {
13283
13621
  className: cn(
@@ -13293,7 +13631,20 @@ function Connector({
13293
13631
  orientation,
13294
13632
  completed
13295
13633
  }) {
13296
- return orientation === "horizontal" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex-1 h-0.5 rounded-full", completed ? "bg-primary-400" : "bg-grey-300") }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-0.5 flex-1 min-h-[20px] ml-[11px] rounded-full", completed ? "bg-primary-400" : "bg-grey-300") });
13634
+ return orientation === "horizontal" ? /* @__PURE__ */ jsxRuntime.jsx(
13635
+ "div",
13636
+ {
13637
+ className: cn("flex-1 h-0.5 rounded-full", completed ? "bg-primary-400" : "bg-grey-300")
13638
+ }
13639
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
13640
+ "div",
13641
+ {
13642
+ className: cn(
13643
+ "w-0.5 flex-1 min-h-[20px] ml-[11px] rounded-full",
13644
+ completed ? "bg-primary-400" : "bg-grey-300"
13645
+ )
13646
+ }
13647
+ );
13297
13648
  }
13298
13649
  function resolveStatuses(steps, activeStep) {
13299
13650
  if (activeStep !== void 0) {
@@ -13307,14 +13658,7 @@ function resolveStatuses(steps, activeStep) {
13307
13658
  return steps.map((s) => s.status ?? "incomplete");
13308
13659
  }
13309
13660
  var Stepper = react.forwardRef(
13310
- ({
13311
- steps,
13312
- activeStep,
13313
- orientation = "horizontal",
13314
- indicator = "dot",
13315
- className,
13316
- ...rest
13317
- }, ref) => {
13661
+ ({ steps, activeStep, orientation = "horizontal", indicator = "dot", className, ...rest }, ref) => {
13318
13662
  const statuses = resolveStatuses(steps, activeStep);
13319
13663
  if (orientation === "vertical") {
13320
13664
  return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("flex flex-col", className), ...rest, children: steps.map((step, i) => {
@@ -13322,7 +13666,15 @@ var Stepper = react.forwardRef(
13322
13666
  const isLast = i === steps.length - 1;
13323
13667
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3", children: [
13324
13668
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
13325
- /* @__PURE__ */ jsxRuntime.jsx(StepCircle, { status, indicator, stepNumber: i + 1, icon: step.icon }),
13669
+ /* @__PURE__ */ jsxRuntime.jsx(
13670
+ StepCircle,
13671
+ {
13672
+ status,
13673
+ indicator,
13674
+ stepNumber: i + 1,
13675
+ icon: step.icon
13676
+ }
13677
+ ),
13326
13678
  !isLast && /* @__PURE__ */ jsxRuntime.jsx(Connector, { orientation: "vertical", completed: status === "completed" })
13327
13679
  ] }),
13328
13680
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col pb-6", children: [
@@ -13346,8 +13698,22 @@ var Stepper = react.forwardRef(
13346
13698
  const isLast = i === steps.length - 1;
13347
13699
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col flex-1 items-center gap-2.5", children: [
13348
13700
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 w-full", children: [
13349
- /* @__PURE__ */ jsxRuntime.jsx(Connector, { orientation: "horizontal", completed: i > 0 && statuses[i - 1] === "completed" }),
13350
- /* @__PURE__ */ jsxRuntime.jsx(StepCircle, { status, indicator, stepNumber: i + 1, icon: step.icon }),
13701
+ /* @__PURE__ */ jsxRuntime.jsx(
13702
+ Connector,
13703
+ {
13704
+ orientation: "horizontal",
13705
+ completed: i > 0 && statuses[i - 1] === "completed"
13706
+ }
13707
+ ),
13708
+ /* @__PURE__ */ jsxRuntime.jsx(
13709
+ StepCircle,
13710
+ {
13711
+ status,
13712
+ indicator,
13713
+ stepNumber: i + 1,
13714
+ icon: step.icon
13715
+ }
13716
+ ),
13351
13717
  /* @__PURE__ */ jsxRuntime.jsx(Connector, { orientation: "horizontal", completed: !isLast && status === "completed" })
13352
13718
  ] }),
13353
13719
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5 text-center w-full", children: [
@@ -13718,6 +14084,8 @@ var Select = react.forwardRef(
13718
14084
  const [open, setOpen] = react.useState(false);
13719
14085
  const value = controlledValue ?? internalValue;
13720
14086
  const listboxId = react.useId();
14087
+ const labelId = react.useId();
14088
+ const helperId = react.useId();
13721
14089
  const containerRef = react.useRef(null);
13722
14090
  const triggerRef = react.useRef(null);
13723
14091
  const listRef = react.useRef(null);
@@ -13814,7 +14182,7 @@ var Select = react.forwardRef(
13814
14182
  className: cn("relative flex flex-col gap-2 w-full", wrapperClassName),
13815
14183
  ...rest,
13816
14184
  children: [
13817
- label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-grey-900 leading-[1.45]", children: label }),
14185
+ label && /* @__PURE__ */ jsxRuntime.jsx("label", { id: labelId, className: "text-sm font-medium text-grey-900 leading-[1.45]", children: label }),
13818
14186
  /* @__PURE__ */ jsxRuntime.jsxs(
13819
14187
  "button",
13820
14188
  {
@@ -13824,6 +14192,8 @@ var Select = react.forwardRef(
13824
14192
  "aria-expanded": open,
13825
14193
  "aria-haspopup": "listbox",
13826
14194
  "aria-controls": listboxId,
14195
+ "aria-labelledby": label ? labelId : void 0,
14196
+ "aria-describedby": helperText ? helperId : void 0,
13827
14197
  disabled,
13828
14198
  onClick: () => !disabled && setOpen(!open),
13829
14199
  className: cn(
@@ -13850,6 +14220,7 @@ var Select = react.forwardRef(
13850
14220
  {
13851
14221
  name: "chevron-down",
13852
14222
  size: "md",
14223
+ "aria-hidden": "true",
13853
14224
  className: cn(
13854
14225
  "shrink-0 transition-transform",
13855
14226
  open && "rotate-180",
@@ -13860,7 +14231,7 @@ var Select = react.forwardRef(
13860
14231
  ]
13861
14232
  }
13862
14233
  ),
13863
- helperText && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-grey-500 leading-[1.45]", children: helperText }),
14234
+ helperText && /* @__PURE__ */ jsxRuntime.jsx("p", { id: helperId, className: "text-sm text-grey-500 leading-[1.45]", children: helperText }),
13864
14235
  open && /* @__PURE__ */ jsxRuntime.jsx(SelectContext.Provider, { value: { value, onSelect, open }, children: /* @__PURE__ */ jsxRuntime.jsx(
13865
14236
  "div",
13866
14237
  {
@@ -13964,7 +14335,7 @@ var ActivityItem = react.forwardRef(
13964
14335
  }, ref) => {
13965
14336
  const hasConnectorAbove = connector === "middle" || connector === "last";
13966
14337
  const hasConnectorBelow = connector === "top" || connector === "middle";
13967
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn("flex gap-3 items-start", className), ...rest, children: [
14338
+ return /* @__PURE__ */ jsxRuntime.jsxs("article", { ref, className: cn("flex gap-3 items-start", className), ...rest, children: [
13968
14339
  /* @__PURE__ */ jsxRuntime.jsxs(
13969
14340
  "div",
13970
14341
  {
@@ -13973,9 +14344,9 @@ var ActivityItem = react.forwardRef(
13973
14344
  (connector === "last" || !connector) && "justify-start"
13974
14345
  ),
13975
14346
  children: [
13976
- hasConnectorAbove && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-2 w-px bg-grey-100" }),
14347
+ hasConnectorAbove && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-2 w-px bg-grey-100", "aria-hidden": "true" }),
13977
14348
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 size-8", children: avatar }),
13978
- hasConnectorBelow && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 w-px bg-grey-100" })
14349
+ hasConnectorBelow && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 w-px bg-grey-100", "aria-hidden": "true" })
13979
14350
  ]
13980
14351
  }
13981
14352
  ),
@@ -13992,7 +14363,8 @@ var ActivityItem = react.forwardRef(
13992
14363
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1 w-full", children: [
13993
14364
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between w-full", children: [
13994
14365
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-1 items-start gap-1 min-w-0", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-body-sm leading-5 text-grey-600", children: text }) }),
13995
- unread && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-2 rounded-full bg-[#04802E] border-[1.5px] border-white" })
14366
+ unread && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-2 rounded-full bg-[#04802E] border-[1.5px] border-white", "aria-hidden": "true" }),
14367
+ unread && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Unread" })
13996
14368
  ] }),
13997
14369
  (date || time || link || badge) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-1 w-full", children: [
13998
14370
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 items-start min-w-0", children: [