@almadar/ui 5.130.0 → 5.131.0

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.
@@ -1857,7 +1857,7 @@ var init_Button = __esm({
1857
1857
  "cursor-pointer",
1858
1858
  "chrome-button",
1859
1859
  "transition-all duration-normal",
1860
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-offset-[length:var(--focus-ring-offset)]",
1860
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-offset-[length:var(--focus-ring-offset)]",
1861
1861
  "disabled:opacity-50 disabled:cursor-not-allowed",
1862
1862
  variantStyles[variant],
1863
1863
  sizeStyles[size],
@@ -2155,7 +2155,7 @@ function NativeSelect({
2155
2155
  "block w-full border-[length:var(--border-width)] shadow-sm appearance-none",
2156
2156
  "px-3 py-2 pr-10 text-sm text-foreground font-medium",
2157
2157
  "bg-card",
2158
- "focus:outline-none focus:ring-2 focus:ring-offset-0 focus:ring-ring",
2158
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-ring",
2159
2159
  "disabled:bg-muted disabled:text-muted-foreground disabled:cursor-not-allowed",
2160
2160
  error ? "border-error focus:border-error" : "border-border focus:border-primary",
2161
2161
  className
@@ -2262,7 +2262,7 @@ function RichSelect({
2262
2262
  "block w-full border-[length:var(--border-width)] shadow-sm",
2263
2263
  "px-3 py-2 pr-10 text-sm text-start font-medium",
2264
2264
  "bg-card rounded-sm",
2265
- "focus:outline-none focus:ring-2 focus:ring-offset-0 focus:ring-ring",
2265
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-ring",
2266
2266
  "disabled:bg-muted disabled:text-muted-foreground disabled:cursor-not-allowed",
2267
2267
  error ? "border-error focus:border-error" : "border-border focus:border-primary",
2268
2268
  !hasValue && "text-muted-foreground"
@@ -2636,7 +2636,7 @@ var init_Badge = __esm({
2636
2636
  },
2637
2637
  className: cn(
2638
2638
  "inline-flex items-center justify-center rounded-sm",
2639
- "hover:bg-foreground/10 focus:outline-none focus:ring-1 focus:ring-ring",
2639
+ "hover:bg-foreground/10 focus:outline-none focus-visible:ring-1 focus-visible:ring-ring",
2640
2640
  "transition-colors",
2641
2641
  size === "sm" ? "w-4 h-4 ml-0.5" : size === "md" ? "w-5 h-5 ml-1" : "w-6 h-6 ml-1"
2642
2642
  ),
@@ -3536,9 +3536,9 @@ var init_Radio = __esm({
3536
3536
  "flex items-center justify-center",
3537
3537
  "border-[length:var(--border-width)] transition-all cursor-pointer",
3538
3538
  sizeClasses3[size],
3539
- hasError ? "border-error peer-focus:ring-error/20" : "border-border peer-focus:ring-ring/20",
3539
+ hasError ? "border-error peer-focus-visible:ring-error/20" : "border-border peer-focus-visible:ring-ring/20",
3540
3540
  isChecked2 ? hasError ? "border-error" : "border-primary bg-primary" : "",
3541
- "peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-offset-2",
3541
+ "peer-focus:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2",
3542
3542
  disabled && "opacity-50 cursor-not-allowed",
3543
3543
  !disabled && "hover:border-[var(--color-border-hover)]"
3544
3544
  ),
@@ -4133,7 +4133,7 @@ var init_ThemeToggle = __esm({
4133
4133
  "inline-flex items-center justify-center gap-2",
4134
4134
  "text-foreground",
4135
4135
  "hover:bg-muted border-[length:var(--border-width)] border-transparent hover:border-border",
4136
- "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
4136
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
4137
4137
  "transition-colors duration-fast",
4138
4138
  sizeClasses4[size],
4139
4139
  className
@@ -7032,10 +7032,12 @@ var init_Container = __esm({
7032
7032
  };
7033
7033
  paddingStyles3 = {
7034
7034
  none: "px-0",
7035
- sm: "px-4",
7036
- md: "px-6",
7037
- lg: "px-8",
7038
- xl: "px-12"
7035
+ // Mobile-tighter, desktop-identical: fixed px-6 on a 360px phone eats ~13% of
7036
+ // the viewport, so each token steps down below the sm breakpoint.
7037
+ sm: "px-3 sm:px-4",
7038
+ md: "px-4 sm:px-6",
7039
+ lg: "px-4 sm:px-6 md:px-8",
7040
+ xl: "px-4 sm:px-8 md:px-12"
7039
7041
  };
7040
7042
  exports.Container = ({
7041
7043
  size,
@@ -7734,7 +7736,7 @@ var init_Accordion = __esm({
7734
7736
  "bg-card",
7735
7737
  "hover:bg-muted",
7736
7738
  "transition-colors duration-fast",
7737
- "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-inset",
7739
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",
7738
7740
  "disabled:opacity-50 disabled:cursor-not-allowed",
7739
7741
  isOpen && "bg-muted font-bold"
7740
7742
  ),
@@ -14338,7 +14340,7 @@ var init_Breadcrumb = __esm({
14338
14340
  },
14339
14341
  className: cn(
14340
14342
  "flex items-center gap-1.5 transition-colors",
14341
- "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
14343
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
14342
14344
  isLast ? "text-foreground font-bold cursor-default" : "text-muted-foreground hover:text-foreground"
14343
14345
  ),
14344
14346
  "aria-current": isLast ? "page" : void 0,
@@ -20941,7 +20943,7 @@ function DataGrid({
20941
20943
  ] }, field.name);
20942
20944
  }) })
20943
20945
  ] }),
20944
- dangerActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { gap: "xs", className: "flex-shrink-0", children: dangerActions.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
20946
+ dangerActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { gap: "xs", className: "flex-shrink-0", children: dangerActions.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
20945
20947
  exports.Button,
20946
20948
  {
20947
20949
  variant: "ghost",
@@ -20949,11 +20951,10 @@ function DataGrid({
20949
20951
  onClick: handleActionClick(action, itemData),
20950
20952
  "data-testid": `action-${action.event}`,
20951
20953
  "data-row-id": String(itemData.id),
20954
+ "aria-label": action.label,
20955
+ title: action.label,
20952
20956
  className: "text-error hover:text-error hover:bg-error/10 px-2",
20953
- children: [
20954
- action.icon && renderIconInput(action.icon, { size: "xs" }),
20955
- action.label
20956
- ]
20957
+ children: action.icon ? renderIconInput(action.icon, { size: "xs" }) : action.label
20957
20958
  },
20958
20959
  idx
20959
20960
  )) })
@@ -22589,10 +22590,7 @@ var init_FileTree = __esm({
22589
22590
  className,
22590
22591
  indent = 16
22591
22592
  }) => {
22592
- const { t } = hooks.useTranslate();
22593
- if (tree.length === 0) {
22594
- return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
22595
- }
22593
+ if (tree.length === 0) return null;
22596
22594
  return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
22597
22595
  TreeNodeItem,
22598
22596
  {
@@ -28915,7 +28913,7 @@ var init_NumberStepper = __esm({
28915
28913
  "active:bg-muted",
28916
28914
  "transition-colors duration-instant",
28917
28915
  "disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
28918
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
28916
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-inset",
28919
28917
  styles.button
28920
28918
  ),
28921
28919
  "aria-label": t("aria.decrease"),
@@ -28956,7 +28954,7 @@ var init_NumberStepper = __esm({
28956
28954
  "active:bg-muted",
28957
28955
  "transition-colors duration-instant",
28958
28956
  "disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
28959
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
28957
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-inset",
28960
28958
  styles.button
28961
28959
  ),
28962
28960
  "aria-label": t("aria.increase"),
@@ -29412,7 +29410,7 @@ var init_Lightbox = __esm({
29412
29410
  "p-2 rounded-full",
29413
29411
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29414
29412
  "hover:bg-opacity-70 transition-opacity",
29415
- "focus:outline-none focus:ring-2 focus:ring-ring"
29413
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring"
29416
29414
  ),
29417
29415
  "aria-label": t("aria.closeModal"),
29418
29416
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "x", className: "w-6 h-6" })
@@ -29431,7 +29429,7 @@ var init_Lightbox = __esm({
29431
29429
  "p-2 rounded-full",
29432
29430
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29433
29431
  "hover:bg-opacity-70 transition-opacity",
29434
- "focus:outline-none focus:ring-2 focus:ring-ring"
29432
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring"
29435
29433
  ),
29436
29434
  "aria-label": t("aria.previousImage"),
29437
29435
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "chevron-left", className: "w-8 h-8" })
@@ -29468,7 +29466,7 @@ var init_Lightbox = __esm({
29468
29466
  "p-2 rounded-full",
29469
29467
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29470
29468
  "hover:bg-opacity-70 transition-opacity",
29471
- "focus:outline-none focus:ring-2 focus:ring-ring"
29469
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring"
29472
29470
  ),
29473
29471
  "aria-label": t("aria.nextImage"),
29474
29472
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "chevron-right", className: "w-8 h-8" })
@@ -29648,7 +29646,8 @@ function TableView({
29648
29646
  const cell = formatCell(asFieldValue(getNestedValue(row, col.field ?? col.key)), col.format);
29649
29647
  return Math.max(widest, cell.length);
29650
29648
  }, columnLabel(col).length);
29651
- return Math.min(longest, MAX_MEASURED_COL_CH);
29649
+ const chrome = col.format === "badge" ? BADGE_CHROME_CH : 0;
29650
+ return Math.min(longest + chrome, MAX_MEASURED_COL_CH);
29652
29651
  }),
29653
29652
  [colDefs, data]
29654
29653
  );
@@ -29738,7 +29737,7 @@ function TableView({
29738
29737
  col.className
29739
29738
  );
29740
29739
  if (col.format === "badge" && raw != null && raw !== "") {
29741
- return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: statusVariant4(String(raw)), size: "sm", children: String(raw) }) }, col.key);
29740
+ return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: statusVariant4(String(raw)), size: "sm", className: "whitespace-nowrap", children: String(raw) }) }, col.key);
29742
29741
  }
