@deepseek-ai/dsh-client-ui-primitives 0.1.3-alpha.2 → 0.1.5-alpha.2

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
@@ -15,20 +15,21 @@ import css$9 from "./Modal.module.css";
15
15
  import css$10 from "./OnboardingSurface.module.css";
16
16
  import css$11 from "./RiskConfirmation.module.css";
17
17
  import css$12 from "./ConnectionIndicator.module.css";
18
- import css$13 from "./user-text.module.css";
19
- import css$14 from "./Tooltip.module.css";
20
- import css$15 from "./Toast.module.css";
21
- import css$16 from "./JsonTree.module.css";
18
+ import css$13 from "./FileTypeIcon.module.css";
19
+ import css$14 from "./user-text.module.css";
20
+ import css$15 from "./Tooltip.module.css";
21
+ import css$16 from "./Toast.module.css";
22
+ import css$17 from "./JsonTree.module.css";
22
23
  import Anser from "anser";
23
- import css$17 from "./TerminalBlock.module.css";
24
+ import css$18 from "./TerminalBlock.module.css";
24
25
  import { createCssVariablesTheme, createHighlighterCoreSync } from "shiki/core";
25
26
  import { createJavaScriptRegexEngine, defaultJavaScriptRegexConstructor } from "shiki/engine/javascript";
26
27
  import langTs from "@shikijs/langs/typescript";
27
28
  import langBash from "@shikijs/langs/shellscript";
28
29
  import langJson from "@shikijs/langs/json";
29
- import css$18 from "./ReadBlock.module.css";
30
- import css$19 from "./DiffBlock.module.css";
31
- import css$20 from "./SearchBlock.module.css";
30
+ import css$19 from "./ReadBlock.module.css";
31
+ import css$20 from "./DiffBlock.module.css";
32
+ import css$21 from "./SearchBlock.module.css";
32
33
  import { fromMarkdown } from "mdast-util-from-markdown";
33
34
  import { gfmFromMarkdown } from "mdast-util-gfm";
34
35
  import { mathFromMarkdown } from "mdast-util-math";
@@ -40,12 +41,12 @@ import { classifyCharacter } from "micromark-util-classify-character";
40
41
  import { codes, constants, types } from "micromark-util-symbol";
41
42
  import { factorySpace } from "micromark-factory-space";
42
43
  import { normalizeUri } from "micromark-util-sanitize-uri";
43
- import css$21 from "./markdown/CodeBlock.module.css";
44
+ import css$22 from "./markdown/CodeBlock.module.css";
44
45
  import katex from "katex";
45
- import css$22 from "./markdown/MarkdownText.module.css";
46
+ import css$23 from "./markdown/MarkdownText.module.css";
46
47
  import "katex/dist/katex.min.css";
47
- import css$23 from "./WebBlock.module.css";
48
- import css$24 from "./markdown/JsonBlock.module.css";
48
+ import css$24 from "./WebBlock.module.css";
49
+ import css$25 from "./markdown/JsonBlock.module.css";
49
50
  //#region lib/types/StateDot.js
50
51
  /** Outer 3x3 matrix cells (2px pixels on a 10px grid), clockwise from top-left. */
51
52
  const MATRIX_CELLS = [
@@ -390,7 +391,8 @@ const IconCopyOutline16 = ({ size = 16, className }) => jsx("svg", {
390
391
  fill: "currentColor"
391
392
  })
392
393
  });
