@ai-matrx/design-system 0.86.362 → 0.86.363

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
@@ -389,12 +389,15 @@ import {
389
389
  usePortalContainer
390
390
  } from "./chunk-XIUVUL2Y.js";
391
391
  import {
392
+ AlertTriangleIcon,
392
393
  AtSignIcon,
393
394
  BadgeCheckIcon,
394
395
  BellOffIcon,
395
396
  CheckIcon,
396
397
  ChevronDownIcon,
397
398
  ChevronRightIcon,
399
+ CircleCheckIcon,
400
+ CircleXIcon,
398
401
  ClockIcon,
399
402
  CopyIcon,
400
403
  CopyPlusIcon,
@@ -402,6 +405,7 @@ import {
402
405
  DownloadIcon,
403
406
  ExternalLinkIcon,
404
407
  GlobeIcon,
408
+ InfoIcon,
405
409
  LightbulbIcon,
406
410
  Link2OffIcon,
407
411
  Loader2Icon,
@@ -4997,10 +5001,54 @@ function TrayMenu({ menu }) {
4997
5001
  ] });
4998
5002
  }
4999
5003
 
5004
+ // src/peek-notice.tsx
5005
+ import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
5006
+ var LEVEL = {
5007
+ success: { icon: CircleCheckIcon, ink: "text-success-ink", label: "Done" },
5008
+ info: { icon: InfoIcon, ink: "text-info-ink", label: "Notice" },
5009
+ warning: { icon: AlertTriangleIcon, ink: "text-warning-ink", label: "Warning" },
5010
+ error: { icon: CircleXIcon, ink: "text-destructive-ink", label: "Error" }
5011
+ };
5012
+ function PeekNotice({ level, title, subtitle, items, limit = 5, onDismiss }) {
5013
+ const tone = LEVEL[level];
5014
+ const Icon = tone.icon;
5015
+ const rows = (items ?? []).map((item, i) => ({
5016
+ key: `${i}:${item.text}`,
5017
+ text: item.text,
5018
+ title: item.text,
5019
+ ...item.detail ? { detail: item.detail } : {}
5020
+ }));
5021
+ return /* @__PURE__ */ jsxs15(
5022
+ PeekCard,
5023
+ {
5024
+ size: "md",
5025
+ height: "content",
5026
+ density: "compact",
5027
+ role: level === "error" ? "alert" : "status",
5028
+ "aria-label": `${tone.label}: ${title}`,
5029
+ "data-matrx-peek-notice": level,
5030
+ children: [
5031
+ /* @__PURE__ */ jsx26(
5032
+ PeekCardHeader,
5033
+ {
5034
+ title,
5035
+ leading: /* @__PURE__ */ jsx26(Icon, { className: cn("size-4", tone.ink) }),
5036
+ ...subtitle ? { subtitle } : {},
5037
+ ...onDismiss ? {
5038
+ trailing: /* @__PURE__ */ jsx26(Button2, { type: "button", variant: "quiet", "aria-label": "Dismiss", title: "Dismiss", icon: /* @__PURE__ */ jsx26(XIcon, { className: "size-3.5" }), onClick: onDismiss })
5039
+ } : {}
5040
+ }
5041
+ ),
5042
+ rows.length ? /* @__PURE__ */ jsx26(PeekCardBody, { children: /* @__PURE__ */ jsx26(PeekCardRows, { rows, limit }) }) : null
5043
+ ]
5044
+ }
5045
+ );
5046
+ }
5047
+
5000
5048
  // src/radio-group.tsx
5001
5049
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
5002
5050
  import * as React22 from "react";