29743
29742
  return /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: formatCell(raw, col.format) }) }, col.key);
29744
29743
  }),
@@ -29821,7 +29820,7 @@ function TableView({
29821
29820
  }
29822
29821
  );
29823
29822
  }
29824
- var MAX_MEASURED_COL_CH, alignClass, weightClass, LOOKS;
29823
+ var MAX_MEASURED_COL_CH, BADGE_CHROME_CH, alignClass, weightClass, LOOKS;
29825
29824
  var init_TableView = __esm({
29826
29825
  "components/core/molecules/TableView.tsx"() {
29827
29826
  "use client";
@@ -29840,6 +29839,7 @@ var init_TableView = __esm({
29840
29839
  init_useDataDnd();
29841
29840
  logger.createLogger("almadar:ui:table-view");
29842
29841
  MAX_MEASURED_COL_CH = 32;
29842
+ BADGE_CHROME_CH = 4;
29843
29843
  alignClass = {
29844
29844
  left: "justify-start text-left",
29845
29845
  center: "justify-center text-center",
@@ -32075,7 +32075,7 @@ var init_VoteStack = __esm({
32075
32075
  "active:bg-muted",
32076
32076
  "transition-colors duration-instant",
32077
32077
  "disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
32078
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
32078
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-inset",
32079
32079
  styles.button
32080
32080
  ),
32081
32081
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "chevron-up", className: styles.icon })
@@ -32112,7 +32112,7 @@ var init_VoteStack = __esm({
32112
32112
  "active:bg-muted",
32113
32113
  "transition-colors duration-instant",
32114
32114
  "disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
32115
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
32115
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-inset",
32116
32116
  styles.button
32117
32117
  ),
32118
32118
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "chevron-down", className: styles.icon })
@@ -32633,7 +32633,7 @@ var init_QrScanner = __esm({
32633
32633
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32634
32634
  "rounded-full bg-black bg-opacity-60 p-2 text-white",
32635
32635
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32636
- "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32636
+ "hover:bg-opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-white"
32637
32637
  ),
32638
32638
  "aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
32639
32639
  children: isPaused ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "pause", className: "h-4 w-4" })
@@ -32648,7 +32648,7 @@ var init_QrScanner = __esm({
32648
32648
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32649
32649
  "rounded-full bg-black bg-opacity-60 p-2 text-white",
32650
32650
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32651
- "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32651
+ "hover:bg-opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-white"
32652
32652
  ),
32653
32653
  "aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
32654
32654
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "refresh-cw", className: "h-4 w-4" })
@@ -32663,7 +32663,7 @@ var init_QrScanner = __esm({
32663
32663
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32664
32664
  "rounded-full bg-black bg-opacity-60 px-3 py-2 text-xs text-white",
32665
32665
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32666
- "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32666
+ "hover:bg-opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-white"
32667
32667
  ),
32668
32668
  "aria-label": t("aria.mockScanDev"),
32669
32669
  children: t("qrScanner.mockScan")
@@ -44702,7 +44702,7 @@ var init_TabbedContainer = __esm({
44702
44702
  onClick: () => !isDisabled && handleTabChange(tab.id),
44703
44703
  className: cn(
44704
44704
  "flex items-center gap-2 px-4 py-3 text-sm font-medium transition-colors",
44705
- "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
44705
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
44706
44706
  "disabled:opacity-50 disabled:cursor-not-allowed",
44707
44707
  isActive ? "bg-primary text-primary-foreground" : "bg-card text-foreground hover:bg-muted",
44708
44708
  isVertical ? "justify-start" : "justify-center"
@@ -48709,7 +48709,7 @@ var I18nContext = React74.createContext({
48709
48709
  });
48710
48710
  I18nContext.displayName = "I18nContext";
48711
48711
  var I18nProvider = I18nContext.Provider;
48712
- function useTranslate115() {
48712
+ function useTranslate114() {
48713
48713
  return React74.useContext(I18nContext);
48714
48714
  }
48715
48715
  function createTranslate(messages) {
@@ -49128,7 +49128,7 @@ exports.useSharedEntityStoreContext = useSharedEntityStoreContext;
49128
49128
  exports.useSwipeGesture = useSwipeGesture;
49129
49129
  exports.useTapReveal = useTapReveal;
49130
49130
  exports.useTraitListens = useTraitListens;
49131
- exports.useTranslate = useTranslate115;
49131
+ exports.useTranslate = useTranslate114;
49132
49132
  exports.useUIEvents = useUIEvents;
49133
49133
  exports.useUISlotManager = useUISlotManager;
49134
49134
  exports.useUnitSpriteAtlas = useUnitSpriteAtlas;
@@ -1782,7 +1782,7 @@ var init_Button = __esm({
1782
1782
  "cursor-pointer",
1783
1783
  "chrome-button",
1784
1784
  "transition-all duration-normal",
1785
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-offset-[length:var(--focus-ring-offset)]",
1785
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-offset-[length:var(--focus-ring-offset)]",
1786
1786
  "disabled:opacity-50 disabled:cursor-not-allowed",
1787
1787
  variantStyles[variant],
1788
1788
  sizeStyles[size],
@@ -2080,7 +2080,7 @@ function NativeSelect({
2080
2080
  "block w-full border-[length:var(--border-width)] shadow-sm appearance-none",
2081
2081
  "px-3 py-2 pr-10 text-sm text-foreground font-medium",
2082
2082
  "bg-card",
2083
- "focus:outline-none focus:ring-2 focus:ring-offset-0 focus:ring-ring",
2083
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-ring",
2084
2084
  "disabled:bg-muted disabled:text-muted-foreground disabled:cursor-not-allowed",
2085
2085
  error ? "border-error focus:border-error" : "border-border focus:border-primary",
2086
2086
  className
@@ -2187,7 +2187,7 @@ function RichSelect({
2187
2187
  "block w-full border-[length:var(--border-width)] shadow-sm",
2188
2188
  "px-3 py-2 pr-10 text-sm text-start font-medium",
2189
2189
  "bg-card rounded-sm",
2190
- "focus:outline-none focus:ring-2 focus:ring-offset-0 focus:ring-ring",
2190
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-ring",
2191
2191
  "disabled:bg-muted disabled:text-muted-foreground disabled:cursor-not-allowed",
2192
2192
  error ? "border-error focus:border-error" : "border-border focus:border-primary",
2193
2193
  !hasValue && "text-muted-foreground"
@@ -2561,7 +2561,7 @@ var init_Badge = __esm({
2561
2561
  },
2562
2562
  className: cn(
2563
2563
  "inline-flex items-center justify-center rounded-sm",
2564
- "hover:bg-foreground/10 focus:outline-none focus:ring-1 focus:ring-ring",
2564
+ "hover:bg-foreground/10 focus:outline-none focus-visible:ring-1 focus-visible:ring-ring",
2565
2565
  "transition-colors",
2566
2566
  size === "sm" ? "w-4 h-4 ml-0.5" : size === "md" ? "w-5 h-5 ml-1" : "w-6 h-6 ml-1"
2567
2567
  ),
@@ -3461,9 +3461,9 @@ var init_Radio = __esm({
3461
3461
  "flex items-center justify-center",
3462
3462
  "border-[length:var(--border-width)] transition-all cursor-pointer",
3463
3463
  sizeClasses3[size],
3464
- hasError ? "border-error peer-focus:ring-error/20" : "border-border peer-focus:ring-ring/20",
3464
+ hasError ? "border-error peer-focus-visible:ring-error/20" : "border-border peer-focus-visible:ring-ring/20",
3465
3465
  isChecked2 ? hasError ? "border-error" : "border-primary bg-primary" : "",
3466
- "peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-offset-2",
3466
+ "peer-focus:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2",
3467
3467
  disabled && "opacity-50 cursor-not-allowed",
3468
3468
  !disabled && "hover:border-[var(--color-border-hover)]"
3469
3469
  ),
@@ -4058,7 +4058,7 @@ var init_ThemeToggle = __esm({
4058
4058
  "inline-flex items-center justify-center gap-2",
4059
4059
  "text-foreground",
4060
4060
  "hover:bg-muted border-[length:var(--border-width)] border-transparent hover:border-border",
4061
- "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
4061
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
4062
4062
  "transition-colors duration-fast",
4063
4063
  sizeClasses4[size],
4064
4064
  className
@@ -6957,10 +6957,12 @@ var init_Container = __esm({
6957
6957
  };
6958
6958
  paddingStyles3 = {
6959
6959
  none: "px-0",
6960
- sm: "px-4",
6961
- md: "px-6",
6962
- lg: "px-8",
6963
- xl: "px-12"
6960
+ // Mobile-tighter, desktop-identical: fixed px-6 on a 360px phone eats ~13% of
6961
+ // the viewport, so each token steps down below the sm breakpoint.
6962
+ sm: "px-3 sm:px-4",
6963
+ md: "px-4 sm:px-6",
6964
+ lg: "px-4 sm:px-6 md:px-8",
6965
+ xl: "px-4 sm:px-8 md:px-12"
6964
6966
  };
6965
6967
  Container = ({
6966
6968
  size,
@@ -7659,7 +7661,7 @@ var init_Accordion = __esm({
7659
7661
  "bg-card",
7660
7662
  "hover:bg-muted",
7661
7663
  "transition-colors duration-fast",
7662
- "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-inset",
7664
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",
7663
7665
  "disabled:opacity-50 disabled:cursor-not-allowed",
7664
7666
  isOpen && "bg-muted font-bold"
7665
7667
  ),
@@ -14263,7 +14265,7 @@ var init_Breadcrumb = __esm({
14263
14265
  },
14264
14266
  className: cn(
14265
14267
  "flex items-center gap-1.5 transition-colors",
14266
- "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
14268
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
14267
14269
  isLast ? "text-foreground font-bold cursor-default" : "text-muted-foreground hover:text-foreground"
14268
14270
  ),
14269
14271
  "aria-current": isLast ? "page" : void 0,
@@ -20866,7 +20868,7 @@ function DataGrid({
20866
20868
  ] }, field.name);
20867
20869
  }) })
20868
20870
  ] }),
20869
- dangerActions.length > 0 && /* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-shrink-0", children: dangerActions.map((action, idx) => /* @__PURE__ */ jsxs(
20871
+ dangerActions.length > 0 && /* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-shrink-0", children: dangerActions.map((action, idx) => /* @__PURE__ */ jsx(
20870
20872
  Button,
20871
20873
  {
20872
20874
  variant: "ghost",
@@ -20874,11 +20876,10 @@ function DataGrid({
20874
20876
  onClick: handleActionClick(action, itemData),
20875
20877
  "data-testid": `action-${action.event}`,
20876
20878
  "data-row-id": String(itemData.id),
20879
+ "aria-label": action.label,
20880
+ title: action.label,
20877
20881
  className: "text-error hover:text-error hover:bg-error/10 px-2",
20878
- children: [
20879
- action.icon && renderIconInput(action.icon, { size: "xs" }),
20880
- action.label
20881
- ]
20882
+ children: action.icon ? renderIconInput(action.icon, { size: "xs" }) : action.label
20882
20883
  },
20883
20884
  idx
20884
20885
  )) })
@@ -22514,10 +22515,7 @@ var init_FileTree = __esm({
22514
22515
  className,
22515
22516
  indent = 16
22516
22517
  }) => {
22517
- const { t } = useTranslate();
22518
- if (tree.length === 0) {
22519
- return /* @__PURE__ */ jsx(Box, { className: `p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: t("fileTree.noFiles") }) });
22520
- }
22518
+ if (tree.length === 0) return null;
22521
22519
  return /* @__PURE__ */ jsx(Box, { className: `py-1 overflow-y-auto ${className ?? ""}`, role: "tree", children: tree.map((node) => /* @__PURE__ */ jsx(
22522
22520
  TreeNodeItem,
22523
22521
  {
@@ -28840,7 +28838,7 @@ var init_NumberStepper = __esm({
28840
28838
  "active:bg-muted",
28841
28839
  "transition-colors duration-instant",
28842
28840
  "disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
28843
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
28841
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-inset",
28844
28842
  styles.button
28845
28843
  ),
28846
28844
  "aria-label": t("aria.decrease"),
@@ -28881,7 +28879,7 @@ var init_NumberStepper = __esm({
28881
28879
  "active:bg-muted",
28882
28880
  "transition-colors duration-instant",
28883
28881
  "disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
28884
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
28882
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-inset",
28885
28883
  styles.button
28886
28884
  ),
28887
28885
  "aria-label": t("aria.increase"),
@@ -29337,7 +29335,7 @@ var init_Lightbox = __esm({
29337
29335
  "p-2 rounded-full",
29338
29336
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29339
29337
  "hover:bg-opacity-70 transition-opacity",
29340
- "focus:outline-none focus:ring-2 focus:ring-ring"
29338
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring"
29341
29339
  ),
29342
29340
  "aria-label": t("aria.closeModal"),
29343
29341
  children: /* @__PURE__ */ jsx(Icon, { name: "x", className: "w-6 h-6" })
@@ -29356,7 +29354,7 @@ var init_Lightbox = __esm({
29356
29354
  "p-2 rounded-full",
29357
29355
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29358
29356
  "hover:bg-opacity-70 transition-opacity",
29359
- "focus:outline-none focus:ring-2 focus:ring-ring"
29357
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring"
29360
29358
  ),
29361
29359
  "aria-label": t("aria.previousImage"),
29362
29360
  children: /* @__PURE__ */ jsx(Icon, { name: "chevron-left", className: "w-8 h-8" })
@@ -29393,7 +29391,7 @@ var init_Lightbox = __esm({
29393
29391
  "p-2 rounded-full",
29394
29392
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29395
29393
  "hover:bg-opacity-70 transition-opacity",
29396
- "focus:outline-none focus:ring-2 focus:ring-ring"
29394
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring"
29397
29395
  ),
29398
29396
  "aria-label": t("aria.nextImage"),
29399
29397
  children: /* @__PURE__ */ jsx(Icon, { name: "chevron-right", className: "w-8 h-8" })
@@ -29573,7 +29571,8 @@ function TableView({
29573
29571
  const cell = formatCell(asFieldValue(getNestedValue(row, col.field ?? col.key)), col.format);
29574
29572
  return Math.max(widest, cell.length);
29575
29573
  }, columnLabel(col).length);
29576
- return Math.min(longest, MAX_MEASURED_COL_CH);
29574
+ const chrome = col.format === "badge" ? BADGE_CHROME_CH : 0;
29575
+ return Math.min(longest + chrome, MAX_MEASURED_COL_CH);
29577
29576
  }),
29578
29577
  [colDefs, data]
29579
29578
  );
@@ -29663,7 +29662,7 @@ function TableView({
29663
29662
  col.className
29664
29663
  );
29665
29664
  if (col.format === "badge" && raw != null && raw !== "") {
29666
- return /* @__PURE__ */ jsx(Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsx(Badge, { variant: statusVariant4(String(raw)), size: "sm", children: String(raw) }) }, col.key);
29665
+ return /* @__PURE__ */ jsx(Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsx(Badge, { variant: statusVariant4(String(raw)), size: "sm", className: "whitespace-nowrap", children: String(raw) }) }, col.key);
29667
29666
  }
29668
29667
  return /* @__PURE__ */ jsx(Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsx("span", { className: "truncate", children: formatCell(raw, col.format) }) }, col.key);
29669
29668
  }),
@@ -29746,7 +29745,7 @@ function TableView({
29746
29745
  }
29747
29746
  );
29748
29747
  }
29749
- var MAX_MEASURED_COL_CH, alignClass, weightClass, LOOKS;
29748
+ var MAX_MEASURED_COL_CH, BADGE_CHROME_CH, alignClass, weightClass, LOOKS;
29750
29749
  var init_TableView = __esm({
29751
29750
  "components/core/molecules/TableView.tsx"() {
29752
29751
  "use client";
@@ -29765,6 +29764,7 @@ var init_TableView = __esm({
29765
29764
  init_useDataDnd();
29766
29765
  createLogger("almadar:ui:table-view");
29767
29766
  MAX_MEASURED_COL_CH = 32;
29767
+ BADGE_CHROME_CH = 4;
29768
29768
  alignClass = {
29769
29769
  left: "justify-start text-left",
29770
29770
  center: "justify-center text-center",
@@ -32000,7 +32000,7 @@ var init_VoteStack = __esm({
32000
32000
  "active:bg-muted",
32001
32001
  "transition-colors duration-instant",
32002
32002
  "disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
32003
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
32003
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-inset",
32004
32004
  styles.button
32005
32005
  ),
32006
32006
  children: /* @__PURE__ */ jsx(Icon, { name: "chevron-up", className: styles.icon })
@@ -32037,7 +32037,7 @@ var init_VoteStack = __esm({
32037
32037
  "active:bg-muted",
32038
32038
  "transition-colors duration-instant",
32039
32039
  "disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent",
32040
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-inset",
32040
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-inset",
32041
32041
  styles.button
32042
32042
  ),
32043
32043
  children: /* @__PURE__ */ jsx(Icon, { name: "chevron-down", className: styles.icon })
@@ -32558,7 +32558,7 @@ var init_QrScanner = __esm({
32558
32558
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32559
32559
  "rounded-full bg-black bg-opacity-60 p-2 text-white",
32560
32560
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32561
- "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32561
+ "hover:bg-opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-white"
32562
32562
  ),
32563
32563
  "aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
32564
32564
  children: isPaused ? /* @__PURE__ */ jsx(Icon, { name: "play", className: "h-4 w-4" }) : /* @__PURE__ */ jsx(Icon, { name: "pause", className: "h-4 w-4" })
@@ -32573,7 +32573,7 @@ var init_QrScanner = __esm({
32573
32573
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32574
32574
  "rounded-full bg-black bg-opacity-60 p-2 text-white",
32575
32575
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32576
- "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32576
+ "hover:bg-opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-white"
32577
32577
  ),
32578
32578
  "aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
32579
32579
  children: /* @__PURE__ */ jsx(Icon, { name: "refresh-cw", className: "h-4 w-4" })
@@ -32588,7 +32588,7 @@ var init_QrScanner = __esm({
32588
32588
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32589
32589
  "rounded-full bg-black bg-opacity-60 px-3 py-2 text-xs text-white",
32590
32590
  // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32591
- "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32591
+ "hover:bg-opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-white"
32592
32592
  ),
32593
32593
  "aria-label": t("aria.mockScanDev"),
32594
32594
  children: t("qrScanner.mockScan")
@@ -44627,7 +44627,7 @@ var init_TabbedContainer = __esm({
44627
44627
  onClick: () => !isDisabled && handleTabChange(tab.id),
44628
44628
  className: cn(
44629
44629
  "flex items-center gap-2 px-4 py-3 text-sm font-medium transition-colors",
44630
- "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
44630
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
44631
44631
  "disabled:opacity-50 disabled:cursor-not-allowed",
44632
44632
  isActive ? "bg-primary text-primary-foreground" : "bg-card text-foreground hover:bg-muted",
44633
44633
  isVertical ? "justify-start" : "justify-center"
@@ -48634,7 +48634,7 @@ var I18nContext = createContext({
48634
48634
  });
48635
48635
  I18nContext.displayName = "I18nContext";
48636
48636
  var I18nProvider = I18nContext.Provider;
48637
- function useTranslate115() {
48637
+ function useTranslate114() {
48638
48638
  return useContext(I18nContext);
48639
48639
  }
48640
48640
  function createTranslate(messages) {
@@ -48899,4 +48899,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
48899
48899
  });
48900
48900
  }
48901
48901
 
48902
- export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, ImportPreviewTree, ImportProgress, ImportSourcePicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, Presence, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichBlockEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, registerCodeLanguageLoader, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useOrbitalHistory, usePresence, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate115 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
48902
+ export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, Card2 as ActionCard, ActionPalette, ActionTile, ActivationBlock, Alert, AlgorithmCanvas, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AtlasImage, AtlasPanel, AuthLayout, Avatar, Badge, BehaviorView, BiologyCanvas, BloomQuizBlock, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, Button, ButtonGroup, CTABanner, CalendarGrid, Canvas, Canvas2D, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, Center, Chart, ChartLegend, ChatBar, Checkbox, ChemistryCanvas, ChoiceButton, Coachmark, CodeBlock, CodeRunnerPanel, CollapsibleSection, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, ConnectionBlock, Container, ContentRenderer, ContentSection, ControlButton, ControlGrid, CounterTemplate, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DetailPanel, Dialog, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, ELEMENT_SELECTED_EVENT, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EntityDisplayEvents, ErrorBoundary, ErrorState, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioToggle, GameHud, GameIcon, GameMenu, GameShell, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, IconPicker, ImportPreviewTree, ImportProgress, ImportSourcePicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, LearningCanvas, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MathCanvas, MatrixQuestion, MediaGallery, Menu, Meter, Modal, ModalSlot, ModuleCard, Navigation, NodeSlotEditor, NotifyListener, NumberStepper, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, PageTransition, Pagination, PatternTile, PhysicsCanvas, Popover, PositionedCanvas, Presence, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuizBlock, Radio, RangeSlider, ReflectionBlock, RelationSelect, RepeatableFormSection, ReplyTree, RichBlockEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreDisplay, SearchInput, Section, SectionHeader, SegmentRenderer, Select, SequenceBar, ServiceCatalog, SharedEntityStoreContext, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateGraph, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StepFlow, StepFlowOrganism, SubagentTracePanel, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UploadDropZone, VStack, VersionDiff, ViolationAlert, VoteStack, WizardContainer, WizardNavigation, WizardProgress, boardEntity, bool, calculateAttackTargets, calculateValidMoves, cn, createInitialGameState, createSharedEntityStore, createTranslate, createUnitAnimationState, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, makeAsset, makeAssetMap, mapBookData, num, objAvailableActions, objAvailableEvents, objCurrentState, objIcon, objId, objMaxRules, objName, objRules, objStates, parseEditFocus, parseLessonSegments, parseMarkdownWithCodeBlocks, parseQueryBinding, pendulum, projectileMotion, registerCodeLanguageLoader, resolveFieldMap, resolveFrame, resolveSheetDirection, rows, runTickFrame, screenToIso, springOscillator, str, tickAnimationState, toCodeLanguage, transitionAnimation, unitHealth, unitPosition, unitTeam, useAgentChat, useAnchorRect, useAtlasSliceDataUrl, useAuthContext, useCamera, useCanvasGestures, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useLongPress, useOrbitalHistory, usePresence, usePreview, usePullToRefresh, useQuerySingleton, useRenderInterpolation, useSharedEntitySnapshot, useSharedEntityStore, useSharedEntityStoreContext, useSwipeGesture, useTapReveal, useTraitListens, useTranslate114 as useTranslate, useUIEvents, useUISlotManager, useUnitSpriteAtlas, useValidation, vec2 };
@@ -3548,7 +3548,7 @@ var Button = React12__namespace.default.forwardRef(
3548
3548
  "cursor-pointer",
3549
3549
  "chrome-button",
3550
3550
  "transition-all duration-normal",
3551
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-offset-[length:var(--focus-ring-offset)]",
3551
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-offset-[length:var(--focus-ring-offset)]",
3552
3552
  "disabled:opacity-50 disabled:cursor-not-allowed",
3553
3553
  variantStyles2[variant],
3554
3554
  sizeStyles[size],
@@ -3639,7 +3639,7 @@ var Badge = React12__namespace.default.forwardRef(
3639
3639
  },
3640
3640
  className: cn(
3641
3641
  "inline-flex items-center justify-center rounded-sm",
3642
- "hover:bg-foreground/10 focus:outline-none focus:ring-1 focus:ring-ring",
3642
+ "hover:bg-foreground/10 focus:outline-none focus-visible:ring-1 focus-visible:ring-ring",
3643
3643
  "transition-colors",
3644
3644
  size === "sm" ? "w-4 h-4 ml-0.5" : size === "md" ? "w-5 h-5 ml-1" : "w-6 h-6 ml-1"
3645
3645
  ),
@@ -3527,7 +3527,7 @@ var Button = React12__default.forwardRef(
3527
3527
  "cursor-pointer",
3528
3528
  "chrome-button",
3529
3529
  "transition-all duration-normal",
3530
- "focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-offset-[length:var(--focus-ring-offset)]",
3530
+ "focus:outline-none focus-visible:ring-[length:var(--focus-ring-width)] focus-visible:ring-ring focus-visible:ring-offset-[length:var(--focus-ring-offset)]",
3531
3531
  "disabled:opacity-50 disabled:cursor-not-allowed",
3532
3532
  variantStyles2[variant],
3533
3533
  sizeStyles[size],
@@ -3618,7 +3618,7 @@ var Badge = React12__default.forwardRef(
3618
3618
  },
3619
3619
  className: cn(
3620
3620
  "inline-flex items-center justify-center rounded-sm",
3621
- "hover:bg-foreground/10 focus:outline-none focus:ring-1 focus:ring-ring",
3621
+ "hover:bg-foreground/10 focus:outline-none focus-visible:ring-1 focus-visible:ring-ring",
3622
3622
  "transition-colors",
3623
3623
  size === "sm" ? "w-4 h-4 ml-0.5" : size === "md" ? "w-5 h-5 ml-1" : "w-6 h-6 ml-1"
3624
3624
  ),