393
- /** ic_ds_refresh_outline_16 */
394
+ /** ic_ds_refresh_outline_16, inset 10%: the exported glyph fills its box edge
395
+ * to edge, one visual size above the neighbouring 16px glyphs. */
394
396
  const IconRefreshOutline16 = ({ size = 16, className }) => jsx("svg", {
395
397
  width: size,
396
398
  height: size,
@@ -399,6 +401,7 @@ const IconRefreshOutline16 = ({ size = 16, className }) => jsx("svg", {
399
401
  fill: "none",
400
402
  xmlns: "http://www.w3.org/2000/svg",
401
403
  children: jsx("path", {
404
+ transform: "translate(0.8 0.8) scale(0.9)",
402
405
  d: "M7.92136 0.349152C10.3744 0.349234 12.5564 1.5052 13.9557 3.29894L15.1281 2.12759C15.3303 1.92546 15.6767 2.06943 15.6767 2.35538V5.53923C15.6766 5.71626 15.5329 5.85976 15.3559 5.86002H12.171C11.8854 5.8597 11.7426 5.51465 11.9443 5.31249L12.9641 4.29056C11.8237 2.74305 9.98908 1.74106 7.92136 1.74097C4.46436 1.74097 1.66233 4.543 1.66233 8C1.66233 11.457 4.46436 14.259 7.92136 14.259C11.3782 14.2589 14.1804 11.4569 14.1804 8H15.5722C15.5722 12.2251 12.1465 15.6507 7.92136 15.6508C3.69614 15.6508 0.270508 12.2252 0.270508 8C0.270508 3.77478 3.69614 0.349152 7.92136 0.349152Z",
403
406
  fill: "currentColor"
404
407
  })
@@ -701,7 +704,7 @@ const IconRightUpOutline16 = ({ size = 16, className }) => jsx("svg", {
701
704
  fill: "none",
702
705
  xmlns: "http://www.w3.org/2000/svg",
703
706
  children: jsx("path", {
704
- d: "M13.588429 5.147807C13.588429 4.739638 13.587271 4.403003 13.582013 4.118684L1.703098 15.99968L0.85155 15.148178L0 14.294485L11.878915 2.413442C11.594721 2.408199 11.257569 2.409154 10.849776 2.409154H2.400594V0.000001H10.849776C11.644471 0.000001 12.338899 -0.001059 12.901622 0.059909C13.486363 0.123352 14.071136 0.265493 14.598303 0.648292C14.886598 0.857751 15.141981 1.110984 15.351433 1.399281C15.734578 1.926807 15.876362 2.512925 15.939743 3.098105C16.000775 3.660718 15.99968 4.353347 15.99968 5.147807V13.599133H13.588429V5.147807Z",
707
+ d: "M11.3822 6.28945C11.3822 6.02863 11.3815 5.81352 11.3781 5.63184L3.7875 13.2238L3.24336 12.6797L2.69922 12.1342L10.2898 4.54219C10.1083 4.53884 9.89281 4.53945 9.63223 4.53945H4.2332V3H9.63223C10.14 3 10.5838 2.99932 10.9434 3.03828C11.317 3.07882 11.6907 3.16965 12.0275 3.41426C12.2118 3.5481 12.3749 3.70992 12.5088 3.89414C12.7536 4.23123 12.8443 4.60576 12.8848 4.97969C12.9237 5.3392 12.923 5.78179 12.923 6.28945V11.6898H11.3822V6.28945Z",
705
708
  fill: "currentColor"
706
709
  })
707
710
  });
@@ -1205,6 +1208,35 @@ const IconClockOutline16 = ({ size = 16, className }) => jsxs("svg", {
1205
1208
  strokeWidth: "1.25"
1206
1209
  })]
1207
1210
  });
1211
+ /** Thin-stroke gauge: dial arc open at the bottom, filled hub, square-cut needle to the upper right.
1212
+ * The dial center sits at y=8.75, not 8: the bottom opening leaves the glyph top-heavy, and the
1213
+ * 0.75 drop optically centers the drawn extent in the 16 box. */
1214
+ const IconGaugeOutline16 = ({ size = 16, className }) => jsxs("svg", {
1215
+ width: size,
1216
+ height: size,
1217
+ className,
1218
+ viewBox: "0 0 16 16",
1219
+ fill: "none",
1220
+ xmlns: "http://www.w3.org/2000/svg",
1221
+ children: [
1222
+ jsx("path", {
1223
+ d: "M3.49 13.26A6.375 6.375 0 1 1 12.51 13.26",
1224
+ stroke: "currentColor",
1225
+ strokeWidth: "1.25"
1226
+ }),
1227
+ jsx("path", {
1228
+ d: "M8 8.75L11.4 5.35",
1229
+ stroke: "currentColor",
1230
+ strokeWidth: "1.25"
1231
+ }),
1232
+ jsx("circle", {
1233
+ cx: "8",
1234
+ cy: "8.75",
1235
+ r: "1.55",
1236
+ fill: "currentColor"
1237
+ })
1238
+ ]
1239
+ });
1208
1240
  /** ic_send_outline_14 (figma extract): thin-stroke upward send arrow. */
1209
1241
  const IconSendOutline14 = ({ size = 14, className }) => jsx("svg", {
1210
1242
  width: size,
@@ -1670,13 +1702,16 @@ const MEASURE_STYLE = {
1670
1702
  };
1671
1703
  /**
1672
1704
  * Render an anchored dropdown menu.
1705
+ * @param props.autoFocus - focus the first item on open and enable arrow-key navigation; Escape focuses the anchor's first button.
1673
1706
  * @param props.open - whether the list is showing (owner-controlled).
1674
1707
  * @param props.anchor - the trigger element (rendered in place).
1675
1708
  * @param props.items - selectable rows and optional separators.
1676
1709
  * @param props.selectedId - row shown as selected.
1677
1710
  * @param props.selectedIds - rows shown as selected when a menu contains independent option groups.
1678
1711
  * @param props.onSelect - row click callback (not called for disabled rows or submenu parents that only open children).
1679
- * @param props.onClose - invoked on outside click or Escape.
1712
+ * @param props.onClose - invoked on outside click, Escape, or a window blur
1713
+ * that moved focus into an iframe (the only signal a pointerdown inside a
1714
+ * cross-origin iframe leaves).
1680
1715
  * @param props.align - list alignment against the anchor (default 'start').
1681
1716
  * @param props.side - open below (`bottom`, default) or above (`top`) the anchor.
1682
1717
  * @param props.portal - render the list into document.body, fixed-positioned
@@ -1703,7 +1738,7 @@ const MEASURE_STYLE = {
1703
1738
  * crowds the cell).
1704
1739
  * @returns anchor wrapper with the conditional list.
1705
1740
  */
1706
- function Menu({ open, anchor, items, selectedId, selectedIds, onSelect, onClose, align = "start", side = "bottom", portal = false, closeOnPointerLeave = false, dense = false, compact = false, selection = "check", getAnchorRect, footer, className }) {
1741
+ function Menu({ open, anchor, items, selectedId, selectedIds, onSelect, onClose, align = "start", side = "bottom", portal = false, closeOnPointerLeave = false, dense = false, compact = false, autoFocus = false, selection = "check", getAnchorRect, footer, className }) {
1707
1742
  const rootRef = useRef(null);
1708
1743
  const listRef = useRef(null);
1709
1744
  const [openSubmenuId, setOpenSubmenuId] = useState(null);
@@ -1760,6 +1795,9 @@ function Menu({ open, anchor, items, selectedId, selectedIds, onSelect, onClose,
1760
1795
  side,
1761
1796
  getAnchorRect
1762
1797
  ]);
1798
+ useEffect(() => {
1799
+ if (open && autoFocus) listRef.current?.querySelector("button:not(:disabled)")?.focus();
1800
+ }, [open, autoFocus]);
1763
1801
  useEffect(() => {
1764
1802
  if (!open) {
1765
1803
  setOpenSubmenuId(null);
@@ -1772,15 +1810,38 @@ function Menu({ open, anchor, items, selectedId, selectedIds, onSelect, onClose,
1772
1810
  onClose();
1773
1811
  };
1774
1812
  const onKeyDown = (e) => {
1775
- if (e.key === "Escape") onClose();
1813
+ if (e.key === "Escape") {
1814
+ onClose();
1815
+ if (autoFocus) rootRef.current?.querySelector("button")?.focus();
1816
+ }
1817
+ if (!autoFocus || ![
1818
+ "ArrowDown",
1819
+ "ArrowUp",
1820
+ "Home",
1821
+ "End"
1822
+ ].includes(e.key)) return;
1823
+ const buttons = Array.from(listRef.current?.querySelectorAll("button:not(:disabled)") ?? []);
1824
+ const index = buttons.indexOf(document.activeElement);
1825
+ if (index < 0) return;
1826
+ e.preventDefault();
1827
+ buttons[e.key === "Home" ? 0 : e.key === "End" ? buttons.length - 1 : (index + (e.key === "ArrowDown" ? 1 : -1) + buttons.length) % buttons.length]?.focus();
1828
+ };
1829
+ const onWindowBlur = () => {
1830
+ if (document.activeElement instanceof HTMLIFrameElement) onClose();
1776
1831
  };
1777
1832
  document.addEventListener("pointerdown", onPointerDown);
1778
1833
  document.addEventListener("keydown", onKeyDown);
1834
+ window.addEventListener("blur", onWindowBlur);
1779
1835
  return () => {
1780
1836
  document.removeEventListener("pointerdown", onPointerDown);
1781
1837
  document.removeEventListener("keydown", onKeyDown);
1838
+ window.removeEventListener("blur", onWindowBlur);
1782
1839
  };
1783
- }, [open, onClose]);
1840
+ }, [
1841
+ open,
1842
+ onClose,
1843
+ autoFocus
1844
+ ]);
1784
1845
  useEffect(() => {
1785
1846
  if (!open) cancelClose();
1786
1847
  }, [open, cancelClose]);
@@ -2667,9 +2728,1331 @@ function ReferenceIcon({ kind, size = 16, className }) {
2667
2728
  }
2668
2729
  }
2669
2730
  //#endregion
2670
- //#region lib/types/LinkIcon.js
2671
- /** Code, web, and data extensions: all three categories share the code glyph. */
2672
- const CODE_EXTENSIONS = new Set([
2731
+ //#region lib/types/CodeFileIcon.js
2732
+ /** Non-localizable letterforms that are part of the source-format artwork. */
2733
+ const CODE_MARKS = {
2734
+ c: "C",
2735
+ cpp: "C",
2736
+ csharp: "C",
2737
+ css: "CSS",
2738
+ env: "ENV",
2739
+ erlang: "E",
2740
+ ini: "INI",
2741
+ javascript: "JS",
2742
+ objectiveC: "OC",
2743
+ perl: "PL",
2744
+ php: "PHP",
2745
+ r: "R",
2746
+ toml: "TOML",
2747
+ typescript: "TS",
2748
+ yaml: "YAML",
2749
+ zig: "ZIG"
2750
+ };
2751
+ /**
2752
+ * Render one full-color square code-file glyph from the embedded icon set.
2753
+ * @param props - Detailed code type, optional size, and optional CSS class.
2754
+ * @returns The selected decorative SVG with its identifying palette intact.
2755
+ */
2756
+ function CodeFileIcon({ type, size = 20, className }) {
2757
+ return jsx("svg", {
2758
+ width: size,
2759
+ height: size,
2760
+ className,
2761
+ viewBox: "0 0 20 20",
2762
+ xmlns: "http://www.w3.org/2000/svg",
2763
+ "aria-hidden": true,
2764
+ children: codeFileArtwork(type, useId())
2765
+ });
2766
+ }
2767
+ function codeFileArtwork(type, gradientId) {
2768
+ switch (type) {
2769
+ case "angular": return jsxs(Fragment, { children: [
2770
+ jsx("rect", {
2771
+ x: "1",
2772
+ y: "1",
2773
+ width: "18",
2774
+ height: "18",
2775
+ rx: "4",
2776
+ fill: "#DD0031"
2777
+ }),
2778
+ jsx("path", {
2779
+ fill: "none",
2780
+ stroke: "#fff",
2781
+ strokeWidth: "1.4",
2782
+ strokeLinejoin: "round",
2783
+ d: "m10 3.4 6 2-1 8-5 3-5-3-1-8z"
2784
+ }),
2785
+ jsx("path", {
2786
+ fill: "#fff",
2787
+ d: "m10 5.3-3.7 8.2h1.9l.7-1.8h2.2l.7 1.8h1.9zm0 3.4.5 1.4h-1z"
2788
+ })
2789
+ ] });
2790
+ case "c": return jsxs(Fragment, { children: [
2791
+ jsx("rect", {
2792
+ x: "1",
2793
+ y: "1",
2794
+ width: "18",
2795
+ height: "18",
2796
+ rx: "4",
2797
+ fill: "#659AD2"
2798
+ }),
2799
+ jsx("path", {
2800
+ fill: "none",
2801
+ stroke: "#fff",
2802
+ strokeWidth: "1.3",
2803
+ strokeLinejoin: "round",
2804
+ d: "m10 3.4 6 3.3v6.6l-6 3.3-6-3.3V6.7z"
2805
+ }),
2806
+ jsx("text", {
2807
+ x: "10",
2808
+ y: "13.5",
2809
+ textAnchor: "middle",
2810
+ fontFamily: "Arial,sans-serif",
2811
+ fontSize: "9.5",
2812
+ fontWeight: "800",
2813
+ fill: "#fff",
2814
+ children: CODE_MARKS.c
2815
+ })
2816
+ ] });
2817
+ case "clojure": return jsxs(Fragment, { children: [
2818
+ jsx("rect", {
2819
+ x: "1",
2820
+ y: "1",
2821
+ width: "18",
2822
+ height: "18",
2823
+ rx: "4",
2824
+ fill: "#344D70"
2825
+ }),
2826
+ jsx("circle", {
2827
+ cx: "10",
2828
+ cy: "10",
2829
+ r: "6.6",
2830
+ fill: "#fff"
2831
+ }),
2832
+ jsx("path", {
2833
+ fill: "#63B132",
2834
+ d: "M9.5 3.5a6.5 6.5 0 0 0-4.7 10.8c1-2.6 2.5-4.3 4.3-5.3-1-1.5-.8-3.4.4-5.5z"
2835
+ }),
2836
+ jsx("path", {
2837
+ fill: "#5881D8",
2838
+ d: "M10.7 3.5c1.8 1.6 2.5 3.3 2 5.1 1.5 1.1 2.4 2.8 2.7 5.2a6.5 6.5 0 0 0-4.7-10.3z"
2839
+ }),
2840
+ jsx("path", {
2841
+ fill: "#90B4FE",
2842
+ d: "M12 9.8c-1.6.3-2.8 2.1-3.8 5.4a6.4 6.4 0 0 0 6.3-.7c-.2-2.1-1-3.7-2.5-4.7z"
2843
+ })
2844
+ ] });
2845
+ case "cmake": return jsxs(Fragment, { children: [
2846
+ jsx("rect", {
2847
+ x: "1",
2848
+ y: "1",
2849
+ width: "18",
2850
+ height: "18",
2851
+ rx: "4",
2852
+ fill: "#263A55"
2853
+ }),
2854
+ jsx("path", {
2855
+ fill: "#4D9DCC",
2856
+ d: "M10 3 4 16h4.6z"
2857
+ }),
2858
+ jsx("path", {
2859
+ fill: "#43A047",
2860
+ d: "M10 3 8.6 16H16z"
2861
+ }),
2862
+ jsx("path", {
2863
+ fill: "#E53935",
2864
+ d: "m10 3 6 13-6-5z"
2865
+ }),
2866
+ jsx("path", {
2867
+ fill: "#fff",
2868
+ d: "m10 6 2.3 5.1-2.3-1.8-.8 2.9z"
2869
+ })
2870
+ ] });
2871
+ case "cpp": return jsxs(Fragment, { children: [
2872
+ jsx("rect", {
2873
+ x: "1",
2874
+ y: "1",
2875
+ width: "18",
2876
+ height: "18",
2877
+ rx: "4",
2878
+ fill: "#00599C"
2879
+ }),
2880
+ jsx("path", {
2881
+ fill: "none",
2882
+ stroke: "#fff",
2883
+ strokeWidth: "1.15",
2884
+ strokeLinejoin: "round",
2885
+ d: "m10 3.4 6 3.3v6.6l-6 3.3-6-3.3V6.7z"
2886
+ }),
2887
+ jsx("text", {
2888
+ x: "7.8",
2889
+ y: "13",
2890
+ textAnchor: "middle",
2891
+ fontFamily: "Arial,sans-serif",
2892
+ fontSize: "8.2",
2893
+ fontWeight: "800",
2894
+ fill: "#fff",
2895
+ children: CODE_MARKS.cpp
2896
+ }),
2897
+ jsx("path", {
2898
+ stroke: "#fff",
2899
+ strokeWidth: "1.1",
2900
+ d: "M12 8.8v3.8m-1.9-1.9h3.8m2-1.9v3.8M14 10.7h3.8"
2901
+ })
2902
+ ] });
2903
+ case "csharp": return jsxs(Fragment, { children: [
2904
+ jsx("rect", {
2905
+ x: "1",
2906
+ y: "1",
2907
+ width: "18",
2908
+ height: "18",
2909
+ rx: "4",
2910
+ fill: "#68217A"
2911
+ }),
2912
+ jsx("path", {
2913
+ fill: "none",
2914
+ stroke: "#fff",
2915
+ strokeWidth: "1.15",
2916
+ strokeLinejoin: "round",
2917
+ d: "m10 3.4 6 3.3v6.6l-6 3.3-6-3.3V6.7z"
2918
+ }),
2919
+ jsx("text", {
2920
+ x: "7.6",
2921
+ y: "13",
2922
+ textAnchor: "middle",
2923
+ fontFamily: "Arial,sans-serif",
2924
+ fontSize: "8.2",
2925
+ fontWeight: "800",
2926
+ fill: "#fff",
2927
+ children: CODE_MARKS.csharp
2928
+ }),
2929
+ jsx("path", {
2930
+ stroke: "#fff",
2931
+ strokeWidth: ".95",
2932
+ d: "M11.6 8.6h5m-5 3h5m-3.3-5v7m1.8-7v7"
2933
+ })
2934
+ ] });
2935
+ case "css": return jsxs(Fragment, { children: [jsx("rect", {
2936
+ x: "1",
2937
+ y: "1",
2938
+ width: "18",
2939
+ height: "18",
2940
+ rx: "4",
2941
+ fill: "#1572B6"
2942
+ }), jsx("text", {
2943
+ x: "10",
2944
+ y: "12.8",
2945
+ textAnchor: "middle",
2946
+ fontFamily: "Arial,sans-serif",
2947
+ fontSize: "6.2",
2948
+ fontWeight: "900",
2949
+ fill: "#fff",
2950
+ children: CODE_MARKS.css
2951
+ })] });
2952
+ case "dart": return jsxs(Fragment, { children: [
2953
+ jsx("rect", {
2954
+ x: "1",
2955
+ y: "1",
2956
+ width: "18",
2957
+ height: "18",
2958
+ rx: "4",
2959
+ fill: "#0175C2"
2960
+ }),
2961
+ jsx("path", {
2962
+ fill: "#fff",
2963
+ d: "M5 4h6.5l4.5 4.5-3.2 7.5H8.5L4 11.5z"
2964
+ }),
2965
+ jsx("path", {
2966
+ fill: "#13B9FD",
2967
+ d: "m5 4 4 5.5h7L11.5 4zm4 5.5 3.8 6.5H8.5z"
2968
+ })
2969
+ ] });
2970
+ case "docker": return jsxs(Fragment, { children: [
2971
+ jsx("rect", {
2972
+ x: "1",
2973
+ y: "1",
2974
+ width: "18",
2975
+ height: "18",
2976
+ rx: "4",
2977
+ fill: "#2496ED"
2978
+ }),
2979
+ jsx("path", {
2980
+ fill: "#fff",
2981
+ d: "M3 10h11.7c.2-1.2.9-2 2-2.5.5 1 .4 2-.3 2.7.5.1 1 .1 1.5-.1-.7 3.9-3.6 5.9-8.2 5.9C6 16 3.4 14 3 10z"
2982
+ }),
2983
+ jsx("g", {
2984
+ fill: "#2496ED",
2985
+ children: jsx("path", { d: "M4.5 7h2v2h-2zm2.6 0h2v2h-2zm2.6 0h2v2h-2zM7.1 4.5h2v2h-2zm2.6 0h2v2h-2zm2.6 2.5h2v2h-2z" })
2986
+ })
2987
+ ] });
2988
+ case "elixir": return jsxs(Fragment, { children: [
2989
+ jsx("defs", { children: jsxs("linearGradient", {
2990
+ id: gradientId,
2991
+ x1: "1",
2992
+ y1: "19",
2993
+ x2: "19",
2994
+ y2: "1",
2995
+ children: [jsx("stop", { stopColor: "#4B275F" }), jsx("stop", {
2996
+ offset: "1",
2997
+ stopColor: "#8E6AAF"
2998
+ })]
2999
+ }) }),
3000
+ jsx("rect", {
3001
+ x: "1",
3002
+ y: "1",
3003
+ width: "18",
3004
+ height: "18",
3005
+ rx: "4",
3006
+ fill: `url(#${gradientId})`
3007
+ }),
3008
+ jsx("path", {
3009
+ fill: "#fff",
3010
+ d: "M10.7 3c.2 3.5-4.3 5.8-4.3 9.4 0 2.9 1.8 4.9 4.4 4.9 2.8 0 4.7-1.9 4.7-4.6 0-4.3-3.4-7-4.8-9.7z"
3011
+ }),
3012
+ jsx("path", {
3013
+ fill: "#8E6AAF",
3014
+ d: "M10.7 4.8c-.4 3.1-3 5.4-3 7.8 0 1.5.7 2.6 1.9 3-1-3.6 2.8-5.8 1.1-10.8z"
3015
+ })
3016
+ ] });
3017
+ case "env": return jsxs(Fragment, { children: [jsx("rect", {
3018
+ x: "1",
3019
+ y: "1",
3020
+ width: "18",
3021
+ height: "18",
3022
+ rx: "4",
3023
+ fill: "#ECD53F"
3024
+ }), jsx("text", {
3025
+ x: "10",
3026
+ y: "13.2",
3027
+ textAnchor: "middle",
3028
+ fontFamily: "Arial,sans-serif",
3029
+ fontSize: "6.8",
3030
+ fontWeight: "900",
3031
+ fill: "#24292F",
3032
+ children: CODE_MARKS.env
3033
+ })] });
3034
+ case "erlang": return jsxs(Fragment, { children: [
3035
+ jsx("rect", {
3036
+ x: "1",
3037
+ y: "1",
3038
+ width: "18",
3039
+ height: "18",
3040
+ rx: "4",
3041
+ fill: "#A90533"
3042
+ }),
3043
+ jsx("circle", {
3044
+ cx: "10",
3045
+ cy: "10",
3046
+ r: "6.4",
3047
+ fill: "none",
3048
+ stroke: "#fff",
3049
+ strokeWidth: "1"
3050
+ }),
3051
+ jsx("text", {
3052
+ x: "10",
3053
+ y: "13.8",
3054
+ textAnchor: "middle",
3055
+ fontFamily: "Georgia,serif",
3056
+ fontSize: "10.5",
3057
+ fontWeight: "700",
3058
+ fill: "#fff",
3059
+ children: CODE_MARKS.erlang
3060
+ })
3061
+ ] });
3062
+ case "flutter": return jsxs(Fragment, { children: [
3063
+ jsx("rect", {
3064
+ x: "1",
3065
+ y: "1",
3066
+ width: "18",
3067
+ height: "18",
3068
+ rx: "4",
3069
+ fill: "#027DFD"
3070
+ }),
3071
+ jsx("path", {
3072
+ fill: "#fff",
3073
+ d: "m4 10 6-6h4L8 10zm4 0 2.5-2.5H14L11.5 10l2.5 2.5h-3.5z"
3074
+ }),
3075
+ jsx("path", {
3076
+ fill: "#B9E6FF",
3077
+ d: "m8 10 4.5 4.5-2 2L4 10z"
3078
+ })
3079
+ ] });
3080
+ case "git": return jsxs(Fragment, { children: [
3081
+ jsx("rect", {
3082
+ x: "1",
3083
+ y: "1",
3084
+ width: "18",
3085
+ height: "18",
3086
+ rx: "4",
3087
+ fill: "#F05032"
3088
+ }),
3089
+ jsx("rect", {
3090
+ x: "5",
3091
+ y: "5",
3092
+ width: "10",
3093
+ height: "10",
3094
+ rx: "1.4",
3095
+ transform: "rotate(45 10 10)",
3096
+ fill: "#fff"
3097
+ }),
3098
+ jsx("path", {
3099
+ d: "m7.7 7.4 4.9 4.9M9.9 9.6v3.6",
3100
+ fill: "none",
3101
+ stroke: "#F05032",
3102
+ strokeWidth: "1.15"
3103
+ }),
3104
+ jsx("circle", {
3105
+ cx: "7.7",
3106
+ cy: "7.4",
3107
+ r: "1.1",
3108
+ fill: "#F05032"
3109
+ }),
3110
+ jsx("circle", {
3111
+ cx: "12.6",
3112
+ cy: "12.3",
3113
+ r: "1.1",
3114
+ fill: "#F05032"
3115
+ }),
3116
+ jsx("circle", {
3117
+ cx: "9.9",
3118
+ cy: "13.2",
3119
+ r: "1.1",
3120
+ fill: "#F05032"
3121
+ })
3122
+ ] });
3123
+ case "go": return jsxs(Fragment, { children: [jsx("rect", {
3124
+ x: "1",
3125
+ y: "1",
3126
+ width: "18",
3127
+ height: "18",
3128
+ rx: "4",
3129
+ fill: "#00ADD8"
3130
+ }), jsx("path", {
3131
+ fill: "#fff",
3132
+ d: "M3.5 8h6v1.6H5.2a2 2 0 0 0 0 .8h2.4v-.5H6.8V8.7h3.7c.3 3-1 4.4-3.6 4.4S3 11.7 3 9.7c0-.6.2-1.2.5-1.7Zm9.3 0h1.7c1.6 0 2.5 1 2.5 2.5s-.9 2.6-2.5 2.6h-1.7c-1.6 0-2.5-1-2.5-2.6S11.2 8 12.8 8Zm.3 1.6c-.7 0-1 .3-1 .9s.3 1 1 1h1.1c.7 0 1-.4 1-1s-.3-.9-1-.9z"
3133
+ })] });
3134
+ case "graphql": return jsxs(Fragment, { children: [
3135
+ jsx("rect", {
3136
+ x: "1",
3137
+ y: "1",
3138
+ width: "18",
3139
+ height: "18",
3140
+ rx: "4",
3141
+ fill: "#E10098"
3142
+ }),
3143
+ jsx("path", {
3144
+ d: "m10 4 5.2 3v6L10 16l-5.2-3V7zm-5 3.2h10M5 12.8h10M10 4l5 8.8M10 4l-5 8.8M10 16 5 7.2m5 8.8 5-8.8",
3145
+ stroke: "#fff",
3146
+ strokeWidth: ".8"
3147
+ }),
3148
+ jsxs("g", {
3149
+ fill: "#fff",
3150
+ children: [
3151
+ jsx("circle", {
3152
+ cx: "10",
3153
+ cy: "4",
3154
+ r: "1"
3155
+ }),
3156
+ jsx("circle", {
3157
+ cx: "15.2",
3158
+ cy: "7",
3159
+ r: "1"
3160
+ }),
3161
+ jsx("circle", {
3162
+ cx: "15.2",
3163
+ cy: "13",
3164
+ r: "1"
3165
+ }),
3166
+ jsx("circle", {
3167
+ cx: "10",
3168
+ cy: "16",
3169
+ r: "1"
3170
+ }),
3171
+ jsx("circle", {
3172
+ cx: "4.8",
3173
+ cy: "13",
3174
+ r: "1"
3175
+ }),
3176
+ jsx("circle", {
3177
+ cx: "4.8",
3178
+ cy: "7",
3179
+ r: "1"
3180
+ })
3181
+ ]
3182
+ })
3183
+ ] });
3184
+ case "haskell": return jsxs(Fragment, { children: [jsx("rect", {
3185
+ x: "1",
3186
+ y: "1",
3187
+ width: "18",
3188
+ height: "18",
3189
+ rx: "4",
3190
+ fill: "#5D4F85"
3191
+ }), jsx("path", {
3192
+ fill: "#fff",
3193
+ d: "m3.5 4.5 3.5 5.5-3.5 5.5h2.7L9.8 10 6.2 4.5zm4 0L11 10l-3.5 5.5h2.7l3.5-5.5-3.5-5.5zm5 3.1 1 1.6H17V7.6zm1.4 3 1 1.7H17v-1.7z"
3194
+ })] });
3195
+ case "ini": return jsxs(Fragment, { children: [jsx("rect", {
3196
+ x: "1",
3197
+ y: "1",
3198
+ width: "18",
3199
+ height: "18",
3200
+ rx: "4",
3201
+ fill: "#6E7781"
3202
+ }), jsx("text", {
3203
+ x: "10",
3204
+ y: "13.2",
3205
+ textAnchor: "middle",
3206
+ fontFamily: "Arial,sans-serif",
3207
+ fontSize: "7.2",
3208
+ fontWeight: "800",
3209
+ fill: "#fff",
3210
+ children: CODE_MARKS.ini
3211
+ })] });
3212
+ case "java": return jsxs(Fragment, { children: [
3213
+ jsx("rect", {
3214
+ x: "1",
3215
+ y: "1",
3216
+ width: "18",
3217
+ height: "18",
3218
+ rx: "4",
3219
+ fill: "#427A9B"
3220
+ }),
3221
+ jsx("path", {
3222
+ d: "M9 3.1c2.3 1.7-2.4 2.5.5 4.5m2-4.9c2.3 1.9-3.2 2.9-.2 5",
3223
+ stroke: "#FF6B57",
3224
+ strokeWidth: "1.15",
3225
+ strokeLinecap: "round"
3226
+ }),
3227
+ jsx("path", {
3228
+ d: "M5.4 8.6h8c-.2 3.7-1.3 4.8-4 4.8-2.6 0-3.8-1.2-4-4.8Zm7.8 1h1c1.6 0 1.6 2.5-.5 2.5M4.7 14.8c2.5.8 7.5.8 10.1 0M5.7 16.5c2 .5 6.3.6 8.3 0",
3229
+ stroke: "#fff",
3230
+ strokeWidth: "1.05",
3231
+ strokeLinecap: "round"
3232
+ })
3233
+ ] });
3234
+ case "javascript": return jsxs(Fragment, { children: [jsx("rect", {
3235
+ x: "1",
3236
+ y: "1",
3237
+ width: "18",
3238
+ height: "18",
3239
+ rx: "4",
3240
+ fill: "#F7DF1E"
3241
+ }), jsx("text", {
3242
+ x: "10",
3243
+ y: "14",
3244
+ textAnchor: "middle",
3245
+ fontFamily: "Arial,sans-serif",
3246
+ fontSize: "8.4",
3247
+ fontWeight: "800",
3248
+ fill: "#191919",
3249
+ children: CODE_MARKS.javascript
3250
+ })] });
3251
+ case "json": return jsxs(Fragment, { children: [jsx("rect", {
3252
+ x: "1",
3253
+ y: "1",
3254
+ width: "18",
3255
+ height: "18",
3256
+ rx: "4",
3257
+ fill: "#4A4A4A"
3258
+ }), jsx("text", {
3259
+ x: "10",
3260
+ y: "13.6",
3261
+ textAnchor: "middle",
3262
+ fontFamily: "Arial,sans-serif",
3263
+ fontSize: "9.4",
3264
+ fontWeight: "700",
3265
+ fill: "#F7DF1E",
3266
+ children: "{ }"
3267
+ })] });
3268
+ case "kotlin": return jsxs(Fragment, { children: [
3269
+ jsx("defs", { children: jsxs("linearGradient", {
3270
+ id: gradientId,
3271
+ x1: "1",
3272
+ y1: "19",
3273
+ x2: "19",
3274
+ y2: "1",
3275
+ children: [
3276
+ jsx("stop", { stopColor: "#0095D5" }),
3277
+ jsx("stop", {
3278
+ offset: ".5",
3279
+ stopColor: "#7F52FF"
3280
+ }),
3281
+ jsx("stop", {
3282
+ offset: "1",
3283
+ stopColor: "#F88909"
3284
+ })
3285
+ ]
3286
+ }) }),
3287
+ jsx("rect", {
3288
+ x: "1",
3289
+ y: "1",
3290
+ width: "18",
3291
+ height: "18",
3292
+ rx: "4",
3293
+ fill: `url(#${gradientId})`
3294
+ }),
3295
+ jsx("path", {
3296
+ fill: "#fff",
3297
+ d: "M5 5h2.2v4.1L11.1 5h3l-4.6 4.6 5 5.4h-3l-3.6-4-.7.7V15H5z"
3298
+ })
3299
+ ] });
3300
+ case "lua": return jsxs(Fragment, { children: [
3301
+ jsx("rect", {
3302
+ x: "1",
3303
+ y: "1",
3304
+ width: "18",
3305
+ height: "18",
3306
+ rx: "4",
3307
+ fill: "#000080"
3308
+ }),
3309
+ jsx("circle", {
3310
+ cx: "9",
3311
+ cy: "11",
3312
+ r: "5.7",
3313
+ fill: "none",
3314
+ stroke: "#fff",
3315
+ strokeWidth: "1"
3316
+ }),
3317
+ jsx("circle", {
3318
+ cx: "13.1",
3319
+ cy: "6.6",
3320
+ r: "2.3",
3321
+ fill: "#000080",
3322
+ stroke: "#fff",
3323
+ strokeWidth: "1"
3324
+ }),
3325
+ jsx("circle", {
3326
+ cx: "13.8",
3327
+ cy: "5.9",
3328
+ r: ".65",
3329
+ fill: "#fff"
3330
+ }),
3331
+ jsx("circle", {
3332
+ cx: "10.7",
3333
+ cy: "9",
3334
+ r: ".9",
3335
+ fill: "#fff"
3336
+ })
3337
+ ] });
3338
+ case "makefile": return jsxs(Fragment, { children: [jsx("rect", {
3339
+ x: "1",
3340
+ y: "1",
3341
+ width: "18",
3342
+ height: "18",
3343
+ rx: "4",
3344
+ fill: "#427819"
3345
+ }), jsx("path", {
3346
+ fill: "#fff",
3347
+ d: "m5 4.5 2.3 2.3 2.3-2.3L11 5.9 8.7 8.2l2.4 2.4L9.7 12l-2.4-2.4L5 11.9 3.6 10.5l2.3-2.3-2.3-2.3zm7 6.5h4v1.5h-4zm0 2.8h4v1.5h-4z"
3348
+ })] });
3349
+ case "node": return jsxs(Fragment, { children: [
3350
+ jsx("rect", {
3351
+ x: "1",
3352
+ y: "1",
3353
+ width: "18",
3354
+ height: "18",
3355
+ rx: "4",
3356
+ fill: "#539E43"
3357
+ }),
3358
+ jsx("path", {
3359
+ fill: "none",
3360
+ stroke: "#fff",
3361
+ strokeWidth: "1.35",
3362
+ strokeLinejoin: "round",
3363
+ d: "m10 3.5 6 3.3v6.4l-6 3.3-6-3.3V6.8z"
3364
+ }),
3365
+ jsx("path", {
3366
+ fill: "#fff",
3367
+ d: "M6.8 7h1.8l2.8 4.2V7h1.8v6h-1.8L8.6 8.8V13H6.8z"
3368
+ })
3369
+ ] });
3370
+ case "objective-c": return jsxs(Fragment, { children: [jsx("rect", {
3371
+ x: "1",
3372
+ y: "1",
3373
+ width: "18",
3374
+ height: "18",
3375
+ rx: "4",
3376
+ fill: "#438EFF"
3377
+ }), jsx("text", {
3378
+ x: "10",
3379
+ y: "13.2",
3380
+ textAnchor: "middle",
3381
+ fontFamily: "Arial,sans-serif",
3382
+ fontSize: "7.2",
3383
+ fontWeight: "800",
3384
+ fill: "#fff",
3385
+ children: CODE_MARKS.objectiveC
3386
+ })] });
3387
+ case "perl": return jsxs(Fragment, { children: [jsx("rect", {
3388
+ x: "1",
3389
+ y: "1",
3390
+ width: "18",
3391
+ height: "18",
3392
+ rx: "4",
3393
+ fill: "#39457E"
3394
+ }), jsx("text", {
3395
+ x: "10",
3396
+ y: "13.3",
3397
+ textAnchor: "middle",
3398
+ fontFamily: "Arial,sans-serif",
3399
+ fontSize: "7.8",
3400
+ fontWeight: "800",
3401
+ fill: "#fff",
3402
+ children: CODE_MARKS.perl
3403
+ })] });
3404
+ case "php": return jsxs(Fragment, { children: [
3405
+ jsx("rect", {
3406
+ x: "1",
3407
+ y: "1",
3408
+ width: "18",
3409
+ height: "18",
3410
+ rx: "4",
3411
+ fill: "#777BB4"
3412
+ }),
3413
+ jsx("ellipse", {
3414
+ cx: "10",
3415
+ cy: "10",
3416
+ rx: "7",
3417
+ ry: "4.5",
3418
+ fill: "none",
3419
+ stroke: "#fff",
3420
+ strokeWidth: "1"
3421
+ }),
3422
+ jsx("text", {
3423
+ x: "10",
3424
+ y: "12.1",
3425
+ textAnchor: "middle",
3426
+ fontFamily: "Arial,sans-serif",
3427
+ fontSize: "5.8",
3428
+ fontStyle: "italic",
3429
+ fontWeight: "800",
3430
+ fill: "#fff",
3431
+ children: CODE_MARKS.php
3432
+ })
3433
+ ] });
3434
+ case "powershell": return jsxs(Fragment, { children: [
3435
+ jsx("rect", {
3436
+ x: "1",
3437
+ y: "1",
3438
+ width: "18",
3439
+ height: "18",
3440
+ rx: "4",
3441
+ fill: "#2671BE"
3442
+ }),
3443
+ jsx("path", {
3444
+ fill: "#fff",
3445
+ fillOpacity: ".16",
3446
+ d: "M5.5 4h11l-3.5 12H2z"
3447
+ }),
3448
+ jsx("path", {
3449
+ d: "m6.5 6.5 3 3-4.2 3.2m4 1h4",
3450
+ fill: "none",
3451
+ stroke: "#fff",
3452
+ strokeWidth: "1.4",
3453
+ strokeLinecap: "round",
3454
+ strokeLinejoin: "round"
3455
+ })
3456
+ ] });
3457
+ case "protobuf": return jsxs(Fragment, { children: [
3458
+ jsx("rect", {
3459
+ x: "1",
3460
+ y: "1",
3461
+ width: "18",
3462
+ height: "18",
3463
+ rx: "4",
3464
+ fill: "#4285F4"
3465
+ }),
3466
+ jsx("path", {
3467
+ fill: "none",
3468
+ stroke: "#fff",
3469
+ strokeWidth: "1.2",
3470
+ strokeLinejoin: "round",
3471
+ d: "m10 3.5 6 3.3v6.4l-6 3.3-6-3.3V6.8z"
3472
+ }),
3473
+ jsx("path", {
3474
+ fill: "#fff",
3475
+ d: "M6.5 6.5h4.4c2.3 0 3.6 1.2 3.6 3.1s-1.3 3.1-3.6 3.1H9v2H6.5zM9 8.4v2.4h1.6c.8 0 1.2-.4 1.2-1.2s-.4-1.2-1.2-1.2z"
3476
+ })
3477
+ ] });
3478
+ case "python": return jsxs(Fragment, { children: [
3479
+ jsx("rect", {
3480
+ x: "1",
3481
+ y: "1",
3482
+ width: "18",
3483
+ height: "18",
3484
+ rx: "4",
3485
+ fill: "#306998"
3486
+ }),
3487
+ jsx("path", {
3488
+ fill: "#fff",
3489
+ d: "M9.8 3.2c-3.5 0-3.6 1.5-3.6 1.5v2.5H10V8H5s-2.2-.2-2.2 3.3 2 3.4 2 3.4h1.8v-2.6c0-2 1.8-2.4 3.2-2.4H13c1.8 0 2.4-1.4 2.4-3.2S13.8 3.2 12 3.2z"
3490
+ }),
3491
+ jsx("circle", {
3492
+ cx: "8.1",
3493
+ cy: "5.1",
3494
+ r: ".65",
3495
+ fill: "#306998"
3496
+ }),
3497
+ jsx("path", {
3498
+ fill: "#FFD43B",
3499
+ d: "M10.2 16.8c3.5 0 3.6-1.5 3.6-1.5v-2.5H10V12h5s2.2.2 2.2-3.3-2-3.4-2-3.4h-1.8v2.6c0 2-1.8 2.4-3.2 2.4H7c-1.8 0-2.4 1.4-2.4 3.2s1.6 3.3 3.4 3.3z"
3500
+ }),
3501
+ jsx("circle", {
3502
+ cx: "11.9",
3503
+ cy: "14.9",
3504
+ r: ".65",
3505
+ fill: "#306998"
3506
+ })
3507
+ ] });
3508
+ case "r": return jsxs(Fragment, { children: [
3509
+ jsx("rect", {
3510
+ x: "1",
3511
+ y: "1",
3512
+ width: "18",
3513
+ height: "18",
3514
+ rx: "4",
3515
+ fill: "#276DC3"
3516
+ }),
3517
+ jsx("ellipse", {
3518
+ cx: "9",
3519
+ cy: "9.4",
3520
+ rx: "6.4",
3521
+ ry: "4.5",
3522
+ fill: "#fff",
3523
+ fillOpacity: ".9"
3524
+ }),
3525
+ jsx("ellipse", {
3526
+ cx: "8.3",
3527
+ cy: "8.9",
3528
+ rx: "4.5",
3529
+ ry: "2.8",
3530
+ fill: "#276DC3"
3531
+ }),
3532
+ jsx("path", {
3533
+ fill: "#fff",
3534
+ d: "M8 7h4c2.2 0 3.4.9 3.4 2.5 0 1-.6 1.7-1.7 2.1l2.5 4.1h-2.7l-2-3.7h-.9v3.7H8zm2.6 1.9v1.4h1c.7 0 1.1-.2 1.1-.7s-.4-.7-1.1-.7z"
3535
+ })
3536
+ ] });
3537
+ case "react": return jsxs(Fragment, { children: [
3538
+ jsx("rect", {
3539
+ x: "1",
3540
+ y: "1",
3541
+ width: "18",
3542
+ height: "18",
3543
+ rx: "4",
3544
+ fill: "#20232A"
3545
+ }),
3546
+ jsx("circle", {
3547
+ cx: "10",
3548
+ cy: "10",
3549
+ r: "1.4",
3550
+ fill: "#61DAFB"
3551
+ }),
3552
+ jsxs("g", {
3553
+ stroke: "#61DAFB",
3554
+ strokeWidth: "1",
3555
+ children: [
3556
+ jsx("ellipse", {
3557
+ cx: "10",
3558
+ cy: "10",
3559
+ rx: "6.8",
3560
+ ry: "2.7"
3561
+ }),
3562
+ jsx("ellipse", {
3563
+ cx: "10",
3564
+ cy: "10",
3565
+ rx: "6.8",
3566
+ ry: "2.7",
3567
+ transform: "rotate(60 10 10)"
3568
+ }),
3569
+ jsx("ellipse", {
3570
+ cx: "10",
3571
+ cy: "10",
3572
+ rx: "6.8",
3573
+ ry: "2.7",
3574
+ transform: "rotate(120 10 10)"
3575
+ })
3576
+ ]
3577
+ })
3578
+ ] });
3579
+ case "ruby": return jsxs(Fragment, { children: [
3580
+ jsx("rect", {
3581
+ x: "1",
3582
+ y: "1",
3583
+ width: "18",
3584
+ height: "18",
3585
+ rx: "4",
3586
+ fill: "#B51F27"
3587
+ }),
3588
+ jsx("path", {
3589
+ fill: "#fff",
3590
+ d: "m4 7 3-3h6l3 3-6 9-6-6z"
3591
+ }),
3592
+ jsx("path", {
3593
+ fill: "#F15A4A",
3594
+ d: "m7 4 1.8 3H4zm1.8 3L13 4l3 3zm0 0L10 16 4 10zm0 0H16l-6 9z"
3595
+ })
3596
+ ] });
3597
+ case "rust": return jsxs(Fragment, { children: [
3598
+ jsx("rect", {
3599
+ x: "1",
3600
+ y: "1",
3601
+ width: "18",
3602
+ height: "18",
3603
+ rx: "4",
3604
+ fill: "#2B2B2B"
3605
+ }),
3606
+ jsx("path", {
3607
+ fill: "#DEA584",
3608
+ d: "m10 2.8.7 1.3 1.4-.4.1 1.5 1.5.2-.6 1.4 1.3.8-.1.1 1.4.7-.9 1.2 1 1.1-1.2.8.6 1.3-1.4.4.3 1.5-1.5.1-.4 1.4-1.3-.5-.9 1.2-.9-1.2-1.3.5-.4-1.4-1.5-.1.3-1.5-1.4-.4.6-1.3-1.2-.8 1-1.1-.9-1.2 1.4-.7-.1-.1 1.3-.8-.6-1.4 1.5-.2.1-1.5 1.4.4z"
3609
+ }),
3610
+ jsx("circle", {
3611
+ cx: "10",
3612
+ cy: "10",
3613
+ r: "4.6",
3614
+ fill: "#2B2B2B"
3615
+ }),
3616
+ jsx("text", {
3617
+ x: "10",
3618
+ y: "13.1",
3619
+ textAnchor: "middle",
3620
+ fontFamily: "Georgia,serif",
3621
+ fontSize: "8.2",
3622
+ fontWeight: "700",
3623
+ fill: "#DEA584",
3624
+ children: CODE_MARKS.r
3625
+ })
3626
+ ] });
3627
+ case "scala": return jsxs(Fragment, { children: [jsx("rect", {
3628
+ x: "1",
3629
+ y: "1",
3630
+ width: "18",
3631
+ height: "18",
3632
+ rx: "4",
3633
+ fill: "#DE3423"
3634
+ }), jsx("path", {
3635
+ fill: "#fff",
3636
+ d: "M5 4.2c3.3 1.1 6.7-.3 10-.9v3.3c-3.3.5-6.7 2-10 .8zm0 4.7c3.3 1.2 6.7-.3 10-.8v3.3c-3.3.5-6.7 1.9-10 .8zm0 4.7c3.3 1.2 6.7-.3 10-.8v3.3c-3.3.5-6.7 1.9-10 .8z"
3637
+ })] });
3638
+ case "shell": return jsxs(Fragment, { children: [jsx("rect", {
3639
+ x: "1",
3640
+ y: "1",
3641
+ width: "18",
3642
+ height: "18",
3643
+ rx: "4",
3644
+ fill: "#303642"
3645
+ }), jsx("path", {
3646
+ d: "m5 6.5 3.5 3.5L5 13.5m5 0h5",
3647
+ fill: "none",
3648
+ stroke: "#7EE787",
3649
+ strokeWidth: "1.5",
3650
+ strokeLinecap: "round",
3651
+ strokeLinejoin: "round"
3652
+ })] });
3653
+ case "solidity": return jsxs(Fragment, { children: [jsx("rect", {
3654
+ x: "1",
3655
+ y: "1",
3656
+ width: "18",
3657
+ height: "18",
3658
+ rx: "4",
3659
+ fill: "#555"
3660
+ }), jsx("path", {
3661
+ fill: "#fff",
3662
+ d: "M7.2 3.2h5.6L10 8zm-.5.8 2.8 4.8H4zm6.6 0L16 8.8h-5.5zM4 10.3h5.5l-2.8 4.8zm6.5 0H16l-2.7 4.8zM10 11.2l2.8 4.8H7.2z"
3663
+ })] });
3664
+ case "sql": return jsxs(Fragment, { children: [
3665
+ jsx("rect", {
3666
+ x: "1",
3667
+ y: "1",
3668
+ width: "18",
3669
+ height: "18",
3670
+ rx: "4",
3671
+ fill: "#336791"
3672
+ }),
3673
+ jsx("ellipse", {
3674
+ cx: "10",
3675
+ cy: "5.5",
3676
+ rx: "5.8",
3677
+ ry: "2.1",
3678
+ fill: "#fff"
3679
+ }),
3680
+ jsx("path", {
3681
+ fill: "#fff",
3682
+ fillOpacity: ".88",
3683
+ d: "M4.2 5.5v8.9c0 1.2 2.6 2.1 5.8 2.1s5.8-.9 5.8-2.1V5.5c0 1.2-2.6 2.1-5.8 2.1s-5.8-.9-5.8-2.1z"
3684
+ }),
3685
+ jsx("path", {
3686
+ d: "M4.2 9.2c0 1.2 2.6 2.1 5.8 2.1s5.8-.9 5.8-2.1M4.2 12.9c0 1.2 2.6 2.1 5.8 2.1s5.8-.9 5.8-2.1",
3687
+ fill: "none",
3688
+ stroke: "#336791",
3689
+ strokeOpacity: ".7",
3690
+ strokeWidth: ".7"
3691
+ })
3692
+ ] });
3693
+ case "svelte": return jsxs(Fragment, { children: [
3694
+ jsx("rect", {
3695
+ x: "1",
3696
+ y: "1",
3697
+ width: "18",
3698
+ height: "18",
3699
+ rx: "4",
3700
+ fill: "#FF3E00"
3701
+ }),
3702
+ jsx("path", {
3703
+ d: "M13.9 6.1c-.9-1.1-2.6-1.4-3.8-.7L7 7.4c-1.2.8-1.5 2.4-.7 3.6.7 1 2 1.4 3.1 1l3-1.2c.5-.2 1 .1 1.2.5.2.4 0 .9-.4 1.2l-3.1 2c-.5.3-1.1.2-1.5-.2",
3704
+ stroke: "#fff",
3705
+ strokeWidth: "1.6",
3706
+ strokeLinecap: "round"
3707
+ }),
3708
+ jsx("path", {
3709
+ d: "M6.1 13.9c.9 1.1 2.6 1.4 3.8.7l3.1-2c1.2-.8 1.5-2.4.7-3.6-.7-1-2-1.4-3.1-1l-3 1.2c-.5.2-1-.1-1.2-.5-.2-.4 0-.9.4-1.2l3.1-2c.5-.3 1.1-.2 1.5.2",
3710
+ stroke: "#fff",
3711
+ strokeWidth: "1.6",
3712
+ strokeLinecap: "round"
3713
+ })
3714
+ ] });
3715
+ case "swift": return jsxs(Fragment, { children: [jsx("rect", {
3716
+ x: "1",
3717
+ y: "1",
3718
+ width: "18",
3719
+ height: "18",
3720
+ rx: "4",
3721
+ fill: "#F05138"
3722
+ }), jsx("path", {
3723
+ fill: "#fff",
3724
+ d: "M15.9 14.9c.3-3.6-1.2-6.2-3.8-8.4 1.1 1.5 1.7 2.9 1.9 4.1C10.9 8.4 8 6 5.4 3.7c1.6 2.3 3.4 4.4 5.4 6.2-1.7-1-3.5-2.2-5.6-3.7 2.3 3 4.7 5.1 7.3 6.1-2 .9-4.5.7-7.2-.8 2.2 3.2 5.6 4.1 8.3 2.4.8.4 1.6.8 2.3 1z"
3725
+ })] });
3726
+ case "toml": return jsxs(Fragment, { children: [jsx("rect", {
3727
+ x: "1",
3728
+ y: "1",
3729
+ width: "18",
3730
+ height: "18",
3731
+ rx: "4",
3732
+ fill: "#9C4121"
3733
+ }), jsx("text", {
3734
+ x: "10",
3735
+ y: "12.9",
3736
+ textAnchor: "middle",
3737
+ fontFamily: "Arial,sans-serif",
3738
+ fontSize: "5.6",
3739
+ fontWeight: "800",
3740
+ fill: "#fff",
3741
+ children: CODE_MARKS.toml
3742
+ })] });
3743
+ case "typescript": return jsxs(Fragment, { children: [jsx("rect", {
3744
+ x: "1",
3745
+ y: "1",
3746
+ width: "18",
3747
+ height: "18",
3748
+ rx: "4",
3749
+ fill: "#3178C6"
3750
+ }), jsx("text", {
3751
+ x: "10",
3752
+ y: "14",
3753
+ textAnchor: "middle",
3754
+ fontFamily: "Arial,sans-serif",
3755
+ fontSize: "8.4",
3756
+ fontWeight: "800",
3757
+ fill: "#fff",
3758
+ children: CODE_MARKS.typescript
3759
+ })] });
3760
+ case "vue": return jsxs(Fragment, { children: [
3761
+ jsx("rect", {
3762
+ x: "1",
3763
+ y: "1",
3764
+ width: "18",
3765
+ height: "18",
3766
+ rx: "4",
3767
+ fill: "#41B883"
3768
+ }),
3769
+ jsx("path", {
3770
+ fill: "#fff",
3771
+ d: "M3.5 5h3.2l3.3 5.7L13.3 5h3.2L10 16z"
3772
+ }),
3773
+ jsx("path", {
3774
+ fill: "#35495E",
3775
+ d: "M6.7 5H9l1 1.8L11 5h2.3L10 10.7z"
3776
+ })
3777
+ ] });
3778
+ case "wasm": return jsxs(Fragment, { children: [jsx("rect", {
3779
+ x: "1",
3780
+ y: "1",
3781
+ width: "18",
3782
+ height: "18",
3783
+ rx: "4",
3784
+ fill: "#654FF0"
3785
+ }), jsx("path", {
3786
+ fill: "#fff",
3787
+ d: "M4 6h2l.8 5.1L8 7h2l1.2 4.1L12 6h2l-1.7 8h-2l-1.3-4-1.3 4h-2zm10.5 0H17v8h-2V8h-.5z"
3788
+ })] });
3789
+ case "xml": return jsxs(Fragment, { children: [jsx("rect", {
3790
+ x: "1",
3791
+ y: "1",
3792
+ width: "18",
3793
+ height: "18",
3794
+ rx: "4",
3795
+ fill: "#F28C28"
3796
+ }), jsx("path", {
3797
+ d: "m7.5 6-4 4 4 4m5-8 4 4-4 4M11 5 9 15",
3798
+ fill: "none",
3799
+ stroke: "#fff",
3800
+ strokeWidth: "1.5",
3801
+ strokeLinecap: "round",
3802
+ strokeLinejoin: "round"
3803
+ })] });
3804
+ case "yaml": return jsxs(Fragment, { children: [jsx("rect", {
3805
+ x: "1",
3806
+ y: "1",
3807
+ width: "18",
3808
+ height: "18",
3809
+ rx: "4",
3810
+ fill: "#CB171E"
3811
+ }), jsx("text", {
3812
+ x: "10",
3813
+ y: "12.9",
3814
+ textAnchor: "middle",
3815
+ fontFamily: "Arial,sans-serif",
3816
+ fontSize: "5.6",
3817
+ fontWeight: "800",
3818
+ fill: "#fff",
3819
+ children: CODE_MARKS.yaml
3820
+ })] });
3821
+ case "zig": return jsxs(Fragment, { children: [
3822
+ jsx("rect", {
3823
+ x: "1",
3824
+ y: "1",
3825
+ width: "18",
3826
+ height: "18",
3827
+ rx: "4",
3828
+ fill: "#F7A41D"
3829
+ }),
3830
+ jsx("path", {
3831
+ fill: "#fff",
3832
+ d: "M3.5 6h4L6 7.5h5L7.5 12h5L11 14h5.5l-.8-3 1-5h-4.4L14 7.5h-3.7L13 4.2H6L7.3 6z"
3833
+ }),
3834
+ jsx("text", {
3835
+ x: "10",
3836
+ y: "12.2",
3837
+ textAnchor: "middle",
3838
+ fontFamily: "Arial,sans-serif",
3839
+ fontSize: "4.6",
3840
+ fontWeight: "900",
3841
+ fill: "#F7A41D",
3842
+ children: CODE_MARKS.zig
3843
+ })
3844
+ ] });
3845
+ /* v8 ignore next -- closed-union backstop; only reached if a type is forged */
3846
+ default: return assertNever$3(type);
3847
+ }
3848
+ }
3849
+ /** Closed-union exhaustiveness guard for the embedded artwork table. */
3850
+ /* v8 ignore next 3 -- only reachable when an untyped caller forges a code file type */
3851
+ function assertNever$3(value) {
3852
+ throw new Error(`unreachable code file type: ${String(value)}`);
3853
+ }
3854
+ const CODE_FILE_TYPE_SET = new Set([
3855
+ "angular",
3856
+ "c",
3857
+ "clojure",
3858
+ "cmake",
3859
+ "cpp",
3860
+ "csharp",
3861
+ "css",
3862
+ "dart",
3863
+ "docker",
3864
+ "elixir",
3865
+ "env",
3866
+ "erlang",
3867
+ "flutter",
3868
+ "git",
3869
+ "go",
3870
+ "graphql",
3871
+ "haskell",
3872
+ "ini",
3873
+ "java",
3874
+ "javascript",
3875
+ "json",
3876
+ "kotlin",
3877
+ "lua",
3878
+ "makefile",
3879
+ "node",
3880
+ "objective-c",
3881
+ "perl",
3882
+ "php",
3883
+ "powershell",
3884
+ "protobuf",
3885
+ "python",
3886
+ "r",
3887
+ "react",
3888
+ "ruby",
3889
+ "rust",
3890
+ "scala",
3891
+ "shell",
3892
+ "solidity",
3893
+ "sql",
3894
+ "svelte",
3895
+ "swift",
3896
+ "toml",
3897
+ "typescript",
3898
+ "vue",
3899
+ "wasm",
3900
+ "xml",
3901
+ "yaml",
3902
+ "zig"
3903
+ ]);
3904
+ const FILE_NAME_TYPES = {
3905
+ ".bash_profile": "shell",
3906
+ ".bashrc": "shell",
3907
+ ".env": "env",
3908
+ ".gitattributes": "git",
3909
+ ".gitconfig": "git",
3910
+ ".gitignore": "git",
3911
+ ".gitmodules": "git",
3912
+ ".mailmap": "git",
3913
+ ".profile": "shell",
3914
+ ".zprofile": "shell",
3915
+ ".zshrc": "shell",
3916
+ "bsdmakefile": "makefile",
3917
+ "cmakelists.txt": "cmake",
3918
+ "commit_editmsg": "git",
3919
+ "compose.yaml": "docker",
3920
+ "compose.yml": "docker",
3921
+ "docker-compose.yaml": "docker",
3922
+ "docker-compose.yml": "docker",
3923
+ "dockerfile": "docker",
3924
+ "gemfile": "ruby",
3925
+ "gnumakefile": "makefile",
3926
+ "guardfile": "ruby",
3927
+ "makefile": "makefile",
3928
+ "npm-shrinkwrap.json": "node",
3929
+ "package-lock.json": "node",
3930
+ "package.json": "node",
3931
+ "podfile": "ruby",
3932
+ "rakefile": "ruby"
3933
+ };
3934
+ const FILE_NAME_PREFIX_TYPES = [["dockerfile.", "docker"], [".env.", "env"]];
3935
+ const FILE_NAME_SUFFIX_TYPES = [
3936
+ [".component.ts", "angular"],
3937
+ [".component.html", "angular"],
3938
+ [".directive.ts", "angular"],
3939
+ [".service.ts", "angular"],
3940
+ [".module.ts", "angular"],
3941
+ [".pipe.ts", "angular"],
3942
+ [".guard.ts", "angular"],
3943
+ [".interceptor.ts", "angular"],
3944
+ [".dockerfile", "docker"]
3945
+ ];
3946
+ const EXTENSION_TYPES$1 = {
3947
+ "bash": "shell",
3948
+ "c": "c",
3949
+ "c++": "cpp",
3950
+ "cc": "cpp",
3951
+ "cfg": "ini",
3952
+ "cjs": "javascript",
3953
+ "clj": "clojure",
3954
+ "cljc": "clojure",
3955
+ "cljs": "clojure",
3956
+ "cmake": "cmake",
3957
+ "cpp": "cpp",
3958
+ "cs": "csharp",
3959
+ "csh": "shell",
3960
+ "css": "css",
3961
+ "csx": "csharp",
3962
+ "cts": "typescript",
3963
+ "cxx": "cpp",
3964
+ "dart": "dart",
3965
+ "dtd": "xml",
3966
+ "edn": "clojure",
3967
+ "env": "env",
3968
+ "erl": "erlang",
3969
+ "es6": "javascript",
3970
+ "escript": "erlang",
3971
+ "ex": "elixir",
3972
+ "exs": "elixir",
3973
+ "fish": "shell",
3974
+ "gemspec": "ruby",
3975
+ "go": "go",
3976
+ "gql": "graphql",
3977
+ "graphql": "graphql",
3978
+ "h": "c",
3979
+ "h++": "cpp",
3980
+ "hh": "cpp",
3981
+ "hpp": "cpp",
3982
+ "hrl": "erlang",
3983
+ "hs": "haskell",
3984
+ "hxx": "cpp",
3985
+ "ini": "ini",
3986
+ "ipp": "cpp",
3987
+ "java": "java",
3988
+ "js": "javascript",
3989
+ "json": "json",
3990
+ "json5": "json",
3991
+ "jsonc": "json",
3992
+ "jsx": "react",
3993
+ "ksh": "shell",
3994
+ "kt": "kotlin",
3995
+ "kts": "kotlin",
3996
+ "lhs": "haskell",
3997
+ "lua": "lua",
3998
+ "m": "objective-c",
3999
+ "mak": "makefile",
4000
+ "mjs": "javascript",
4001
+ "mk": "makefile",
4002
+ "mm": "objective-c",
4003
+ "mts": "typescript",
4004
+ "node": "node",
4005
+ "pch": "objective-c",
4006
+ "php": "php",
4007
+ "php3": "php",
4008
+ "php4": "php",
4009
+ "php5": "php",
4010
+ "phps": "php",
4011
+ "phtml": "php",
4012
+ "pl": "perl",
4013
+ "plist": "xml",
4014
+ "pm": "perl",
4015
+ "pod": "perl",
4016
+ "proto": "protobuf",
4017
+ "ps1": "powershell",
4018
+ "psd1": "powershell",
4019
+ "psm1": "powershell",
4020
+ "py": "python",
4021
+ "pyi": "python",
4022
+ "pyw": "python",
4023
+ "pyx": "python",
4024
+ "r": "r",
4025
+ "rake": "ruby",
4026
+ "rb": "ruby",
4027
+ "rmd": "r",
4028
+ "rs": "rust",
4029
+ "sc": "scala",
4030
+ "scala": "scala",
4031
+ "sh": "shell",
4032
+ "sol": "solidity",
4033
+ "sql": "sql",
4034
+ "svelte": "svelte",
4035
+ "swift": "swift",
4036
+ "t": "perl",
4037
+ "tcsh": "shell",
4038
+ "toml": "toml",
4039
+ "tpp": "cpp",
4040
+ "ts": "typescript",
4041
+ "tsx": "react",
4042
+ "vue": "vue",
4043
+ "wasm": "wasm",
4044
+ "wast": "wasm",
4045
+ "wat": "wasm",
4046
+ "xml": "xml",
4047
+ "xsd": "xml",
4048
+ "xsl": "xml",
4049
+ "xslt": "xml",
4050
+ "yaml": "yaml",
4051
+ "yml": "yaml",
4052
+ "zig": "zig",
4053
+ "zsh": "shell"
4054
+ };
4055
+ const LINK_CODE_EXTENSIONS = new Set([
2673
4056
  "ts",
2674
4057
  "tsx",
2675
4058
  "js",
@@ -2739,30 +4122,316 @@ const CODE_EXTENSIONS = new Set([
2739
4122
  "hs",
2740
4123
  "dart"
2741
4124
  ]);
2742
- const IMAGE_EXTENSIONS = new Set([
2743
- "png",
2744
- "jpg",
2745
- "jpeg",
2746
- "gif",
2747
- "svg",
2748
- "webp",
2749
- "avif",
2750
- "bmp",
2751
- "ico",
2752
- "tif",
2753
- "tiff",
2754
- "heic",
2755
- "heif"
2756
- ]);
2757
- const DOCUMENT_EXTENSIONS = new Set([
2758
- "pdf",
2759
- "doc",
2760
- "docx",
2761
- "xls",
2762
- "xlsx",
2763
- "ppt",
2764
- "pptx"
2765
- ]);
4125
+ function basename$1(path) {
4126
+ return path.slice(Math.max(path.lastIndexOf("/"), path.lastIndexOf("\\")) + 1);
4127
+ }
4128
+ /**
4129
+ * Test whether a resolved file type uses the full-color code-icon set.
4130
+ * @param type - Resolved file-type string.
4131
+ * @returns Whether the value is a detailed code-file type.
4132
+ */
4133
+ function isCodeFileType(type) {
4134
+ return CODE_FILE_TYPE_SET.has(type);
4135
+ }
4136
+ /**
4137
+ * Test whether an extension belonged to the established coarse LinkIcon code category.
4138
+ * @param extension - Extension without a leading dot.
4139
+ * @returns Whether clickable links keep the code glyph for this extension.
4140
+ */
4141
+ function isLinkCodeExtension(extension) {
4142
+ return LINK_CODE_EXTENSIONS.has(extension.toLowerCase());
4143
+ }
4144
+ /**
4145
+ * Resolve the most specific code/configuration icon according to the supplied map priority.
4146
+ * @param name - Lowercase basename.
4147
+ * @param extension - Lowercase extension without the leading dot.
4148
+ * @param context - Optional project-file snapshot for context-sensitive matches.
4149
+ * @returns The detailed code type, or null when the traditional file classifier owns the path.
4150
+ */
4151
+ function classifyCodeFileType(name, extension, context) {
4152
+ const exact = FILE_NAME_TYPES[name];
4153
+ if (exact !== void 0) return exact;
4154
+ for (const [prefix, type] of FILE_NAME_PREFIX_TYPES) if (name.startsWith(prefix)) return type;
4155
+ for (const [suffix, type] of FILE_NAME_SUFFIX_TYPES) if (name.endsWith(suffix)) return type;
4156
+ if (extension === "dart" && context !== void 0) {
4157
+ if ((Object.entries(context.files).find(([path]) => basename$1(path).toLowerCase() === "pubspec.yaml")?.[1])?.includes("flutter:") === true) return "flutter";
4158
+ }
4159
+ return EXTENSION_TYPES$1[extension] ?? null;
4160
+ }
4161
+ //#endregion
4162
+ //#region lib/types/FileTypeIcon.js
4163
+ const EXTENSION_TYPES = {
4164
+ scss: "code",
4165
+ sass: "code",
4166
+ less: "code",
4167
+ vue: "code",
4168
+ svelte: "code",
4169
+ astro: "code",
4170
+ bat: "code",
4171
+ cmd: "code",
4172
+ csv: "code",
4173
+ tsv: "code",
4174
+ html: "html",
4175
+ htm: "html",
4176
+ png: "image",
4177
+ jpg: "image",
4178
+ jpeg: "image",
4179
+ gif: "image",
4180
+ svg: "image",
4181
+ webp: "image",
4182
+ avif: "image",
4183
+ bmp: "image",
4184
+ ico: "image",
4185
+ tif: "image",
4186
+ tiff: "image",
4187
+ heic: "image",
4188
+ heif: "image",
4189
+ md: "markdown",
4190
+ mdx: "markdown",
4191
+ markdown: "markdown",
4192
+ pdf: "pdf",
4193
+ ppt: "ppt",
4194
+ pptx: "ppt",
4195
+ key: "ppt",
4196
+ mp4: "video",
4197
+ mov: "video",
4198
+ m4v: "video",
4199
+ webm: "video",
4200
+ mkv: "video",
4201
+ avi: "video",
4202
+ mpg: "video",
4203
+ mpeg: "video",
4204
+ doc: "word",
4205
+ docx: "word",
4206
+ rtf: "word",
4207
+ odt: "word",
4208
+ pages: "word",
4209
+ xls: "excel",
4210
+ xlsx: "excel",
4211
+ xlsm: "excel",
4212
+ numbers: "excel"
4213
+ };
4214
+ const NAME_TYPES = {
4215
+ changelog: "markdown",
4216
+ contributing: "markdown",
4217
+ readme: "markdown"
4218
+ };
4219
+ function basename(path) {
4220
+ return path.slice(Math.max(path.lastIndexOf("/"), path.lastIndexOf("\\")) + 1);
4221
+ }
4222
+ /**
4223
+ * Extract the final suffix from a file path without changing its case.
4224
+ * A leading dot starts a suffix, while a missing or trailing dot returns an empty string.
4225
+ * @param path - File path or basename using either path separator.
4226
+ * @returns The characters after the basename's final dot.
4227
+ */
4228
+ function fileExtension(path) {
4229
+ const name = basename(path);
4230
+ const dot = name.lastIndexOf(".");
4231
+ return dot < 0 ? "" : name.slice(dot + 1);
4232
+ }
4233
+ /**
4234
+ * Classify a file path or name for file-card presentation.
4235
+ * Matching is case-insensitive and applies code filename rules before extension rules;
4236
+ * unknown names fall back to `other`.
4237
+ * @param path - File path or basename using either path separator.
4238
+ * @param context - Optional project files used by context-sensitive code mappings.
4239
+ * @returns The file's closed presentation category.
4240
+ */
4241
+ function classifyFileType(path, context) {
4242
+ const name = basename(path).toLowerCase();
4243
+ const extension = fileExtension(name).toLowerCase();
4244
+ return classifyCodeFileType(name, extension, context) ?? NAME_TYPES[name] ?? EXTENSION_TYPES[extension] ?? "other";
4245
+ }
4246
+ const FILE_BODY = "M8.48924 28H19.5108C21.6479 28 22.7165 28 23.5594 27.6509C24.6833 27.1853 25.5762 26.2924 26.0417 25.1685C26.3909 24.3256 26.3909 23.257 26.3909 21.1199V8.79443C26.3909 8.32877 26.3909 8.09593 26.3471 7.87507C26.2887 7.58058 26.173 7.30042 26.0067 7.05048C25.882 6.86303 25.7177 6.69799 25.3893 6.36792L20.0611 1.01354C19.7304 0.681235 19.5651 0.515081 19.3769 0.38885C19.126 0.220541 18.8443 0.103463 18.5481 0.0443412C18.3259 0 18.0915 0 17.6226 0H8.48924C6.35209 0 5.28351 0 4.4406 0.349145C3.31672 0.814671 2.4238 1.70759 1.95828 2.83147C1.60913 3.67438 1.60913 4.74296 1.60913 6.88011V21.1199C1.60913 23.257 1.60913 24.3256 1.95828 25.1685C2.4238 26.2924 3.31672 27.1853 4.4406 27.6509C5.28351 28 6.35209 28 8.48924 28Z";
4247
+ const FILE_FOLD = "M26.3909 7.37445L19.0525 0V3.77445C19.0525 4.89271 19.0525 5.45184 19.2352 5.89289C19.4788 6.48096 19.946 6.94818 20.5341 7.19176C20.9751 7.37445 21.5342 7.37445 22.6525 7.37445H26.3909Z";
4248
+ const FILE_MARK_TRANSFORM = "translate(14 16) scale(1.12) translate(-14 -16)";
4249
+ const LARGE_FILE_MARK_TRANSFORM = "translate(14 16) scale(1.22) translate(-14 -16)";
4250
+ const FOLDER_MARK_TRANSFORM = "translate(14 13.0693) scale(1.12) translate(-14 -13.0693)";
4251
+ function FileGlyph({ size, className, children, markTransform = FILE_MARK_TRANSFORM, muted = false }) {
4252
+ return jsxs("svg", {
4253
+ width: size,
4254
+ height: size,
4255
+ className,
4256
+ viewBox: "0 0 28 28",
4257
+ fill: "none",
4258
+ xmlns: "http://www.w3.org/2000/svg",
4259
+ "aria-hidden": true,
4260
+ children: [
4261
+ jsx("path", {
4262
+ d: FILE_BODY,
4263
+ fill: "currentColor"
4264
+ }),
4265
+ muted ? jsx("path", {
4266
+ d: FILE_FOLD,
4267
+ fill: "var(--dsw-static-neutral-400)"
4268
+ }) : jsx("path", {
4269
+ d: FILE_FOLD,
4270
+ fill: "var(--dsw-static-neutral-00)",
4271
+ fillOpacity: ".7"
4272
+ }),
4273
+ children !== void 0 && jsx("g", {
4274
+ color: "var(--dsw-static-neutral-00)",
4275
+ "data-file-type-mark": true,
4276
+ transform: markTransform,
4277
+ children
4278
+ })
4279
+ ]
4280
+ });
4281
+ }
4282
+ function FolderGlyph$1({ size, className }) {
4283
+ return jsxs("svg", {
4284
+ width: size,
4285
+ height: size,
4286
+ className,
4287
+ viewBox: "0 0 28 28",
4288
+ fill: "none",
4289
+ xmlns: "http://www.w3.org/2000/svg",
4290
+ "aria-hidden": true,
4291
+ children: [jsx("path", {
4292
+ d: "M2.80078 10.2112C2.80078 9.52802 2.80078 9.18642 2.85314 8.866C2.98648 8.05 3.36942 7.29538 3.94925 6.70595C4.17694 6.4745 4.45264 6.2728 5.00404 5.86939C5.29197 5.65874 5.43594 5.55342 5.58711 5.46632C5.97089 5.24521 6.39638 5.10618 6.83667 5.05803C7.01011 5.03906 7.18849 5.03906 7.54524 5.03906H11.6543C12.4669 5.03906 12.8732 5.03906 13.2599 5.13697C13.3882 5.16945 13.5143 5.20986 13.6375 5.25795C14.0091 5.40294 14.3398 5.63902 15.0012 6.1112L16.2632 7.01224C16.5526 7.21881 16.6972 7.3221 16.8598 7.38553C16.9137 7.40657 16.9689 7.42425 17.025 7.43846C17.1942 7.4813 17.372 7.4813 17.7275 7.4813H19.8008C22.0506 7.4813 23.1755 7.4813 23.9641 8.05425C24.2188 8.23928 24.4428 8.46326 24.6278 8.71794C25.2008 9.50654 25.2008 10.6315 25.2008 12.8813V18.7283C25.2008 20.9781 25.2008 22.1031 24.6278 22.8917C24.4428 23.1463 24.2188 23.3703 23.9641 23.5554C23.1755 24.1283 22.0506 24.1283 19.8008 24.1283H8.20077C5.95094 24.1283 4.82602 24.1283 4.03743 23.5554C3.78274 23.3703 3.55877 23.1463 3.37373 22.8917C2.80078 22.1031 2.80078 20.9781 2.80078 18.7283V10.2112Z",
4293
+ fill: "currentColor"
4294
+ }), jsx("g", {
4295
+ color: "var(--dsw-static-neutral-00)",
4296
+ "data-file-type-mark": true,
4297
+ transform: FOLDER_MARK_TRANSFORM,
4298
+ children: jsx("path", {
4299
+ d: "M6.31445 13.0693H21.6893",
4300
+ stroke: "currentColor",
4301
+ strokeWidth: "2.38"
4302
+ })
4303
+ })]
4304
+ });
4305
+ }
4306
+ function glyph(type, size, className) {
4307
+ switch (type) {
4308
+ case "code": return jsxs(FileGlyph, {
4309
+ size,
4310
+ className,
4311
+ children: [jsx("path", {
4312
+ d: "M8.61 16.3601L11.76 18.3901V20.1401L7 17.0601V15.6601L11.76 12.5801V14.3301L8.61 16.3601Z",
4313
+ fill: "currentColor"
4314
+ }), jsx("path", {
4315
+ d: "M16.1918 14.3301V12.5801L20.9518 15.6601V17.0601L16.1918 20.1401V18.3901L19.3418 16.3601L16.1918 14.3301Z",
4316
+ fill: "currentColor"
4317
+ })]
4318
+ });
4319
+ case "excel": return jsx(FileGlyph, {
4320
+ size,
4321
+ className,
4322
+ markTransform: LARGE_FILE_MARK_TRANSFORM,
4323
+ children: jsx("path", {
4324
+ d: "M10.2932 20.5L13.3532 16.25L13.3432 17.66L10.4032 13.5H12.6332L14.5132 16.21L13.5632 16.22L15.4132 13.5H17.5532L14.6132 17.58V16.18L17.7132 20.5H15.4332L13.5232 17.65H14.4332L12.5532 20.5H10.2932Z",
4325
+ fill: "currentColor"
4326
+ })
4327
+ });
4328
+ case "folder": return jsx(FolderGlyph$1, {
4329
+ size,
4330
+ className
4331
+ });
4332
+ case "html": return jsx(FileGlyph, {
4333
+ size,
4334
+ className,
4335
+ children: jsx("path", {
4336
+ fillRule: "evenodd",
4337
+ clipRule: "evenodd",
4338
+ d: "M13.9994 9.68298C17.212 9.68298 19.8167 12.2872 19.8168 15.4997C19.8168 18.7123 17.2121 21.3171 13.9994 21.3171C10.7869 21.3169 8.18274 18.7122 8.18274 15.4997C8.1829 12.2873 10.787 9.68315 13.9994 9.68298ZM9.26213 16.0247C9.47025 17.9241 10.7936 19.4876 12.5639 20.0463C12.42 19.7977 12.2952 19.5152 12.1879 19.2116C11.885 18.3541 11.693 17.2434 11.6424 16.0247H9.26213ZM16.3565 16.0247C16.3059 17.2434 16.1145 18.3542 15.8116 19.2116C15.7044 19.5151 15.5788 19.7971 15.435 20.0456C17.2054 19.487 18.5293 17.9242 18.7374 16.0247H16.3565ZM12.6938 16.0247C12.7439 17.1459 12.9212 18.1334 13.1784 18.8616C13.332 19.2962 13.503 19.61 13.6686 19.805C13.834 19.9996 13.9473 20.0256 13.9994 20.0258C14.0514 20.0258 14.1651 20.0002 14.331 19.805C14.4966 19.61 14.6676 19.2962 14.8211 18.8616C15.0784 18.1334 15.2557 17.1459 15.3058 16.0247H12.6938ZM13.9994 10.733C13.9473 10.7331 13.834 10.7598 13.6686 10.9545C13.503 11.1494 13.3319 11.4633 13.1784 11.8978C12.903 12.6777 12.7188 13.7545 12.6849 14.9747H15.3147C15.2808 13.7545 15.0966 12.6777 14.8211 11.8978C14.6676 11.4633 14.4965 11.1494 14.331 10.9545C14.1651 10.7593 14.0514 10.733 13.9994 10.733ZM15.5888 11.0051C15.6701 11.1756 15.7444 11.3576 15.8116 11.5478C16.1343 12.4613 16.3308 13.6619 16.3647 14.9747H18.7374C18.5352 13.1307 17.2817 11.6036 15.5888 11.0051ZM12.4101 11.0051C10.7174 11.6037 9.46428 13.1308 9.26213 14.9747H11.6349C11.6688 13.6619 11.8652 12.4613 12.1879 11.5478C12.2551 11.3577 12.3288 11.1756 12.4101 11.0051Z",
4339
+ fill: "currentColor"
4340
+ })
4341
+ });
4342
+ case "image": return jsxs(FileGlyph, {
4343
+ size,
4344
+ className,
4345
+ children: [
4346
+ jsx("path", {
4347
+ d: "M10.4212 15.9204C10.5756 15.6558 10.9579 15.6558 11.1123 15.9204L13.6493 20.2696C13.8048 20.5362 13.6125 20.8711 13.3037 20.8711H8.22974C7.92102 20.8711 7.72868 20.5362 7.88423 20.2696L10.4212 15.9204Z",
4348
+ fill: "currentColor"
4349
+ }),
4350
+ jsx("path", {
4351
+ d: "M15.4981 13.186C15.6505 12.9117 16.0451 12.9117 16.1975 13.186L20.1368 20.2769C20.2849 20.5435 20.0922 20.8711 19.7872 20.8711H11.9084C11.6034 20.8711 11.4107 20.5435 11.5588 20.2769L15.4981 13.186Z",
4352
+ fill: "currentColor"
4353
+ }),
4354
+ jsx("path", {
4355
+ d: "M11.8603 11.3997C11.8603 12.286 11.1418 13.0045 10.2555 13.0045C9.36924 13.0045 8.65076 12.286 8.65076 11.3997C8.65076 10.5134 9.36924 9.79492 10.2555 9.79492C11.1418 9.79492 11.8603 10.5134 11.8603 11.3997Z",
4356
+ fill: "currentColor"
4357
+ })
4358
+ ]
4359
+ });
4360
+ case "markdown": return jsx(FileGlyph, {
4361
+ size,
4362
+ className,
4363
+ markTransform: LARGE_FILE_MARK_TRANSFORM,
4364
+ children: jsx("path", {
4365
+ d: "M8.7588 19.5V14.6H9.8998L11.9298 17.932H11.3278L13.3018 14.6H14.4428L14.4568 19.5H13.1828L13.1688 16.539H13.3858L11.9088 19.017H11.2928L9.7738 16.539H10.0398V19.5H8.7588ZM15.4375 19.5V14.6H17.7545C18.2958 14.6 18.7718 14.7003 19.1825 14.901C19.5932 15.1017 19.9128 15.384 20.1415 15.748C20.3748 16.112 20.4915 16.546 20.4915 17.05C20.4915 17.5493 20.3748 17.9833 20.1415 18.352C19.9128 18.716 19.5932 18.9983 19.1825 19.199C18.7718 19.3997 18.2958 19.5 17.7545 19.5H15.4375ZM16.8235 18.394H17.6985C17.9785 18.394 18.2212 18.3427 18.4265 18.24C18.6365 18.1327 18.7998 17.9787 18.9165 17.778C19.0332 17.5727 19.0915 17.33 19.0915 17.05C19.0915 16.7653 19.0332 16.5227 18.9165 16.322C18.7998 16.1213 18.6365 15.9697 18.4265 15.867C18.2212 15.7597 17.9785 15.706 17.6985 15.706H16.8235V18.394Z",
4366
+ fill: "currentColor"
4367
+ })
4368
+ });
4369
+ case "other": return jsx(FileGlyph, {
4370
+ size,
4371
+ className,
4372
+ muted: true
4373
+ });
4374
+ case "pdf": return jsx(FileGlyph, {
4375
+ size,
4376
+ className,
4377
+ markTransform: LARGE_FILE_MARK_TRANSFORM,
4378
+ children: jsx("path", {
4379
+ d: "M6.80616 19.5V14.6H9.04616C9.49416 14.6 9.87916 14.6723 10.2012 14.817C10.5278 14.9617 10.7798 15.1717 10.9572 15.447C11.1345 15.7177 11.2232 16.0397 11.2232 16.413C11.2232 16.7817 11.1345 17.1013 10.9572 17.372C10.7798 17.6427 10.5278 17.8527 10.2012 18.002C9.87916 18.1467 9.49416 18.219 9.04616 18.219H7.57616L8.19216 17.617V19.5H6.80616ZM8.19216 17.764L7.57616 17.127H8.96216C9.2515 17.127 9.46616 17.064 9.60616 16.938C9.75083 16.812 9.82316 16.637 9.82316 16.413C9.82316 16.1843 9.75083 16.007 9.60616 15.881C9.46616 15.755 9.2515 15.692 8.96216 15.692H7.57616L8.19216 15.055V17.764ZM11.8989 19.5V14.6H14.2159C14.7573 14.6 15.2333 14.7003 15.6439 14.901C16.0546 15.1017 16.3743 15.384 16.6029 15.748C16.8363 16.112 16.9529 16.546 16.9529 17.05C16.9529 17.5493 16.8363 17.9833 16.6029 18.352C16.3743 18.716 16.0546 18.9983 15.6439 19.199C15.2333 19.3997 14.7573 19.5 14.2159 19.5H11.8989ZM13.2849 18.394H14.1599C14.4399 18.394 14.6826 18.3427 14.8879 18.24C15.0979 18.1327 15.2613 17.9787 15.3779 17.778C15.4946 17.5727 15.5529 17.33 15.5529 17.05C15.5529 16.7653 15.4946 16.5227 15.3779 16.322C15.2613 16.1213 15.0979 15.9697 14.8879 15.867C14.6826 15.7597 14.4399 15.706 14.1599 15.706H13.2849V18.394ZM17.6821 19.5V14.6H21.5251V15.671H19.0681V19.5H17.6821ZM18.9701 17.82V16.749H21.2311V17.82H18.9701Z",
4380
+ fill: "currentColor"
4381
+ })
4382
+ });
4383
+ case "ppt": return jsx(FileGlyph, {
4384
+ size,
4385
+ className,
4386
+ markTransform: LARGE_FILE_MARK_TRANSFORM,
4387
+ children: jsx("path", {
4388
+ d: "M11.0132 20.5V13.5H14.2132C14.8532 13.5 15.4032 13.6033 15.8632 13.81C16.3299 14.0167 16.6899 14.3167 16.9432 14.71C17.1966 15.0967 17.3232 15.5567 17.3232 16.09C17.3232 16.6167 17.1966 17.0733 16.9432 17.46C16.6899 17.8467 16.3299 18.1467 15.8632 18.36C15.4032 18.5667 14.8532 18.67 14.2132 18.67H12.1132L12.9932 17.81V20.5H11.0132ZM12.9932 18.02L12.1132 17.11H14.0932C14.5066 17.11 14.8132 17.02 15.0132 16.84C15.2199 16.66 15.3232 16.41 15.3232 16.09C15.3232 15.7633 15.2199 15.51 15.0132 15.33C14.8132 15.15 14.5066 15.06 14.0932 15.06H12.1132L12.9932 14.15V18.02Z",
4389
+ fill: "currentColor"
4390
+ })
4391
+ });
4392
+ case "video": return jsx(FileGlyph, {
4393
+ size,
4394
+ className,
4395
+ children: jsx("path", {
4396
+ d: "M17.5 14.634C18.1667 15.0189 18.1667 15.9811 17.5 16.366L11.5 19.8301C10.8333 20.215 10 19.7339 10 18.9641L10 12.0359C10 11.2661 10.8333 10.785 11.5 11.1699L17.5 14.634Z",
4397
+ fill: "currentColor"
4398
+ })
4399
+ });
4400
+ case "word": return jsx(FileGlyph, {
4401
+ size,
4402
+ className,
4403
+ markTransform: LARGE_FILE_MARK_TRANSFORM,
4404
+ children: jsx("path", {
4405
+ d: "M10.5118 20.5L8.24179 13.5H10.2818L12.1918 19.56H11.1618L13.1718 13.5H14.9918L16.8918 19.56H15.9018L17.8718 13.5H19.7618L17.4918 20.5H15.3718L13.7518 15.35H14.3218L12.6318 20.5H10.5118Z",
4406
+ fill: "currentColor"
4407
+ })
4408
+ });
4409
+ /* v8 ignore next -- closed-union backstop; only reached if a type is forged */
4410
+ default: return assertNever$2(type);
4411
+ }
4412
+ }
4413
+ /** Closed-union exhaustiveness guard for traditional file artwork. */
4414
+ /* v8 ignore next 3 -- only reachable when an untyped caller forges a traditional file type */
4415
+ function assertNever$2(value) {
4416
+ throw new Error(`unreachable traditional file type: ${String(value)}`);
4417
+ }
4418
+ /**
4419
+ * Render a decorative file-type glyph for a path or an explicitly resolved kind.
4420
+ * @param props - Path or kind selection, optional project context, size, and CSS class.
4421
+ * @returns The category-colored SVG; the caller owns the accessible name and may override
4422
+ * the color through `--dsh-file-type-icon-color`.
4423
+ */
4424
+ function FileTypeIcon(props) {
4425
+ const { size = 28, className } = props;
4426
+ const resolvedType = "path" in props ? classifyFileType(props.path, props.context) : props.kind;
4427
+ return isCodeFileType(resolvedType) ? jsx(CodeFileIcon, {
4428
+ type: resolvedType,
4429
+ size,
4430
+ className
4431
+ }) : glyph(resolvedType, size, clsx(css$13.icon, css$13[resolvedType], className));
4432
+ }
4433
+ //#endregion
4434
+ //#region lib/types/LinkIcon.js
2766
4435
  /**
2767
4436
  * Derive a file path's link-icon category from its extension. Unknown and
2768
4437
  * missing extensions fall to `other` (the plain-paper glyph).
@@ -2770,13 +4439,24 @@ const DOCUMENT_EXTENSIONS = new Set([
2770
4439
  * @returns The file's glyph category; never `url` or `folder`.
2771
4440
  */
2772
4441
  function classifyLinkPath(path) {
2773
- const name = path.slice(Math.max(path.lastIndexOf("/"), path.lastIndexOf("\\")) + 1);
2774
- const dot = name.lastIndexOf(".");
2775
- if (dot < 0) return "other";
2776
- const extension = name.slice(dot + 1).toLowerCase();
2777
- if (CODE_EXTENSIONS.has(extension)) return "code";
2778
- if (IMAGE_EXTENSIONS.has(extension)) return "image";
2779
- return DOCUMENT_EXTENSIONS.has(extension) ? "document" : "other";
4442
+ const type = classifyFileType(path);
4443
+ const extension = fileExtension(path);
4444
+ if (isCodeFileType(type)) return isLinkCodeExtension(extension) ? "code" : "other";
4445
+ if (extension === "") return "other";
4446
+ switch (type) {
4447
+ case "code":
4448
+ case "html": return "code";
4449
+ case "image": return "image";
4450
+ case "excel":
4451
+ case "pdf":
4452
+ case "ppt":
4453
+ case "word": return "document";
4454
+ case "markdown":
4455
+ case "other":
4456
+ case "video": return "other";
4457
+ /* v8 ignore next -- classifyFileType returns a closed union exhausted above */
4458
+ default: return assertNever$1(type);
4459
+ }
2780
4460
  }
2781
4461
  const GlobeGlyph = ({ size, className }) => jsx("svg", {
2782
4462
  width: size,
@@ -2990,7 +4670,7 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
2990
4670
  let cursor = 0;
2991
4671
  const pushPlain = (from, to) => {
2992
4672
  parts.push(jsx("span", {
2993
- className: css$13.plainRun,
4673
+ className: css$14.plainRun,
2994
4674
  children: text.slice(from, to)
2995
4675
  }, `t${from}`));
2996
4676
  };
@@ -3001,19 +4681,19 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
3001
4681
  const referenceKind = kind === "session" ? "session" : label.startsWith("@") ? label.endsWith("/") ? "folder" : "file" : void 0;
3002
4682
  const displayLabel = range.display ?? (referenceKind === void 0 ? label : referenceKind === "session" ? label.slice(1) : label.slice(1).replace(/^"|"$/gu, "").split(/[\\/]/u).filter(Boolean).at(-1) ?? label.slice(1));
3003
4683
  parts.push(jsxs("span", {
3004
- className: clsx(css$13.refChip, referenceKind === void 0 && css$13.slashChip),
4684
+ className: clsx(css$14.refChip, referenceKind === void 0 && css$14.slashChip),
3005
4685
  "data-ref-chip": referenceKind ?? slashKind,
3006
4686
  title: label,
3007
4687
  children: [referenceKind !== void 0 && jsx(ReferenceIcon, {
3008
4688
  kind: referenceKind,
3009
4689
  size: 16,
3010
- className: css$13.refIcon
4690
+ className: css$14.refIcon
3011
4691
  }), displayLabel]
3012
4692
  }, tokenStart));
3013
4693
  cursor = end;
3014
4694
  }
3015
4695
  if (parts.length === 0) return jsx("span", {
3016
- className: css$13.plainRun,
4696
+ className: css$14.plainRun,
3017
4697
  children: text
3018
4698
  });
3019
4699
  if (cursor < text.length) pushPlain(cursor, text.length);
@@ -3151,7 +4831,7 @@ function Tooltip({ label, side = "right", delayMs = 0, disabled = false, maxWidt
3151
4831
  }
3152
4832
  }), pos !== null && jsx("span", {
3153
4833
  ref: bubble,
3154
- className: css$14.bubble,
4834
+ className: css$15.bubble,
3155
4835
  "data-side": placement,
3156
4836
  style: {
3157
4837
  left: pos.x,
@@ -3212,18 +4892,18 @@ function Toast({ text, icon, anchor, holdMs = HOLD_MS, onDone }) {
3212
4892
  };
3213
4893
  }, [anchor]);
3214
4894
  return createPortal(jsxs("div", {
3215
- className: css$15.toast,
4895
+ className: css$16.toast,
3216
4896
  role: "alert",
3217
4897
  style: {
3218
4898
  ...left === null ? {} : { left },
3219
4899
  "--dsh-toast-hold": `${String(holdMs)}ms`
3220
4900
  },
3221
4901
  children: [icon !== void 0 && jsx("span", {
3222
- className: css$15.icon,
4902
+ className: css$16.icon,
3223
4903
  "aria-hidden": true,
3224
4904
  children: icon
3225
4905
  }), jsx("span", {
3226
- className: css$15.text,
4906
+ className: css$16.text,
3227
4907
  children: text
3228
4908
  })]
3229
4909
  }), document.body);
@@ -3246,52 +4926,6 @@ function fileSizeText(bytes) {
3246
4926
  return `${gb < 10 ? gb.toFixed(1) : Math.round(gb)}GB`;
3247
4927
  }
3248
4928
  //#endregion
3249
- //#region lib/types/DocumentFileIcon.js
3250
- /**
3251
- * Render the DeepSeek Web document glyph used by generic-file cards.
3252
- * @param props - optional CSS class for sizing and placement.
3253
- * @returns a decorative document SVG with an instance-safe gradient id.
3254
- */
3255
- function DocumentFileIcon({ className }) {
3256
- const gradientId = useId();
3257
- return jsxs("svg", {
3258
- className,
3259
- xmlns: "http://www.w3.org/2000/svg",
3260
- width: "24",
3261
- height: "28",
3262
- viewBox: "0 0 24 28",
3263
- fill: "none",
3264
- "aria-hidden": true,
3265
- children: [
3266
- jsx("path", {
3267
- d: "M16.5 0l7 7v15.6c0 2.25 0 3.375-.573 4.164a3 3 0 0 1-.663.663C21.475 28 20.349 28 18.1 28H5.9c-2.25 0-3.375 0-4.164-.573a3 3 0 0 1-.663-.663C.5 25.975.5 24.849.5 22.6V5.4c0-2.25 0-3.375.573-4.164a3 3 0 0 1 .663-.663C2.525 0 3.651 0 5.9 0h10.6z",
3268
- fill: `url(#${gradientId})`
3269
- }),
3270
- jsx("path", {
3271
- d: "M16.5 0l7 7h-3.8c-1.12 0-1.68 0-2.108-.218a2 2 0 0 1-.874-.874C16.5 5.48 16.5 4.92 16.5 3.8V0z",
3272
- fill: "#fff",
3273
- fillOpacity: ".55"
3274
- }),
3275
- jsx("path", {
3276
- d: "M6 11.784c0-.433.351-.784.784-.784h10.432a.784.784 0 1 1 0 1.568H6.784A.784.784 0 0 1 6 11.784zM6 15.784c0-.433.351-.784.784-.784h10.432a.784.784 0 1 1 0 1.568H6.784A.784.784 0 0 1 6 15.784zM6.114 19.817c0-.433.35-.784.784-.784h6.318a.784.784 0 1 1 0 1.568H6.898a.784.784 0 0 1-.784-.784z",
3277
- fill: "#fff"
3278
- }),
3279
- jsx("defs", { children: jsxs("linearGradient", {
3280
- id: gradientId,
3281
- x1: "1.5",
3282
- y1: "-1",
3283
- x2: "23.5",
3284
- y2: "28",
3285
- gradientUnits: "userSpaceOnUse",
3286
- children: [jsx("stop", { stopColor: "#6D93FF" }), jsx("stop", {
3287
- offset: "1",
3288
- stopColor: "#5A71F0"
3289
- })]
3290
- }) })
3291
- ]
3292
- });
3293
- }
3294
- //#endregion
3295
4929
  //#region lib/types/relative-time.js
3296
4930
  /**
3297
4931
  * Compact relative-time bucketing shared by every surface that dates a
@@ -3456,35 +5090,35 @@ function bracketOf(value) {
3456
5090
  }
3457
5091
  function previewPrimitive(value) {
3458
5092
  if (value === null) return jsx("span", {
3459
- className: css$16.keywordValue,
5093
+ className: css$17.keywordValue,
3460
5094
  children: "null"
3461
5095
  });
3462
5096
  if (typeof value === "string") return jsx("span", {
3463
- className: css$16.stringValue,
5097
+ className: css$17.stringValue,
3464
5098
  children: JSON.stringify(value)
3465
5099
  });
3466
5100
  if (typeof value === "number") return jsx("span", {
3467
- className: css$16.numberValue,
5101
+ className: css$17.numberValue,
3468
5102
  children: String(value)
3469
5103
  });
3470
5104
  if (typeof value === "boolean") return jsx("span", {
3471
- className: css$16.keywordValue,
5105
+ className: css$17.keywordValue,
3472
5106
  children: String(value)
3473
5107
  });
3474
5108
  if (typeof value === "bigint") return jsx("span", {
3475
- className: css$16.otherValue,
5109
+ className: css$17.otherValue,
3476
5110
  children: value.toString()
3477
5111
  });
3478
5112
  if (typeof value === "undefined") return jsx("span", {
3479
- className: css$16.otherValue,
5113
+ className: css$17.otherValue,
3480
5114
  children: "undefined"
3481
5115
  });
3482
5116
  if (typeof value === "symbol") return jsx("span", {
3483
- className: css$16.otherValue,
5117
+ className: css$17.otherValue,
3484
5118
  children: value.description ?? "Symbol"
3485
5119
  });
3486
5120
  if (typeof value === "function") return jsx("span", {
3487
- className: css$16.otherValue,
5121
+ className: css$17.otherValue,
3488
5122
  children: value.name || "Function"
3489
5123
  });
3490
5124
  return null;
@@ -3498,71 +5132,71 @@ function previewValue(value, depth) {
3498
5132
  const [open, close] = bracketOf(value);
3499
5133
  return jsxs(Fragment, { children: [
3500
5134
  jsx("span", {
3501
- className: css$16.punctuation,
5135
+ className: css$17.punctuation,
3502
5136
  children: open
3503
5137
  }),
3504
5138
  depth >= PREVIEW_DEPTH_LIMIT ? jsx("span", {
3505
- className: css$16.previewEllipsis,
5139
+ className: css$17.previewEllipsis,
3506
5140
  children: "…"
3507
5141
  }) : visible.map(([key, item], index) => jsxs("span", { children: [
3508
5142
  index > 0 && jsx("span", {
3509
- className: css$16.punctuation,
5143
+ className: css$17.punctuation,
3510
5144
  children: ", "
3511
5145
  }),
3512
5146
  !array && jsxs(Fragment, { children: [jsx("span", {
3513
- className: css$16.previewProperty,
5147
+ className: css$17.previewProperty,
3514
5148
  children: key
3515
5149
  }), jsx("span", {
3516
- className: css$16.punctuation,
5150
+ className: css$17.punctuation,
3517
5151
  children: ": "
3518
5152
  })] }),
3519
5153
  previewValue(item, depth + 1)
3520
5154
  ] }, key)),
3521
5155
  depth < PREVIEW_DEPTH_LIMIT && entries.length > limit && jsx("span", {
3522
- className: css$16.previewEllipsis,
5156
+ className: css$17.previewEllipsis,
3523
5157
  children: ", …"
3524
5158
  }),
3525
5159
  jsx("span", {
3526
- className: css$16.punctuation,
5160
+ className: css$17.punctuation,
3527
5161
  children: close
3528
5162
  })
3529
5163
  ] });
3530
5164
  }
3531
5165
  function primitiveValue(value) {
3532
5166
  if (value === null) return jsx("span", {
3533
- className: css$16.keywordValue,
5167
+ className: css$17.keywordValue,
3534
5168
  children: "null"
3535
5169
  });
3536
5170
  if (typeof value === "string") return jsx("span", {
3537
- className: css$16.stringValue,
5171
+ className: css$17.stringValue,
3538
5172
  children: JSON.stringify(value)
3539
5173
  });
3540
5174
  if (typeof value === "boolean") return jsx("span", {
3541
- className: css$16.keywordValue,
5175
+ className: css$17.keywordValue,
3542
5176
  children: String(value)
3543
5177
  });
3544
5178
  if (typeof value === "number") return jsx("span", {
3545
- className: css$16.numberValue,
5179
+ className: css$17.numberValue,
3546
5180
  children: String(value)
3547
5181
  });
3548
5182
  if (typeof value === "bigint") return jsx("span", {
3549
- className: css$16.numberValue,
5183
+ className: css$17.numberValue,
3550
5184
  children: `${value.toString()}n`
3551
5185
  });
3552
5186
  if (value instanceof Date) return jsx("span", {
3553
- className: css$16.otherValue,
5187
+ className: css$17.otherValue,
3554
5188
  children: value.toISOString()
3555
5189
  });
3556
5190
  if (typeof value === "function") return jsxs("span", {
3557
- className: css$16.otherValue,
5191
+ className: css$17.otherValue,
3558
5192
  children: ["function() ", "{ }"]
3559
5193
  });
3560
5194
  if (typeof value === "undefined") return jsx("span", {
3561
- className: css$16.otherValue,
5195
+ className: css$17.otherValue,
3562
5196
  children: "undefined"
3563
5197
  });
3564
5198
  return jsx("span", {
3565
- className: css$16.otherValue,
5199
+ className: css$17.otherValue,
3566
5200
  children: value.toString()
3567
5201
  });
3568
5202
  }
@@ -3590,7 +5224,7 @@ function moveFocus(button, direction) {
3590
5224
  function NodeField({ field, expandable, onToggle }) {
3591
5225
  if (field === void 0) return null;
3592
5226
  return jsxs("span", {
3593
- className: clsx(css$16.label, expandable && css$16.clickableLabel),
5227
+ className: clsx(css$17.label, expandable && css$17.clickableLabel),
3594
5228
  onClick: expandable ? onToggle : void 0,
3595
5229
  children: [fieldText(field), ":"]
3596
5230
  });
@@ -3619,7 +5253,7 @@ function JsonTreeNode({ field, initialExpanded, labels, lastElement, onClaimTabS
3619
5253
  }
3620
5254
  };
3621
5255
  const row = (children, ariaExpanded) => jsx("div", {
3622
- className: css$16.row,
5256
+ className: css$17.row,
3623
5257
  role: "treeitem",
3624
5258
  "aria-expanded": ariaExpanded,
3625
5259
  onMouseOver: (event) => {
@@ -3639,7 +5273,7 @@ function JsonTreeNode({ field, initialExpanded, labels, lastElement, onClaimTabS
3639
5273
  }),
3640
5274
  primitiveValue(value),
3641
5275
  !lastElement && jsx("span", {
3642
- className: css$16.punctuation,
5276
+ className: css$17.punctuation,
3643
5277
  children: ","
3644
5278
  })
3645
5279
  ] }));
@@ -3651,22 +5285,22 @@ function JsonTreeNode({ field, initialExpanded, labels, lastElement, onClaimTabS
3651
5285
  onToggle: toggle
3652
5286
  }),
3653
5287
  jsx("span", {
3654
- className: css$16.punctuation,
5288
+ className: css$17.punctuation,
3655
5289
  children: open
3656
5290
  }),
3657
5291
  jsx("span", {
3658
- className: css$16.punctuation,
5292
+ className: css$17.punctuation,
3659
5293
  children: close
3660
5294
  }),
3661
5295
  !lastElement && jsx("span", {
3662
- className: css$16.punctuation,
5296
+ className: css$17.punctuation,
3663
5297
  children: ","
3664
5298
  })
3665
5299
  ] }));
3666
5300
  return row(jsxs(Fragment, { children: [
3667
5301
  jsx("span", {
3668
5302
  ref: expanderRef,
3669
- className: clsx(css$16.expander, expanded ? css$16.collapseIcon : css$16.expandIcon),
5303
+ className: clsx(css$17.expander, expanded ? css$17.collapseIcon : css$17.expandIcon),
3670
5304
  "data-json-expander": true,
3671
5305
  role: "button",
3672
5306
  "aria-label": expanded ? labels.collapseNode : labels.expandNode,
@@ -3685,17 +5319,17 @@ function JsonTreeNode({ field, initialExpanded, labels, lastElement, onClaimTabS
3685
5319
  onToggle: toggle
3686
5320
  }),
3687
5321
  jsx("span", {
3688
- className: css$16.preview,
5322
+ className: css$17.preview,
3689
5323
  children: previewValue(value, 0)
3690
5324
  }),
3691
5325
  !lastElement && jsx("span", {
3692
- className: css$16.punctuation,
5326
+ className: css$17.punctuation,
3693
5327
  children: ","
3694
5328
  }),
3695
5329
  expanded && jsx("ul", {
3696
5330
  id: contentsId,
3697
5331
  role: "group",
3698
- className: css$16.children,
5332
+ className: css$17.children,
3699
5333
  children: entries.map(([key, item], index) => jsx(JsonTreeNode, {
3700
5334
  field: key,
3701
5335
  value: item,
@@ -3856,17 +5490,17 @@ function JsonTree({ data, label, className, copyable = true, expandTopLevel = tr
3856
5490
  const copyTitle = copyState === "copied" ? labels.copied : copyState === "failed" ? labels.copyFailed : copyTargetIsObject ? labels.copyPrettyJson : labels.copyValue;
3857
5491
  return jsxs("div", {
3858
5492
  ref: rootRef,
3859
- className: clsx(css$16.root, className),
5493
+ className: clsx(css$17.root, className),
3860
5494
  onMouseOver: handleRootMouseOver,
3861
5495
  onMouseLeave: () => {
3862
5496
  if (!copyMenuOpenRef.current) clearCopyTarget();
3863
5497
  },
3864
5498
  onScroll: handleScroll,
3865
5499
  children: [expandTopLevel ? jsxs("div", {
3866
- className: css$16.expandedTopLevel,
5500
+ className: css$17.expandedTopLevel,
3867
5501
  children: [
3868
5502
  jsx("div", {
3869
- className: clsx(css$16.row, css$16.topLevelBracket),
5503
+ className: clsx(css$17.row, css$17.topLevelBracket),
3870
5504
  "data-json-root-row": true,
3871
5505
  onMouseOver: (event) => {
3872
5506
  event.stopPropagation();
@@ -3876,13 +5510,13 @@ function JsonTree({ data, label, className, copyable = true, expandTopLevel = tr
3876
5510
  });
3877
5511
  },
3878
5512
  children: jsx("span", {
3879
- className: css$16.punctuation,
5513
+ className: css$17.punctuation,
3880
5514
  children: rootOpen
3881
5515
  })
3882
5516
  }),
3883
5517
  jsx("div", {
3884
5518
  "aria-label": label,
3885
- className: clsx(css$16.container, css$16.expandedTopLevelContainer),
5519
+ className: clsx(css$17.container, css$17.expandedTopLevelContainer),
3886
5520
  role: "tree",
3887
5521
  children: rootEntries.map(([key, value], index) => jsx(JsonTreeNode, {
3888
5522
  field: key,
@@ -3897,16 +5531,16 @@ function JsonTree({ data, label, className, copyable = true, expandTopLevel = tr
3897
5531
  }, key))
3898
5532
  }),
3899
5533
  jsx("div", {
3900
- className: clsx(css$16.row, css$16.topLevelBracket),
5534
+ className: clsx(css$17.row, css$17.topLevelBracket),
3901
5535
  children: jsx("span", {
3902
- className: css$16.punctuation,
5536
+ className: css$17.punctuation,
3903
5537
  children: rootClose
3904
5538
  })
3905
5539
  })
3906
5540
  ]
3907
5541
  }) : jsx("div", {
3908
5542
  "aria-label": label,
3909
- className: css$16.container,
5543
+ className: css$17.container,
3910
5544
  role: "tree",
3911
5545
  children: jsx(JsonTreeNode, {
3912
5546
  value: data,
@@ -3919,7 +5553,7 @@ function JsonTree({ data, label, className, copyable = true, expandTopLevel = tr
3919
5553
  onRowHover: handleRowHover
3920
5554
  })
3921
5555
  }), copyTarget !== void 0 && jsx("span", {
3922
- className: css$16.copyAnchor,
5556
+ className: css$17.copyAnchor,
3923
5557
  style: {
3924
5558
  left: copyTarget.left,
3925
5559
  top: copyTarget.top
@@ -3933,7 +5567,7 @@ function JsonTree({ data, label, className, copyable = true, expandTopLevel = tr
3933
5567
  anchor: jsx("button", {
3934
5568
  ref: copyButtonRef,
3935
5569
  type: "button",
3936
- className: css$16.copyButton,
5570
+ className: css$17.copyButton,
3937
5571
  "data-json-copy-button": true,
3938
5572
  "data-state": copyState,
3939
5573
  "aria-label": copyTitle,
@@ -4498,66 +6132,66 @@ function TerminalBlock({ command, cwd, home, output, exitCode, signal, running =
4498
6132
  const empty = lines.every((line) => line.every((span) => span.text.trim() === ""));
4499
6133
  const { hidden, capped, headLines, tailLines } = headTailCap(lines.length, maxLines, expanded);
4500
6134
  return jsxs("div", {
4501
- className: clsx(css$17.block, className),
6135
+ className: clsx(css$18.block, className),
4502
6136
  "data-terminal": "",
4503
6137
  "data-running": running ? "" : void 0,
4504
6138
  children: [jsxs("div", {
4505
- className: css$17.header,
6139
+ className: css$18.header,
4506
6140
  children: [
4507
6141
  jsxs("div", {
4508
- className: css$17.prompt,
6142
+ className: css$18.prompt,
4509
6143
  children: [jsx("span", {
4510
- className: css$17.runStateLabel,
6144
+ className: css$18.runStateLabel,
4511
6145
  children: state.label
4512
6146
  }), commandLines.map((line, index) => jsxs("div", {
4513
- className: css$17.promptLine,
6147
+ className: css$18.promptLine,
4514
6148
  children: [
4515
6149
  index === 0 && jsx(StateDot, {
4516
6150
  state: state.state,
4517
- className: css$17.runState
6151
+ className: css$18.runState
4518
6152
  }),
4519
6153
  jsx("span", {
4520
- className: css$17.cwd,
6154
+ className: css$18.cwd,
4521
6155
  children: index > 0 || cwd === void 0 ? "$" : promptLabel(cwd, home)
4522
6156
  }),
4523
6157
  jsx("span", {
4524
- className: css$17.command,
6158
+ className: css$18.command,
4525
6159
  children: line
4526
6160
  })
4527
6161
  ]
4528
6162
  }, index))]
4529
6163
  }),
4530
6164
  status !== void 0 && jsx(Pill, {
4531
- className: css$17.status,
6165
+ className: css$18.status,
4532
6166
  children: status
4533
6167
  }),
4534
6168
  !running && !empty && jsx("button", {
4535
6169
  type: "button",
4536
- className: css$17.copyButton,
6170
+ className: css$18.copyButton,
4537
6171
  onClick: onCopy,
4538
6172
  children: copied ? copy.copied : copy.copy
4539
6173
  })
4540
6174
  ]
4541
6175
  }), !running && (empty ? jsx("div", {
4542
- className: css$17.empty,
6176
+ className: css$18.empty,
4543
6177
  children: copy.noOutput
4544
6178
  }) : jsxs("div", {
4545
- className: css$17.output,
6179
+ className: css$18.output,
4546
6180
  children: [
4547
6181
  (capped ? lines.slice(0, headLines) : lines).map((line, index) => jsx("div", {
4548
- className: css$17.line,
6182
+ className: css$18.line,
4549
6183
  children: renderLine$1(line)
4550
6184
  }, index)),
4551
6185
  hidden > 0 && jsx("button", {
4552
6186
  type: "button",
4553
- className: css$17.expand,
6187
+ className: css$18.expand,
4554
6188
  "aria-expanded": expanded,
4555
6189
  "aria-label": expanded ? copy.collapseAria : copy.expandAria(hidden),
4556
6190
  onClick: onToggle,
4557
6191
  children: expanded ? copy.collapse : copy.expand(hidden)
4558
6192
  }),
4559
6193
  capped && lines.slice(lines.length - tailLines).map((line, index) => jsx("div", {
4560
- className: css$17.line,
6194
+ className: css$18.line,
4561
6195
  children: renderLine$1(line)
4562
6196
  }, index))
4563
6197
  ]
@@ -5135,51 +6769,51 @@ function ReadBlock({ label, labels, lines, totalLines, lang, maxLines = 16, clas
5135
6769
  const tailLines = maxLines - headLines;
5136
6770
  const windowed = lines.length < totalLines;
5137
6771
  const rows = (slice) => slice.map(([line, spans]) => jsxs("div", {
5138
- className: css$18.line,
6772
+ className: css$19.line,
5139
6773
  children: [jsx("span", {
5140
- className: css$18.gutter,
6774
+ className: css$19.gutter,
5141
6775
  "aria-hidden": true,
5142
6776
  children: line.number
5143
6777
  }), jsx("span", {
5144
- className: css$18.content,
6778
+ className: css$19.content,
5145
6779
  children: spans === void 0 ? line.text : renderSpans(spans)
5146
6780
  })]
5147
6781
  }, line.number));
5148
6782
  const paired = lines.map((line, index) => [line, highlighted?.[index]]);
5149
6783
  return jsxs("div", {
5150
6784
  ref: rootRef,
5151
- className: clsx(css$18.block, className),
6785
+ className: clsx(css$19.block, className),
5152
6786
  "data-read": "",
5153
6787
  children: [jsxs("div", {
5154
- className: css$18.banner,
6788
+ className: css$19.banner,
5155
6789
  children: [jsx("div", {
5156
- className: css$18.label,
6790
+ className: css$19.label,
5157
6791
  children: label ?? ""
5158
6792
  }), jsxs("div", {
5159
- className: css$18.action,
6793
+ className: css$19.action,
5160
6794
  children: [
5161
6795
  windowed && jsx("span", {
5162
- className: css$18.count,
6796
+ className: css$19.count,
5163
6797
  children: labels.window(lines.length, totalLines)
5164
6798
  }),
5165
6799
  jsx("span", {
5166
- className: css$18.lang,
6800
+ className: css$19.lang,
5167
6801
  children: lang ?? ""
5168
6802
  }),
5169
6803
  lines.length > 0 && jsx("button", {
5170
6804
  type: "button",
5171
- className: css$18.copyButton,
6805
+ className: css$19.copyButton,
5172
6806
  onClick: onCopy,
5173
6807
  children: copied ? labels.copied : labels.copy
5174
6808
  })
5175
6809
  ]
5176
6810
  })]
5177
6811
  }), jsxs("div", {
5178
- className: css$18.body,
6812
+ className: css$19.body,
5179
6813
  children: [
5180
6814
  rows(capped ? paired.slice(0, headLines) : paired),
5181
6815
  hidden > 0 && jsx(FoldToggle, {
5182
- className: css$18.expand,
6816
+ className: css$19.expand,
5183
6817
  expanded,
5184
6818
  hidden,
5185
6819
  labels,
@@ -5201,10 +6835,10 @@ function assertNever(value) {
5201
6835
  }
5202
6836
  /** The dim class per row kind (path/gap chrome vs the diff's own +/- colors). */
5203
6837
  const ROW_CLASS = {
5204
- path: css$19.path,
5205
- del: css$19.del,
5206
- add: css$19.add,
5207
- gap: css$19.gap
6838
+ path: css$20.path,
6839
+ del: css$20.del,
6840
+ add: css$20.add,
6841
+ gap: css$20.gap
5208
6842
  };
5209
6843
  /**
5210
6844
  * Total added/removed line counts across hunks — the same numbers the footer
@@ -5328,37 +6962,37 @@ function DiffBlock({ diffs, labels, maxLines = 16, className }) {
5328
6962
  const head = capped ? rows.slice(0, headLines) : rows;
5329
6963
  const tail = capped ? rows.slice(rows.length - tailLines) : [];
5330
6964
  return jsxs("div", {
5331
- className: clsx(css$19.block, className),
6965
+ className: clsx(css$20.block, className),
5332
6966
  "data-diff": "",
5333
6967
  children: [
5334
6968
  jsx("button", {
5335
6969
  type: "button",
5336
- className: css$19.copyButton,
6970
+ className: css$20.copyButton,
5337
6971
  onClick: onCopy,
5338
6972
  children: copied ? labels.copied : labels.copy
5339
6973
  }),
5340
6974
  jsxs("div", {
5341
- className: css$19.body,
6975
+ className: css$20.body,
5342
6976
  children: [
5343
6977
  head.map((row, index) => jsx("div", {
5344
- className: clsx(css$19.line, ROW_CLASS[row.kind]),
6978
+ className: clsx(css$20.line, ROW_CLASS[row.kind]),
5345
6979
  children: row.text
5346
6980
  }, index)),
5347
6981
  hidden > 0 && jsx(FoldToggle, {
5348
- className: css$19.expand,
6982
+ className: css$20.expand,
5349
6983
  expanded,
5350
6984
  hidden,
5351
6985
  labels,
5352
6986
  onToggle
5353
6987
  }),
5354
6988
  tail.map((row, index) => jsx("div", {
5355
- className: clsx(css$19.line, ROW_CLASS[row.kind]),
6989
+ className: clsx(css$20.line, ROW_CLASS[row.kind]),
5356
6990
  children: row.text
5357
6991
  }, index))
5358
6992
  ]
5359
6993
  }),
5360
6994
  jsxs("div", {
5361
- className: css$19.footer,
6995
+ className: css$20.footer,
5362
6996
  children: [
5363
6997
  "└ +",
5364
6998
  added,
@@ -5494,56 +7128,56 @@ function SearchBlock(props) {
5494
7128
  const tail = tailHeader === void 0 ? naturalTail : naturalTail.slice(1);
5495
7129
  const renderRow = (row) => {
5496
7130
  if (row.type === "path") return jsx("div", {
5497
- className: css$20.line,
7131
+ className: css$21.line,
5498
7132
  children: row.path
5499
7133
  });
5500
7134
  if (row.type === "match") return jsxs("div", {
5501
- className: css$20.line,
7135
+ className: css$21.line,
5502
7136
  children: [jsxs("span", {
5503
- className: css$20.lineNumber,
7137
+ className: css$21.lineNumber,
5504
7138
  children: [row.lineNumber, ": "]
5505
7139
  }), row.line]
5506
7140
  });
5507
7141
  return jsxs("button", {
5508
7142
  type: "button",
5509
- className: css$20.fileHeader,
7143
+ className: css$21.fileHeader,
5510
7144
  "aria-expanded": !row.collapsed,
5511
7145
  onClick: () => {
5512
7146
  toggleFile(row.index);
5513
7147
  },
5514
7148
  children: [jsx("span", {
5515
- className: css$20.filePath,
7149
+ className: css$21.filePath,
5516
7150
  children: row.path
5517
7151
  }), jsx("span", {
5518
- className: css$20.fileCount,
7152
+ className: css$21.fileCount,
5519
7153
  children: row.count
5520
7154
  })]
5521
7155
  });
5522
7156
  };
5523
7157
  return jsxs("div", {
5524
- className: clsx(css$20.block, className),
7158
+ className: clsx(css$21.block, className),
5525
7159
  "data-search": props.kind,
5526
7160
  children: [jsxs("div", {
5527
- className: css$20.header,
7161
+ className: css$21.header,
5528
7162
  children: [jsx("span", {
5529
- className: css$20.summary,
7163
+ className: css$21.summary,
5530
7164
  children: summaryText(props, shown, truncated, total)
5531
7165
  }), !empty && jsx("button", {
5532
7166
  type: "button",
5533
- className: css$20.copyButton,
7167
+ className: css$21.copyButton,
5534
7168
  onClick: onCopy,
5535
7169
  children: copied ? props.labels.copied : props.labels.copy
5536
7170
  })]
5537
7171
  }), empty ? jsx("div", {
5538
- className: css$20.empty,
7172
+ className: css$21.empty,
5539
7173
  children: props.labels.noResults
5540
7174
  }) : jsxs("div", {
5541
- className: css$20.body,
7175
+ className: css$21.body,
5542
7176
  children: [
5543
7177
  head.map((row) => jsx("div", { children: renderRow(row) }, rowKey(row))),
5544
7178
  hidden > 0 && jsx("button", {
5545
7179
  type: "button",
5546
- className: css$20.expand,
7180
+ className: css$21.expand,
5547
7181
  "aria-expanded": expanded,
5548
7182
  "aria-label": expanded ? props.labels.collapseAria : props.labels.expandAria(hidden),
5549
7183
  onClick: onToggle,
@@ -6249,8 +7883,9 @@ function renderLine(line, index) {
6249
7883
  }, spanIndex))
6250
7884
  })] }, index);
6251
7885
  }
6252
- function CodeBlock({ code, lang, streaming, className, copyLabel, copiedLabel }) {
7886
+ function CodeBlock({ code, lang, streaming, className, lineNumbers = false, copyLabel, copiedLabel }) {
6253
7887
  const trimmed = code.endsWith("\n") ? code.slice(0, -1) : code;
7888
+ const sourceLines = lineNumbers ? trimmed.split("\n") : void 0;
6254
7889
  const rootRef = useRef(null);
6255
7890
  const highlighting = useViewportHighlighting(rootRef, lang);
6256
7891
  const loaded = useSyncExternalStore(subscribeGrammarLoaded, grammarLoadCount, grammarLoadCount);
@@ -6344,24 +7979,30 @@ function CodeBlock({ code, lang, streaming, className, copyLabel, copiedLabel })
6344
7979
  });
6345
7980
  }, [copied, trimmed]);
6346
7981
  const body = streamedBody !== void 0 ? streamedBody : html === void 0 ? jsx("pre", {
6347
- className: css$21.plain,
6348
- children: jsx("code", { children: trimmed })
7982
+ className: css$22.plain,
7983
+ children: jsx("code", { children: sourceLines === void 0 ? trimmed : sourceLines.map((line, index) => jsxs(Fragment$1, { children: [index > 0 && "\n", jsx("span", {
7984
+ className: "line",
7985
+ children: line
7986
+ })] }, index)) })
6349
7987
  }) : jsx("div", { dangerouslySetInnerHTML: { __html: html } });
6350
7988
  return jsxs("div", {
6351
7989
  ref: rootRef,
6352
- className: clsx(css$21.block, "md-code-block", className),
7990
+ className: clsx(css$22.block, "md-code-block", lineNumbers && css$22.numbered, className),
7991
+ "data-line-numbers": lineNumbers || void 0,
7992
+ style: sourceLines === void 0 ? void 0 : { "--dsl-code-block-line-number-width": `${Math.max(2, String(sourceLines.length).length)}ch` },
6353
7993
  children: [jsx("div", {
6354
- className: css$21.bannerWrap,
7994
+ className: css$22.bannerWrap,
6355
7995
  children: jsxs("div", {
6356
- className: css$21.banner,
7996
+ className: css$22.banner,
7997
+ "data-code-block-banner": true,
6357
7998
  children: [jsx("div", {
6358
- className: css$21.infostring,
7999
+ className: css$22.infostring,
6359
8000
  children: lang ?? ""
6360
8001
  }), jsx("div", {
6361
- className: css$21.action,
8002
+ className: css$22.action,
6362
8003
  children: jsx("button", {
6363
8004
  type: "button",
6364
- className: css$21.copyButton,
8005
+ className: css$22.copyButton,
6365
8006
  onClick: onCopy,
6366
8007
  children: copied ? copiedLabel : copyLabel
6367
8008
  })
@@ -6490,6 +8131,30 @@ function remoteImageUrl(url) {
6490
8131
  return;
6491
8132
  }
6492
8133
  }
8134
+ /** Protocols a vocabulary-rewritten image destination may carry. */
8135
+ function vocabularyImageUrl(url) {
8136
+ try {
8137
+ const protocol = new URL(url).protocol;
8138
+ return protocol === "http:" || protocol === "https:" || protocol === "blob:" || protocol === "data:" ? url : void 0;
8139
+ } catch {
8140
+ return;
8141
+ }
8142
+ }
8143
+ /**
8144
+ * The displayable source for one image destination: absolute HTTP(S) as
8145
+ * authored, otherwise the context's local-path vocabulary when it vouches for
8146
+ * the destination. Either miss leaves the authored fallback (alt text) to the
8147
+ * caller.
8148
+ * @param url - The authored markdown destination.
8149
+ * @param pathImages - Rewriting vocabulary, when the render pass has one.
8150
+ * @returns The displayable image URL, or undefined.
8151
+ */
8152
+ function imageSource(url, pathImages) {
8153
+ const remote = remoteImageUrl(sanitizeUrl(normalizeUri(url)));
8154
+ if (remote !== void 0) return remote;
8155
+ const rewritten = pathImages?.resolve(url);
8156
+ return rewritten === void 0 ? void 0 : vocabularyImageUrl(rewritten);
8157
+ }
6493
8158
  /**
6494
8159
  * Create an empty {@link ReferenceTargets}.
6495
8160
  * @returns Fresh empty maps.
@@ -6581,13 +8246,13 @@ function renderNode(node, key, context) {
6581
8246
  const mention = context.inLink === true ? void 0 : context.fileMentions?.resolve(value);
6582
8247
  if (mention !== void 0) return jsx("code", { children: jsxs("button", {
6583
8248
  type: "button",
6584
- className: css$22.fileMention,
8249
+ className: css$23.fileMention,
6585
8250
  title: mention.title,
6586
8251
  "aria-label": mention.label,
6587
8252
  onClick: mention.open,
6588
8253
  children: [jsx(LinkIcon, {
6589
8254
  kind: classifyLinkPath(value),
6590
- className: css$22.linkIcon
8255
+ className: css$23.linkIcon
6591
8256
  }), value]
6592
8257
  }) }, key);
6593
8258
  return jsx("code", { children: value }, key);
@@ -6604,7 +8269,7 @@ function renderNode(node, key, context) {
6604
8269
  inLink: true
6605
8270
  }), key, !anchorWrapsOnlyImages(node.children));
6606
8271
  case "linkReference": return renderLinkReference(node, key, context);
6607
- case "image": return renderImage(node.url, node.alt ?? "", key);
8272
+ case "image": return renderImage(node.url, node.alt ?? "", key, context);
6608
8273
  case "imageReference": return renderImageReference(node, key, context);
6609
8274
  case "footnoteReference": return renderFootnoteReference(node, key, context);
6610
8275
  case "definition":
@@ -6679,7 +8344,7 @@ function renderTable(node, key, context) {
6679
8344
  const [headRow, ...bodyRows] = node.children;
6680
8345
  const wide = (align === null ? headRow?.children.length ?? 0 : align.length) >= 4 && context.inBlockquote !== true;
6681
8346
  return jsx("div", {
6682
- className: clsx(css$22.tableScroll, wide ? "md-table-wide" : css$22.tableFill),
8347
+ className: clsx(css$23.tableScroll, wide ? "md-table-wide" : css$23.tableFill),
6683
8348
  tabIndex: wide ? 0 : void 0,
6684
8349
  children: jsxs("table", { children: [headRow !== void 0 && jsx("thead", { children: renderTableRow(headRow, "th", align, 0, context) }), bodyRows.length > 0 && jsx("tbody", { children: bodyRows.map((row, index) => renderTableRow(row, "td", align, index + 1, context)) })] })
6685
8350
  }, key);
@@ -6717,7 +8382,7 @@ function renderSafeLink(href, children, key, glyph = true) {
6717
8382
  } : {},
6718
8383
  children: [glyph && jsx(LinkIcon, {
6719
8384
  kind: "url",
6720
- className: css$22.linkIcon
8385
+ className: css$23.linkIcon
6721
8386
  }), children]
6722
8387
  }, key);
6723
8388
  }
@@ -6738,20 +8403,36 @@ function inlineCodeHttpUrl(value) {
6738
8403
  return;
6739
8404
  }
6740
8405
  }
6741
- function renderImage(url, alt, key) {
6742
- const imageSrc = remoteImageUrl(sanitizeUrl(normalizeUri(url)));
8406
+ function renderImage(url, alt, key, context) {
8407
+ const imageSrc = imageSource(url, context.pathImages);
6743
8408
  if (imageSrc === void 0) return jsx("span", {
6744
- className: css$22.imageAlt,
8409
+ className: css$23.imageAlt,
6745
8410
  children: alt
6746
8411
  }, key);
6747
- return jsx("img", {
6748
- className: css$22.image,
8412
+ return jsx(MarkdownImage, {
6749
8413
  src: imageSrc,
6750
8414
  alt,
8415
+ destination: url
8416
+ }, `${key}:${imageSrc}`);
8417
+ }
8418
+ /** Failed loads retain the authored alt or destination; a new source remounts the image. */
8419
+ function MarkdownImage({ src, alt, destination }) {
8420
+ const [failed, setFailed] = useState(false);
8421
+ if (failed) return jsx("span", {
8422
+ className: css$23.imageAlt,
8423
+ children: alt || destination
8424
+ });
8425
+ return jsx("img", {
8426
+ className: css$23.image,
8427
+ src,
8428
+ alt,
8429
+ onError: () => {
8430
+ setFailed(true);
8431
+ },
6751
8432
  loading: "lazy",
6752
8433
  decoding: "async",
6753
8434
  referrerPolicy: "no-referrer"
6754
- }, key);
8435
+ });
6755
8436
  }
6756
8437
  /** The bracketed source text a reference reverts to when its definition is missing. */
6757
8438
  function referenceSuffix(node) {
@@ -6775,7 +8456,7 @@ function renderLinkReference(node, key, context) {
6775
8456
  function renderImageReference(node, key, context) {
6776
8457
  const definition = context.targets.definitions.get(node.identifier.toUpperCase());
6777
8458
  if (definition === void 0) return `![${node.alt ?? ""}${referenceSuffix(node)}`;
6778
- return renderImage(definition.url, node.alt ?? "", key);
8459
+ return renderImage(definition.url, node.alt ?? "", key, context);
6779
8460
  }
6780
8461
  function renderFootnoteReference(node, key, context) {
6781
8462
  const id = node.identifier.toUpperCase();
@@ -6838,7 +8519,7 @@ function renderFootnoteSection(context) {
6838
8519
  * full parse self-heals it.
6839
8520
  */
6840
8521
  /** One settled full render: parse with math, resolve references, append the footnote section. */
6841
- function renderSettled(text, labels, fileMentions) {
8522
+ function renderSettled(text, labels, fileMentions, pathImages) {
6842
8523
  const root = parseGfmWithMath(text);
6843
8524
  const targets = createReferenceTargets();
6844
8525
  collectReferenceTargets(root.children, targets);
@@ -6846,6 +8527,7 @@ function renderSettled(text, labels, fileMentions) {
6846
8527
  streaming: false,
6847
8528
  labels,
6848
8529
  fileMentions,
8530
+ pathImages,
6849
8531
  targets,
6850
8532
  footnoteOrder: [],
6851
8533
  footnoteCounts: /* @__PURE__ */ new Map()
@@ -6912,6 +8594,7 @@ var StreamingRenderer = class {
6912
8594
  streaming: true,
6913
8595
  labels: this.labels,
6914
8596
  fileMentions: void 0,
8597
+ pathImages: void 0,
6915
8598
  targets: frameTargets,
6916
8599
  footnoteOrder: this.frozenFootnoteOrder,
6917
8600
  footnoteCounts: this.frozenFootnoteCounts
@@ -6928,6 +8611,7 @@ var StreamingRenderer = class {
6928
8611
  streaming: true,
6929
8612
  labels: this.labels,
6930
8613
  fileMentions: void 0,
8614
+ pathImages: void 0,
6931
8615
  targets: frameTargets,
6932
8616
  footnoteOrder: [...this.frozenFootnoteOrder],
6933
8617
  footnoteCounts: new Map(this.frozenFootnoteCounts)
@@ -6953,21 +8637,23 @@ var StreamingRenderer = class {
6953
8637
  * `labels` forwards localized fence and footnote chrome — pass a
6954
8638
  * reference-stable object (memoized per locale revision), because a new
6955
8639
  * identity discards the streaming render cache mid-message. `fileMentions`
6956
- * links inline-code tokens its resolver recognizes as real files; this is
6957
- * the single streaming gate — it applies to settled renders only, because a
8640
+ * links inline-code tokens its resolver recognizes as real files, and
8641
+ * `pathImages` rewrites image destinations that are local file paths into
8642
+ * displayable URLs its resolver vouches for; both vocabularies are the
8643
+ * single streaming gate — they apply to settled renders only, because a
6958
8644
  * streaming message's vocabulary is not final and frozen cached elements
6959
8645
  * must not bake in handlers that could go stale.
6960
8646
  * @returns A GFM document with TeX math rendered through KaTeX; raw HTML,
6961
8647
  * relative links, and unsafe protocols are disabled, while absolute HTTP(S)
6962
8648
  * images render directly.
6963
8649
  */
6964
- const MarkdownText = memo(function MarkdownText({ text, streaming = false, labels, fileMentions }) {
8650
+ const MarkdownText = memo(function MarkdownText({ text, streaming = false, labels, fileMentions, pathImages }) {
6965
8651
  const streamRef = useRef(null);
6966
8652
  const streamLabelsRef = useRef(labels);
6967
8653
  const children = useMemo(() => {
6968
8654
  if (!streaming) {
6969
8655
  streamRef.current = null;
6970
- return renderSettled(text, labels, fileMentions);
8656
+ return renderSettled(text, labels, fileMentions, pathImages);
6971
8657
  }
6972
8658
  if (streamRef.current === null || streamLabelsRef.current !== labels) {
6973
8659
  streamRef.current = new StreamingRenderer(labels);
@@ -6978,10 +8664,11 @@ const MarkdownText = memo(function MarkdownText({ text, streaming = false, label
6978
8664
  text,
6979
8665
  streaming,
6980
8666
  labels,
6981
- fileMentions
8667
+ fileMentions,
8668
+ pathImages
6982
8669
  ]);
6983
8670
  return jsx("div", {
6984
- className: css$22.markdown,
8671
+ className: css$23.markdown,
6985
8672
  children
6986
8673
  });
6987
8674
  });
@@ -7044,7 +8731,7 @@ function SafeLink({ url, label, className }) {
7044
8731
  rel: "noopener noreferrer",
7045
8732
  children: [jsx(LinkIcon, {
7046
8733
  kind: "url",
7047
- className: css$23.linkIcon
8734
+ className: css$24.linkIcon
7048
8735
  }), label]
7049
8736
  });
7050
8737
  }
@@ -7059,20 +8746,20 @@ function SafeLink({ url, label, className }) {
7059
8746
  */
7060
8747
  function SourceItem({ source, ordinal }) {
7061
8748
  return jsxs("li", {
7062
- className: css$23.source,
8749
+ className: css$24.source,
7063
8750
  value: ordinal,
7064
8751
  children: [
7065
8752
  jsx(SafeLink, {
7066
8753
  url: source.url,
7067
8754
  label: linkLabel(source.url, source.title),
7068
- className: css$23.sourceLink
8755
+ className: css$24.sourceLink
7069
8756
  }),
7070
8757
  source.snippet !== void 0 && source.snippet !== "" && jsx("div", {
7071
- className: css$23.snippet,
8758
+ className: css$24.snippet,
7072
8759
  children: source.snippet
7073
8760
  }),
7074
8761
  source.publishedAt !== void 0 && source.publishedAt !== "" && jsx("div", {
7075
- className: css$23.published,
8762
+ className: css$24.published,
7076
8763
  children: source.publishedAt
7077
8764
  })
7078
8765
  ]
@@ -7087,28 +8774,28 @@ function SourceItem({ source, ordinal }) {
7087
8774
  function WebSearchBlock({ answer, sources, truncated, labels, className }) {
7088
8775
  const empty = (answer === void 0 || answer === "") && sources.length === 0;
7089
8776
  return jsxs("div", {
7090
- className: clsx(css$23.block, className),
8777
+ className: clsx(css$24.block, className),
7091
8778
  "data-web": "search",
7092
8779
  children: [
7093
8780
  answer !== void 0 && answer !== "" && jsx("div", {
7094
- className: css$23.answer,
8781
+ className: css$24.answer,
7095
8782
  children: jsx(MarkdownText, {
7096
8783
  text: answer,
7097
8784
  labels: labels.markdown
7098
8785
  })
7099
8786
  }),
7100
8787
  empty ? jsx("div", {
7101
- className: css$23.empty,
8788
+ className: css$24.empty,
7102
8789
  children: labels.noResults
7103
8790
  }) : jsx("ol", {
7104
- className: css$23.sources,
8791
+ className: css$24.sources,
7105
8792
  children: sources.map((source, index) => jsx(SourceItem, {
7106
8793
  source,
7107
8794
  ordinal: index + 1
7108
8795
  }, index))
7109
8796
  }),
7110
8797
  truncated && jsx("div", {
7111
- className: css$23.truncated,
8798
+ className: css$24.truncated,
7112
8799
  children: labels.sourcesTruncated
7113
8800
  })
7114
8801
  ]
@@ -7121,23 +8808,23 @@ function WebSearchBlock({ answer, sources, truncated, labels, className }) {
7121
8808
  */
7122
8809
  function WebFetchBlock({ url, statusCode, truncated, labels, className }) {
7123
8810
  return jsxs("div", {
7124
- className: clsx(css$23.block, css$23.fetch, className),
8811
+ className: clsx(css$24.block, css$24.fetch, className),
7125
8812
  "data-web": "fetch",
7126
8813
  children: [jsx(SafeLink, {
7127
8814
  url,
7128
8815
  label: url,
7129
- className: css$23.fetchUrl
8816
+ className: css$24.fetchUrl
7130
8817
  }), jsxs("div", {
7131
- className: css$23.fetchMeta,
8818
+ className: css$24.fetchMeta,
7132
8819
  children: [jsxs("span", {
7133
- className: css$23.status,
8820
+ className: css$24.status,
7134
8821
  children: [
7135
8822
  labels.http,
7136
8823
  " ",
7137
8824
  statusCode
7138
8825
  ]
7139
8826
  }), truncated && jsx("span", {
7140
- className: css$23.truncated,
8827
+ className: css$24.truncated,
7141
8828
  children: labels.contentTruncated
7142
8829
  })]
7143
8830
  })]
@@ -7171,10 +8858,10 @@ function JsonBlock({ label, payload, defaultOpen = false, truncatedLabel }) {
7171
8858
  truncatedLabel
7172
8859
  ]);
7173
8860
  return jsxs("div", {
7174
- className: css$24.root,
8861
+ className: css$25.root,
7175
8862
  children: [jsxs("button", {
7176
8863
  type: "button",
7177
- className: css$24.toggle,
8864
+ className: css$25.toggle,
7178
8865
  onClick: () => {
7179
8866
  setOpen((v) => !v);
7180
8867
  },
@@ -7184,7 +8871,7 @@ function JsonBlock({ label, payload, defaultOpen = false, truncatedLabel }) {
7184
8871
  label
7185
8872
  ]
7186
8873
  }), open && jsx("pre", {
7187
- className: css$24.body,
8874
+ className: css$25.body,
7188
8875
  children: body
7189
8876
  })]
7190
8877
  });
@@ -7261,6 +8948,6 @@ function extractMarkdownPlainText(markdown, options = {}) {
7261
8948
  }
7262
8949
  }
7263
8950
  //#endregion
7264
- export { BrandWordmark, Button, CodeBlock, ConnectionIndicator, DEFAULT_DIFF_MAX_LINES, DEFAULT_READ_MAX_LINES, DEFAULT_SEARCH_MAX_LINES, DEFAULT_TERMINAL_MAX_LINES, DiffBlock, DisclosureRow, DocumentFileIcon, FISH_LOGO_PATH, FISH_LOGO_VIEWBOX, FishLogo, HoverCard, IconAgentPresetOutline16, IconAlarmClockOutline16, IconApiOutline14, IconArchiveOutline20, IconBranchOutline16, IconBrowseOutline16, IconCheckOutline14, IconCheckOutline16, IconChecklistOutline14, IconChevronDownOutline14, IconChevronLeftOutline14, IconChevronRightOutline14, IconChevronUpOutline14, IconClockOutline16, IconCloseFill14, IconCloseOutline16, IconCodeOutline16, IconContextInjectionOutline16, IconCopyOutline16, IconCordisPluginOutline14, IconDarkOutline16, IconDataOutline16, IconDatabaseOutline16, IconDislikeFill16, IconDislikeOutline16, IconDownloadOutline16, IconEditOutline16, IconEllipsisOutline16, IconEnhanceOutline16, IconFolderClose16, IconFolderOpen16, IconFolderOpenOutline16, IconFollowsystemOutline16, IconFullscreenOutline16, IconGlobeOutline14, IconGoalOutline16, IconInspectOutline12, IconLightOutline16, IconLikeFill16, IconLikeOutline16, IconLinkOutline14, IconLinkOutline16, IconListPenOutline16, IconLoadingOutline16, IconNewChatOutline16, IconPanelLeftOutline16, IconPaperclipOutline16, IconPauseOutline16, IconPersonalizationOutline16, IconPlayOutline16, IconPlusOutline16, IconProjectAddOutline16, IconQuestionOutline14, IconQueueOutline14, IconRefreshOutline14, IconRefreshOutline16, IconRightUpOutline14, IconRightUpOutline16, IconSearchOutline16, IconSendOutline14, IconSendOutline16, IconSettingsOutline14, IconSettingsOutline16, IconShareOutline16, IconSkillOutline16, IconSparkle16, IconStopFill16, IconThinkOutline14, IconThinkOutline16, IconTrashOutline16, IconTreeCorner8x10, IconTriangleRightFill14, IconUserOutline16, IconWarningOutline16, Input, JsonBlock, JsonTree, LinkIcon, MarkdownText, Menu, Modal, OnboardingSurface, Pill, ReadBlock, ReferenceIcon, RiskConfirmation, SearchBlock, StateDot, Switch, Tag, TerminalBlock, Toast, Tooltip, WebBlock, classifyLinkPath, diffTotals, extractMarkdownPlainText, fileSizeText, projectUserText, rankByName, relativeTime, useAnchoredMaxHeight, useAnchoredPosition, useDismissOnOutsidePointer, writeClipboard };
8951
+ export { BrandWordmark, Button, 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, HoverCard, IconAgentPresetOutline16, IconAlarmClockOutline16, IconApiOutline14, IconArchiveOutline20, IconBranchOutline16, IconBrowseOutline16, IconCheckOutline14, IconCheckOutline16, IconChecklistOutline14, IconChevronDownOutline14, IconChevronLeftOutline14, IconChevronRightOutline14, IconChevronUpOutline14, IconClockOutline16, IconCloseFill14, IconCloseOutline16, IconCodeOutline16, IconContextInjectionOutline16, IconCopyOutline16, IconCordisPluginOutline14, IconDarkOutline16, IconDataOutline16, IconDatabaseOutline16, IconDislikeFill16, IconDislikeOutline16, IconDownloadOutline16, IconEditOutline16, IconEllipsisOutline16, IconEnhanceOutline16, IconFolderClose16, IconFolderOpen16, IconFolderOpenOutline16, IconFollowsystemOutline16, IconFullscreenOutline16, IconGaugeOutline16, IconGlobeOutline14, IconGoalOutline16, IconInspectOutline12, IconLightOutline16, IconLikeFill16, IconLikeOutline16, IconLinkOutline14, IconLinkOutline16, IconListPenOutline16, IconLoadingOutline16, IconNewChatOutline16, IconPanelLeftOutline16, IconPaperclipOutline16, IconPauseOutline16, IconPersonalizationOutline16, IconPlayOutline16, IconPlusOutline16, IconProjectAddOutline16, IconQuestionOutline14, IconQueueOutline14, IconRefreshOutline14, IconRefreshOutline16, IconRightUpOutline14, IconRightUpOutline16, IconSearchOutline16, IconSendOutline14, IconSendOutline16, IconSettingsOutline14, IconSettingsOutline16, IconShareOutline16, IconSkillOutline16, IconSparkle16, IconStopFill16, IconThinkOutline14, IconThinkOutline16, IconTrashOutline16, IconTreeCorner8x10, IconTriangleRightFill14, IconUserOutline16, IconWarningOutline16, Input, JsonBlock, JsonTree, LinkIcon, MarkdownText, Menu, Modal, OnboardingSurface, Pill, ReadBlock, ReferenceIcon, RiskConfirmation, SearchBlock, StateDot, Switch, Tag, TerminalBlock, Toast, Tooltip, WebBlock, classifyFileType, classifyLinkPath, diffTotals, extractMarkdownPlainText, fileExtension, fileSizeText, projectUserText, rankByName, relativeTime, useAnchoredMaxHeight, useAnchoredPosition, useDismissOnOutsidePointer, writeClipboard };
7265
8952
 
7266
8953
  //# sourceMappingURL=index.js.map