@deepseek-ai/dsh-client-ui-primitives 0.2.0-rc.2 → 0.2.1-alpha.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/lib/index.js CHANGED
@@ -14,23 +14,24 @@ import css$8 from "./Switch.module.css";
14
14
  import css$9 from "./SegmentedControl.module.css";
15
15
  import css$10 from "./Checkbox.module.css";
16
16
  import css$11 from "./Input.module.css";
17
+ import css$12 from "./InlineEditor.module.css";
17
18
  import { createPortal } from "react-dom";
18
- import css$12 from "./ShortcutKeys.module.css";
19
- import css$13 from "./MenuSurface.module.css";
20
- import css$14 from "./Menu.module.css";
21
- import css$15 from "./MenuGroup.module.css";
22
- import css$16 from "./Tooltip.module.css";
23
- import css$17 from "./HoverCard.module.css";
24
- import css$18 from "./Modal.module.css";
25
- import css$19 from "./RiskConfirmation.module.css";
26
- import css$20 from "./ConnectionIndicator.module.css";
27
- import css$21 from "./FileTypeIcon.module.css";
19
+ import css$13 from "./ShortcutKeys.module.css";
20
+ import css$14 from "./MenuSurface.module.css";
21
+ import css$15 from "./Menu.module.css";
22
+ import css$16 from "./MenuGroup.module.css";
23
+ import css$17 from "./Tooltip.module.css";
24
+ import css$18 from "./HoverCard.module.css";
25
+ import css$19 from "./Modal.module.css";
26
+ import css$20 from "./RiskConfirmation.module.css";
27
+ import css$21 from "./ConnectionIndicator.module.css";
28
+ import css$22 from "./FileTypeIcon.module.css";
28
29
  import { siAliexpress, siApple, siBaidu, siBilibili, siCsdn, siDuckduckgo, siEbay, siFacebook, siGithub, siGitlab, siGoogle, siInstagram, siJuejin, siMdnwebdocs, siNetflix, siNpm, siPypi, siQq, siQuora, siReddit, siSinaweibo, siSpotify, siStackoverflow, siTaobao, siTelegram, siTiktok, siV2ex, siWechat, siWhatsapp, siWikipedia, siX, siYcombinator, siYoutube, siZhihu } from "simple-icons";
29
- import css$22 from "./user-text.module.css";
30
+ import css$23 from "./user-text.module.css";
30
31
  import markdownCss from "./markdown/MarkdownText.module.css";
31
- import css$23 from "./Toast.module.css";
32
- import css$24 from "./settings-form/SettingsForm.module.css";
33
- import css$25 from "./settings-form/fields.module.css";
32
+ import css$24 from "./Toast.module.css";
33
+ import css$25 from "./settings-form/SettingsForm.module.css";
34
+ import css$26 from "./settings-form/fields.module.css";
34
35
  import { createSnapshotStore } from "@deepseek-ai/dsh-client-store";
35
36
  import { createCssVariablesTheme, createHighlighterCoreSync } from "shiki/core";
36
37
  import { createJavaScriptRegexEngine, defaultJavaScriptRegexConstructor } from "shiki/engine/javascript";
@@ -38,14 +39,14 @@ import langTs from "@shikijs/langs/typescript";
38
39
  import langBash from "@shikijs/langs/shellscript";
39
40
  import langJson from "@shikijs/langs/json";
40
41
  import { CODE_HIGHLIGHT_EXTENSIONS, languageForPath } from "@deepseek-ai/dsh-util-code-language";
41
- import css$26 from "./JsonTree.module.css";
42
+ import css$27 from "./JsonTree.module.css";
42
43
  import Anser from "anser";
43
- import css$27 from "./TerminalBlock.module.css";
44
+ import css$28 from "./TerminalBlock.module.css";
44
45
  import cardCss from "./CodeCard.module.css";
45
- import css$28 from "./ReadBlock.module.css";
46
+ import css$29 from "./ReadBlock.module.css";
46
47
  import { structuredPatch } from "diff";
47
- import css$29 from "./DiffBlock.module.css";
48
- import css$30 from "./SearchBlock.module.css";
48
+ import css$30 from "./DiffBlock.module.css";
49
+ import css$31 from "./SearchBlock.module.css";
49
50
  import { fromMarkdown } from "mdast-util-from-markdown";
50
51
  import { gfmFromMarkdown } from "mdast-util-gfm";
51
52
  import { mathFromMarkdown } from "mdast-util-math";
@@ -57,13 +58,13 @@ import { classifyCharacter } from "micromark-util-classify-character";
57
58
  import { codes, constants, types } from "micromark-util-symbol";
58
59
  import { factorySpace } from "micromark-factory-space";
59
60
  import { normalizeUri } from "micromark-util-sanitize-uri";
60
- import css$31 from "./markdown/CodeBlock.module.css";
61
+ import css$32 from "./markdown/CodeBlock.module.css";
61
62
  import katex from "katex";
62
- import css$32 from "./ImageLightbox.module.css";
63
- import css$33 from "./ImagePreview.module.css";
63
+ import css$33 from "./ImageLightbox.module.css";
64
+ import css$34 from "./ImagePreview.module.css";
64
65
  import "katex/dist/katex.min.css";
65
- import css$34 from "./WebBlock.module.css";
66
- import css$35 from "./markdown/JsonBlock.module.css";
66
+ import css$35 from "./WebBlock.module.css";
67
+ import css$36 from "./markdown/JsonBlock.module.css";
67
68
  //#region lib/types/icons/shared-artwork.js
68
69
  /**
69
70
  * Render new-conversation geometry — the bubble around a plus — for product icons.
@@ -3040,12 +3041,24 @@ const IconMicrophoneOutlineMedium = (props) => jsx(IconMicrophoneOutlineArtwork,
3040
3041
  //#region lib/types/StateDot.js
3041
3042
  /**
3042
3043
  * Pin the loader's CSS animations to document time zero. A CSS animation starts
3043
- * when its element is inserted, so loaders mounted at different moments rotate
3044
- * out of phase; one shared start time keeps every visible loader in step.
3044
+ * when its element is inserted and restarts when the element is moved or shown
3045
+ * again, so loaders started at different moments rotate out of phase; one shared
3046
+ * start time keeps every visible loader in step. Mount pins the first start; the
3047
+ * element's own `animationstart` listener pins each restart.
3045
3048
  * @param element - the mounted loader, or null on unmount.
3046
3049
  */
3047
3050
  function syncSpinner(element) {
3048
3051
  if (element === null) return;
3052
+ pinSpinner(element);
3053
+ element.addEventListener("animationstart", () => {
3054
+ pinSpinner(element);
3055
+ });
3056
+ }
3057
+ /**
3058
+ * Set every CSS animation in the loader's subtree to start at document time zero.
3059
+ * @param element - the mounted loader.
3060
+ */
3061
+ function pinSpinner(element) {
3049
3062
  const spinner = element;
3050
3063
  for (const animation of spinner.getAnimations?.({ subtree: true }) ?? []) animation.startTime = 0;
3051
3064
  }
@@ -3540,6 +3553,60 @@ const Input = forwardRef(function Input({ icon, className, ...rest }, ref) {
3540
3553
  });
3541
3554
  });
3542
3555
  //#endregion
3556
+ //#region lib/types/InlineEditor.js
3557
+ /** Multi-line inline editor for short saved-on-Enter drafts such as queued messages and goals. */
3558
+ /**
3559
+ * Render an autofocused textarea that grows with its text up to six lines, then scrolls.
3560
+ * A textarea rather than an input: HTML strips newlines from single-line input values.
3561
+ * Enter saves, Shift+Enter breaks the line, Enter during IME composition does nothing,
3562
+ * and Escape cancels.
3563
+ * @param props.value - current draft text.
3564
+ * @param props.label - localized accessible name.
3565
+ * @param props.onChange - receives the edited text.
3566
+ * @param props.onSave - called for a plain Enter.
3567
+ * @param props.onCancel - called for Escape.
3568
+ * @param props.className - extra class for the editor's placement.
3569
+ * @returns the textarea.
3570
+ */
3571
+ function InlineEditor({ value, label, onChange, onSave, onCancel, className }) {
3572
+ const ref = useRef(null);
3573
+ useLayoutEffect(() => {
3574
+ const node = ref.current;
3575
+ const fit = () => {
3576
+ node.style.height = "auto";
3577
+ node.style.height = `${node.scrollHeight + node.offsetHeight - node.clientHeight}px`;
3578
+ };
3579
+ fit();
3580
+ const observer = new ResizeObserver(fit);
3581
+ observer.observe(node);
3582
+ return () => {
3583
+ observer.disconnect();
3584
+ };
3585
+ }, [value]);
3586
+ const onKeyDown = (event) => {
3587
+ if (event.key === "Escape") {
3588
+ onCancel();
3589
+ return;
3590
+ }
3591
+ const composing = event.nativeEvent.isComposing || Reflect.get(event.nativeEvent, "keyCode") === 229;
3592
+ if (event.key !== "Enter" || event.shiftKey || composing) return;
3593
+ event.preventDefault();
3594
+ onSave();
3595
+ };
3596
+ return jsx("textarea", {
3597
+ ref,
3598
+ autoFocus: true,
3599
+ rows: 1,
3600
+ className: clsx(css$12.editor, className),
3601
+ "aria-label": label,
3602
+ value,
3603
+ onChange: (event) => {
3604
+ onChange(event.currentTarget.value);
3605
+ },
3606
+ onKeyDown
3607
+ });
3608
+ }
3609
+ //#endregion
3543
3610
  //#region lib/types/overlay-top-margin.js
3544
3611
  /** Shared viewport inset for overlays, derived from the desktop frame's reserved top strip. */
3545
3612
  /**
@@ -3762,9 +3829,9 @@ function useModalLayer(dialog, open, onClose) {
3762
3829
  */