5003
- import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
5051
+ import { jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
5004
5052
  var RadioGroupSizeContext = React22.createContext("md");
5005
5053
  var CONTROL_CLASSES = {
5006
5054
  sm: "h-3.5 w-3.5",
@@ -5012,7 +5060,7 @@ var DOT_CLASSES = {
5012
5060
  md: "h-1.5 w-1.5",
5013
5061
  lg: "h-2 w-2"
5014
5062
  };
5015
- var RadioGroup = React22.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx26(RadioGroupSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx26(
5063
+ var RadioGroup = React22.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx27(RadioGroupSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx27(
5016
5064
  RadioGroupPrimitive.Root,
5017
5065
  {
5018
5066
  ref,
@@ -5025,7 +5073,7 @@ RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
5025
5073
  var RadioGroupItem = React22.forwardRef(({ className, size, ...props }, ref) => {
5026
5074
  const groupSize = React22.useContext(RadioGroupSizeContext);
5027
5075
  const resolved = size ?? groupSize;
5028
- return /* @__PURE__ */ jsx26(
5076
+ return /* @__PURE__ */ jsx27(
5029
5077
  RadioGroupPrimitive.Item,
5030
5078
  {
5031
5079
  ref,
@@ -5042,7 +5090,7 @@ var RadioGroupItem = React22.forwardRef(({ className, size, ...props }, ref) =>
5042
5090
  className
5043
5091
  ),
5044
5092
  ...props,
5045
- children: /* @__PURE__ */ jsx26(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx26(
5093
+ children: /* @__PURE__ */ jsx27(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx27(
5046
5094
  "div",
5047
5095
  {
5048
5096
  className: cn("rounded-full bg-primary-foreground", DOT_CLASSES[resolved])
@@ -5061,7 +5109,7 @@ function RadioList({
5061
5109
  "aria-label": ariaLabel
5062
5110
  }) {
5063
5111
  const baseId = React22.useId();
5064
- return /* @__PURE__ */ jsx26(
5112
+ return /* @__PURE__ */ jsx27(
5065
5113
  RadioGroup,
5066
5114
  {
5067
5115
  value,
@@ -5072,7 +5120,7 @@ function RadioList({
5072
5120
  children: options.map((opt, i) => {
5073
5121
  const selected = value === opt.value;
5074
5122
  const id = `${baseId}-${i}`;
5075
- return /* @__PURE__ */ jsxs15(
5123
+ return /* @__PURE__ */ jsxs16(
5076
5124
  "label",
5077
5125
  {
5078
5126
  htmlFor: id,
@@ -5083,9 +5131,9 @@ function RadioList({
5083
5131
  opt.disabled && "cursor-not-allowed text-disabled-foreground"
5084
5132
  ),
5085
5133
  children: [
5086
- /* @__PURE__ */ jsx26(RadioGroupItem, { id, value: opt.value, disabled: opt.disabled }),
5087
- /* @__PURE__ */ jsx26("span", { className: "flex-1 truncate", children: opt.label }),
5088
- opt.hint != null && opt.hint !== "" ? /* @__PURE__ */ jsx26("span", { className: "shrink-0 text-xs tabular-nums text-muted-foreground", children: opt.hint }) : null
5134
+ /* @__PURE__ */ jsx27(RadioGroupItem, { id, value: opt.value, disabled: opt.disabled }),
5135
+ /* @__PURE__ */ jsx27("span", { className: "flex-1 truncate", children: opt.label }),
5136
+ opt.hint != null && opt.hint !== "" ? /* @__PURE__ */ jsx27("span", { className: "shrink-0 text-xs tabular-nums text-muted-foreground", children: opt.hint }) : null
5089
5137
  ]
5090
5138
  },
5091
5139
  opt.value
@@ -5100,7 +5148,7 @@ import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
5100
5148
  import * as TogglePrimitive from "@radix-ui/react-toggle";
5101
5149
  import { cva as cva4 } from "class-variance-authority";
5102
5150
  import * as React23 from "react";
5103
- import { jsx as jsx27 } from "react/jsx-runtime";
5151
+ import { jsx as jsx28 } from "react/jsx-runtime";
5104
5152
  var toggleVariants = cva4(
5105
5153
  "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
5106
5154
  {
@@ -5126,7 +5174,7 @@ var toggleVariants = cva4(
5126
5174
  }
5127
5175
  }
5128
5176
  );
5129
- var Toggle = React23.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx27(
5177
+ var Toggle = React23.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx28(
5130
5178
  TogglePrimitive.Root,
5131
5179
  {
5132
5180
  ref,
@@ -5137,20 +5185,20 @@ var Toggle = React23.forwardRef(({ className, variant, size, ...props }, ref) =>
5137
5185
  ));
5138
5186
  Toggle.displayName = TogglePrimitive.Root.displayName;
5139
5187
  var ToggleGroupContext = React23.createContext({ size: "default", variant: "default" });
5140
- var ToggleGroup = React23.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx27(
5188
+ var ToggleGroup = React23.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx28(
5141
5189
  ToggleGroupPrimitive.Root,
5142
5190
  {
5143
5191
  ref,
5144
5192
  "data-slot": "toggle-group",
5145
5193
  className: cn("flex items-center justify-center gap-1", className),
5146
5194
  ...props,
5147
- children: /* @__PURE__ */ jsx27(ToggleGroupContext.Provider, { value: { variant, size }, children })
5195
+ children: /* @__PURE__ */ jsx28(ToggleGroupContext.Provider, { value: { variant, size }, children })
5148
5196
  }
5149
5197
  ));
5150
5198
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
5151
5199
  var ToggleGroupItem = React23.forwardRef(({ className, children, variant, size, ...props }, ref) => {
5152
5200
  const context = React23.useContext(ToggleGroupContext);
5153
- return /* @__PURE__ */ jsx27(
5201
+ return /* @__PURE__ */ jsx28(
5154
5202
  ToggleGroupPrimitive.Item,
5155
5203
  {
5156
5204
  ref,
@@ -5171,7 +5219,7 @@ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
5171
5219
 
5172
5220
  // src/floating-dock.tsx
5173
5221
  import * as React24 from "react";
5174
- import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
5222
+ import { jsx as jsx29, jsxs as jsxs17 } from "react/jsx-runtime";
5175
5223
  var BASE_SIZE = 40;
5176
5224
  var BASE_ICON = 20;
5177
5225
  var REACH = 150;
@@ -5191,29 +5239,29 @@ function FloatingDock({
5191
5239
  growthFactor = 2,
5192
5240
  labelPosition = "top"
5193
5241
  }) {
5194
- return /* @__PURE__ */ jsxs16("div", { className: cn("flex w-auto items-center justify-center bg-background", className), children: [
5195
- /* @__PURE__ */ jsx28(FloatingDockPhone, { items }),
5196
- /* @__PURE__ */ jsx28(FloatingDockDesktop, { items, growthFactor, labelPosition })
5242
+ return /* @__PURE__ */ jsxs17("div", { className: cn("flex w-auto items-center justify-center bg-background", className), children: [
5243
+ /* @__PURE__ */ jsx29(FloatingDockPhone, { items }),
5244
+ /* @__PURE__ */ jsx29(FloatingDockDesktop, { items, growthFactor, labelPosition })
5197
5245
  ] });
5198
5246
  }
5199
5247
  function BalancedFloatingDock(props) {
5200
- return /* @__PURE__ */ jsx28(FloatingDock, { growthFactor: 1.8, labelPosition: "side", ...props });
5248
+ return /* @__PURE__ */ jsx29(FloatingDock, { growthFactor: 1.8, labelPosition: "side", ...props });
5201
5249
  }
5202
5250
  function FloatingDockPhone({ items }) {
5203
5251
  const [open, setOpen] = React24.useState(false);
5204
- return /* @__PURE__ */ jsxs16("div", { className: "relative block md:hidden", children: [
5205
- /* @__PURE__ */ jsx28(
5252
+ return /* @__PURE__ */ jsxs17("div", { className: "relative block md:hidden", children: [
5253
+ /* @__PURE__ */ jsx29(
5206
5254
  Button2,
5207
5255
  {
5208
5256
  type: "button",
5209
5257
  variant: "quiet",
5210
5258
  "aria-label": open ? "Close menu" : "Open menu",
5211
- icon: open ? /* @__PURE__ */ jsx28(PanelTopCloseIcon, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx28(PanelTopOpenIcon, { className: "h-5 w-5" }),
5259
+ icon: open ? /* @__PURE__ */ jsx29(PanelTopCloseIcon, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx29(PanelTopOpenIcon, { className: "h-5 w-5" }),
5212
5260
  "aria-expanded": open,
5213
5261
  onClick: () => setOpen(!open)
5214
5262
  }
5215
5263
  ),
5216
- /* @__PURE__ */ jsx28(
5264
+ /* @__PURE__ */ jsx29(
5217
5265
  "div",
5218
5266
  {
5219
5267
  "data-open": open,
@@ -5223,32 +5271,32 @@ function FloatingDockPhone({ items }) {
5223
5271
  PANEL_MOTION_CLASS,
5224
5272
  open ? "translate-y-0" : "pointer-events-none -translate-y-full"
5225
5273
  ),
5226
- children: /* @__PURE__ */ jsxs16("div", { className: "flex h-full flex-col", children: [
5227
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between border-b border-border p-4", children: [
5228
- /* @__PURE__ */ jsx28("h2", { className: "text-lg font-medium", children: "Menu" }),
5229
- /* @__PURE__ */ jsx28(
5274
+ children: /* @__PURE__ */ jsxs17("div", { className: "flex h-full flex-col", children: [
5275
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between border-b border-border p-4", children: [
5276
+ /* @__PURE__ */ jsx29("h2", { className: "text-lg font-medium", children: "Menu" }),
5277
+ /* @__PURE__ */ jsx29(
5230
5278
  Button2,
5231
5279
  {
5232
5280
  type: "button",
5233
5281
  variant: "quiet",
5234
5282
  "aria-label": "Close menu",
5235
- icon: /* @__PURE__ */ jsx28(XIcon, { className: "h-6 w-6" }),
5283
+ icon: /* @__PURE__ */ jsx29(XIcon, { className: "h-6 w-6" }),
5236
5284
  onClick: () => setOpen(false)
5237
5285
  }
5238
5286
  )
5239
5287
  ] }),
5240
- /* @__PURE__ */ jsx28("div", { className: "flex-1 overflow-y-auto", children: items.map((item) => /* @__PURE__ */ jsxs16(
5288
+ /* @__PURE__ */ jsx29("div", { className: "flex-1 overflow-y-auto", children: items.map((item) => /* @__PURE__ */ jsxs17(
5241
5289
  HostLink,
5242
5290
  {
5243
5291
  href: item.href,
5244
5292
  className: "flex items-center justify-between border-b border-border p-4",
5245
5293
  onClick: () => setOpen(false),
5246
5294
  children: [
5247
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center space-x-4", children: [
5248
- /* @__PURE__ */ jsx28("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-muted", children: /* @__PURE__ */ jsx28("div", { className: "h-5 w-5 [&>svg]:h-full [&>svg]:w-full", children: item.icon }) }),
5249
- /* @__PURE__ */ jsx28("span", { className: "font-medium", children: item.label })
5295
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-center space-x-4", children: [
5296
+ /* @__PURE__ */ jsx29("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-muted", children: /* @__PURE__ */ jsx29("div", { className: "h-5 w-5 [&>svg]:h-full [&>svg]:w-full", children: item.icon }) }),
5297
+ /* @__PURE__ */ jsx29("span", { className: "font-medium", children: item.label })
5250
5298
  ] }),
5251
- /* @__PURE__ */ jsx28(ChevronRightIcon, { className: "h-5 w-5 text-muted-foreground" })
5299
+ /* @__PURE__ */ jsx29(ChevronRightIcon, { className: "h-5 w-5 text-muted-foreground" })
5252
5300
  ]
5253
5301
  },
5254
5302
  item.label
@@ -5275,7 +5323,7 @@ function FloatingDockDesktop({
5275
5323
  })
5276
5324
  );
5277
5325
  };
5278
- return /* @__PURE__ */ jsx28(
5326
+ return /* @__PURE__ */ jsx29(
5279
5327
  "div",
5280
5328
  {
5281
5329
  onMouseMove: (e) => measure(e.clientX),
@@ -5289,8 +5337,8 @@ function FloatingDockDesktop({
5289
5337
  const size = dockSize(BASE_SIZE, growthFactor, distance);
5290
5338
  const icon = dockSize(BASE_ICON, growthFactor, distance);
5291
5339
  const under = Number.isFinite(distance) && Math.abs(distance) < BASE_SIZE / 2;
5292
- return /* @__PURE__ */ jsx28(HostLink, { href: item.href, "aria-label": item.label, children: /* @__PURE__ */ jsxs16("div", { className: "relative", children: [
5293
- /* @__PURE__ */ jsx28(
5340
+ return /* @__PURE__ */ jsx29(HostLink, { href: item.href, "aria-label": item.label, children: /* @__PURE__ */ jsxs17("div", { className: "relative", children: [
5341
+ /* @__PURE__ */ jsx29(
5294
5342
  "div",
5295
5343
  {
5296
5344
  ref: (el) => {
@@ -5301,7 +5349,7 @@ function FloatingDockDesktop({
5301
5349
  "relative flex aspect-square items-center justify-center rounded-full bg-muted transition-[width,height]",
5302
5350
  MAGNIFY_MOTION
5303
5351
  ),
5304
- children: /* @__PURE__ */ jsx28(
5352
+ children: /* @__PURE__ */ jsx29(
5305
5353
  "div",
5306
5354
  {
5307
5355
  style: { width: icon, height: icon },
@@ -5314,7 +5362,7 @@ function FloatingDockDesktop({
5314
5362
  )
5315
5363
  }
5316
5364
  ),
5317
- /* @__PURE__ */ jsx28(
5365
+ /* @__PURE__ */ jsx29(
5318
5366
  "div",
5319
5367
  {
5320
5368
  "data-shown": under,
@@ -5336,7 +5384,7 @@ function FloatingDockDesktop({
5336
5384
 
5337
5385
  // src/deferred-dialog.tsx
5338
5386
  import * as React25 from "react";
5339
- import { jsx as jsx29 } from "react/jsx-runtime";
5387
+ import { jsx as jsx30 } from "react/jsx-runtime";
5340
5388
  function deferredDialog(name, load, isOpen) {
5341
5389
  let pending = null;
5342
5390
  const preload = () => pending ??= load().then((component) => ({ default: component }));
@@ -5346,7 +5394,7 @@ function deferredDialog(name, load, isOpen) {
5346
5394
  const [opened, setOpened] = React25.useState(open);
5347
5395
  if (open && !opened) setOpened(true);
5348
5396
  if (!open && !opened) return null;
5349
- return /* @__PURE__ */ jsx29(React25.Suspense, { fallback: null, children: /* @__PURE__ */ jsx29(Body, { ...props }) });
5397
+ return /* @__PURE__ */ jsx30(React25.Suspense, { fallback: null, children: /* @__PURE__ */ jsx30(Body, { ...props }) });
5350
5398
  }
5351
5399
  Deferred.displayName = name;
5352
5400
  return Object.assign(Deferred, { preload });
@@ -5392,10 +5440,10 @@ var TextInputDialog = deferredDialog(
5392
5440
  // src/clipboard-fallback-host.tsx
5393
5441
  import { clipboardFallbackOpener } from "@ai-matrx/kit/clipboard-fallback-opener";
5394
5442
  import { useOpenerHost } from "@ai-matrx/kit/opener-react";
5395
- import { jsx as jsx30 } from "react/jsx-runtime";
5443
+ import { jsx as jsx31 } from "react/jsx-runtime";
5396
5444
  function ClipboardFallbackHost() {
5397
5445
  const { open, shown, settle } = useOpenerHost(clipboardFallbackOpener);
5398
- return /* @__PURE__ */ jsx30(
5446
+ return /* @__PURE__ */ jsx31(
5399
5447
  ClipboardFallbackDialog,
5400
5448
  {
5401
5449
  open,
@@ -5411,7 +5459,7 @@ function ClipboardFallbackHost() {
5411
5459
 
5412
5460
  // src/floating-sheet.tsx
5413
5461
  import { useState as useState15, useEffect as useEffect9, useCallback as useCallback7, useRef as useRef9 } from "react";
5414
- import { Fragment as Fragment7, jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
5462
+ import { Fragment as Fragment7, jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
5415
5463
  var FloatingSheet = ({
5416
5464
  children,
5417
5465
  isOpen,
@@ -5717,8 +5765,8 @@ var FloatingSheet = ({
5717
5765
  const bottomPadding = showFooter ? "" : "pb-safe";
5718
5766
  return `${basePadding} ${bottomPadding}`.trim();
5719
5767
  };
5720
- return /* @__PURE__ */ jsxs17(Fragment7, { children: [
5721
- isOpen && hasBackdrop && /* @__PURE__ */ jsx31(
5768
+ return /* @__PURE__ */ jsxs18(Fragment7, { children: [
5769
+ isOpen && hasBackdrop && /* @__PURE__ */ jsx32(
5722
5770
  "div",
5723
5771
  {
5724
5772
  className: `fixed ${respectHeader ? "left-0 right-0 top-10 bottom-0" : "inset-0"} bg-[var(--matrx-overlay-scrim-soft)] z-40 ${isMobile ? "backdrop-blur-sm" : ""} transition-opacity ${durationClass} ${backdropClassName}`,
@@ -5727,7 +5775,7 @@ var FloatingSheet = ({
5727
5775
  "data-testid": "floating-sheet-backdrop"
5728
5776
  }
5729
5777
  ),
5730
- /* @__PURE__ */ jsx31(
5778
+ /* @__PURE__ */ jsx32(
5731
5779
  "div",
5732
5780
  {
5733
5781
  ref: sheetRef,
@@ -5739,25 +5787,25 @@ var FloatingSheet = ({
5739
5787
  "aria-labelledby": "sheet-title",
5740
5788
  tabIndex: -1,
5741
5789
  "data-testid": "floating-sheet",
5742
- children: /* @__PURE__ */ jsxs17("div", { className: "flex flex-col h-full overflow-hidden", children: [
5743
- showHeader && /* @__PURE__ */ jsxs17(
5790
+ children: /* @__PURE__ */ jsxs18("div", { className: "flex flex-col h-full overflow-hidden", children: [
5791
+ showHeader && /* @__PURE__ */ jsxs18(
5744
5792
  "div",
5745
5793
  {
5746
5794
  className: `flex items-center justify-between border-b border-border ${getMobileHeaderClass()} ${headerClassName}`,
5747
5795
  children: [
5748
- /* @__PURE__ */ jsxs17("div", { className: "flex-1 min-w-0", children: [
5749
- typeof title === "string" ? /* @__PURE__ */ jsx31("h2", { id: "sheet-title", className: `${isMobile ? "text-xl" : "text-lg"} font-semibold text-foreground`, children: title }) : /* @__PURE__ */ jsx31("div", { id: "sheet-title", children: title }),
5750
- description && (typeof description === "string" ? /* @__PURE__ */ jsx31("p", { className: "type-body text-muted-foreground mt-1", children: description }) : /* @__PURE__ */ jsx31("div", { className: "mt-1", children: description }))
5796
+ /* @__PURE__ */ jsxs18("div", { className: "flex-1 min-w-0", children: [
5797
+ typeof title === "string" ? /* @__PURE__ */ jsx32("h2", { id: "sheet-title", className: `${isMobile ? "text-xl" : "text-lg"} font-semibold text-foreground`, children: title }) : /* @__PURE__ */ jsx32("div", { id: "sheet-title", children: title }),
5798
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx32("p", { className: "type-body text-muted-foreground mt-1", children: description }) : /* @__PURE__ */ jsx32("div", { className: "mt-1", children: description }))
5751
5799
  ] }),
5752
- headerContent && /* @__PURE__ */ jsx31("div", { className: "ml-4 flex items-center", children: headerContent }),
5753
- showCloseButton && /* @__PURE__ */ jsx31(
5800
+ headerContent && /* @__PURE__ */ jsx32("div", { className: "ml-4 flex items-center", children: headerContent }),
5801
+ showCloseButton && /* @__PURE__ */ jsx32(
5754
5802
  "button",
5755
5803
  {
5756
5804
  onClick: onClose,
5757
5805
  className: `ml-4 rounded-full ${isMobile ? "p-2" : "p-1.5"} text-muted-foreground hover:text-foreground bg-transparent hover:bg-accent focus:outline-none focus:ring-2 focus:ring-ring`,
5758
5806
  "aria-label": "Close",
5759
5807
  "data-testid": "floating-sheet-close",
5760
- children: closeButton || /* @__PURE__ */ jsxs17(
5808
+ children: closeButton || /* @__PURE__ */ jsxs18(
5761
5809
  "svg",
5762
5810
  {
5763
5811
  xmlns: "http://www.w3.org/2000/svg",
@@ -5769,8 +5817,8 @@ var FloatingSheet = ({
5769
5817
  strokeLinecap: "round",
5770
5818
  strokeLinejoin: "round",
5771
5819
  children: [
5772
- /* @__PURE__ */ jsx31("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
5773
- /* @__PURE__ */ jsx31("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
5820
+ /* @__PURE__ */ jsx32("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
5821
+ /* @__PURE__ */ jsx32("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
5774
5822
  ]
5775
5823
  }
5776
5824
  )
@@ -5779,7 +5827,7 @@ var FloatingSheet = ({
5779
5827
  ]
5780
5828
  }
5781
5829
  ),
5782
- /* @__PURE__ */ jsx31(
5830
+ /* @__PURE__ */ jsx32(
5783
5831
  "div",
5784
5832
  {
5785
5833
  ref: contentRef,
@@ -5788,7 +5836,7 @@ var FloatingSheet = ({
5788
5836
  children
5789
5837
  }
5790
5838
  ),
5791
- showFooter && /* @__PURE__ */ jsx31(
5839
+ showFooter && /* @__PURE__ */ jsx32(
5792
5840
  "div",
5793
5841
  {
5794
5842
  className: `border-t border-border ${getMobileFooterClass()} ${footerClassName}`,
@@ -5803,12 +5851,12 @@ var FloatingSheet = ({
5803
5851
  };
5804
5852
 
5805
5853
  // src/simple-tooltip.tsx
5806
- import { jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
5854
+ import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
5807
5855
  var SimpleTooltip = ({ children, text }) => {
5808
5856
  if (!text) return children;
5809
- return /* @__PURE__ */ jsxs18(Tooltip, { children: [
5810
- /* @__PURE__ */ jsx32(TooltipTrigger, { asChild: true, children }),
5811
- /* @__PURE__ */ jsx32(TooltipContent, { children: /* @__PURE__ */ jsx32("p", { children: text }) })
5857
+ return /* @__PURE__ */ jsxs19(Tooltip, { children: [
5858
+ /* @__PURE__ */ jsx33(TooltipTrigger, { asChild: true, children }),
5859
+ /* @__PURE__ */ jsx33(TooltipContent, { children: /* @__PURE__ */ jsx33("p", { children: text }) })
5812
5860
  ] });
5813
5861
  };
5814
5862
  var AdvancedTooltip = ({
@@ -5831,16 +5879,16 @@ var AdvancedTooltip = ({
5831
5879
  success: "bg-success text-success-foreground"
5832
5880
  };
5833
5881
  const baseContentClasses = "rounded-md px-3 py-1.5 text-sm shadow-md";
5834
- return /* @__PURE__ */ jsxs18(Tooltip, { delayDuration, children: [
5835
- /* @__PURE__ */ jsx32(TooltipTrigger, { asChild: true, className, children }),
5836
- /* @__PURE__ */ jsx32(
5882
+ return /* @__PURE__ */ jsxs19(Tooltip, { delayDuration, children: [
5883
+ /* @__PURE__ */ jsx33(TooltipTrigger, { asChild: true, className, children }),
5884
+ /* @__PURE__ */ jsx33(
5837
5885
  TooltipContent,
5838
5886
  {
5839
5887
  side,
5840
5888
  align,
5841
5889
  sideOffset,
5842
5890
  className: `${baseContentClasses} ${variantStyles[variant]} ${contentClassName}`,
5843
- children: /* @__PURE__ */ jsx32("p", { className: "leading-none whitespace-pre-wrap", children: text })
5891
+ children: /* @__PURE__ */ jsx33("p", { className: "leading-none whitespace-pre-wrap", children: text })
5844
5892
  }
5845
5893
  )
5846
5894
  ] });
@@ -5848,7 +5896,7 @@ var AdvancedTooltip = ({
5848
5896
 
5849
5897
  // src/loading-spinner.tsx
5850
5898
  import React27 from "react";
5851
- import { Fragment as Fragment8, jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
5899
+ import { Fragment as Fragment8, jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
5852
5900
  var animationStyles = `
5853
5901
  @keyframes pulseWave {
5854
5902
  0% { opacity: 0.3; transform: scale(0.8); }
@@ -5925,19 +5973,19 @@ var LoadingSpinner = ({
5925
5973
  }
5926
5974
  };
5927
5975
  const sizeClasses2 = getSizeClasses();
5928
- const renderDots = () => /* @__PURE__ */ jsxs19("div", { className: cn("flex items-center", sizeClasses2.container), children: [
5929
- /* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-1") }),
5930
- /* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-2") }),
5931
- /* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-3") })
5976
+ const renderDots = () => /* @__PURE__ */ jsxs20("div", { className: cn("flex items-center", sizeClasses2.container), children: [
5977
+ /* @__PURE__ */ jsx34("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-1") }),
5978
+ /* @__PURE__ */ jsx34("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-2") }),
5979
+ /* @__PURE__ */ jsx34("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-3") })
5932
5980
  ] });
5933
- const renderBars = () => /* @__PURE__ */ jsxs19("div", { className: cn("flex items-center", sizeClasses2.container), children: [
5934
- /* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-1") }),
5935
- /* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-2") }),
5936
- /* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-3") }),
5937
- /* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-4") })
5981
+ const renderBars = () => /* @__PURE__ */ jsxs20("div", { className: cn("flex items-center", sizeClasses2.container), children: [
5982
+ /* @__PURE__ */ jsx34("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-1") }),
5983
+ /* @__PURE__ */ jsx34("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-2") }),
5984
+ /* @__PURE__ */ jsx34("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-3") }),
5985
+ /* @__PURE__ */ jsx34("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-4") })
5938
5986
  ] });
5939
- const renderBrain = () => /* @__PURE__ */ jsxs19("div", { className: "relative w-6 h-6 flex items-center justify-center", children: [
5940
- /* @__PURE__ */ jsx33("div", { className: "absolute", children: /* @__PURE__ */ jsx33(
5987
+ const renderBrain = () => /* @__PURE__ */ jsxs20("div", { className: "relative w-6 h-6 flex items-center justify-center", children: [
5988
+ /* @__PURE__ */ jsx34("div", { className: "absolute", children: /* @__PURE__ */ jsx34(
5941
5989
  "svg",
5942
5990
  {
5943
5991
  width: "24",
@@ -5945,7 +5993,7 @@ var LoadingSpinner = ({
5945
5993
  viewBox: "0 0 24 24",
5946
5994
  fill: "none",
5947
5995
  className: "w-5 h-5 text-primary dark:text-primary-foreground",
5948
- children: /* @__PURE__ */ jsx33(
5996
+ children: /* @__PURE__ */ jsx34(
5949
5997
  "path",
5950
5998
  {
5951
5999
  d: "M12 4C9.5 4 7.5 5.5 7.5 8C7.5 9 7.5 9.5 7 10.5C6.5 11.5 6 12 6 13.5C6 15.5 7.5 17 9.5 17C10.5 17 11 16.5 12 16.5C13 16.5 13.5 17 14.5 17C16.5 17 18 15.5 18 13.5C18 12 17.5 11.5 17 10.5C16.5 9.5 16.5 9 16.5 8C16.5 5.5 14.5 4 12 4Z",
@@ -5956,44 +6004,44 @@ var LoadingSpinner = ({
5956
6004
  )
5957
6005
  }
5958
6006
  ) }),
5959
- /* @__PURE__ */ jsxs19("div", { className: "absolute inset-0", children: [
5960
- /* @__PURE__ */ jsx33("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[8px] top-[10px] loading-neuron-1" }),
5961
- /* @__PURE__ */ jsx33("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[12px] top-[8px] loading-neuron-2" }),
5962
- /* @__PURE__ */ jsx33("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[16px] top-[10px] loading-neuron-3" }),
5963
- /* @__PURE__ */ jsx33("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[10px] top-[14px] loading-neuron-4" }),
5964
- /* @__PURE__ */ jsx33("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[14px] top-[14px] loading-neuron-5" })
6007
+ /* @__PURE__ */ jsxs20("div", { className: "absolute inset-0", children: [
6008
+ /* @__PURE__ */ jsx34("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[8px] top-[10px] loading-neuron-1" }),
6009
+ /* @__PURE__ */ jsx34("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[12px] top-[8px] loading-neuron-2" }),
6010
+ /* @__PURE__ */ jsx34("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[16px] top-[10px] loading-neuron-3" }),
6011
+ /* @__PURE__ */ jsx34("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[10px] top-[14px] loading-neuron-4" }),
6012
+ /* @__PURE__ */ jsx34("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[14px] top-[14px] loading-neuron-5" })
5965
6013
  ] }),
5966
- /* @__PURE__ */ jsx33("div", { className: "absolute w-full h-full rounded-full border border-primary/30 dark:border-primary-foreground/30 loading-brain-pulse-1" }),
5967
- /* @__PURE__ */ jsx33("div", { className: "absolute w-full h-full rounded-full border border-primary/30 dark:border-primary-foreground/30 loading-brain-pulse-2" })
6014
+ /* @__PURE__ */ jsx34("div", { className: "absolute w-full h-full rounded-full border border-primary/30 dark:border-primary-foreground/30 loading-brain-pulse-1" }),
6015
+ /* @__PURE__ */ jsx34("div", { className: "absolute w-full h-full rounded-full border border-primary/30 dark:border-primary-foreground/30 loading-brain-pulse-2" })
5968
6016
  ] });
5969
- const renderMinimal = () => /* @__PURE__ */ jsx33("div", { className: "relative", children: /* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-1") }) });
5970
- const renderWorkflow = () => /* @__PURE__ */ jsxs19("div", { className: "flex flex-col items-center justify-center space-y-6", children: [
5971
- /* @__PURE__ */ jsxs19("div", { className: "relative", children: [
5972
- /* @__PURE__ */ jsx33("div", { className: "w-16 h-16 bg-primary/10 dark:bg-primary-foreground/10 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx33(WorkflowIcon, { className: "w-8 h-8 text-primary dark:text-primary-foreground" }) }),
5973
- /* @__PURE__ */ jsx33("div", { className: "absolute -top-1 -right-1 w-6 h-6 bg-primary dark:bg-primary-foreground rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx33(PlusIcon, { className: "w-3 h-3 text-primary-foreground dark:text-primary" }) }),
5974
- /* @__PURE__ */ jsx33("div", { className: "absolute inset-0 border-2 border-transparent border-t-primary dark:border-t-primary-foreground rounded-full matrx-spin" })
6017
+ const renderMinimal = () => /* @__PURE__ */ jsx34("div", { className: "relative", children: /* @__PURE__ */ jsx34("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-1") }) });
6018
+ const renderWorkflow = () => /* @__PURE__ */ jsxs20("div", { className: "flex flex-col items-center justify-center space-y-6", children: [
6019
+ /* @__PURE__ */ jsxs20("div", { className: "relative", children: [
6020
+ /* @__PURE__ */ jsx34("div", { className: "w-16 h-16 bg-primary/10 dark:bg-primary-foreground/10 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx34(WorkflowIcon, { className: "w-8 h-8 text-primary dark:text-primary-foreground" }) }),
6021
+ /* @__PURE__ */ jsx34("div", { className: "absolute -top-1 -right-1 w-6 h-6 bg-primary dark:bg-primary-foreground rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx34(PlusIcon, { className: "w-3 h-3 text-primary-foreground dark:text-primary" }) }),
6022
+ /* @__PURE__ */ jsx34("div", { className: "absolute inset-0 border-2 border-transparent border-t-primary dark:border-t-primary-foreground rounded-full matrx-spin" })
5975
6023
  ] }),
5976
- /* @__PURE__ */ jsxs19("div", { className: "text-center space-y-2", children: [
5977
- /* @__PURE__ */ jsxs19("h2", { className: "text-lg font-semibold text-foreground flex items-center gap-2 justify-center", children: [
5978
- /* @__PURE__ */ jsx33(Loader2Icon, { className: "w-4 h-4 matrx-spin" }),
6024
+ /* @__PURE__ */ jsxs20("div", { className: "text-center space-y-2", children: [
6025
+ /* @__PURE__ */ jsxs20("h2", { className: "text-lg font-semibold text-foreground flex items-center gap-2 justify-center", children: [
6026
+ /* @__PURE__ */ jsx34(Loader2Icon, { className: "w-4 h-4 matrx-spin" }),
5979
6027
  title || "Loading Workflow"
5980
6028
  ] }),
5981
- /* @__PURE__ */ jsx33("p", { className: "type-body text-muted-foreground max-w-sm", children: subtitle || message || "Setting up your workflow..." })
6029
+ /* @__PURE__ */ jsx34("p", { className: "type-body text-muted-foreground max-w-sm", children: subtitle || message || "Setting up your workflow..." })
5982
6030
  ] }),
5983
- showProgressSteps && /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2 type-secondary text-muted-foreground", children: [
5984
- /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1", children: [
5985
- /* @__PURE__ */ jsx33("div", { className: "w-2 h-2 bg-primary dark:bg-primary-foreground rounded-full matrx-pulse" }),
5986
- /* @__PURE__ */ jsx33("span", { children: "Loading" })
6031
+ showProgressSteps && /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2 type-secondary text-muted-foreground", children: [
6032
+ /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-1", children: [
6033
+ /* @__PURE__ */ jsx34("div", { className: "w-2 h-2 bg-primary dark:bg-primary-foreground rounded-full matrx-pulse" }),
6034
+ /* @__PURE__ */ jsx34("span", { children: "Loading" })
5987
6035
  ] }),
5988
- /* @__PURE__ */ jsx33("div", { className: "w-4 h-px bg-muted-foreground/30" }),
5989
- /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1", children: [
5990
- /* @__PURE__ */ jsx33("div", { className: "w-2 h-2 bg-muted-foreground/30 rounded-full" }),
5991
- /* @__PURE__ */ jsx33("span", { children: "Initializing" })
6036
+ /* @__PURE__ */ jsx34("div", { className: "w-4 h-px bg-muted-foreground/30" }),
6037
+ /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-1", children: [
6038
+ /* @__PURE__ */ jsx34("div", { className: "w-2 h-2 bg-muted-foreground/30 rounded-full" }),
6039
+ /* @__PURE__ */ jsx34("span", { children: "Initializing" })
5992
6040
  ] }),
5993
- /* @__PURE__ */ jsx33("div", { className: "w-4 h-px bg-muted-foreground/30" }),
5994
- /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1", children: [
5995
- /* @__PURE__ */ jsx33("div", { className: "w-2 h-2 bg-muted-foreground/30 rounded-full" }),
5996
- /* @__PURE__ */ jsx33("span", { children: "Ready" })
6041
+ /* @__PURE__ */ jsx34("div", { className: "w-4 h-px bg-muted-foreground/30" }),
6042
+ /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-1", children: [
6043
+ /* @__PURE__ */ jsx34("div", { className: "w-2 h-2 bg-muted-foreground/30 rounded-full" }),
6044
+ /* @__PURE__ */ jsx34("span", { children: "Ready" })
5997
6045
  ] })
5998
6046
  ] })
5999
6047
  ] });
@@ -6022,13 +6070,13 @@ var LoadingSpinner = ({
6022
6070
  }
6023
6071
  };
6024
6072
  if (variant === "workflow" && (fullscreen || overlay)) {
6025
- return /* @__PURE__ */ jsxs19("div", { className: cn(
6073
+ return /* @__PURE__ */ jsxs20("div", { className: cn(
6026
6074
  "flex items-center justify-center bg-background",
6027
6075
  fullscreen && "h-dvh w-full",
6028
6076
  className
6029
6077
  ), "aria-busy": "true", children: [
6030
- overlay && /* @__PURE__ */ jsx33("div", { className: "absolute inset-0 bg-background/80 backdrop-blur-sm z-50" }),
6031
- /* @__PURE__ */ jsx33("div", { className: cn(
6078
+ overlay && /* @__PURE__ */ jsx34("div", { className: "absolute inset-0 bg-background/80 backdrop-blur-sm z-50" }),
6079
+ /* @__PURE__ */ jsx34("div", { className: cn(
6032
6080
  "flex flex-col items-center justify-center",
6033
6081
  overlay && "relative z-50"
6034
6082
  ), children: renderWorkflow() })
@@ -6036,21 +6084,21 @@ var LoadingSpinner = ({
6036
6084
  }
6037
6085
  return (
6038
6086
  // aria-busy: a spinner is a stand-in, and whatever measures a settled layout waits for it.
6039
- /* @__PURE__ */ jsx33("div", { className: cn("flex items-center", className), "aria-busy": "true", children: variant === "workflow" ? renderWorkflow() : /* @__PURE__ */ jsxs19(Fragment8, { children: [
6087
+ /* @__PURE__ */ jsx34("div", { className: cn("flex items-center", className), "aria-busy": "true", children: variant === "workflow" ? renderWorkflow() : /* @__PURE__ */ jsxs20(Fragment8, { children: [
6040
6088
  renderSpinner(),
6041
- showMessage && /* @__PURE__ */ jsx33("span", { className: cn("ml-3 text-muted-foreground", sizeClasses2.text), children: message || getDefaultMessage() })
6089
+ showMessage && /* @__PURE__ */ jsx34("span", { className: cn("ml-3 text-muted-foreground", sizeClasses2.text), children: message || getDefaultMessage() })
6042
6090
  ] }) })
6043
6091
  );
6044
6092
  };
6045
6093
 
6046
6094
  // src/mini-loader.tsx
6047
- import { jsx as jsx34 } from "react/jsx-runtime";
6095
+ import { jsx as jsx35 } from "react/jsx-runtime";
6048
6096
  function MatrxMiniLoader() {
6049
- return /* @__PURE__ */ jsx34(LoadingSpinner, { variant: "dots", message: "Initializing Matrx...", size: "md" });
6097
+ return /* @__PURE__ */ jsx35(LoadingSpinner, { variant: "dots", message: "Initializing Matrx...", size: "md" });
6050
6098
  }
6051
6099
 
6052
6100
  // src/suspense-loader.tsx
6053
- import { jsx as jsx35, jsxs as jsxs20 } from "react/jsx-runtime";
6101
+ import { jsx as jsx36, jsxs as jsxs21 } from "react/jsx-runtime";
6054
6102
  var sizeClasses = {
6055
6103
  xs: "h-3 w-3",
6056
6104
  sm: "h-4 w-4",
@@ -6063,7 +6111,7 @@ function SuspenseLoader({
6063
6111
  message,
6064
6112
  className = ""
6065
6113
  }) {
6066
- const spinner = /* @__PURE__ */ jsx35(
6114
+ const spinner = /* @__PURE__ */ jsx36(
6067
6115
  Loader2Icon,
6068
6116
  {
6069
6117
  className: `${sizeClasses[size]} matrx-spin text-disabled-foreground ${className}`,
@@ -6071,7 +6119,7 @@ function SuspenseLoader({
6071
6119
  "aria-label": message ? void 0 : "Loading"
6072
6120
  }
6073
6121
  );
6074
- const content = message ? /* @__PURE__ */ jsxs20(
6122
+ const content = message ? /* @__PURE__ */ jsxs21(
6075
6123
  "span",
6076
6124
  {
6077
6125
  className: "inline-flex items-center gap-2",
@@ -6079,19 +6127,19 @@ function SuspenseLoader({
6079
6127
  "aria-live": "polite",
6080
6128
  children: [
6081
6129
  spinner,
6082
- /* @__PURE__ */ jsx35("span", { children: message })
6130
+ /* @__PURE__ */ jsx36("span", { children: message })
6083
6131
  ]
6084
6132
  }
6085
6133
  ) : spinner;
6086
6134
  if (centered) {
6087
- return /* @__PURE__ */ jsx35("div", { className: "flex items-center justify-center w-full h-full min-h-[2rem]", children: content });
6135
+ return /* @__PURE__ */ jsx36("div", { className: "flex items-center justify-center w-full h-full min-h-[2rem]", children: content });
6088
6136
  }
6089
6137
  return content;
6090
6138
  }
6091
6139
 
6092
6140
  // src/shimmer-text.tsx
6093
6141
  import { useCallback as useCallback8, useRef as useRef10 } from "react";
6094
- import { jsx as jsx36 } from "react/jsx-runtime";
6142
+ import { jsx as jsx37 } from "react/jsx-runtime";
6095
6143
  var SHIMMER_STYLE = {
6096
6144
  backgroundImage: "linear-gradient(90deg, color-mix(in srgb, currentColor 18%, transparent) 0%, currentColor 50%, color-mix(in srgb, currentColor 18%, transparent) 100%)",
6097
6145
  backgroundSize: "200% 100%",
@@ -6119,7 +6167,7 @@ function useShimmerSweep(durationMs = 2e3) {
6119
6167
  }
6120
6168
  function ShimmerText({ text, className }) {
6121
6169
  const ref = useShimmerSweep();
6122
- return /* @__PURE__ */ jsx36(
6170
+ return /* @__PURE__ */ jsx37(
6123
6171
  "span",
6124
6172
  {
6125
6173
  ref,
@@ -6178,7 +6226,7 @@ function formThemeClasses(theme) {
6178
6226
  import * as PopoverPrimitive2 from "@radix-ui/react-popover";
6179
6227
  import { Slot as Slot4 } from "@radix-ui/react-slot";
6180
6228
  import * as React28 from "react";
6181
- import { Fragment as Fragment9, jsx as jsx37, jsxs as jsxs21 } from "react/jsx-runtime";
6229
+ import { Fragment as Fragment9, jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
6182
6230
  var FIRST_USE_HINT_TITLE_MAX = 32;
6183
6231
  var FIRST_USE_HINT_DETAIL_MAX = 60;
6184
6232
  var FirstUseHintContext = React28.createContext(null);
@@ -6186,7 +6234,7 @@ function FirstUseHintProvider({
6186
6234
  store,
6187
6235
  children
6188
6236
  }) {
6189
- return /* @__PURE__ */ jsx37(FirstUseHintContext.Provider, { value: store, children });
6237
+ return /* @__PURE__ */ jsx38(FirstUseHintContext.Provider, { value: store, children });
6190
6238
  }
6191
6239
  var sessionLearned = /* @__PURE__ */ new Set();
6192
6240
  var warnedNoProvider = false;
@@ -6269,9 +6317,9 @@ function FirstUseHint({
6269
6317
  }),
6270
6318
  [target]
6271
6319
  );
6272
- return /* @__PURE__ */ jsxs21(Popover, { open, children: [
6273
- pulse ? /* @__PURE__ */ jsxs21(Fragment9, { children: [
6274
- /* @__PURE__ */ jsx37(
6320
+ return /* @__PURE__ */ jsxs22(Popover, { open, children: [
6321
+ pulse ? /* @__PURE__ */ jsxs22(Fragment9, { children: [
6322
+ /* @__PURE__ */ jsx38(
6275
6323
  Slot4,
6276
6324
  {
6277
6325
  ref: hostRef,
@@ -6280,8 +6328,8 @@ function FirstUseHint({
6280
6328
  children
6281
6329
  }
6282
6330
  ),
6283
- /* @__PURE__ */ jsx37(PopoverAnchor, { virtualRef })
6284
- ] }) : /* @__PURE__ */ jsx37(
6331
+ /* @__PURE__ */ jsx38(PopoverAnchor, { virtualRef })
6332
+ ] }) : /* @__PURE__ */ jsx38(
6285
6333
  PopoverAnchor,
6286
6334
  {
6287
6335
  asChild: true,
@@ -6293,7 +6341,7 @@ function FirstUseHint({
6293
6341
  children
6294
6342
  }
6295
6343
  ),
6296
- /* @__PURE__ */ jsxs21(
6344
+ /* @__PURE__ */ jsxs22(
6297
6345
  PopoverContent,
6298
6346
  {
6299
6347
  side,
@@ -6310,17 +6358,17 @@ function FirstUseHint({
6310
6358
  onInteractOutside: (e) => e.preventDefault(),
6311
6359
  onEscapeKeyDown: learn,
6312
6360
  children: [
6313
- /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-1 py-0.5 pl-3 pr-0.5", children: [
6314
- /* @__PURE__ */ jsxs21("div", { className: "flex min-w-0 flex-col py-1", children: [
6315
- /* @__PURE__ */ jsx37("span", { className: "type-secondary truncate font-medium text-foreground", children: title }),
6361
+ /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-1 py-0.5 pl-3 pr-0.5", children: [
6362
+ /* @__PURE__ */ jsxs22("div", { className: "flex min-w-0 flex-col py-1", children: [
6363
+ /* @__PURE__ */ jsx38("span", { className: "type-secondary truncate font-medium text-foreground", children: title }),
6316
6364
  detail ? (
6317
6365
  // Two lines at most: on a 375px phone a full 60-character line can wrap once.
6318
- /* @__PURE__ */ jsx37("span", { className: "type-secondary line-clamp-2 text-muted-foreground", children: detail })
6366
+ /* @__PURE__ */ jsx38("span", { className: "type-secondary line-clamp-2 text-muted-foreground", children: detail })
6319
6367
  ) : null
6320
6368
  ] }),
6321
- /* @__PURE__ */ jsx37(IconButton, { icon: XIcon, "aria-label": "Dismiss tip", className: "shrink-0", onClick: learn })
6369
+ /* @__PURE__ */ jsx38(IconButton, { icon: XIcon, "aria-label": "Dismiss tip", className: "shrink-0", onClick: learn })
6322
6370
  ] }),
6323
- /* @__PURE__ */ jsx37(PopoverPrimitive2.Arrow, { className: "fill-popover", width: 10, height: 5 })
6371
+ /* @__PURE__ */ jsx38(PopoverPrimitive2.Arrow, { className: "fill-popover", width: 10, height: 5 })
6324
6372
  ]
6325
6373
  }
6326
6374
  )
@@ -6329,7 +6377,7 @@ function FirstUseHint({
6329
6377
 
6330
6378
  // src/review-changes.tsx
6331
6379
  import * as React29 from "react";
6332
- import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
6380
+ import { jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
6333
6381
  var SKIP = "skip";
6334
6382
  function unansweredQuestions(preview, answers) {
6335
6383
  return preview.questions.filter((q) => !answers[q.id]);
@@ -6347,11 +6395,11 @@ function ItemDoor({ item, onOpenItem }) {
6347
6395
  const renderItem = React29.useContext(RenderItemContext);
6348
6396
  const hosted = renderItem ? renderItem(item) : null;
6349
6397
  if (hosted != null) {
6350
- return /* @__PURE__ */ jsx38("span", { "data-change-item": item.id, className: "inline-flex max-w-full items-center", children: hosted });
6398
+ return /* @__PURE__ */ jsx39("span", { "data-change-item": item.id, className: "inline-flex max-w-full items-center", children: hosted });
6351
6399
  }
6352
6400
  const title = item.title?.trim() || "Untitled";
6353
- return /* @__PURE__ */ jsxs22("span", { "data-change-item": item.id, className: "inline-flex max-w-full items-center gap-0.5", children: [
6354
- /* @__PURE__ */ jsx38(
6401
+ return /* @__PURE__ */ jsxs23("span", { "data-change-item": item.id, className: "inline-flex max-w-full items-center gap-0.5", children: [
6402
+ /* @__PURE__ */ jsx39(
6355
6403
  Button2,
6356
6404
  {
6357
6405
  type: "button",
@@ -6362,12 +6410,12 @@ function ItemDoor({ item, onOpenItem }) {
6362
6410
  children: title
6363
6411
  }
6364
6412
  ),
6365
- /* @__PURE__ */ jsx38(
6413
+ /* @__PURE__ */ jsx39(
6366
6414
  Button2,
6367
6415
  {
6368
6416
  type: "button",
6369
6417
  variant: "quiet",
6370
- icon: /* @__PURE__ */ jsx38(ExternalLinkIcon, {}),
6418
+ icon: /* @__PURE__ */ jsx39(ExternalLinkIcon, {}),
6371
6419
  "data-clickable": "",
6372
6420
  "aria-label": `Open ${title} in a new tab`,
6373
6421
  className: "shrink-0",
@@ -6379,9 +6427,9 @@ function ItemDoor({ item, onOpenItem }) {
6379
6427
  function Doors({ items, total, onOpenItem }) {
6380
6428
  if (!items.length) return null;
6381
6429
  const more = (total ?? items.length) - items.length;
6382
- return /* @__PURE__ */ jsxs22("span", { className: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1", children: [
6383
- items.map((item) => /* @__PURE__ */ jsx38(ItemDoor, { item, onOpenItem }, `${item.table ?? item.type}:${item.id}`)),
6384
- more > 0 ? /* @__PURE__ */ jsxs22("span", { className: "text-xs text-muted-foreground", children: [
6430
+ return /* @__PURE__ */ jsxs23("span", { className: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1", children: [
6431
+ items.map((item) => /* @__PURE__ */ jsx39(ItemDoor, { item, onOpenItem }, `${item.table ?? item.type}:${item.id}`)),
6432
+ more > 0 ? /* @__PURE__ */ jsxs23("span", { className: "text-xs text-muted-foreground", children: [
6385
6433
  "+",
6386
6434
  more,
6387
6435
  " more"
@@ -6389,17 +6437,17 @@ function Doors({ items, total, onOpenItem }) {
6389
6437
  ] });
6390
6438
  }
6391
6439
  function Row({ title, meta, children }) {
6392
- return /* @__PURE__ */ jsxs22("div", { "data-change-row": "", className: "flex flex-col gap-1 px-3 py-2", children: [
6393
- /* @__PURE__ */ jsxs22("div", { className: "flex items-baseline justify-between gap-3", children: [
6394
- /* @__PURE__ */ jsx38("span", { className: "min-w-0 text-sm text-foreground", children: title }),
6395
- meta ? /* @__PURE__ */ jsx38("span", { className: "shrink-0 text-xs text-muted-foreground", children: meta }) : null
6440
+ return /* @__PURE__ */ jsxs23("div", { "data-change-row": "", className: "flex flex-col gap-1 px-3 py-2", children: [
6441
+ /* @__PURE__ */ jsxs23("div", { className: "flex items-baseline justify-between gap-3", children: [
6442
+ /* @__PURE__ */ jsx39("span", { className: "min-w-0 text-sm text-foreground", children: title }),
6443
+ meta ? /* @__PURE__ */ jsx39("span", { className: "shrink-0 text-xs text-muted-foreground", children: meta }) : null
6396
6444
  ] }),
6397
6445
  children
6398
6446
  ] });
6399
6447
  }
6400
6448
  function Alarm({ warning, onOpenItem }) {
6401
6449
  const items = [...warning.items ?? [], ...warning.users ?? []];
6402
- return /* @__PURE__ */ jsxs22(
6450
+ return /* @__PURE__ */ jsxs23(
6403
6451
  "div",
6404
6452
  {
6405
6453
  role: "alert",
@@ -6407,8 +6455,8 @@ function Alarm({ warning, onOpenItem }) {
6407
6455
  "data-severity": warning.severity,
6408
6456
  className: "flex flex-col gap-1.5 rounded-group border border-destructive bg-destructive/10 px-3 py-2",
6409
6457
  children: [
6410
- /* @__PURE__ */ jsx38("span", { className: "text-sm font-medium text-foreground", children: warning.message }),
6411
- /* @__PURE__ */ jsx38(Doors, { items, total: warning.count ?? items.length, onOpenItem })
6458
+ /* @__PURE__ */ jsx39("span", { className: "text-sm font-medium text-foreground", children: warning.message }),
6459
+ /* @__PURE__ */ jsx39(Doors, { items, total: warning.count ?? items.length, onOpenItem })
6412
6460
  ]
6413
6461
  }
6414
6462
  );
@@ -6425,10 +6473,10 @@ function Question({ question, answer, onAnswer, onOpenItem, disabled }) {
6425
6473
  const suggested = !question.suggested ? null : yes && question.suggested === yes.value ? "yes" : noOption && question.suggested === noOption.value ? "no" : "other";
6426
6474
  const wayOut = rest.map((o) => ({ value: o.value, label: o.label }));
6427
6475
  const chosen = [...question.options, ...question.way_out].find((o) => o.value === answer);
6428
- return /* @__PURE__ */ jsxs22("div", { "data-change-question": question.id, "data-kind": question.kind, className: "flex flex-col gap-1.5 px-3 py-2", children: [
6429
- /* @__PURE__ */ jsx38("span", { className: "text-sm text-foreground", children: question.prompt }),
6430
- /* @__PURE__ */ jsx38(Doors, { items: question.items.sample, total: question.items.count, onOpenItem }),
6431
- /* @__PURE__ */ jsx38(
6476
+ return /* @__PURE__ */ jsxs23("div", { "data-change-question": question.id, "data-kind": question.kind, className: "flex flex-col gap-1.5 px-3 py-2", children: [
6477
+ /* @__PURE__ */ jsx39("span", { className: "text-sm text-foreground", children: question.prompt }),
6478
+ /* @__PURE__ */ jsx39(Doors, { items: question.items.sample, total: question.items.count, onOpenItem }),
6479
+ /* @__PURE__ */ jsx39(
6432
6480
  DecisionControl,
6433
6481
  {
6434
6482
  value,
@@ -6450,7 +6498,7 @@ function Question({ question, answer, onAnswer, onOpenItem, disabled }) {
6450
6498
  "aria-label": question.prompt
6451
6499
  }
6452
6500
  ),
6453
- chosen?.consequence ? /* @__PURE__ */ jsx38("span", { className: "text-xs text-muted-foreground", children: chosen.consequence }) : null
6501
+ chosen?.consequence ? /* @__PURE__ */ jsx39("span", { className: "text-xs text-muted-foreground", children: chosen.consequence }) : null
6454
6502
  ] });
6455
6503
  }
6456
6504
  var VERB_WORDS = {
@@ -6459,7 +6507,7 @@ var VERB_WORDS = {
6459
6507
  move: { goes: "Moves with it", commit: "Move" }
6460
6508
  };
6461
6509
  function ReviewChanges({ renderItem, ...props }) {
6462
- return /* @__PURE__ */ jsx38(RenderItemContext.Provider, { value: renderItem, children: /* @__PURE__ */ jsx38(ReviewChangesBody, { ...props }) });
6510
+ return /* @__PURE__ */ jsx39(RenderItemContext.Provider, { value: renderItem, children: /* @__PURE__ */ jsx39(ReviewChangesBody, { ...props }) });
6463
6511
  }
6464
6512
  function ReviewChangesBody({ preview, answers, onAnswer, onOpenItem, onCommit, onCancel, busy, commitLabel, className }) {
6465
6513
  const words = VERB_WORDS[preview.verb] ?? { goes: "Changes with it", commit: "Apply" };
@@ -6473,23 +6521,23 @@ function ReviewChangesBody({ preview, answers, onAnswer, onOpenItem, onCommit, o
6473
6521
  const suggestible = pending.filter((q) => q.suggested);
6474
6522
  const ready = canCommitChanges(preview, answers);
6475
6523
  const target = preview.target_organization?.name;
6476
- return /* @__PURE__ */ jsxs22("div", { "data-review-changes": "", "data-verb": preview.verb, className: cn("flex min-h-0 flex-col gap-3", className), children: [
6477
- alarms.map((w, i) => /* @__PURE__ */ jsx38(Alarm, { warning: w, onOpenItem }, `${w.kind}:${i}`)),
6478
- /* @__PURE__ */ jsx38(RowGroup, { title: preview.verb === "move" && target ? `Moving to ${target}` : void 0, children: /* @__PURE__ */ jsx38(Row, { title: /* @__PURE__ */ jsx38(Doors, { items: preview.roots, onOpenItem }) }) }),
6479
- moving.length ? /* @__PURE__ */ jsx38(RowGroup, { title: words.goes, children: moving.map((g) => /* @__PURE__ */ jsx38(Row, { title: g.noun, meta: `${g.count_is_estimate ? "about " : ""}${g.count}`, children: /* @__PURE__ */ jsx38(Doors, { items: g.sample, total: g.count, onOpenItem }) }, `${g.rule_id ?? "root"}:${g.table ?? g.type}`)) }) : null,
6480
- kept.length || staying.length ? /* @__PURE__ */ jsxs22(RowGroup, { title: "Stays where it is", children: [
6481
- kept.map((w, i) => /* @__PURE__ */ jsx38(Row, { title: w.message ?? w.noun ?? "Used elsewhere", meta: w.count ?? void 0, children: /* @__PURE__ */ jsx38(Doors, { items: w.items ?? [], total: w.count, onOpenItem }) }, `kept:${i}`)),
6482
- staying.map((g) => /* @__PURE__ */ jsx38(Row, { title: g.noun, meta: g.count, children: /* @__PURE__ */ jsx38(Doors, { items: g.sample, total: g.count, onOpenItem }) }, `stay:${g.table ?? g.type}`))
6524
+ return /* @__PURE__ */ jsxs23("div", { "data-review-changes": "", "data-verb": preview.verb, className: cn("flex min-h-0 flex-col gap-3", className), children: [
6525
+ alarms.map((w, i) => /* @__PURE__ */ jsx39(Alarm, { warning: w, onOpenItem }, `${w.kind}:${i}`)),
6526
+ /* @__PURE__ */ jsx39(RowGroup, { title: preview.verb === "move" && target ? `Moving to ${target}` : void 0, children: /* @__PURE__ */ jsx39(Row, { title: /* @__PURE__ */ jsx39(Doors, { items: preview.roots, onOpenItem }) }) }),
6527
+ moving.length ? /* @__PURE__ */ jsx39(RowGroup, { title: words.goes, children: moving.map((g) => /* @__PURE__ */ jsx39(Row, { title: g.noun, meta: `${g.count_is_estimate ? "about " : ""}${g.count}`, children: /* @__PURE__ */ jsx39(Doors, { items: g.sample, total: g.count, onOpenItem }) }, `${g.rule_id ?? "root"}:${g.table ?? g.type}`)) }) : null,
6528
+ kept.length || staying.length ? /* @__PURE__ */ jsxs23(RowGroup, { title: "Stays where it is", children: [
6529
+ kept.map((w, i) => /* @__PURE__ */ jsx39(Row, { title: w.message ?? w.noun ?? "Used elsewhere", meta: w.count ?? void 0, children: /* @__PURE__ */ jsx39(Doors, { items: w.items ?? [], total: w.count, onOpenItem }) }, `kept:${i}`)),
6530
+ staying.map((g) => /* @__PURE__ */ jsx39(Row, { title: g.noun, meta: g.count, children: /* @__PURE__ */ jsx39(Doors, { items: g.sample, total: g.count, onOpenItem }) }, `stay:${g.table ?? g.type}`))
6483
6531
  ] }) : null,
6484
- preview.questions.length ? /* @__PURE__ */ jsx38(RowGroup, { title: "Decide", children: preview.questions.map((q) => /* @__PURE__ */ jsx38(Question, { question: q, answer: answers[q.id], onAnswer, onOpenItem, disabled: busy }, q.id)) }) : null,
6485
- auto || unchecked ? /* @__PURE__ */ jsxs22("div", { className: "flex flex-wrap gap-2 px-1", children: [
6486
- auto ? /* @__PURE__ */ jsx38(Badge, { tone: "neutral", children: `${auto.count ?? ""} decided automatically`.trim() }) : null,
6487
- unchecked ? /* @__PURE__ */ jsx38(Badge, { tone: "neutral", children: "Links inside text not checked" }) : null
6532
+ preview.questions.length ? /* @__PURE__ */ jsx39(RowGroup, { title: "Decide", children: preview.questions.map((q) => /* @__PURE__ */ jsx39(Question, { question: q, answer: answers[q.id], onAnswer, onOpenItem, disabled: busy }, q.id)) }) : null,
6533
+ auto || unchecked ? /* @__PURE__ */ jsxs23("div", { className: "flex flex-wrap gap-2 px-1", children: [
6534
+ auto ? /* @__PURE__ */ jsx39(Badge, { tone: "neutral", children: `${auto.count ?? ""} decided automatically`.trim() }) : null,
6535
+ unchecked ? /* @__PURE__ */ jsx39(Badge, { tone: "neutral", children: "Links inside text not checked" }) : null
6488
6536
  ] }) : null,
6489
- /* @__PURE__ */ jsxs22("div", { "data-review-changes-actions": "", className: "flex flex-wrap items-center justify-end gap-2", children: [
6490
- suggestible.length ? /* @__PURE__ */ jsx38(Button2, { variant: "quiet", disabled: busy, onClick: () => suggestible.forEach((q) => onAnswer(q.id, q.suggested)), children: "Accept suggestions" }) : null,
6491
- /* @__PURE__ */ jsx38(Button2, { variant: "outline", disabled: busy, onClick: onCancel, children: "Cancel" }),
6492
- /* @__PURE__ */ jsx38(Button2, { variant: preview.verb === "delete" ? "danger" : "primary", disabled: busy || !ready, onClick: onCommit, children: commitLabel ?? words.commit })
6537
+ /* @__PURE__ */ jsxs23("div", { "data-review-changes-actions": "", className: "flex flex-wrap items-center justify-end gap-2", children: [
6538
+ suggestible.length ? /* @__PURE__ */ jsx39(Button2, { variant: "quiet", disabled: busy, onClick: () => suggestible.forEach((q) => onAnswer(q.id, q.suggested)), children: "Accept suggestions" }) : null,
6539
+ /* @__PURE__ */ jsx39(Button2, { variant: "outline", disabled: busy, onClick: onCancel, children: "Cancel" }),
6540
+ /* @__PURE__ */ jsx39(Button2, { variant: preview.verb === "delete" ? "danger" : "primary", disabled: busy || !ready, onClick: onCommit, children: commitLabel ?? words.commit })
6493
6541
  ] })
6494
6542
  ] });
6495
6543
  }
@@ -6660,7 +6708,7 @@ function insertLines(boxes, id, line, col, cols) {
6660
6708
  }
6661
6709
 
6662
6710
  // src/grid-canvas/grid-canvas.tsx
6663
- import { jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
6711
+ import { jsx as jsx40, jsxs as jsxs24 } from "react/jsx-runtime";
6664
6712
  var GRID_CANVAS_COLUMNS = { lg: 12, sm: 4 };
6665
6713
  var GRID_CANVAS_PHONE_MAX_PX = 640;
6666
6714
  var GRID_CANVAS_ROW_PX = 24;
@@ -6835,7 +6883,7 @@ function GridCanvas({
6835
6883
  };
6836
6884
  const rows = { lg: gridRows(grids.lg), sm: gridRows(grids.sm) };
6837
6885
  const active = preview ? preview.boxes.find((b) => b.id === preview.id) : void 0;
6838
- return /* @__PURE__ */ jsxs23(
6886
+ return /* @__PURE__ */ jsxs24(
6839
6887
  "div",
6840
6888
  {
6841
6889
  ref: rootRef,
@@ -6855,8 +6903,8 @@ function GridCanvas({
6855
6903
  "--grid-rows-sm": preview?.breakpoint === "sm" ? rows.sm + 1 : rows.sm
6856
6904
  },
6857
6905
  children: [
6858
- /* @__PURE__ */ jsxs23("div", { className: "matrx-grid-canvas-field", children: [
6859
- active && preview ? /* @__PURE__ */ jsx39("div", { className: "matrx-grid-canvas-placeholder", "aria-hidden": true, style: placementVars(active, active) }) : null,
6906
+ /* @__PURE__ */ jsxs24("div", { className: "matrx-grid-canvas-field", children: [
6907
+ active && preview ? /* @__PURE__ */ jsx40("div", { className: "matrx-grid-canvas-placeholder", "aria-hidden": true, style: placementVars(active, active) }) : null,
6860
6908
  items.map((item, n) => {
6861
6909
  const lg = grids.lg[n];
6862
6910
  const sm = grids.sm[n];
@@ -6865,7 +6913,7 @@ function GridCanvas({
6865
6913
  const drawLg = moving && preview.breakpoint === "lg" ? startBox : lg;
6866
6914
  const drawSm = moving && preview.breakpoint === "sm" ? startBox : sm;
6867
6915
  const label = itemLabel?.(item.id);
6868
- return /* @__PURE__ */ jsxs23(
6916
+ return /* @__PURE__ */ jsxs24(
6869
6917
  "div",
6870
6918
  {
6871
6919
  ref: (el) => {
@@ -6881,8 +6929,8 @@ function GridCanvas({
6881
6929
  onPointerDown: editable ? (e) => onItemPointerDown(e, item.id) : void 0,
6882
6930
  onKeyDown: editable ? (e) => onItemKeyDown(e, item.id) : void 0,
6883
6931
  children: [
6884
- /* @__PURE__ */ jsx39("div", { className: "matrx-grid-canvas-content", children: renderItem(item.id, { breakpoint, editing: editable }) }),
6885
- editable ? /* @__PURE__ */ jsx39(
6932
+ /* @__PURE__ */ jsx40("div", { className: "matrx-grid-canvas-content", children: renderItem(item.id, { breakpoint, editing: editable }) }),
6933
+ editable ? /* @__PURE__ */ jsx40(
6886
6934
  "span",
6887
6935
  {
6888
6936
  className: "matrx-grid-canvas-resize",
@@ -6897,7 +6945,7 @@ function GridCanvas({
6897
6945
  );
6898
6946
  })
6899
6947
  ] }),
6900
- /* @__PURE__ */ jsx39("span", { className: "matrx-grid-canvas-live", "aria-live": "polite", children: announcement })
6948
+ /* @__PURE__ */ jsx40("span", { className: "matrx-grid-canvas-live", "aria-live": "polite", children: announcement })
6901
6949
  ]
6902
6950
  }
6903
6951
  );
@@ -7146,6 +7194,7 @@ export {
7146
7194
  Peek,
7147
7195
  PeekEntityRendererProvider,
7148
7196
  PeekHoverCard,
7197
+ PeekNotice,
7149
7198
  PeekPartRendererProvider,
7150
7199
  PeekPopover,
7151
7200
  PeekWindow,