@geomak/ui 7.2.0 → 7.2.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.js CHANGED
@@ -5379,6 +5379,7 @@ function EditableCell({
5379
5379
  "input",
5380
5380
  {
5381
5381
  autoFocus: true,
5382
+ size: 1,
5382
5383
  defaultValue: value == null ? "" : String(value),
5383
5384
  onBlur: (e) => commit(e.target.value),
5384
5385
  onKeyDown: (e) => {
@@ -5391,7 +5392,7 @@ function EditableCell({
5391
5392
  }
5392
5393
  },
5393
5394
  "aria-label": `Edit ${typeof col.label === "string" ? col.label : col.keyBind}`,
5394
- className: "w-full rounded border border-accent bg-surface px-2 py-1 text-sm text-foreground outline-none"
5395
+ className: "box-border w-full min-w-0 rounded border border-accent bg-surface px-2 py-1 text-sm text-foreground outline-none"
5395
5396
  }
5396
5397
  );
5397
5398
  }
@@ -5441,7 +5442,7 @@ function TableBody({
5441
5442
  onClick: () => toggleRow(rowKey),
5442
5443
  "aria-expanded": isExpanded,
5443
5444
  "aria-label": isExpanded ? "Collapse row" : "Expand row",
5444
- className: `w-9 h-9 inline-flex items-center justify-center rounded-md hover:bg-background transition-transform duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent ${isExpanded && !expandRow.collapseIcon ? "rotate-180" : ""}`,
5445
+ className: `w-9 h-9 inline-flex items-center justify-center rounded-md text-foreground-muted hover:text-foreground transition-[transform,color] duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent ${isExpanded && !expandRow.collapseIcon ? "rotate-180" : ""}`,
5445
5446
  children: isExpanded ? expandRow.collapseIcon ?? expandRow.expandIcon ?? DefaultExpandIcon : expandRow.expandIcon ?? DefaultExpandIcon
5446
5447
  }
5447
5448
  ) }),
@@ -5499,7 +5500,7 @@ function Pagination({
5499
5500
  const chevronRight = /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, className: "h-4 w-4", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 6l6 6-6 6" }) });
5500
5501
  const doubleChevronRight = /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, className: "h-4 w-4", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 6l6 6-6 6M12 6l6 6-6 6" }) });
5501
5502
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-end gap-x-4 gap-y-3", children: [
5502
- options.withPicker && /* @__PURE__ */ jsxs("div", { className: "mr-auto flex items-center gap-2", children: [
5503
+ options.withPicker !== false && /* @__PURE__ */ jsxs("div", { className: "mr-auto flex items-center gap-2", children: [
5503
5504
  /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap text-xs text-foreground-muted", children: "Rows per page" }),
5504
5505
  /* @__PURE__ */ jsx(
5505
5506
  MenuButton,
@@ -6841,13 +6842,19 @@ function PasswordStrength({
6841
6842
  const matches = value.length > 0 && value === confirmValue;
6842
6843
  return /* @__PURE__ */ jsxs("div", { className: cx("flex flex-col gap-2", className), style, "aria-live": "polite", children: [
6843
6844
  !hideMeter && /* @__PURE__ */ jsxs(Fragment, { children: [
6844
- /* @__PURE__ */ jsx("div", { className: "flex gap-1", role: "meter", "aria-valuemin": 0, "aria-valuemax": 4, "aria-valuenow": score, "aria-label": "Password strength", children: [1, 2, 3, 4].map((seg) => /* @__PURE__ */ jsx(
6845
- "span",
6846
- {
6847
- className: cx("h-1.5 flex-1 rounded-full transition-colors duration-200", seg <= score ? BAR_COLOR[score] : "bg-border")
6848
- },
6849
- seg
6850
- )) }),
6845
+ /* @__PURE__ */ jsx("div", { className: "flex gap-1", role: "meter", "aria-valuemin": 0, "aria-valuemax": 4, "aria-valuenow": score, "aria-label": "Password strength", children: [1, 2, 3, 4].map((seg) => {
6846
+ const active = seg <= score;
6847
+ return /* @__PURE__ */ jsx("div", { className: "h-1.5 flex-1 overflow-hidden rounded-full bg-border", children: /* @__PURE__ */ jsx(
6848
+ "div",
6849
+ {
6850
+ className: cx(
6851
+ "h-full origin-left rounded-full transition-[transform,background-color] duration-300 ease-out motion-reduce:transition-none",
6852
+ score > 0 ? BAR_COLOR[score] : "bg-border"
6853
+ ),
6854
+ style: { transform: `scaleX(${active ? 1 : 0})`, transitionDelay: active ? `${(seg - 1) * 70}ms` : "0ms" }
6855
+ }
6856
+ ) }, seg);
6857
+ }) }),
6851
6858
  label && /* @__PURE__ */ jsxs("p", { className: "text-xs", children: [
6852
6859
  /* @__PURE__ */ jsx("span", { className: "text-foreground-muted", children: "Strength: " }),
6853
6860
  /* @__PURE__ */ jsx("span", { className: cx("font-medium", TEXT_COLOR[score]), children: label })
@@ -6921,11 +6928,12 @@ function RadioTile({
6921
6928
  value: opt.value,
6922
6929
  disabled: opt.disabled,
6923
6930
  className: cx(
6924
- "group relative flex flex-col gap-1 rounded-xl border bg-surface text-left transition-all duration-150",
6931
+ "group relative flex flex-col gap-1 rounded-xl border bg-surface text-left transition-colors duration-150",
6925
6932
  PAD2[size],
6926
6933
  "border-border hover:border-border-strong",
6927
6934
  "data-[state=checked]:border-accent data-[state=checked]:ring-1 data-[state=checked]:ring-accent",
6928
- "focus:outline-none focus-visible:ring-2 focus-visible:ring-accent",
6935
+ // Keyboard focus only (no mouse-click flash); ring is instant, not animated.
6936
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-1 focus-visible:ring-offset-surface",
6929
6937
  "disabled:cursor-not-allowed disabled:opacity-50"
6930
6938
  ),
6931
6939
  children: [