3763
3830
  function ShortcutKeys({ keys, variant = "plain", className }) {
3764
3831
  return jsx("span", {
3765
- className: clsx(css$12.keys, variant === "tooltip" && css$12.tooltip, variant === "tooltip" && keys.includes("+") && css$12.joined, className),
3832
+ className: clsx(css$13.keys, variant === "tooltip" && css$13.tooltip, variant === "tooltip" && keys.includes("+") && css$13.joined, className),
3766
3833
  children: keys.map((key, index) => jsx("kbd", {
3767
- className: key === "+" ? css$12.separator : css$12.key,
3834
+ className: key === "+" ? css$13.separator : css$13.key,
3768
3835
  children: key
3769
3836
  }, index))
3770
3837
  });
@@ -3790,20 +3857,20 @@ const MenuSurface = forwardRef(function MenuSurface({ compact = false, className
3790
3857
  ...props,
3791
3858
  ref,
3792
3859
  "data-menu-material": "translucent",
3793
- className: clsx(css$13.surface, compact && css$13.compact, className),
3860
+ className: clsx(css$14.surface, compact && css$14.compact, className),
3794
3861
  style: {
3795
3862
  ...style,
3796
3863
  ...anchorStyle
3797
3864
  },
3798
3865
  children: [jsx("div", {
3799
3866
  "aria-hidden": "true",
3800
- className: css$13.material
3867
+ className: css$14.material
3801
3868
  }), children]
3802
3869
  }), createPortal(jsx("div", {
3803
3870
  ref: backingRef,
3804
3871
  "aria-hidden": "true",
3805
3872
  "data-menu-backing": "",
3806
- className: clsx(css$13.backing, compact && css$13.compact),
3873
+ className: clsx(css$14.backing, compact && css$14.compact),
3807
3874
  style: {
3808
3875
  ...anchorStyle,
3809
3876
  visibility: style?.visibility
@@ -3829,32 +3896,32 @@ const MenuSurface = forwardRef(function MenuSurface({ compact = false, className
3829
3896
  */
3830
3897
  function MenuItemButton({ children, shortcut, icon, disabled = false, danger = false, separatorBefore = false, onSelect }) {
3831
3898
  return jsxs("div", {
3832
- className: css$14.itemWrap,
3899
+ className: css$15.itemWrap,
3833
3900
  children: [separatorBefore && jsx("div", {
3834
- className: css$14.separator,
3901
+ className: css$15.separator,
3835
3902
  role: "separator"
3836
3903
  }), jsxs("button", {
3837
3904
  type: "button",
3838
3905
  role: "menuitem",
3839
- className: clsx(css$14.item, danger && css$14.danger),
3906
+ className: clsx(css$15.item, danger && css$15.danger),
3840
3907
  disabled,
3841
3908
  "aria-keyshortcuts": shortcut?.aria,
3842
3909
  onClick: onSelect,
3843
3910
  children: [
3844
3911
  icon !== void 0 && jsx("span", {
3845
- className: css$14.itemIcon,
3912
+ className: css$15.itemIcon,
3846
3913
  children: icon
3847
3914
  }),
3848
3915
  jsx("span", {
3849
- className: css$14.itemLabel,
3916
+ className: css$15.itemLabel,
3850
3917
  children
3851
3918
  }),
3852
3919
  shortcut !== void 0 && jsx("span", {
3853
3920
  "aria-hidden": "true",
3854
- className: css$14.shortcut,
3921
+ className: css$15.shortcut,
3855
3922
  children: jsx(ShortcutKeys, {
3856
3923
  keys: shortcut.keys,
3857
- className: css$14.shortcutKeys
3924
+ className: css$15.shortcutKeys
3858
3925
  })
3859
3926
  })
3860
3927
  ]
@@ -4141,11 +4208,11 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
4141
4208
  const scrollable = !items.some((entry) => !isSeparator(entry) && !isLabel(entry) && entry.submenu !== void 0 && entry.submenu.length > 0);
4142
4209
  const renderEntry = (entry) => {
4143
4210
  if (isSeparator(entry)) return jsx("div", {
4144
- className: css$14.separator,
4211
+ className: css$15.separator,
4145
4212
  role: "separator"
4146
4213
  }, entry.id);
4147
4214
  if (isLabel(entry)) return jsx("div", {
4148
- className: css$14.label,
4215
+ className: css$15.label,
4149
4216
  role: "presentation",
4150
4217
  children: entry.text
4151
4218
  }, entry.id);
@@ -4153,7 +4220,7 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
4153
4220
  const subOpen = hasSub && openSubmenuId === entry.id;
4154
4221
  const selected = entry.id === selectedId || selectedIds?.includes(entry.id) === true;
4155
4222
  return jsxs("div", {
4156
- className: css$14.itemWrap,
4223
+ className: css$15.itemWrap,
4157
4224
  onMouseEnter: hasSub ? () => {
4158
4225
  setOpenSubmenuId(entry.id);
4159
4226
  } : void 0,
@@ -4163,7 +4230,7 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
4163
4230
  children: [jsxs("button", {
4164
4231
  type: "button",
4165
4232
  role: "menuitem",
4166
- className: clsx(css$14.item, selected && (selection === "fill" ? css$14.selectedFill : css$14.selected), entry.danger === true && css$14.danger),
4233
+ className: clsx(css$15.item, selected && (selection === "fill" ? css$15.selectedFill : css$15.selected), entry.danger === true && css$15.danger),
4167
4234
  disabled: entry.disabled,
4168
4235
  "aria-keyshortcuts": entry.shortcut?.aria,
4169
4236
  "aria-haspopup": hasSub ? "menu" : void 0,
@@ -4180,31 +4247,31 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
4180
4247
  },
4181
4248
  children: [
4182
4249
  entry.icon !== void 0 && jsx("span", {
4183
- className: css$14.itemIcon,
4250
+ className: css$15.itemIcon,
4184
4251
  children: entry.icon
4185
4252
  }),
4186
4253
  jsx("span", {
4187
- className: css$14.itemLabel,
4254
+ className: css$15.itemLabel,
4188
4255
  children: entry.label
4189
4256
  }),
4190
4257
  entry.shortcut !== void 0 && jsx("span", {
4191
4258
  "aria-hidden": "true",
4192
- className: css$14.shortcut,
4259
+ className: css$15.shortcut,
4193
4260
  children: jsx(ShortcutKeys, {
4194
4261
  keys: entry.shortcut.keys,
4195
- className: css$14.shortcutKeys
4262
+ className: css$15.shortcutKeys
4196
4263
  })
4197
4264
  }),
4198
- selected && selection === "check" && jsx(IconCheckOutlineRegular, { className: css$14.check })
4265
+ selected && selection === "check" && jsx(IconCheckOutlineRegular, { className: css$15.check })
4199
4266
  ]
4200
4267
  }), subOpen && entry.submenu !== void 0 && jsx(MenuSurface, {
4201
4268
  compact,
4202
- className: clsx(css$14.submenu, compact && css$14.compactList),
4269
+ className: clsx(css$15.submenu, compact && css$15.compactList),
4203
4270
  role: "menu",
4204
4271
  children: entry.submenu.map((sub) => jsxs("button", {
4205
4272
  type: "button",
4206
4273
  role: "menuitem",
4207
- className: css$14.item,
4274
+ className: css$15.item,
4208
4275
  disabled: sub.disabled,
4209
4276
  "aria-keyshortcuts": sub.shortcut?.aria,
4210
4277
  onClick: () => {
@@ -4213,19 +4280,19 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
4213
4280
  },
4214
4281
  children: [
4215
4282
  sub.icon !== void 0 && jsx("span", {
4216
- className: css$14.itemIcon,
4283
+ className: css$15.itemIcon,
4217
4284
  children: sub.icon
4218
4285
  }),
4219
4286
  jsx("span", {
4220
- className: css$14.itemLabel,
4287
+ className: css$15.itemLabel,
4221
4288
  children: sub.label
4222
4289
  }),
4223
4290
  sub.shortcut !== void 0 && jsx("span", {
4224
4291
  "aria-hidden": "true",
4225
- className: css$14.shortcut,
4292
+ className: css$15.shortcut,
4226
4293
  children: jsx(ShortcutKeys, {
4227
4294
  keys: sub.shortcut.keys,
4228
- className: css$14.shortcutKeys
4295
+ className: css$15.shortcutKeys
4229
4296
  })
4230
4297
  })
4231
4298
  ]
@@ -4242,7 +4309,7 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
4242
4309
  const list = open && jsxs(MenuSurface, {
4243
4310
  compact,
4244
4311
  ref: listRef,
4245
- className: clsx(css$14.list, listClassName, dense && css$14.denseList, compact && css$14.compactList, scrollable && css$14.scrollable, portal && css$14.portal, side === "top" && !portal && css$14.sideTop, align === "end" && !portal && css$14.alignEnd),
4312
+ className: clsx(css$15.list, listClassName, dense && css$15.denseList, compact && css$15.compactList, scrollable && css$15.scrollable, portal && css$15.portal, side === "top" && !portal && css$15.sideTop, align === "end" && !portal && css$15.alignEnd),
4246
4313
  style: portal ? fixedPos ?? MEASURE_STYLE : void 0,
4247
4314
  role: "menu",
4248
4315
  onClick: (e) => {
@@ -4253,18 +4320,18 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
4253
4320
  onMouseOver: collapseSubmenuFrom,
4254
4321
  onFocus: collapseSubmenuFrom,
4255
4322
  children: [jsxs("div", {
4256
- className: css$14.viewport,
4323
+ className: css$15.viewport,
4257
4324
  role: "presentation",
4258
4325
  children: [items.map(renderEntry), children]
4259
4326
  }), footer !== void 0 && footer.length > 0 && jsx("div", {
4260
- className: css$14.footer,
4327
+ className: css$15.footer,
4261
4328
  role: "presentation",
4262
4329
  children: footer.map(renderEntry)
4263
4330
  })]
4264
4331
  });
4265
4332
  return jsxs("span", {
4266
4333
  ref: rootRef,
4267
- className: clsx(css$14.root, className),
4334
+ className: clsx(css$15.root, className),
4268
4335
  onPointerEnter: closeOnPointerLeave ? cancelClose : void 0,
4269
4336
  onPointerLeave: closeOnPointerLeave ? () => {
4270
4337
  if (open) armClose();
@@ -4286,17 +4353,17 @@ function MenuGroup({ label, children }) {
4286
4353
  role: "group",
4287
4354
  "aria-labelledby": headingId,
4288
4355
  "data-menu-group": "",
4289
- className: css$15.group,
4356
+ className: css$16.group,
4290
4357
  children: [
4291
4358
  jsx("span", {
4292
4359
  "aria-hidden": "true",
4293
4360
  "data-menu-group-start": "",
4294
- className: css$15.start
4361
+ className: css$16.start
4295
4362
  }),
4296
4363
  jsx("div", {
4297
4364
  id: headingId,
4298
4365
  "data-menu-group-heading": "",
4299
- className: css$15.heading,
4366
+ className: css$16.heading,
4300
4367
  children: label
4301
4368
  }),
4302
4369
  children
@@ -4826,7 +4893,7 @@ function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayM
4826
4893
  const content = visible && !suppressed && jsxs("span", {
4827
4894
  ref: bubble,
4828
4895
  id: openOnClick ? id : void 0,
4829
- className: css$16.bubble,
4896
+ className: css$17.bubble,
4830
4897
  "data-side": side,
4831
4898
  "data-portal": portal || void 0,
4832
4899
  "data-pinned": pinned || void 0,
@@ -4841,7 +4908,7 @@ function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayM
4841
4908
  role: "tooltip",
4842
4909
  "aria-label": shortcutKeys?.length ? [resolvedLabel, shortcutKeys.join(" ")].filter(Boolean).join(" ") : void 0,
4843
4910
  children: [resolvedLabel && jsx("span", {
4844
- className: css$16.label,
4911
+ className: css$17.label,
4845
4912
  children: resolvedLabel
4846
4913
  }), shortcutKeys !== void 0 && shortcutKeys.length > 0 && jsx(ShortcutKeys, {
4847
4914
  keys: shortcutKeys,
@@ -5109,7 +5176,7 @@ function HoverCard({ anchor, content, openDelayMs = 500, disabled = false, copyT
5109
5176
  };
5110
5177
  const card = open && pos !== null && !suppressed && jsx("div", {
5111
5178
  ref: cardRef,
5112
- className: clsx(css$17.card, variant === "preview" && css$17.preview, inline && css$17.media, copyable && css$17.copyable, copied && css$17.feedback),
5179
+ className: clsx(css$18.card, variant === "preview" && css$18.preview, inline && css$18.media, copyable && css$18.copyable, copied && css$18.feedback),
5113
5180
  "data-closing": closing || void 0,
5114
5181
  style: {
5115
5182
  ...pos,
@@ -5132,14 +5199,14 @@ function HoverCard({ anchor, content, openDelayMs = 500, disabled = false, copyT
5132
5199
  copy(copyText);
5133
5200
  } : void 0,
5134
5201
  children: copied ? jsx("span", {
5135
- className: css$17.copied,
5202
+ className: css$18.copied,
5136
5203
  "aria-hidden": "true",
5137
5204
  children: copiedLabel
5138
5205
  }) : content
5139
5206
  });
5140
5207
  return jsxs("span", {
5141
5208
  ref: rootRef,
5142
- className: clsx(css$17.root, inline && css$17.inline),
5209
+ className: clsx(css$18.root, inline && css$18.inline),
5143
5210
  onFocus: inline ? (event) => {
5144
5211
  if (!disabled && event.target.matches(":focus-visible")) {
5145
5212
  cancelClose();
@@ -5177,7 +5244,7 @@ function HoverCard({ anchor, content, openDelayMs = 500, disabled = false, copyT
5177
5244
  children: anchor
5178
5245
  }),
5179
5246
  open && !suppressed && copyable && jsx("span", {
5180
- className: css$17.status,
5247
+ className: css$18.status,
5181
5248
  role: "status",
5182
5249
  children: copied ? copiedLabel : ""
5183
5250
  }),
@@ -5212,11 +5279,11 @@ function Modal({ open, onClose, title, closeLabel, description, children, footer
5212
5279
  useModalLayer(dialog, open, onClose);
5213
5280
  if (!open) return null;
5214
5281
  return createPortal(jsxs("div", {
5215
- className: css$18.root,
5282
+ className: css$19.root,
5216
5283
  role: "presentation",
5217
5284
  onKeyDownCapture,
5218
5285
  children: [jsx("div", {
5219
- className: css$18.mask,
5286
+ className: css$19.mask,
5220
5287
  style: backdropBlur ? void 0 : { backdropFilter: "none" },
5221
5288
  "aria-hidden": "true",
5222
5289
  onClick: onClose
@@ -5224,37 +5291,37 @@ function Modal({ open, onClose, title, closeLabel, description, children, footer
5224
5291
  ref: dialog,
5225
5292
  tabIndex: -1,
5226
5293
  "data-shortcut-modal": shortcutModal,
5227
- className: clsx(css$18.dialog, className),
5294
+ className: clsx(css$19.dialog, className),
5228
5295
  role: "dialog",
5229
5296
  "aria-modal": "true",
5230
5297
  "aria-label": title,
5231
5298
  children: headless ? children : jsxs(Fragment, { children: [jsxs("div", {
5232
- className: clsx(css$18.content, contentClassName),
5299
+ className: clsx(css$19.content, contentClassName),
5233
5300
  children: [
5234
5301
  jsxs("div", {
5235
- className: css$18.header,
5302
+ className: css$19.header,
5236
5303
  children: [jsx("h2", {
5237
- className: css$18.title,
5304
+ className: css$19.title,
5238
5305
  children: title
5239
5306
  }), jsx("button", {
5240
5307
  type: "button",
5241
- className: css$18.close,
5308
+ className: css$19.close,
5242
5309
  "aria-label": closeLabel,
5243
5310
  onClick: onClose,
5244
5311
  children: jsx(IconCloseOutlineRegular, { size: 14 })
5245
5312
  })]
5246
5313
  }),
5247
5314
  description !== void 0 && description !== "" && jsx("p", {
5248
- className: css$18.description,
5315
+ className: css$19.description,
5249
5316
  children: description
5250
5317
  }),
5251
5318
  children !== void 0 && jsx("div", {
5252
- className: css$18.body,
5319
+ className: css$19.body,
5253
5320
  children
5254
5321
  })
5255
5322
  ]
5256
5323
  }), footer !== void 0 && jsx("div", {
5257
- className: css$18.footer,
5324
+ className: css$19.footer,
5258
5325
  children: footer
5259
5326
  })] })
5260
5327
  })]
@@ -5276,28 +5343,28 @@ function RiskConfirmation({ open, title, description, acknowledgeLabel, cancelLa
5276
5343
  onClose: onCancel,
5277
5344
  title,
5278
5345
  closeLabel,
5279
- className: css$19.confirmation ?? "",
5280
- contentClassName: css$19.confirmationContent ?? "",
5346
+ className: css$20.confirmation ?? "",
5347
+ contentClassName: css$20.confirmationContent ?? "",
5281
5348
  footer: jsxs(Fragment, { children: [jsx(Button, {
5282
5349
  variant: "outline",
5283
- className: css$19.modalAction,
5350
+ className: css$20.modalAction,
5284
5351
  onClick: onCancel,
5285
5352
  children: cancelLabel
5286
5353
  }), jsx(Button, {
5287
5354
  variant: "primary",
5288
- className: css$19.confirmAction,
5355
+ className: css$20.confirmAction,
5289
5356
  disabled: disabled || !acknowledged,
5290
5357
  onClick: onConfirm,
5291
5358
  children: confirmLabel
5292
5359
  })] }),
5293
5360
  children: [jsxs("div", {
5294
- className: css$19.warning,
5361
+ className: css$20.warning,
5295
5362
  children: [jsx(IconWarningOutlineRegular, {
5296
5363
  size: 18,
5297
- className: css$19.warningIcon
5364
+ className: css$20.warningIcon
5298
5365
  }), jsx("p", { children: description })]
5299
5366
  }), jsxs("label", {
5300
- className: css$19.acknowledgement,
5367
+ className: css$20.acknowledgement,
5301
5368
  children: [jsx("input", {
5302
5369
  type: "checkbox",
5303
5370
  checked: acknowledged,
@@ -5345,44 +5412,44 @@ function ConnectionIndicator({ state, disconnectedLabel, connectingLabel, recove
5345
5412
  };
5346
5413
  }, [state, rendered]);
5347
5414
  if (rendered === void 0) return null;
5348
- const leavingClass = leaving ? ` ${css$20.leaving}` : "";
5415
+ const leavingClass = leaving ? ` ${css$21.leaving}` : "";
5349
5416
  if (rendered === "recovered") return jsxs("div", {
5350
- className: `${css$20.indicator} ${css$20.success}${leavingClass}`,
5417
+ className: `${css$21.indicator} ${css$21.success}${leavingClass}`,
5351
5418
  role: "status",
5352
5419
  "aria-label": recoveredLabel,
5353
5420
  children: [jsx("span", {
5354
- className: css$20.icon,
5421
+ className: css$21.icon,
5355
5422
  "aria-hidden": "true",
5356
5423
  children: jsx(IconCheckOutlineRegular, { size: 14 })
5357
5424
  }), jsx("span", {
5358
- className: css$20.label,
5425
+ className: css$21.label,
5359
5426
  children: recoveredLabel
5360
5427
  })]
5361
5428
  });
5362
5429
  const connecting = rendered === "connecting";
5363
5430
  return jsxs("button", {
5364
5431
  type: "button",
5365
- className: `${css$20.indicator} ${css$20.warning}${leavingClass}`,
5432
+ className: `${css$21.indicator} ${css$21.warning}${leavingClass}`,
5366
5433
  "data-phase": rendered,
5367
5434
  "aria-label": connecting ? restartActionLabel : reconnectActionLabel,
5368
5435
  onClick: onReconnect,
5369
5436
  children: [jsx("span", {
5370
- className: css$20.icon,
5437
+ className: css$21.icon,
5371
5438
  "aria-hidden": "true",
5372
5439
  children: connecting ? jsx(StateDot, { state: "ongoing" }) : jsx(IconRefreshOutlineRegular, { size: 14 })
5373
5440
  }), jsx("span", {
5374
- className: css$20.label,
5441
+ className: css$21.label,
5375
5442
  children: connecting ? jsxs(Fragment, { children: [connectingLabel, jsxs("span", {
5376
- className: css$20.dots,
5443
+ className: css$21.dots,
5377
5444
  "aria-hidden": "true",
5378
5445
  children: [
5379
5446
  jsx("span", { children: "." }),
5380
5447
  jsx("span", {
5381
- className: css$20.secondDot,
5448
+ className: css$21.secondDot,
5382
5449
  children: "."
5383
5450
  }),
5384
5451
  jsx("span", {
5385
- className: css$20.thirdDot,
5452
+ className: css$21.thirdDot,
5386
5453
  children: "."
5387
5454
  })
5388
5455
  ]
@@ -6413,7 +6480,7 @@ function FileTypeIcon(props) {
6413
6480
  type: resolvedType,
6414
6481
  size,
6415
6482
  className
6416
- }) : glyph(resolvedType, size, clsx(css$21.icon, css$21[resolvedType], className));
6483
+ }) : glyph(resolvedType, size, clsx(css$22.icon, css$22[resolvedType], className));
6417
6484
  }
6418
6485
  //#endregion
6419
6486
  //#region lib/types/SiteGlyph.js
@@ -6742,7 +6809,7 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
6742
6809
  let cursor = 0;
6743
6810
  const pushPlain = (from, to) => {
6744
6811
  parts.push(jsx("span", {
6745
- className: css$22.plainRun,
6812
+ className: css$23.plainRun,
6746
6813
  children: text.slice(from, to)
6747
6814
  }, `t${from}`));
6748
6815
  };
@@ -6755,14 +6822,14 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
6755
6822
  const contents = jsxs(Fragment, { children: [referenceKind !== void 0 && jsx(ReferenceIconRegular, {
6756
6823
  kind: referenceKind,
6757
6824
  size: 16,
6758
- className: css$22.refIcon
6825
+ className: css$23.refIcon
6759
6826
  }), displayLabel] });
6760
6827
  const open = references === void 0 ? void 0 : referenceKind === "file" ? () => {
6761
6828
  references.openFile(label.slice(1).replace(/^"|"$/gu, ""));
6762
6829
  } : referenceKind === void 0 && slashKind === "skill" ? () => {
6763
6830
  references.openSkill(label.slice(1));
6764
6831
  } : void 0;
6765
- const className = clsx(css$22.refChip, referenceKind === void 0 && css$22.slashChip);
6832
+ const className = clsx(css$23.refChip, referenceKind === void 0 && css$23.slashChip);
6766
6833
  parts.push(open === void 0 ? jsx("span", {
6767
6834
  className,
6768
6835
  "data-ref-chip": referenceKind ?? slashKind,
@@ -6782,7 +6849,7 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
6782
6849
  cursor = end;
6783
6850
  }
6784
6851
  if (parts.length === 0) return jsx("span", {
6785
- className: css$22.plainRun,
6852
+ className: css$23.plainRun,
6786
6853
  children: text
6787
6854
  });
6788
6855
  if (cursor < text.length) pushPlain(cursor, text.length);
@@ -6855,25 +6922,25 @@ function Toast({ text, icon, tone, anchor, holdMs = HOLD_MS, actions, onDone })
6855
6922
  };
6856
6923
  }, [anchor]);
6857
6924
  return createPortal(jsxs("div", {
6858
- className: css$23.toast,
6925
+ className: css$24.toast,
6859
6926
  role: "alert",
6860
6927
  style: {
6861
6928
  ...left === null ? {} : { left },
6862
6929
  "--dsh-toast-hold": `${String(holdMs)}ms`
6863
6930
  },
6864
6931
  children: [tone === "success" ? jsx("span", {
6865
- className: `${css$23.icon} ${css$23.success}`,
6932
+ className: `${css$24.icon} ${css$24.success}`,
6866
6933
  "aria-hidden": true,
6867
6934
  children: jsx(IconCheckCircleOutlineRegular, {})
6868
6935
  }) : icon !== void 0 && jsx("span", {
6869
- className: css$23.icon,
6936
+ className: css$24.icon,
6870
6937
  "aria-hidden": true,
6871
6938
  children: icon
6872
6939
  }), jsxs("span", {
6873
- className: css$23.text,
6940
+ className: css$24.text,
6874
6941
  children: [text, actions?.map((action) => jsxs(Fragment$1, { children: [action.prefix, jsx("button", {
6875
6942
  type: "button",
6876
- className: css$23.action,
6943
+ className: css$24.action,
6877
6944
  onClick: action.onClick,
6878
6945
  children: action.label
6879
6946
  })] }, action.label))]
@@ -6923,29 +6990,29 @@ function SettingsForm(props) {
6923
6990
  discard.current();
6924
6991
  }, []);
6925
6992
  if (!state.available) return jsx("p", {
6926
- className: css$24.unavailable,
6993
+ className: css$25.unavailable,
6927
6994
  role: "status",
6928
6995
  children: labels.unavailable
6929
6996
  });
6930
6997
  const blocked = !state.dirty || state.invalid || state.saving;
6931
6998
  return jsxs("div", {
6932
- className: css$24.form,
6999
+ className: css$25.form,
6933
7000
  children: [
6934
7001
  !state.writable ? jsx("p", {
6935
- className: css$24.readOnly,
7002
+ className: css$25.readOnly,
6936
7003
  role: "status",
6937
7004
  children: labels.readOnly
6938
7005
  }) : null,
6939
7006
  props.children,
6940
7007
  jsxs("div", {
6941
- className: css$24.footer,
7008
+ className: css$25.footer,
6942
7009
  children: [state.failed ? jsx("p", {
6943
- className: css$24.failed,
7010
+ className: css$25.failed,
6944
7011
  role: "status",
6945
7012
  children: labels.saveFailed
6946
7013
  }) : null, jsx("button", {
6947
7014
  type: "button",
6948
- className: css$24.save,
7015
+ className: css$25.save,
6949
7016
  disabled: blocked,
6950
7017
  onClick: props.onSave,
6951
7018
  children: state.saving ? labels.saving : labels.save
@@ -6977,19 +7044,19 @@ function SettingsValueField(props) {
6977
7044
  const hasMessage = props.invalid || Boolean(props.hint);
6978
7045
  const description = [hasMessage ? messageId : "", helpOpen ? helpId : ""].filter(Boolean).join(" ");
6979
7046
  return jsxs("div", {
6980
- className: css$25.field,
7047
+ className: css$26.field,
6981
7048
  children: [
6982
7049
  jsxs("div", {
6983
- className: css$25.head,
7050
+ className: css$26.head,
6984
7051
  children: [jsxs("div", {
6985
- className: css$25.labelGroup,
7052
+ className: css$26.labelGroup,
6986
7053
  children: [jsx("label", {
6987
- className: css$25.label,
7054
+ className: css$26.label,
6988
7055
  htmlFor: props.id,
6989
7056
  children: props.label
6990
7057
  }), props.help !== void 0 ? jsx("button", {
6991
7058
  type: "button",
6992
- className: css$25.helpButton,
7059
+ className: css$26.helpButton,
6993
7060
  "aria-label": props.help.label,
6994
7061
  "aria-expanded": helpOpen,
6995
7062
  "aria-controls": helpId,
@@ -6999,13 +7066,13 @@ function SettingsValueField(props) {
6999
7066
  children: jsx(IconInfoOutlineRegular, { size: 12 })
7000
7067
  }) : null]
7001
7068
  }), props.overridden ? jsxs("span", {
7002
- className: css$25.badges,
7069
+ className: css$26.badges,
7003
7070
  children: [jsx(Tag, {
7004
7071
  tone: "neutral",
7005
7072
  children: props.overriddenLabel
7006
7073
  }), jsx("button", {
7007
7074
  type: "button",
7008
- className: css$25.reset,
7075
+ className: css$26.reset,
7009
7076
  disabled: props.disabled,
7010
7077
  onClick: props.onReset,
7011
7078
  children: props.resetLabel
@@ -7014,7 +7081,7 @@ function SettingsValueField(props) {
7014
7081
  }),
7015
7082
  jsx("input", {
7016
7083
  id: props.id,
7017
- className: css$25.input,
7084
+ className: css$26.input,
7018
7085
  type: "text",
7019
7086
  ...props.numeric === true ? { inputMode: "numeric" } : {},
7020
7087
  ...props.invalid ? { "aria-invalid": true } : {},
@@ -7028,12 +7095,12 @@ function SettingsValueField(props) {
7028
7095
  }),
7029
7096
  hasMessage ? jsx("p", {
7030
7097
  id: messageId,
7031
- className: props.invalid ? css$25.invalid : css$25.hint,
7098
+ className: props.invalid ? css$26.invalid : css$26.hint,
7032
7099
  children: props.invalid ? props.invalidLabel : props.hint
7033
7100
  }) : null,
7034
7101
  props.help !== void 0 && helpOpen ? jsx("div", {
7035
7102
  id: helpId,
7036
- className: css$25.help,
7103
+ className: css$26.help,
7037
7104
  role: "region",
7038
7105
  "aria-label": props.help.label,
7039
7106
  children: props.help.content
@@ -7051,16 +7118,16 @@ function SettingsValueField(props) {
7051
7118
  */
7052
7119
  function SettingsSecretField(props) {
7053
7120
  return jsxs("div", {
7054
- className: css$25.field,
7121
+ className: css$26.field,
7055
7122
  children: [
7056
7123
  jsxs("div", {
7057
- className: css$25.head,
7124
+ className: css$26.head,
7058
7125
  children: [jsx("label", {
7059
- className: css$25.label,
7126
+ className: css$26.label,
7060
7127
  htmlFor: props.id,
7061
7128
  children: props.label
7062
7129
  }), jsx("span", {
7063
- className: css$25.badges,
7130
+ className: css$26.badges,
7064
7131
  children: jsx(Tag, {
7065
7132
  tone: props.configured ? "neutral" : "quiet",
7066
7133
  children: props.stateLabel
@@ -7069,7 +7136,7 @@ function SettingsSecretField(props) {
7069
7136
  }),
7070
7137
  jsx("input", {
7071
7138
  id: props.id,
7072
- className: css$25.input,
7139
+ className: css$26.input,
7073
7140
  type: "password",
7074
7141
  autoComplete: "new-password",
7075
7142
  value: props.text,
@@ -7079,7 +7146,7 @@ function SettingsSecretField(props) {
7079
7146
  }
7080
7147
  }),
7081
7148
  jsx("p", {
7082
- className: css$25.hint,
7149
+ className: css$26.hint,
7083
7150
  children: props.hint
7084
7151
  })
7085
7152
  ]
@@ -8145,7 +8212,7 @@ function JsonCopyAction({ store, target, persistent, labels, onCopy, onClose })
8145
8212
  const object = typeof target.value === "object" && target.value !== null;
8146
8213
  const copyTitle = state === "copied" ? labels.copied : state === "failed" ? labels.copyFailed : object ? labels.copyPrettyJson : labels.copyValue;
8147
8214
  return jsx("span", {
8148
- className: css$26.copySlot,
8215
+ className: css$27.copySlot,
8149
8216
  children: (persistent || snapshot !== void 0) && jsx(Menu, {
8150
8217
  open: snapshot?.menuOpen === true,
8151
8218
  compact: true,
@@ -8154,7 +8221,7 @@ function JsonCopyAction({ store, target, persistent, labels, onCopy, onClose })
8154
8221
  anchor: jsx("button", {
8155
8222
  ref: buttonRef,
8156
8223
  type: "button",
8157
- className: css$26.actionButton,
8224
+ className: css$27.actionButton,
8158
8225
  "data-json-copy-button": true,
8159
8226
  "data-state": state,
8160
8227
  "aria-label": copyTitle,
@@ -8193,35 +8260,35 @@ function bracketOf(value) {
8193
8260
  }
8194
8261
  function previewPrimitive(value) {
8195
8262
  if (value === null) return jsx("span", {
8196
- className: css$26.keywordValue,
8263
+ className: css$27.keywordValue,
8197
8264
  children: "null"
8198
8265
  });
8199
8266
  if (typeof value === "string") return jsx("span", {
8200
- className: css$26.stringValue,
8267
+ className: css$27.stringValue,
8201
8268
  children: JSON.stringify(value)
8202
8269
  });
8203
8270
  if (typeof value === "number") return jsx("span", {
8204
- className: css$26.numberValue,
8271
+ className: css$27.numberValue,
8205
8272
  children: String(value)
8206
8273
  });
8207
8274
  if (typeof value === "boolean") return jsx("span", {
8208
- className: css$26.keywordValue,
8275
+ className: css$27.keywordValue,
8209
8276
  children: String(value)
8210
8277
  });
8211
8278
  if (typeof value === "bigint") return jsx("span", {
8212
- className: css$26.otherValue,
8279
+ className: css$27.otherValue,
8213
8280
  children: value.toString()
8214
8281
  });
8215
8282
  if (typeof value === "undefined") return jsx("span", {
8216
- className: css$26.otherValue,
8283
+ className: css$27.otherValue,
8217
8284
  children: "undefined"
8218
8285
  });
8219
8286
  if (typeof value === "symbol") return jsx("span", {
8220
- className: css$26.otherValue,
8287
+ className: css$27.otherValue,
8221
8288
  children: value.description ?? "Symbol"
8222
8289
  });
8223
8290
  if (typeof value === "function") return jsx("span", {
8224
- className: css$26.otherValue,
8291
+ className: css$27.otherValue,
8225
8292
  children: value.name || "Function"
8226
8293
  });
8227
8294
  return null;
@@ -8235,71 +8302,71 @@ function previewValue(value, depth) {
8235
8302
  const [open, close] = bracketOf(value);
8236
8303
  return jsxs(Fragment, { children: [
8237
8304
  jsx("span", {
8238
- className: css$26.punctuation,
8305
+ className: css$27.punctuation,
8239
8306
  children: open
8240
8307
  }),
8241
8308
  depth >= PREVIEW_DEPTH_LIMIT ? jsx("span", {
8242
- className: css$26.previewEllipsis,
8309
+ className: css$27.previewEllipsis,
8243
8310
  children: "…"
8244
8311
  }) : visible.map(([key, item], index) => jsxs("span", { children: [
8245
8312
  index > 0 && jsx("span", {
8246
- className: css$26.punctuation,
8313
+ className: css$27.punctuation,
8247
8314
  children: ", "
8248
8315
  }),
8249
8316
  !array && jsxs(Fragment, { children: [jsx("span", {
8250
- className: css$26.previewProperty,
8317
+ className: css$27.previewProperty,
8251
8318
  children: key
8252
8319
  }), jsx("span", {
8253
- className: css$26.punctuation,
8320
+ className: css$27.punctuation,
8254
8321
  children: ": "
8255
8322
  })] }),
8256
8323
  previewValue(item, depth + 1)
8257
8324
  ] }, key)),
8258
8325
  depth < PREVIEW_DEPTH_LIMIT && entries.length > limit && jsx("span", {
8259
- className: css$26.previewEllipsis,
8326
+ className: css$27.previewEllipsis,
8260
8327
  children: ", …"
8261
8328
  }),
8262
8329
  jsx("span", {
8263
- className: css$26.punctuation,
8330
+ className: css$27.punctuation,
8264
8331
  children: close
8265
8332
  })
8266
8333
  ] });
8267
8334
  }
8268
8335
  function primitiveValue(value) {
8269
8336
  if (value === null) return jsx("span", {
8270
- className: css$26.keywordValue,
8337
+ className: css$27.keywordValue,
8271
8338
  children: "null"
8272
8339
  });
8273
8340
  if (typeof value === "string") return jsx("span", {
8274
- className: css$26.stringValue,
8341
+ className: css$27.stringValue,
8275
8342
  children: JSON.stringify(value)
8276
8343
  });
8277
8344
  if (typeof value === "boolean") return jsx("span", {
8278
- className: css$26.keywordValue,
8345
+ className: css$27.keywordValue,
8279
8346
  children: String(value)
8280
8347
  });
8281
8348
  if (typeof value === "number") return jsx("span", {
8282
- className: css$26.numberValue,
8349
+ className: css$27.numberValue,
8283
8350
  children: String(value)
8284
8351
  });
8285
8352
  if (typeof value === "bigint") return jsx("span", {
8286
- className: css$26.numberValue,
8353
+ className: css$27.numberValue,
8287
8354
  children: `${value.toString()}n`
8288
8355
  });
8289
8356
  if (value instanceof Date) return jsx("span", {
8290
- className: css$26.otherValue,
8357
+ className: css$27.otherValue,
8291
8358
  children: value.toISOString()
8292
8359
  });
8293
8360
  if (typeof value === "function") return jsxs("span", {
8294
- className: css$26.otherValue,
8361
+ className: css$27.otherValue,
8295
8362
  children: ["function() ", "{ }"]
8296
8363
  });
8297
8364
  if (typeof value === "undefined") return jsx("span", {
8298
- className: css$26.otherValue,
8365
+ className: css$27.otherValue,
8299
8366
  children: "undefined"
8300
8367
  });
8301
8368
  return jsx("span", {
8302
- className: css$26.otherValue,
8369
+ className: css$27.otherValue,
8303
8370
  children: value.toString()
8304
8371
  });
8305
8372
  }
@@ -8327,7 +8394,7 @@ function moveFocus(button, direction) {
8327
8394
  function NodeField({ field, expandable, onToggle }) {
8328
8395
  if (field === void 0) return null;
8329
8396
  return jsxs("span", {
8330
- className: clsx(css$26.label, expandable && css$26.clickableLabel),
8397
+ className: clsx(css$27.label, expandable && css$27.clickableLabel),
8331
8398
  onClick: expandable ? onToggle : void 0,
8332
8399
  children: [fieldText(field), ":"]
8333
8400
  });
@@ -8364,7 +8431,7 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
8364
8431
  if (!expanded) return;
8365
8432
  const raw = rawRef.current;
8366
8433
  const clips = [];
8367
- const tree = raw.closest(`.${css$26.root}`);
8434
+ const tree = raw.closest(`.${css$27.root}`);
8368
8435
  for (let parent = tree.parentElement; parent !== null; parent = parent.parentElement) if (/auto|scroll|hidden|clip/.test(getComputedStyle(parent).overflowY)) clips.push(parent);
8369
8436
  const measure = () => {
8370
8437
  let top = 0;
@@ -8393,33 +8460,33 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
8393
8460
  if (expanded) {
8394
8461
  const fieldId = `${contentsId}-field`;
8395
8462
  return jsxs("div", {
8396
- className: css$26.stringField,
8463
+ className: css$27.stringField,
8397
8464
  "data-expanded": true,
8398
8465
  children: [
8399
8466
  field !== void 0 && jsxs("span", {
8400
8467
  id: fieldId,
8401
- className: css$26.label,
8468
+ className: css$27.label,
8402
8469
  children: [fieldText(field), ":"]
8403
8470
  }),
8404
8471
  jsx("pre", {
8405
8472
  ref: rawRef,
8406
8473
  id: contentsId,
8407
- className: css$26.stringRaw,
8474
+ className: css$27.stringRaw,
8408
8475
  "data-wrap": wrapped,
8409
8476
  tabIndex: 0,
8410
8477
  "aria-labelledby": field === void 0 ? void 0 : fieldId,
8411
8478
  children: value
8412
8479
  }),
8413
8480
  !lastElement && jsx("span", {
8414
- className: css$26.punctuation,
8481
+ className: css$27.punctuation,
8415
8482
  children: ","
8416
8483
  }),
8417
8484
  jsxs("div", {
8418
- className: css$26.stringActions,
8485
+ className: css$27.stringActions,
8419
8486
  children: [
8420
8487
  stringWrapping !== void 0 && jsx("button", {
8421
8488
  type: "button",
8422
- className: css$26.actionButton,
8489
+ className: css$27.actionButton,
8423
8490
  "aria-label": stringWrapping.label,
8424
8491
  title: stringWrapping.label,
8425
8492
  "aria-pressed": wrapped,
@@ -8433,7 +8500,7 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
8433
8500
  }),
8434
8501
  jsx("button", {
8435
8502
  type: "button",
8436
- className: css$26.actionButton,
8503
+ className: css$27.actionButton,
8437
8504
  "aria-label": labels.collapseNode,
8438
8505
  title: labels.collapseNode,
8439
8506
  "aria-expanded": true,
@@ -8458,18 +8525,18 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
8458
8525
  });
8459
8526
  }
8460
8527
  return jsxs(Fragment, { children: [renderCopy?.(), jsx("span", {
8461
- className: css$26.stringField,
8528
+ className: css$27.stringField,
8462
8529
  "data-expanded": expanded,
8463
8530
  children: jsxs("span", {
8464
8531
  ref: contentRef,
8465
8532
  id: contentsId,
8466
- className: css$26.stringText,
8533
+ className: css$27.stringText,
8467
8534
  children: [
8468
8535
  truncated && jsx("span", {
8469
- className: css$26.stringToggleSlot,
8536
+ className: css$27.stringToggleSlot,
8470
8537
  children: jsxs("button", {
8471
8538
  type: "button",
8472
- className: css$26.stringToggle,
8539
+ className: css$27.stringToggle,
8473
8540
  "aria-label": labels.expandNode,
8474
8541
  "aria-expanded": false,
8475
8542
  "aria-controls": contentsId,
@@ -8484,12 +8551,12 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
8484
8551
  })
8485
8552
  }),
8486
8553
  field !== void 0 && jsxs("span", {
8487
- className: css$26.label,
8554
+ className: css$27.label,
8488
8555
  children: [fieldText(field), ":"]
8489
8556
  }),
8490
8557
  primitiveValue(value),
8491
8558
  !lastElement && jsx("span", {
8492
- className: css$26.punctuation,
8559
+ className: css$27.punctuation,
8493
8560
  children: ","
8494
8561
  })
8495
8562
  ]
@@ -8520,7 +8587,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
8520
8587
  }
8521
8588
  };
8522
8589
  const row = (children, ariaExpanded) => jsxs("div", {
8523
- className: css$26.row,
8590
+ className: css$27.row,
8524
8591
  role: "treeitem",
8525
8592
  "aria-expanded": ariaExpanded,
8526
8593
  onMouseOver: (event) => {
@@ -8555,7 +8622,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
8555
8622
  }),
8556
8623
  primitiveValue(value),
8557
8624
  !lastElement && jsx("span", {
8558
- className: css$26.punctuation,
8625
+ className: css$27.punctuation,
8559
8626
  children: ","
8560
8627
  })
8561
8628
  ] }));
@@ -8567,22 +8634,22 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
8567
8634
  onToggle: toggle
8568
8635
  }),
8569
8636
  jsx("span", {
8570
- className: css$26.punctuation,
8637
+ className: css$27.punctuation,
8571
8638
  children: open
8572
8639
  }),
8573
8640
  jsx("span", {
8574
- className: css$26.punctuation,
8641
+ className: css$27.punctuation,
8575
8642
  children: close
8576
8643
  }),
8577
8644
  !lastElement && jsx("span", {
8578
- className: css$26.punctuation,
8645
+ className: css$27.punctuation,
8579
8646
  children: ","
8580
8647
  })
8581
8648
  ] }));
8582
8649
  return row(jsxs(Fragment, { children: [
8583
8650
  jsx("span", {
8584
8651
  ref: expanderRef,
8585
- className: clsx(css$26.expander, expanded ? css$26.collapseIcon : css$26.expandIcon),
8652
+ className: clsx(css$27.expander, expanded ? css$27.collapseIcon : css$27.expandIcon),
8586
8653
  "data-json-expander": true,
8587
8654
  role: "button",
8588
8655
  "aria-label": expanded ? labels.collapseNode : labels.expandNode,
@@ -8596,7 +8663,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
8596
8663
  onKeyDown: onExpanderKeyDown
8597
8664
  }),
8598
8665
  jsxs("span", {
8599
- className: css$26.summary,
8666
+ className: css$27.summary,
8600
8667
  children: [
8601
8668
  jsx(NodeField, {
8602
8669
  field,
@@ -8604,11 +8671,11 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
8604
8671
  onToggle: toggle
8605
8672
  }),
8606
8673
  jsx("span", {
8607
- className: css$26.preview,
8674
+ className: css$27.preview,
8608
8675
  children: previewValue(value, 0)
8609
8676
  }),
8610
8677
  !lastElement && jsx("span", {
8611
- className: css$26.punctuation,
8678
+ className: css$27.punctuation,
8612
8679
  children: ","
8613
8680
  })
8614
8681
  ]
@@ -8616,7 +8683,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
8616
8683
  expanded && jsx("ul", {
8617
8684
  id: contentsId,
8618
8685
  role: "group",
8619
- className: css$26.children,
8686
+ className: css$27.children,
8620
8687
  children: entries.map(([key, item], index) => jsx(JsonTreeNode, {
8621
8688
  collapsedStringLines,
8622
8689
  stringWrapping,
@@ -8748,17 +8815,17 @@ function JsonTree({ data, label, className, collapsedStringLines = 3, stringWrap
8748
8815
  onClose: clearCopyTarget
8749
8816
  }) : void 0;
8750
8817
  return jsx("div", {
8751
- className: clsx(css$26.root, className),
8818
+ className: clsx(css$27.root, className),
8752
8819
  style: { "--json-tree-collapsed-lines": collapsedStringLines },
8753
8820
  onMouseOver: handleRootMouseOver,
8754
8821
  onMouseLeave: () => {
8755
8822
  if (!copyStore.get()?.menuOpen) clearCopyTarget();
8756
8823
  },
8757
8824
  children: expandTopLevel ? jsxs("div", {
8758
- className: css$26.expandedTopLevel,
8825
+ className: css$27.expandedTopLevel,
8759
8826
  children: [
8760
8827
  jsxs("div", {
8761
- className: clsx(css$26.row, css$26.topLevelBracket),
8828
+ className: clsx(css$27.row, css$27.topLevelBracket),
8762
8829
  "data-json-root-row": true,
8763
8830
  onMouseOver: (event) => {
8764
8831
  event.stopPropagation();
@@ -8771,13 +8838,13 @@ function JsonTree({ data, label, className, collapsedStringLines = 3, stringWrap
8771
8838
  path: [],
8772
8839
  value: data
8773
8840
  }), jsx("span", {
8774
- className: css$26.punctuation,
8841
+ className: css$27.punctuation,
8775
8842
  children: rootOpen
8776
8843
  })]
8777
8844
  }),
8778
8845
  jsx("div", {
8779
8846
  "aria-label": label,
8780
- className: clsx(css$26.container, css$26.expandedTopLevelContainer),
8847
+ className: clsx(css$27.container, css$27.expandedTopLevelContainer),
8781
8848
  role: "tree",
8782
8849
  children: rootEntries.map(([key, value], index) => jsx(JsonTreeNode, {
8783
8850
  collapsedStringLines,
@@ -8795,16 +8862,16 @@ function JsonTree({ data, label, className, collapsedStringLines = 3, stringWrap
8795
8862
  }, key))
8796
8863
  }),
8797
8864
  jsx("div", {
8798
- className: clsx(css$26.row, css$26.topLevelBracket),
8865
+ className: clsx(css$27.row, css$27.topLevelBracket),
8799
8866
  children: jsx("span", {
8800
- className: css$26.punctuation,
8867
+ className: css$27.punctuation,
8801
8868
  children: rootClose
8802
8869
  })
8803
8870
  })
8804
8871
  ]
8805
8872
  }) : jsx("div", {
8806
8873
  "aria-label": label,
8807
- className: css$26.container,
8874
+ className: css$27.container,
8808
8875
  role: "tree",
8809
8876
  children: jsx(JsonTreeNode, {
8810
8877
  collapsedStringLines,
@@ -9367,67 +9434,67 @@ function TerminalBlock({ command, cwd, home, output, exitCode, signal, running =
9367
9434
  const { hidden, capped, headLines, tailLines } = headTailCap(lines.length, maxLines, expanded);
9368
9435
  const body = !running || !empty;
9369
9436
  return jsxs("div", {
9370
- className: clsx(css$27.block, className),
9437
+ className: clsx(css$28.block, className),
9371
9438
  "data-terminal": "",
9372
9439
  "data-running": running ? "" : void 0,
9373
9440
  "data-body": body ? "" : void 0,
9374
9441
  children: [jsxs("div", {
9375
- className: css$27.header,
9442
+ className: css$28.header,
9376
9443
  children: [
9377
9444
  jsxs("div", {
9378
- className: css$27.prompt,
9445
+ className: css$28.prompt,
9379
9446
  children: [runStateDot && jsx("span", {
9380
- className: css$27.runStateLabel,
9447
+ className: css$28.runStateLabel,
9381
9448
  children: state.label
9382
9449
  }), commandLines.map((line, index) => jsxs("div", {
9383
- className: css$27.promptLine,
9450
+ className: css$28.promptLine,
9384
9451
  children: [
9385
9452
  index === 0 && runStateDot && jsx(StateDot, {
9386
9453
  state: state.state,
9387
- className: css$27.runState
9454
+ className: css$28.runState
9388
9455
  }),
9389
9456
  jsx("span", {
9390
- className: css$27.cwd,
9457
+ className: css$28.cwd,
9391
9458
  children: index > 0 || cwd === void 0 ? "$" : promptLabel(cwd, home)
9392
9459
  }),
9393
9460
  jsx("span", {
9394
- className: css$27.command,
9461
+ className: css$28.command,
9395
9462
  children: line
9396
9463
  })
9397
9464
  ]
9398
9465
  }, index))]
9399
9466
  }),
9400
9467
  status !== void 0 && jsx(Pill, {
9401
- className: css$27.status,
9468
+ className: css$28.status,
9402
9469
  children: status
9403
9470
  }),
9404
9471
  (copyText !== void 0 || !running && !empty) && jsx("button", {
9405
9472
  type: "button",
9406
- className: css$27.copyButton,
9473
+ className: css$28.copyButton,
9407
9474
  onClick: onCopy,
9408
9475
  children: copied ? copy.copied : copy.copy
9409
9476
  })
9410
9477
  ]
9411
9478
  }), body && (empty ? jsx("div", {
9412
- className: css$27.empty,
9479
+ className: css$28.empty,
9413
9480
  children: copy.noOutput
9414
9481
  }) : jsxs("div", {
9415
- className: css$27.output,
9482
+ className: css$28.output,
9416
9483
  children: [
9417
9484
  (capped ? lines.slice(0, headLines) : lines).map((line, index) => jsx("div", {
9418
- className: css$27.line,
9485
+ className: css$28.line,
9419
9486
  children: renderLine$1(line)
9420
9487
  }, index)),
9421
9488
  hidden > 0 && jsx("button", {
9422
9489
  type: "button",
9423
- className: css$27.expand,
9490
+ className: css$28.expand,
9424
9491
  "aria-expanded": expanded,
9425
9492
  "aria-label": expanded ? copy.collapseAria : copy.expandAria(hidden),
9426
9493
  onClick: onToggle,
9427
9494
  children: expanded ? copy.collapse : copy.expand(hidden)
9428
9495
  }),
9429
9496
  capped && lines.slice(lines.length - tailLines).map((line, index) => jsx("div", {
9430
- className: css$27.line,
9497
+ className: css$28.line,
9431
9498
  children: renderLine$1(line)
9432
9499
  }, index))
9433
9500
  ]
@@ -9630,13 +9697,13 @@ function ReadBlock({ label, labels, lines, totalLines, lang, maxLines = 16, clas
9630
9697
  const tailLines = maxLines - headLines;
9631
9698
  const windowed = lines.length < totalLines;
9632
9699
  const rows = (slice) => slice.map(([line, spans]) => jsxs("div", {
9633
- className: css$28.line,
9700
+ className: css$29.line,
9634
9701
  children: [jsx("span", {
9635
- className: css$28.gutter,
9702
+ className: css$29.gutter,
9636
9703
  "aria-hidden": true,
9637
9704
  children: line.number
9638
9705
  }), jsx("span", {
9639
- className: css$28.content,
9706
+ className: css$29.content,
9640
9707
  children: spans === void 0 ? line.text : renderSpans(spans)
9641
9708
  })]
9642
9709
  }, line.number));
@@ -9644,7 +9711,7 @@ function ReadBlock({ label, labels, lines, totalLines, lang, maxLines = 16, clas
9644
9711
  const paired = lines.map((line, index) => [line, highlighted?.[index]]);
9645
9712
  return jsxs("div", {
9646
9713
  ref: rootRef,
9647
- className: clsx(cardCss.card, css$28.block, className),
9714
+ className: clsx(cardCss.card, css$29.block, className),
9648
9715
  "data-read": "",
9649
9716
  "data-code-wrap": wrapped,
9650
9717
  style: gutterStyle,
@@ -9666,7 +9733,7 @@ function ReadBlock({ label, labels, lines, totalLines, lang, maxLines = 16, clas
9666
9733
  children: [
9667
9734
  rows(capped ? paired.slice(0, headLines) : paired),
9668
9735
  hidden > 0 && jsx(FoldToggle, {
9669
- className: css$28.expand,
9736
+ className: css$29.expand,
9670
9737
  expanded,
9671
9738
  hidden,
9672
9739
  labels,
@@ -9688,11 +9755,11 @@ function assertNever(value) {
9688
9755
  }
9689
9756
  /** The dim class per row kind (path/gap chrome vs the diff's own +/- colors). */
9690
9757
  const ROW_CLASS = {
9691
- path: css$29.path,
9692
- del: css$29.del,
9693
- add: css$29.add,
9694
- context: css$29.context,
9695
- gap: css$29.gap
9758
+ path: css$30.path,
9759
+ del: css$30.del,
9760
+ add: css$30.add,
9761
+ context: css$30.context,
9762
+ gap: css$30.gap
9696
9763
  };
9697
9764
  /** Bound synchronous edit-graph search; one replacement consumes two edits. */
9698
9765
  const MAX_DIFF_EDIT_LENGTH = 256;
@@ -9826,7 +9893,7 @@ function DiffBlock({ diffs, labels, maxLines = 16, className }) {
9826
9893
  const head = capped ? rows.slice(0, headLines) : rows;
9827
9894
  const tail = capped ? rows.slice(rows.length - tailLines) : [];
9828
9895
  return jsxs("div", {
9829
- className: clsx(cardCss.card, css$29.block, className),
9896
+ className: clsx(cardCss.card, css$30.block, className),
9830
9897
  "data-diff": "",
9831
9898
  "data-code-wrap": wrapped,
9832
9899
  children: [jsx(CodeToolbar, {
@@ -9841,21 +9908,21 @@ function DiffBlock({ diffs, labels, maxLines = 16, className }) {
9841
9908
  setWrapped((value) => !value);
9842
9909
  }
9843
9910
  }), jsxs("div", {
9844
- className: css$29.body,
9911
+ className: css$30.body,
9845
9912
  children: [
9846
9913
  head.map((row, index) => jsx("div", {
9847
- className: clsx(css$29.line, ROW_CLASS[row.kind]),
9914
+ className: clsx(css$30.line, ROW_CLASS[row.kind]),
9848
9915
  children: row.text
9849
9916
  }, index)),
9850
9917
  hidden > 0 && jsx(FoldToggle, {
9851
- className: css$29.expand,
9918
+ className: css$30.expand,
9852
9919
  expanded,
9853
9920
  hidden,
9854
9921
  labels,
9855
9922
  onToggle
9856
9923
  }),
9857
9924
  tail.map((row, index) => jsx("div", {
9858
- className: clsx(css$29.line, ROW_CLASS[row.kind]),
9925
+ className: clsx(css$30.line, ROW_CLASS[row.kind]),
9859
9926
  children: row.text
9860
9927
  }, index))
9861
9928
  ]
@@ -9985,56 +10052,56 @@ function SearchBlock(props) {
9985
10052
  const tail = tailHeader === void 0 ? naturalTail : naturalTail.slice(1);
9986
10053
  const renderRow = (row) => {
9987
10054
  if (row.type === "path") return jsx("div", {
9988
- className: css$30.line,
10055
+ className: css$31.line,
9989
10056
  children: row.path
9990
10057
  });
9991
10058
  if (row.type === "match") return jsxs("div", {
9992
- className: css$30.line,
10059
+ className: css$31.line,
9993
10060
  children: [jsxs("span", {
9994
- className: css$30.lineNumber,
10061
+ className: css$31.lineNumber,
9995
10062
  children: [row.lineNumber, ": "]
9996
10063
  }), row.line]
9997
10064
  });
9998
10065
  return jsxs("button", {
9999
10066
  type: "button",
10000
- className: css$30.fileHeader,
10067
+ className: css$31.fileHeader,
10001
10068
  "aria-expanded": !row.collapsed,
10002
10069
  onClick: () => {
10003
10070
  toggleFile(row.index);
10004
10071
  },
10005
10072
  children: [jsx("span", {
10006
- className: css$30.filePath,
10073
+ className: css$31.filePath,
10007
10074
  children: row.path
10008
10075
  }), jsx("span", {
10009
- className: css$30.fileCount,
10076
+ className: css$31.fileCount,
10010
10077
  children: row.count
10011
10078
  })]
10012
10079
  });
10013
10080
  };
10014
10081
  return jsxs("div", {
10015
- className: clsx(css$30.block, className),
10082
+ className: clsx(css$31.block, className),
10016
10083
  "data-search": props.kind,
10017
10084
  children: [jsxs("div", {
10018
- className: css$30.header,
10085
+ className: css$31.header,
10019
10086
  children: [jsx("span", {
10020
- className: css$30.summary,
10087
+ className: css$31.summary,
10021
10088
  children: summaryText(props, shown, truncated, total)
10022
10089
  }), !empty && jsx("button", {
10023
10090
  type: "button",
10024
- className: css$30.copyButton,
10091
+ className: css$31.copyButton,
10025
10092
  onClick: onCopy,
10026
10093
  children: copied ? props.labels.copied : props.labels.copy
10027
10094
  })]
10028
10095
  }), empty ? jsx("div", {
10029
- className: css$30.empty,
10096
+ className: css$31.empty,
10030
10097
  children: props.labels.noResults
10031
10098
  }) : jsxs("div", {
10032
- className: css$30.body,
10099
+ className: css$31.body,
10033
10100
  children: [
10034
10101
  head.map((row) => jsx("div", { children: renderRow(row) }, rowKey(row))),
10035
10102
  hidden > 0 && jsx("button", {
10036
10103
  type: "button",
10037
- className: css$30.expand,
10104
+ className: css$31.expand,
10038
10105
  "aria-expanded": expanded,
10039
10106
  "aria-label": expanded ? props.labels.collapseAria : props.labels.expandAria(hidden),
10040
10107
  onClick: onToggle,
@@ -10864,7 +10931,7 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
10864
10931
  });
10865
10932
  }, [copied, trimmed]);
10866
10933
  const body = streamedBody !== void 0 ? streamedBody : html === void 0 ? jsx("pre", {
10867
- className: css$31.plain,
10934
+ className: css$32.plain,
10868
10935
  children: jsx("code", { children: sourceLines === void 0 ? trimmed : sourceLines.map((line, index) => jsxs(Fragment$1, { children: [index > 0 && "\n", jsx("span", {
10869
10936
  className: "line",
10870
10937
  children: line
@@ -10872,12 +10939,12 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
10872
10939
  }) : jsx("div", { dangerouslySetInnerHTML: { __html: html } });
10873
10940
  return jsxs("div", {
10874
10941
  ref: rootRef,
10875
- className: clsx(css$31.block, "md-code-block", lineNumbers && css$31.numbered, toolbarLabels !== void 0 && css$31.card, className),
10942
+ className: clsx(css$32.block, "md-code-block", lineNumbers && css$32.numbered, toolbarLabels !== void 0 && css$32.card, className),
10876
10943
  "data-line-numbers": lineNumbers || void 0,
10877
10944
  "data-code-wrap": toolbarLabels === void 0 ? void 0 : wrapped,
10878
10945
  style: sourceLines === void 0 ? void 0 : { "--dsl-code-block-line-number-width": `${Math.max(2, String(sourceLines.length).length)}ch` },
10879
10946
  children: [showHeader && jsx("div", {
10880
- className: css$31.bannerWrap,
10947
+ className: css$32.bannerWrap,
10881
10948
  children: toolbarLabels !== void 0 ? jsx(CodeToolbar, {
10882
10949
  lang,
10883
10950
  labels: toolbarLabels,
@@ -10890,16 +10957,16 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
10890
10957
  setWrapped((value) => !value);
10891
10958
  } : void 0
10892
10959
  }) : jsxs("div", {
10893
- className: css$31.banner,
10960
+ className: css$32.banner,
10894
10961
  "data-code-block-banner": true,
10895
10962
  children: [jsx("div", {
10896
- className: css$31.infostring,
10963
+ className: css$32.infostring,
10897
10964
  children: lang ?? ""
10898
10965
  }), jsx("div", {
10899
- className: css$31.action,
10966
+ className: css$32.action,
10900
10967
  children: jsx("button", {
10901
10968
  type: "button",
10902
- className: css$31.copyButton,
10969
+ className: css$32.copyButton,
10903
10970
  onClick: onCopy,
10904
10971
  children: copied ? copiedLabel : copyLabel
10905
10972
  })
@@ -10907,7 +10974,7 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
10907
10974
  })
10908
10975
  }), jsx("div", {
10909
10976
  ref: contentRef,
10910
- className: css$31.content,
10977
+ className: css$32.content,
10911
10978
  "data-code-block-content": true,
10912
10979
  children: body
10913
10980
  })]
@@ -11097,25 +11164,25 @@ function ImageLightbox({ src, alt, labels, onClose }) {
11097
11164
  };
11098
11165
  }, [onClose]);
11099
11166
  return createPortal(jsxs("div", {
11100
- className: css$32.backdrop,
11167
+ className: css$33.backdrop,
11101
11168
  role: "dialog",
11102
11169
  "aria-modal": "true",
11103
11170
  "aria-label": labels.dialog,
11104
11171
  children: [
11105
11172
  jsx("div", {
11106
- className: css$32.mask,
11173
+ className: css$33.mask,
11107
11174
  "aria-hidden": "true",
11108
11175
  onMouseDown: onClose
11109
11176
  }),
11110
11177
  jsx("img", {
11111
- className: css$32.image,
11178
+ className: css$33.image,
11112
11179
  src,
11113
11180
  alt
11114
11181
  }),
11115
11182
  jsx("button", {
11116
11183
  ref: closeRef,
11117
11184
  type: "button",
11118
- className: css$32.close,
11185
+ className: css$33.close,
11119
11186
  "aria-label": labels.close,
11120
11187
  onClick: onClose,
11121
11188
  children: jsx(IconCloseOutlineRegular, { size: 16 })
@@ -11142,14 +11209,14 @@ function ImagePreview({ src, alt, loadingLabel, failedLabel }) {
11142
11209
  function Preview({ src, alt, loadingLabel, failedLabel }) {
11143
11210
  const [state, setState] = useState("loading");
11144
11211
  return jsxs("span", {
11145
- className: css$33.frame,
11212
+ className: css$34.frame,
11146
11213
  children: [state !== "failed" && jsx("img", {
11147
11214
  src,
11148
11215
  alt,
11149
11216
  loading: "lazy",
11150
11217
  decoding: "async",
11151
11218
  referrerPolicy: "no-referrer",
11152
- className: css$33.image,
11219
+ className: css$34.image,
11153
11220
  "data-ready": state === "ready" || void 0,
11154
11221
  onLoad: () => {
11155
11222
  setState("ready");
@@ -11158,7 +11225,7 @@ function Preview({ src, alt, loadingLabel, failedLabel }) {
11158
11225
  setState("failed");
11159
11226
  }
11160
11227
  }), state !== "ready" && jsxs("span", {
11161
- className: css$33.status,
11228
+ className: css$34.status,
11162
11229
  role: "status",
11163
11230
  children: [state === "loading" && jsx(IconLoadingOutlineRegular, { size: 16 }), jsx("span", { children: state === "loading" ? loadingLabel : failedLabel })]
11164
11231
  })]
@@ -11897,7 +11964,7 @@ function SafeLink({ url, label, className }) {
11897
11964
  children: [jsx(LinkIconMedium, {
11898
11965
  kind: "url",
11899
11966
  href,
11900
- className: css$34.linkIcon
11967
+ className: css$35.linkIcon
11901
11968
  }), label]
11902
11969
  });
11903
11970
  }
@@ -11912,20 +11979,20 @@ function SafeLink({ url, label, className }) {
11912
11979
  */
11913
11980
  function SourceItem({ source, ordinal }) {
11914
11981
  return jsxs("li", {
11915
- className: css$34.source,
11982
+ className: css$35.source,
11916
11983
  value: ordinal,
11917
11984
  children: [
11918
11985
  jsx(SafeLink, {
11919
11986
  url: source.url,
11920
11987
  label: linkLabel(source.url, source.title),
11921
- className: css$34.sourceLink
11988
+ className: css$35.sourceLink
11922
11989
  }),
11923
11990
  source.snippet !== void 0 && source.snippet !== "" && jsx("div", {
11924
- className: css$34.snippet,
11991
+ className: css$35.snippet,
11925
11992
  children: source.snippet
11926
11993
  }),
11927
11994
  source.publishedAt !== void 0 && source.publishedAt !== "" && jsx("div", {
11928
- className: css$34.published,
11995
+ className: css$35.published,
11929
11996
  children: source.publishedAt
11930
11997
  })
11931
11998
  ]
@@ -11940,28 +12007,28 @@ function SourceItem({ source, ordinal }) {
11940
12007
  function WebSearchBlock({ answer, sources, truncated, labels, className }) {
11941
12008
  const empty = (answer === void 0 || answer === "") && sources.length === 0;
11942
12009
  return jsxs("div", {
11943
- className: clsx(css$34.block, className),
12010
+ className: clsx(css$35.block, className),
11944
12011
  "data-web": "search",
11945
12012
  children: [
11946
12013
  answer !== void 0 && answer !== "" && jsx("div", {
11947
- className: css$34.answer,
12014
+ className: css$35.answer,
11948
12015
  children: jsx(MarkdownText, {
11949
12016
  text: answer,
11950
12017
  labels: labels.markdown
11951
12018
  })
11952
12019
  }),
11953
12020
  empty ? jsx("div", {
11954
- className: css$34.empty,
12021
+ className: css$35.empty,
11955
12022
  children: labels.noResults
11956
12023
  }) : jsx("ol", {
11957
- className: css$34.sources,
12024
+ className: css$35.sources,
11958
12025
  children: sources.map((source, index) => jsx(SourceItem, {
11959
12026
  source,
11960
12027
  ordinal: index + 1
11961
12028
  }, index))
11962
12029
  }),
11963
12030
  truncated && jsx("div", {
11964
- className: css$34.truncated,
12031
+ className: css$35.truncated,
11965
12032
  children: labels.sourcesTruncated
11966
12033
  })
11967
12034
  ]
@@ -11974,23 +12041,23 @@ function WebSearchBlock({ answer, sources, truncated, labels, className }) {
11974
12041
  */
11975
12042
  function WebFetchBlock({ url, statusCode, truncated, labels, className }) {
11976
12043
  return jsxs("div", {
11977
- className: clsx(css$34.block, css$34.fetch, className),
12044
+ className: clsx(css$35.block, css$35.fetch, className),
11978
12045
  "data-web": "fetch",
11979
12046
  children: [jsx(SafeLink, {
11980
12047
  url,
11981
12048
  label: url,
11982
- className: css$34.fetchUrl
12049
+ className: css$35.fetchUrl
11983
12050
  }), jsxs("div", {
11984
- className: css$34.fetchMeta,
12051
+ className: css$35.fetchMeta,
11985
12052
  children: [jsxs("span", {
11986
- className: css$34.status,
12053
+ className: css$35.status,
11987
12054
  children: [
11988
12055
  labels.http,
11989
12056
  " ",
11990
12057
  statusCode
11991
12058
  ]
11992
12059
  }), truncated && jsx("span", {
11993
- className: css$34.truncated,
12060
+ className: css$35.truncated,
11994
12061
  children: labels.contentTruncated
11995
12062
  })]
11996
12063
  })]
@@ -12024,10 +12091,10 @@ function JsonBlock({ label, payload, defaultOpen = false, truncatedLabel }) {
12024
12091
  truncatedLabel
12025
12092
  ]);
12026
12093
  return jsxs("div", {
12027
- className: css$35.root,
12094
+ className: css$36.root,
12028
12095
  children: [jsxs("button", {
12029
12096
  type: "button",
12030
- className: css$35.toggle,
12097
+ className: css$36.toggle,
12031
12098
  onClick: () => {
12032
12099
  setOpen((v) => !v);
12033
12100
  },
@@ -12037,7 +12104,7 @@ function JsonBlock({ label, payload, defaultOpen = false, truncatedLabel }) {
12037
12104
  label
12038
12105
  ]
12039
12106
  }), open && jsx("pre", {
12040
- className: css$35.body,
12107
+ className: css$36.body,
12041
12108
  children: body
12042
12109
  })]
12043
12110
  });
@@ -12378,6 +12445,6 @@ function GuideArtworkFiles({ size = 36, className }) {
12378
12445
  });
12379
12446
  }
12380
12447
  //#endregion
12381
- export { BrandWordmark, Button, CODE_HIGHLIGHT_EXTENSIONS, Checkbox, CodeBlock, ConnectionIndicator, DEFAULT_DIFF_MAX_LINES, DEFAULT_READ_MAX_LINES, DEFAULT_SEARCH_MAX_LINES, DEFAULT_TERMINAL_MAX_LINES, DiffBlock, DisclosureRow, FISH_LOGO_PATH, FISH_LOGO_VIEWBOX, FileTypeIcon, FishLogo, GuideArtworkBrowser, GuideArtworkFiles, HoverCard, ICON_MEDIUM_STROKE, ICON_REGULAR_STROKE, IconAgentPresetOutlineMedium, IconAgentPresetOutlineRegular, IconAlarmClockOutlineMedium, IconAlarmClockOutlineRegular, IconApiOutlineMedium, IconApiOutlineRegular, IconArchiveCheckOutlineMedium, IconArchiveCheckOutlineRegular, IconArchiveOffOutlineMedium, IconArchiveOffOutlineRegular, IconArchiveOutlineMedium, IconArchiveOutlineRegular, IconBranchOutlineMedium, IconBranchOutlineRegular, IconBrowseOutlineMedium, IconBrowseOutlineRegular, IconCheckCircleFillMedium, IconCheckCircleFillRegular, IconCheckCircleOutlineMedium, IconCheckCircleOutlineRegular, IconCheckOutlineMedium, IconCheckOutlineRegular, IconChecklistOutlineMedium, IconChecklistOutlineRegular, IconChevronDownOutlineMedium, IconChevronDownOutlineRegular, IconChevronLeftOutlineMedium, IconChevronLeftOutlineRegular, IconChevronRightOutlineMedium, IconChevronRightOutlineRegular, IconChevronUpOutlineMedium, IconChevronUpOutlineRegular, IconChevronsUpDownOutlineMedium, IconChevronsUpDownOutlineRegular, IconClockOutlineMedium, IconClockOutlineRegular, IconCloseCircleFillMedium, IconCloseCircleFillRegular, IconCloseFillMedium, IconCloseFillRegular, IconCloseOutlineMedium, IconCloseOutlineRegular, IconCodeOutlineMedium, IconCodeOutlineRegular, IconCompactOutlineMedium, IconCompactOutlineRegular, IconCompareSplitOutlineMedium, IconCompareSplitOutlineRegular, IconContextInjectionOutlineMedium, IconContextInjectionOutlineRegular, IconCopyOutlineMedium, IconCopyOutlineRegular, IconCordisPluginOutlineMedium, IconCordisPluginOutlineRegular, IconDarkOutlineMedium, IconDarkOutlineRegular, IconDataOutlineMedium, IconDataOutlineRegular, IconDatabaseOutlineMedium, IconDatabaseOutlineRegular, IconDeliverDocMedium, IconDeliverDocRegular, IconDislikeFillMedium, IconDislikeFillRegular, IconDislikeOutlineMedium, IconDislikeOutlineRegular, IconDownloadOutlineMedium, IconDownloadOutlineRegular, IconEditOutlineMedium, IconEditOutlineRegular, IconEllipsisOutlineMedium, IconEllipsisOutlineRegular, IconEnhanceOutlineMedium, IconEnhanceOutlineRegular, IconFlatListOutlineMedium, IconFlatListOutlineRegular, IconFolderCloseMedium, IconFolderCloseRegular, IconFolderOpenMedium, IconFolderOpenOutlineMedium, IconFolderOpenOutlineRegular, IconFolderOpenRegular, IconFollowsystemOutlineMedium, IconFollowsystemOutlineRegular, IconFullscreenOutlineMedium, IconFullscreenOutlineRegular, IconGaugeOutlineMedium, IconGaugeOutlineRegular, IconGlobeOutlineMedium, IconGlobeOutlineRegular, IconGoalOutlineMedium, IconGoalOutlineRegular, IconInfoOutlineMedium, IconInfoOutlineRegular, IconInspectOutlineMedium, IconInspectOutlineRegular, IconLightOutlineMedium, IconLightOutlineRegular, IconLikeFillMedium, IconLikeFillRegular, IconLikeOutlineMedium, IconLikeOutlineRegular, IconLinkOutlineMedium, IconLinkOutlineRegular, IconListPenOutlineMedium, IconListPenOutlineRegular, IconLoadingOutlineMedium, IconLoadingOutlineRegular, IconMicrophoneOutlineMedium, IconMicrophoneOutlineRegular, IconNewChatOutlineMedium, IconNewChatOutlineRegular, IconNowrapFillMedium, IconNowrapFillRegular, IconPanelLeftOutlineMedium, IconPanelLeftOutlineRegular, IconPaperPlaneOutlineMedium, IconPaperPlaneOutlineRegular, IconPaperclipOutlineMedium, IconPaperclipOutlineRegular, IconPauseOutlineMedium, IconPauseOutlineRegular, IconPersonalizationOutlineMedium, IconPersonalizationOutlineRegular, IconPinFillMedium, IconPinFillRegular, IconPinOutlineMedium, IconPinOutlineRegular, IconPlanOutlineMedium, IconPlanOutlineRegular, IconPlayOutlineMedium, IconPlayOutlineRegular, IconPluginPinwheelOutlineMedium, IconPluginPinwheelOutlineRegular, IconPlusOutlineMedium, IconPlusOutlineRegular, IconProjectAddOutlineMedium, IconProjectAddOutlineRegular, IconQuestionOutlineMedium, IconQuestionOutlineRegular, IconQueueOutlineMedium, IconQueueOutlineRegular, IconRefreshOutlineMedium, IconRefreshOutlineRegular, IconRightUpOutlineMedium, IconRightUpOutlineRegular, IconSearchOutlineMedium, IconSearchOutlineRegular, IconSendOutlineMedium, IconSendOutlineRegular, IconSettingsOutlineMedium, IconSettingsOutlineRegular, IconShareOutlineMedium, IconShareOutlineRegular, IconShieldOutlineMedium, IconShieldOutlineRegular, IconSkillOutlineMedium, IconSkillOutlineRegular, IconSlidersTwoOutlineMedium, IconSlidersTwoOutlineRegular, IconSparkleMedium, IconSparkleRegular, IconStopFillMedium, IconStopFillRegular, IconThinkOutlineMedium, IconThinkOutlineRegular, IconTrashOutlineMedium, IconTrashOutlineRegular, IconTreeCornerMedium, IconTreeCornerRegular, IconTriangleRightFillMedium, IconTriangleRightFillRegular, IconUnarchiveOutlineMedium, IconUnarchiveOutlineRegular, IconUserOutlineMedium, IconUserOutlineRegular, IconUsersOutlineMedium, IconUsersOutlineRegular, IconWarningOutlineMedium, IconWarningOutlineRegular, IconWarningTriangleOutlineMedium, IconWarningTriangleOutlineRegular, IconWorkspaceTreeOutlineMedium, IconWorkspaceTreeOutlineRegular, IconWrapFillMedium, IconWrapFillRegular, IconWrapLinesOutlineMedium, IconWrapLinesOutlineRegular, ImageLightbox, Input, JsonBlock, JsonTree, LinkIconMedium, LinkIconRegular, MarkdownDelegateProvider, MarkdownText, Menu, MenuGroup, MenuItemButton, MenuSurface, Modal, PathLabel, PermissionIconFullAccessMedium, PermissionIconFullAccessRegular, PermissionIconReadOnlyMedium, PermissionIconReadOnlyRegular, PermissionIconWorkspaceWriteMedium, PermissionIconWorkspaceWriteRegular, Pill, PluginArtworkDefault, PluginArtworkLoop, PluginArtworkSearch, PluginArtworkSubagent, PluginArtworkTerminal, ReadBlock, ReferenceIconMedium, ReferenceIconRegular, RiskConfirmation, SHIELD_OUTLINE_PATH, SearchBlock, SegmentedControl, SegmentedTabs, SettingsForm, SettingsFormModel, SettingsSecretField, SettingsValueField, ShortcutKeys, StateDot, Switch, Tag, TerminalBlock, TextShimmer, Toast, Tooltip, WebBlock, classifyFileType, classifyLinkPath, closeTopModal, diffTotals, extractMarkdownPlainText, fileExtension, fileSizeText, focusWithoutRing, isBehindModal, isDarwinDesktop, languageForPath, modalSelector, observeComposition, observeStickyMenuGroups, pointerModality, projectUserText, rankByName, relativeTime, settingsNumberField, settingsTextField, useAnchoredMaxHeight, useAnchoredPosition, useCodeHighlighter, useDismissOnOutsidePointer, useModalLayer, writeClipboard };
12448
+ export { BrandWordmark, Button, CODE_HIGHLIGHT_EXTENSIONS, Checkbox, CodeBlock, ConnectionIndicator, DEFAULT_DIFF_MAX_LINES, DEFAULT_READ_MAX_LINES, DEFAULT_SEARCH_MAX_LINES, DEFAULT_TERMINAL_MAX_LINES, DiffBlock, DisclosureRow, FISH_LOGO_PATH, FISH_LOGO_VIEWBOX, FileTypeIcon, FishLogo, GuideArtworkBrowser, GuideArtworkFiles, HoverCard, ICON_MEDIUM_STROKE, ICON_REGULAR_STROKE, IconAgentPresetOutlineMedium, IconAgentPresetOutlineRegular, IconAlarmClockOutlineMedium, IconAlarmClockOutlineRegular, IconApiOutlineMedium, IconApiOutlineRegular, IconArchiveCheckOutlineMedium, IconArchiveCheckOutlineRegular, IconArchiveOffOutlineMedium, IconArchiveOffOutlineRegular, IconArchiveOutlineMedium, IconArchiveOutlineRegular, IconBranchOutlineMedium, IconBranchOutlineRegular, IconBrowseOutlineMedium, IconBrowseOutlineRegular, IconCheckCircleFillMedium, IconCheckCircleFillRegular, IconCheckCircleOutlineMedium, IconCheckCircleOutlineRegular, IconCheckOutlineMedium, IconCheckOutlineRegular, IconChecklistOutlineMedium, IconChecklistOutlineRegular, IconChevronDownOutlineMedium, IconChevronDownOutlineRegular, IconChevronLeftOutlineMedium, IconChevronLeftOutlineRegular, IconChevronRightOutlineMedium, IconChevronRightOutlineRegular, IconChevronUpOutlineMedium, IconChevronUpOutlineRegular, IconChevronsUpDownOutlineMedium, IconChevronsUpDownOutlineRegular, IconClockOutlineMedium, IconClockOutlineRegular, IconCloseCircleFillMedium, IconCloseCircleFillRegular, IconCloseFillMedium, IconCloseFillRegular, IconCloseOutlineMedium, IconCloseOutlineRegular, IconCodeOutlineMedium, IconCodeOutlineRegular, IconCompactOutlineMedium, IconCompactOutlineRegular, IconCompareSplitOutlineMedium, IconCompareSplitOutlineRegular, IconContextInjectionOutlineMedium, IconContextInjectionOutlineRegular, IconCopyOutlineMedium, IconCopyOutlineRegular, IconCordisPluginOutlineMedium, IconCordisPluginOutlineRegular, IconDarkOutlineMedium, IconDarkOutlineRegular, IconDataOutlineMedium, IconDataOutlineRegular, IconDatabaseOutlineMedium, IconDatabaseOutlineRegular, IconDeliverDocMedium, IconDeliverDocRegular, IconDislikeFillMedium, IconDislikeFillRegular, IconDislikeOutlineMedium, IconDislikeOutlineRegular, IconDownloadOutlineMedium, IconDownloadOutlineRegular, IconEditOutlineMedium, IconEditOutlineRegular, IconEllipsisOutlineMedium, IconEllipsisOutlineRegular, IconEnhanceOutlineMedium, IconEnhanceOutlineRegular, IconFlatListOutlineMedium, IconFlatListOutlineRegular, IconFolderCloseMedium, IconFolderCloseRegular, IconFolderOpenMedium, IconFolderOpenOutlineMedium, IconFolderOpenOutlineRegular, IconFolderOpenRegular, IconFollowsystemOutlineMedium, IconFollowsystemOutlineRegular, IconFullscreenOutlineMedium, IconFullscreenOutlineRegular, IconGaugeOutlineMedium, IconGaugeOutlineRegular, IconGlobeOutlineMedium, IconGlobeOutlineRegular, IconGoalOutlineMedium, IconGoalOutlineRegular, IconInfoOutlineMedium, IconInfoOutlineRegular, IconInspectOutlineMedium, IconInspectOutlineRegular, IconLightOutlineMedium, IconLightOutlineRegular, IconLikeFillMedium, IconLikeFillRegular, IconLikeOutlineMedium, IconLikeOutlineRegular, IconLinkOutlineMedium, IconLinkOutlineRegular, IconListPenOutlineMedium, IconListPenOutlineRegular, IconLoadingOutlineMedium, IconLoadingOutlineRegular, IconMicrophoneOutlineMedium, IconMicrophoneOutlineRegular, IconNewChatOutlineMedium, IconNewChatOutlineRegular, IconNowrapFillMedium, IconNowrapFillRegular, IconPanelLeftOutlineMedium, IconPanelLeftOutlineRegular, IconPaperPlaneOutlineMedium, IconPaperPlaneOutlineRegular, IconPaperclipOutlineMedium, IconPaperclipOutlineRegular, IconPauseOutlineMedium, IconPauseOutlineRegular, IconPersonalizationOutlineMedium, IconPersonalizationOutlineRegular, IconPinFillMedium, IconPinFillRegular, IconPinOutlineMedium, IconPinOutlineRegular, IconPlanOutlineMedium, IconPlanOutlineRegular, IconPlayOutlineMedium, IconPlayOutlineRegular, IconPluginPinwheelOutlineMedium, IconPluginPinwheelOutlineRegular, IconPlusOutlineMedium, IconPlusOutlineRegular, IconProjectAddOutlineMedium, IconProjectAddOutlineRegular, IconQuestionOutlineMedium, IconQuestionOutlineRegular, IconQueueOutlineMedium, IconQueueOutlineRegular, IconRefreshOutlineMedium, IconRefreshOutlineRegular, IconRightUpOutlineMedium, IconRightUpOutlineRegular, IconSearchOutlineMedium, IconSearchOutlineRegular, IconSendOutlineMedium, IconSendOutlineRegular, IconSettingsOutlineMedium, IconSettingsOutlineRegular, IconShareOutlineMedium, IconShareOutlineRegular, IconShieldOutlineMedium, IconShieldOutlineRegular, IconSkillOutlineMedium, IconSkillOutlineRegular, IconSlidersTwoOutlineMedium, IconSlidersTwoOutlineRegular, IconSparkleMedium, IconSparkleRegular, IconStopFillMedium, IconStopFillRegular, IconThinkOutlineMedium, IconThinkOutlineRegular, IconTrashOutlineMedium, IconTrashOutlineRegular, IconTreeCornerMedium, IconTreeCornerRegular, IconTriangleRightFillMedium, IconTriangleRightFillRegular, IconUnarchiveOutlineMedium, IconUnarchiveOutlineRegular, IconUserOutlineMedium, IconUserOutlineRegular, IconUsersOutlineMedium, IconUsersOutlineRegular, IconWarningOutlineMedium, IconWarningOutlineRegular, IconWarningTriangleOutlineMedium, IconWarningTriangleOutlineRegular, IconWorkspaceTreeOutlineMedium, IconWorkspaceTreeOutlineRegular, IconWrapFillMedium, IconWrapFillRegular, IconWrapLinesOutlineMedium, IconWrapLinesOutlineRegular, ImageLightbox, InlineEditor, Input, JsonBlock, JsonTree, LinkIconMedium, LinkIconRegular, MarkdownDelegateProvider, MarkdownText, Menu, MenuGroup, MenuItemButton, MenuSurface, Modal, PathLabel, PermissionIconFullAccessMedium, PermissionIconFullAccessRegular, PermissionIconReadOnlyMedium, PermissionIconReadOnlyRegular, PermissionIconWorkspaceWriteMedium, PermissionIconWorkspaceWriteRegular, Pill, PluginArtworkDefault, PluginArtworkLoop, PluginArtworkSearch, PluginArtworkSubagent, PluginArtworkTerminal, ReadBlock, ReferenceIconMedium, ReferenceIconRegular, RiskConfirmation, SHIELD_OUTLINE_PATH, SearchBlock, SegmentedControl, SegmentedTabs, SettingsForm, SettingsFormModel, SettingsSecretField, SettingsValueField, ShortcutKeys, StateDot, Switch, Tag, TerminalBlock, TextShimmer, Toast, Tooltip, WebBlock, classifyFileType, classifyLinkPath, closeTopModal, diffTotals, extractMarkdownPlainText, fileExtension, fileSizeText, focusWithoutRing, isBehindModal, isDarwinDesktop, languageForPath, modalSelector, observeComposition, observeStickyMenuGroups, pointerModality, projectUserText, rankByName, relativeTime, settingsNumberField, settingsTextField, useAnchoredMaxHeight, useAnchoredPosition, useCodeHighlighter, useDismissOnOutsidePointer, useModalLayer, writeClipboard };
12382
12449
 
12383
12450
  //# sourceMappingURL=index.js.map