glitchgrab 1.48.0 → 1.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -959,10 +959,11 @@ import { jsx, jsxs } from "react/jsx-runtime";
959
959
  import { useEffect as useEffect2, useMemo, useRef as useRef2, useState as useState2 } from "react";
960
960
  import { createPortal } from "react-dom";
961
961
  import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
962
+ import { Fragment as Fragment2, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
962
963
  import { useCallback, useEffect as useEffect3, useRef as useRef3, useState as useState3 } from "react";
963
964
  import { createPortal as createPortal2 } from "react-dom";
964
- import { Fragment as Fragment2, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
965
965
  import { Fragment as Fragment3, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
966
+ import { Fragment as Fragment4, jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
966
967
  var MAX_SCREENSHOT_DATA_URL_LENGTH = 18e5;
967
968
  var QUALITY_LADDER = [0.92, 0.85, 0.75];
968
969
  var DOWNSCALE_FACTOR = 0.7;
@@ -1393,6 +1394,412 @@ function getTypeLabel(type) {
1393
1394
  return "Other";
1394
1395
  }
1395
1396
  }
1397
+ var CODE = /`([^`\n]+)`/y;
1398
+ var MD_LINK = /\[([^\]\n]*)\]\((https?:\/\/[^\s)]+)\)/y;
1399
+ var BOLD_STAR = /\*\*(\S(?:[^\n]*?\S)?)\*\*/y;
1400
+ var BOLD_UNDER = /__(\S(?:[^\n]*?\S)?)__/y;
1401
+ var ITALIC_STAR = /\*(\S(?:[^*\n]*?\S)?)\*/y;
1402
+ var ITALIC_UNDER = /_(\S(?:[^_\n]*?\S)?)_/y;
1403
+ var STRIKE = /~~(\S(?:[^\n]*?\S)?)~~/y;
1404
+ var FULL_URL = /https?:\/\/[^\s<>]+/y;
1405
+ var BARE_URL = /(?:[a-z0-9-]+\.)+[a-z]{2,24}\/[^\s<>]*/y;
1406
+ var WORD = /[A-Za-z0-9]/;
1407
+ var URL_EDGE = /[A-Za-z0-9@./-]/;
1408
+ var TRAILING_PUNCT = /[.,;:!?'")\]*_~]+$/;
1409
+ var ESCAPABLE = "\\`*_{}[]()#+-.!|~>";
1410
+ var MONO = "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace";
1411
+ function at(re, text, i) {
1412
+ re.lastIndex = i;
1413
+ return re.exec(text);
1414
+ }
1415
+ function isSafeHref(href) {
1416
+ try {
1417
+ const { protocol } = new URL(href);
1418
+ return protocol === "http:" || protocol === "https:";
1419
+ } catch (e) {
1420
+ return false;
1421
+ }
1422
+ }
1423
+ function renderInline(text, theme, key) {
1424
+ var _a, _b;
1425
+ const out = [];
1426
+ let plain = "";
1427
+ let i = 0;
1428
+ const flush = () => {
1429
+ if (plain) out.push(plain);
1430
+ plain = "";
1431
+ };
1432
+ const link = (href, label, k) => /* @__PURE__ */ jsx2(
1433
+ "a",
1434
+ {
1435
+ href,
1436
+ target: "_blank",
1437
+ rel: "noopener noreferrer nofollow",
1438
+ title: href,
1439
+ style: {
1440
+ color: "inherit",
1441
+ textDecoration: "underline",
1442
+ textDecorationColor: theme.accent,
1443
+ textUnderlineOffset: "2px",
1444
+ wordBreak: "break-word"
1445
+ },
1446
+ children: label
1447
+ },
1448
+ k
1449
+ );
1450
+ while (i < text.length) {
1451
+ const ch = text[i];
1452
+ const prev = i > 0 ? text[i - 1] : "";
1453
+ const k = `${key}.${i}`;
1454
+ let m;
1455
+ if (ch === "\\" && i + 1 < text.length && ESCAPABLE.includes(text[i + 1])) {
1456
+ plain += text[i + 1];
1457
+ i += 2;
1458
+ continue;
1459
+ }
1460
+ if (ch === "`" && (m = at(CODE, text, i))) {
1461
+ flush();
1462
+ out.push(
1463
+ /* @__PURE__ */ jsx2(
1464
+ "code",
1465
+ {
1466
+ style: {
1467
+ fontFamily: MONO,
1468
+ fontSize: "0.92em",
1469
+ padding: "1px 4px",
1470
+ borderRadius: "4px",
1471
+ backgroundColor: theme.bg,
1472
+ border: `1px solid ${theme.border}`,
1473
+ wordBreak: "break-word"
1474
+ },
1475
+ children: m[1]
1476
+ },
1477
+ k
1478
+ )
1479
+ );
1480
+ i += m[0].length;
1481
+ continue;
1482
+ }
1483
+ const image = ch === "!" && text[i + 1] === "[";
1484
+ if ((ch === "[" || image) && (m = at(MD_LINK, text, image ? i + 1 : i)) && isSafeHref(m[2])) {
1485
+ flush();
1486
+ const label = m[1] ? renderInline(m[1], theme, k) : m[2];
1487
+ out.push(link(m[2], label, k));
1488
+ i += m[0].length + (image ? 1 : 0);
1489
+ continue;
1490
+ }
1491
+ if (ch === "~" && text[i + 1] === "~" && (m = at(STRIKE, text, i))) {
1492
+ flush();
1493
+ out.push(/* @__PURE__ */ jsx2("del", { children: renderInline(m[1], theme, k) }, k));
1494
+ i += m[0].length;
1495
+ continue;
1496
+ }
1497
+ if ((ch === "*" || ch === "_") && !WORD.test(prev)) {
1498
+ const double = text[i + 1] === ch;
1499
+ const bold = double ? at(ch === "*" ? BOLD_STAR : BOLD_UNDER, text, i) : null;
1500
+ const italic = bold ? null : at(ch === "*" ? ITALIC_STAR : ITALIC_UNDER, text, i);
1501
+ m = bold != null ? bold : italic;
1502
+ if (m && !WORD.test((_a = text[i + m[0].length]) != null ? _a : "")) {
1503
+ flush();
1504
+ const inner = renderInline(m[1], theme, k);
1505
+ out.push(
1506
+ bold ? /* @__PURE__ */ jsx2("strong", { style: { fontWeight: 700 }, children: inner }, k) : /* @__PURE__ */ jsx2("em", { style: { fontStyle: "italic" }, children: inner }, k)
1507
+ );
1508
+ i += m[0].length;
1509
+ continue;
1510
+ }
1511
+ }
1512
+ if (!URL_EDGE.test(prev)) {
1513
+ m = ch === "h" ? at(FULL_URL, text, i) : null;
1514
+ const bare = m ? null : /[a-z0-9]/.test(ch) ? at(BARE_URL, text, i) : null;
1515
+ const raw = (_b = m == null ? void 0 : m[0]) != null ? _b : bare == null ? void 0 : bare[0];
1516
+ if (raw) {
1517
+ const shown = raw.replace(TRAILING_PUNCT, "");
1518
+ const href = m ? shown : `https://${shown}`;
1519
+ if (shown.includes("/") && isSafeHref(href)) {
1520
+ flush();
1521
+ out.push(link(href, shown, k));
1522
+ i += shown.length;
1523
+ continue;
1524
+ }
1525
+ }
1526
+ }
1527
+ plain += ch;
1528
+ i += 1;
1529
+ }
1530
+ flush();
1531
+ return out;
1532
+ }
1533
+ var FENCE = /^\s{0,3}(`{3,}|~{3,})/;
1534
+ var HEADING = /^\s{0,3}(#{1,6})\s+(.+?)(?:\s+#+)?\s*$/;
1535
+ var RULE = /^\s{0,3}([-*_])(?:\s*\1){2,}\s*$/;
1536
+ var QUOTE = /^\s{0,3}>\s?(.*)$/;
1537
+ var LIST_ITEM = /^(\s*)([-*+]|\d{1,9}[.)])\s+(.*)$/;
1538
+ var TABLE_SEP = /^\s*\|?\s*:?-+:?\s*(?:\|\s*:?-+:?\s*)*\|?\s*$/;
1539
+ var TASK = /^\[([ xX])\]\s+(.*)$/;
1540
+ var STACK = {
1541
+ display: "flex",
1542
+ flexDirection: "column",
1543
+ gap: "6px",
1544
+ minWidth: 0
1545
+ };
1546
+ function splitRow(line) {
1547
+ let s = line.trim();
1548
+ if (s.startsWith("|")) s = s.slice(1);
1549
+ if (s.endsWith("|") && !s.endsWith("\\|")) s = s.slice(0, -1);
1550
+ const cells = [];
1551
+ let cell = "";
1552
+ for (let i = 0; i < s.length; i++) {
1553
+ if (s[i] === "\\" && s[i + 1] === "|") {
1554
+ cell += "|";
1555
+ i++;
1556
+ } else if (s[i] === "|") {
1557
+ cells.push(cell.trim());
1558
+ cell = "";
1559
+ } else {
1560
+ cell += s[i];
1561
+ }
1562
+ }
1563
+ cells.push(cell.trim());
1564
+ return cells;
1565
+ }
1566
+ function tableAt(lines, i) {
1567
+ const head = lines[i];
1568
+ const sep = lines[i + 1];
1569
+ if (!(head == null ? void 0 : head.includes("|")) || !(sep == null ? void 0 : sep.includes("|")) || !TABLE_SEP.test(sep)) return null;
1570
+ const aligns = splitRow(sep);
1571
+ return aligns.length === splitRow(head).length ? aligns : null;
1572
+ }
1573
+ function startsBlock(lines, i) {
1574
+ const line = lines[i];
1575
+ return FENCE.test(line) || HEADING.test(line) || RULE.test(line) || QUOTE.test(line) || LIST_ITEM.test(line) || tableAt(lines, i) !== null;
1576
+ }
1577
+ function renderBlocks(lines, theme, key) {
1578
+ const out = [];
1579
+ let i = 0;
1580
+ while (i < lines.length) {
1581
+ const line = lines[i];
1582
+ const k = `${key}-${i}`;
1583
+ let m;
1584
+ if (!line.trim()) {
1585
+ i++;
1586
+ continue;
1587
+ }
1588
+ if (m = FENCE.exec(line)) {
1589
+ const fence = m[1];
1590
+ const body = [];
1591
+ i++;
1592
+ while (i < lines.length) {
1593
+ const t2 = lines[i].trim();
1594
+ if (t2.length >= fence.length && [...t2].every((c) => c === fence[0])) break;
1595
+ body.push(lines[i]);
1596
+ i++;
1597
+ }
1598
+ i++;
1599
+ out.push(
1600
+ /* @__PURE__ */ jsx2(
1601
+ "pre",
1602
+ {
1603
+ style: {
1604
+ margin: 0,
1605
+ padding: "8px 10px",
1606
+ borderRadius: "6px",
1607
+ backgroundColor: theme.bg,
1608
+ border: `1px solid ${theme.border}`,
1609
+ overflowX: "auto",
1610
+ maxWidth: "100%",
1611
+ fontFamily: MONO,
1612
+ fontSize: "12px",
1613
+ lineHeight: 1.5,
1614
+ whiteSpace: "pre"
1615
+ },
1616
+ children: /* @__PURE__ */ jsx2("code", { style: { fontFamily: "inherit" }, children: body.join("\n") })
1617
+ },
1618
+ k
1619
+ )
1620
+ );
1621
+ continue;
1622
+ }
1623
+ if (m = HEADING.exec(line)) {
1624
+ const level = m[1].length;
1625
+ out.push(
1626
+ /* @__PURE__ */ jsx2(
1627
+ "div",
1628
+ {
1629
+ role: "heading",
1630
+ "aria-level": level,
1631
+ style: {
1632
+ fontWeight: 700,
1633
+ fontSize: level === 1 ? "1.15em" : level === 2 ? "1.08em" : "1em",
1634
+ lineHeight: 1.35
1635
+ },
1636
+ children: renderInline(m[2], theme, k)
1637
+ },
1638
+ k
1639
+ )
1640
+ );
1641
+ i++;
1642
+ continue;
1643
+ }
1644
+ if (RULE.test(line)) {
1645
+ out.push(/* @__PURE__ */ jsx2("div", { role: "separator", style: { borderTop: `1px solid ${theme.border}` } }, k));
1646
+ i++;
1647
+ continue;
1648
+ }
1649
+ if (QUOTE.test(line)) {
1650
+ const inner = [];
1651
+ while (i < lines.length && (m = QUOTE.exec(lines[i]))) {
1652
+ inner.push(m[1]);
1653
+ i++;
1654
+ }
1655
+ out.push(
1656
+ /* @__PURE__ */ jsx2(
1657
+ "blockquote",
1658
+ {
1659
+ style: {
1660
+ ...STACK,
1661
+ margin: 0,
1662
+ paddingLeft: "10px",
1663
+ // `border` is near the bubble's own colour; the bar vanished.
1664
+ borderLeft: `3px solid ${theme.accent}66`,
1665
+ color: theme.textMuted
1666
+ },
1667
+ children: renderBlocks(inner, theme, k)
1668
+ },
1669
+ k
1670
+ )
1671
+ );
1672
+ continue;
1673
+ }
1674
+ const aligns = tableAt(lines, i);
1675
+ if (aligns) {
1676
+ const head = splitRow(line);
1677
+ const rows = [];
1678
+ i += 2;
1679
+ while (i < lines.length && lines[i].trim() && lines[i].includes("|")) {
1680
+ rows.push(splitRow(lines[i]));
1681
+ i++;
1682
+ }
1683
+ const align = (c) => {
1684
+ var _a;
1685
+ const a = (_a = aligns[c]) != null ? _a : "";
1686
+ if (a.startsWith(":") && a.endsWith(":")) return "center";
1687
+ return a.endsWith(":") ? "right" : "left";
1688
+ };
1689
+ const cell = (c) => ({
1690
+ border: `1px solid ${theme.border}`,
1691
+ padding: "4px 8px",
1692
+ textAlign: align(c),
1693
+ verticalAlign: "top"
1694
+ });
1695
+ out.push(
1696
+ /* @__PURE__ */ jsx2("div", { style: { overflowX: "auto", maxWidth: "100%" }, children: /* @__PURE__ */ jsxs2("table", { style: { borderCollapse: "collapse", fontSize: "12px", margin: 0 }, children: [
1697
+ /* @__PURE__ */ jsx2("thead", { children: /* @__PURE__ */ jsx2("tr", { children: head.map((h, c) => /* @__PURE__ */ jsx2("th", { style: { ...cell(c), fontWeight: 600, backgroundColor: theme.bg }, children: renderInline(h, theme, `${k}h${c}`) }, c)) }) }),
1698
+ /* @__PURE__ */ jsx2("tbody", { children: rows.map((row, r) => /* @__PURE__ */ jsx2("tr", { children: head.map((_, c) => {
1699
+ var _a;
1700
+ return /* @__PURE__ */ jsx2("td", { style: cell(c), children: renderInline((_a = row[c]) != null ? _a : "", theme, `${k}r${r}c${c}`) }, c);
1701
+ }) }, r)) })
1702
+ ] }) }, k)
1703
+ );
1704
+ continue;
1705
+ }
1706
+ if (m = LIST_ITEM.exec(line)) {
1707
+ const baseIndent = m[1].length;
1708
+ const ordered = /\d/.test(m[2]);
1709
+ const start = ordered ? parseInt(m[2], 10) : 1;
1710
+ const items = [];
1711
+ while (i < lines.length) {
1712
+ const l = lines[i];
1713
+ const lm = LIST_ITEM.exec(l);
1714
+ const indent = l.length - l.trimStart().length;
1715
+ if (lm && indent <= baseIndent + 1) {
1716
+ if (/\d/.test(lm[2]) !== ordered) break;
1717
+ items.push([lm[3]]);
1718
+ i++;
1719
+ continue;
1720
+ }
1721
+ const current = items[items.length - 1];
1722
+ if (!l.trim()) {
1723
+ const next = lines[i + 1];
1724
+ const nextIndent = next ? next.length - next.trimStart().length : 0;
1725
+ if ((next == null ? void 0 : next.trim()) && (nextIndent > baseIndent + 1 || LIST_ITEM.test(next))) {
1726
+ current.push("");
1727
+ i++;
1728
+ continue;
1729
+ }
1730
+ break;
1731
+ }
1732
+ if (indent > baseIndent + 1) {
1733
+ current.push(l.slice(Math.min(indent, baseIndent + 2)));
1734
+ i++;
1735
+ continue;
1736
+ }
1737
+ break;
1738
+ }
1739
+ const ListTag = ordered ? "ol" : "ul";
1740
+ out.push(
1741
+ /* @__PURE__ */ jsx2(
1742
+ ListTag,
1743
+ {
1744
+ start: ordered && start !== 1 ? start : void 0,
1745
+ style: {
1746
+ margin: 0,
1747
+ paddingLeft: "20px",
1748
+ listStyleType: ordered ? "decimal" : "disc",
1749
+ listStylePosition: "outside"
1750
+ },
1751
+ children: items.map((itemLines, n) => {
1752
+ const ik = `${k}i${n}`;
1753
+ const task = TASK.exec(itemLines[0]);
1754
+ const body = task ? [task[2], ...itemLines.slice(1)] : itemLines;
1755
+ const box = task ? /* @__PURE__ */ jsx2("span", { "aria-hidden": "true", style: { marginRight: "6px" }, children: task[1] === " " ? "\u2610" : "\u2611" }) : null;
1756
+ const simple = body.filter((x) => x.trim()).length === 1;
1757
+ return /* @__PURE__ */ jsx2(
1758
+ "li",
1759
+ {
1760
+ style: {
1761
+ display: "list-item",
1762
+ marginTop: n ? "3px" : 0,
1763
+ paddingLeft: "2px",
1764
+ listStyleType: task ? "none" : void 0
1765
+ },
1766
+ children: simple ? /* @__PURE__ */ jsxs2(Fragment, { children: [
1767
+ box,
1768
+ renderInline(body[0], theme, ik)
1769
+ ] }) : /* @__PURE__ */ jsxs2("div", { style: STACK, children: [
1770
+ box ? /* @__PURE__ */ jsxs2("div", { children: [
1771
+ box,
1772
+ renderInline(body[0], theme, ik)
1773
+ ] }) : null,
1774
+ renderBlocks(box ? body.slice(1) : body, theme, ik)
1775
+ ] })
1776
+ },
1777
+ ik
1778
+ );
1779
+ })
1780
+ },
1781
+ k
1782
+ )
1783
+ );
1784
+ continue;
1785
+ }
1786
+ const para = [];
1787
+ while (i < lines.length && lines[i].trim() && !(para.length && startsBlock(lines, i))) {
1788
+ para.push(lines[i].trim());
1789
+ i++;
1790
+ }
1791
+ out.push(
1792
+ /* @__PURE__ */ jsx2("div", { children: para.flatMap((p, n) => {
1793
+ const inline = renderInline(p, theme, `${k}p${n}`);
1794
+ return n ? [/* @__PURE__ */ jsx2("br", {}, `${k}br${n}`), ...inline] : inline;
1795
+ }) }, k)
1796
+ );
1797
+ }
1798
+ return out;
1799
+ }
1800
+ function ChatMarkdown({ text, theme }) {
1801
+ return /* @__PURE__ */ jsx2("div", { style: STACK, children: renderBlocks(text.replace(/\r\n?/g, "\n").split("\n"), theme, "md") });
1802
+ }
1396
1803
  function pickAssistImages(all) {
1397
1804
  const picked = [];
1398
1805
  let total = 0;
@@ -1435,7 +1842,7 @@ function isAffirmativeReply(text) {
1435
1842
  text.trim()
1436
1843
  );
1437
1844
  }
1438
- var AUTO_FILE_SECONDS = 4;
1845
+ var AUTO_FILE_SECONDS = 3;
1439
1846
  var NARROW_QUERY = "(max-width: 640px)";
1440
1847
  function useIsNarrow() {
1441
1848
  const [narrow, setNarrow] = useState2(false);
@@ -1452,7 +1859,7 @@ function useIsNarrow() {
1452
1859
  return narrow;
1453
1860
  }
1454
1861
  function Sparkle({ color, size = 14 }) {
1455
- return /* @__PURE__ */ jsx2("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx2(
1862
+ return /* @__PURE__ */ jsx3("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx3(
1456
1863
  "path",
1457
1864
  {
1458
1865
  d: "M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5L12 3zM19 15l.75 2.25L22 18l-2.25.75L19 21l-.75-2.25L16 18l2.25-.75L19 15z",
@@ -1468,7 +1875,7 @@ function Avatar({
1468
1875
  initials
1469
1876
  }) {
1470
1877
  const isAi = who === "assistant";
1471
- return /* @__PURE__ */ jsx2(
1878
+ return /* @__PURE__ */ jsx3(
1472
1879
  "span",
1473
1880
  {
1474
1881
  "aria-hidden": "true",
@@ -1487,9 +1894,9 @@ function Avatar({
1487
1894
  fontSize: "10px",
1488
1895
  fontWeight: 700
1489
1896
  },
1490
- children: isAi ? /* @__PURE__ */ jsx2(Sparkle, { color: t2.accent, size: 12 }) : initials ? initials : /* @__PURE__ */ jsxs2("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
1491
- /* @__PURE__ */ jsx2("circle", { cx: "12", cy: "8", r: "3.4", stroke: "currentColor", strokeWidth: "1.8" }),
1492
- /* @__PURE__ */ jsx2(
1897
+ children: isAi ? /* @__PURE__ */ jsx3(Sparkle, { color: t2.accent, size: 12 }) : initials ? initials : /* @__PURE__ */ jsxs3("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
1898
+ /* @__PURE__ */ jsx3("circle", { cx: "12", cy: "8", r: "3.4", stroke: "currentColor", strokeWidth: "1.8" }),
1899
+ /* @__PURE__ */ jsx3(
1493
1900
  "path",
1494
1901
  {
1495
1902
  d: "M5 20c0-3.6 3.1-5.6 7-5.6s7 2 7 5.6",
@@ -1769,7 +2176,7 @@ function AssistSheet({
1769
2176
  const empty = phase === "chat" && messages.length === 0 && !busy;
1770
2177
  function renderKnownIssue({ title, footer }) {
1771
2178
  if (!duplicate) return null;
1772
- return /* @__PURE__ */ jsxs2(
2179
+ return /* @__PURE__ */ jsxs3(
1773
2180
  "div",
1774
2181
  {
1775
2182
  "data-gg-known-issue": "",
@@ -1786,15 +2193,15 @@ function AssistSheet({
1786
2193
  minWidth: 0
1787
2194
  },
1788
2195
  children: [
1789
- /* @__PURE__ */ jsx2("span", { style: { color: t2.text, fontWeight: 600 }, children: duplicate.kind === "related" ? title ? "Your request goes onto this issue" : `Connected to #${duplicate.number}` : title ? "Our team is already on this" : `Our team is already on #${duplicate.number}` }),
1790
- title && /* @__PURE__ */ jsxs2("span", { style: { color: t2.textMuted, wordBreak: "break-word" }, children: [
2196
+ /* @__PURE__ */ jsx3("span", { style: { color: t2.text, fontWeight: 600 }, children: duplicate.kind === "related" ? title ? "Your request goes onto this issue" : `Connected to #${duplicate.number}` : title ? "Our team is already on this" : `Our team is already on #${duplicate.number}` }),
2197
+ title && /* @__PURE__ */ jsxs3("span", { style: { color: t2.textMuted, wordBreak: "break-word" }, children: [
1791
2198
  "#",
1792
2199
  duplicate.number,
1793
2200
  " ",
1794
2201
  duplicate.title
1795
2202
  ] }),
1796
- duplicate.status && duplicate.kind !== "related" && /* @__PURE__ */ jsx2("span", { style: { color: t2.text, fontWeight: 600 }, children: duplicate.status }),
1797
- footer && /* @__PURE__ */ jsx2("span", { style: { color: t2.textMuted }, children: duplicate.kind === "related" ? "Added as a separate request on it, not a repeat \u2014 the team sees both." : footer })
2203
+ duplicate.status && duplicate.kind !== "related" && /* @__PURE__ */ jsx3("span", { style: { color: t2.text, fontWeight: 600 }, children: duplicate.status }),
2204
+ footer && /* @__PURE__ */ jsx3("span", { style: { color: t2.textMuted }, children: duplicate.kind === "related" ? "Added as a separate request on it, not a repeat \u2014 the team sees both." : footer })
1798
2205
  ]
1799
2206
  }
1800
2207
  );
@@ -1817,16 +2224,16 @@ function AssistSheet({
1817
2224
  animation: "gg-sheet-in .22s cubic-bezier(.2,.8,.2,1)"
1818
2225
  };
1819
2226
  return createPortal(
1820
- /* @__PURE__ */ jsxs2(Fragment, { children: [
1821
- /* @__PURE__ */ jsx2("style", { children: `
2227
+ /* @__PURE__ */ jsxs3(Fragment2, { children: [
2228
+ /* @__PURE__ */ jsx3("style", { children: `
1822
2229
  @keyframes gg-sheet-in{from{transform:translateX(24px);opacity:0}to{transform:translateX(0);opacity:1}}
1823
2230
  @keyframes gg-sheet-up{from{transform:translateY(24px);opacity:0}to{transform:translateY(0);opacity:1}}
1824
2231
  @keyframes gg-sheet-fade{from{opacity:0}to{opacity:1}}
1825
2232
  @keyframes gg-autofile{from{transform:scaleX(0)}to{transform:scaleX(1)}}
1826
2233
  @keyframes gg-dot{0%,80%,100%{transform:translateY(0);opacity:.4}40%{transform:translateY(-3px);opacity:1}}
1827
- [data-gg-sheet-send]:focus-visible,[data-gg-chip]:focus-visible,[data-gg-assist-remove]:focus-visible{outline:2px solid currentColor;outline-offset:2px}
2234
+ [data-gg-sheet-send]:focus-visible,[data-gg-chip]:focus-visible,[data-gg-assist-remove]:focus-visible,[data-gg-stop-auto-file]:focus-visible{outline:2px solid currentColor;outline-offset:2px}
1828
2235
  ` }),
1829
- /* @__PURE__ */ jsx2(
2236
+ /* @__PURE__ */ jsx3(
1830
2237
  "div",
1831
2238
  {
1832
2239
  "data-glitchgrab-layer": "",
@@ -1846,7 +2253,7 @@ function AssistSheet({
1846
2253
  },
1847
2254
  onClick: () => leave("closed"),
1848
2255
  onPointerDown: (e) => e.stopPropagation(),
1849
- children: /* @__PURE__ */ jsxs2(
2256
+ children: /* @__PURE__ */ jsxs3(
1850
2257
  "div",
1851
2258
  {
1852
2259
  onClick: (e) => e.stopPropagation(),
@@ -1867,7 +2274,7 @@ function AssistSheet({
1867
2274
  isolation: "isolate"
1868
2275
  },
1869
2276
  children: [
1870
- /* @__PURE__ */ jsxs2(
2277
+ /* @__PURE__ */ jsxs3(
1871
2278
  "div",
1872
2279
  {
1873
2280
  "data-gg-sheet-header": "",
@@ -1882,8 +2289,8 @@ function AssistSheet({
1882
2289
  minWidth: 0
1883
2290
  },
1884
2291
  children: [
1885
- /* @__PURE__ */ jsxs2("div", { style: { minWidth: 0 }, children: [
1886
- /* @__PURE__ */ jsxs2(
2292
+ /* @__PURE__ */ jsxs3("div", { style: { minWidth: 0 }, children: [
2293
+ /* @__PURE__ */ jsxs3(
1887
2294
  "div",
1888
2295
  {
1889
2296
  style: {
@@ -1894,9 +2301,9 @@ function AssistSheet({
1894
2301
  fontWeight: 600
1895
2302
  },
1896
2303
  children: [
1897
- /* @__PURE__ */ jsx2(Sparkle, { color: t2.accent }),
2304
+ /* @__PURE__ */ jsx3(Sparkle, { color: t2.accent }),
1898
2305
  "Describe it with AI",
1899
- /* @__PURE__ */ jsx2(
2306
+ /* @__PURE__ */ jsx3(
1900
2307
  "span",
1901
2308
  {
1902
2309
  style: {
@@ -1915,13 +2322,13 @@ function AssistSheet({
1915
2322
  ]
1916
2323
  }
1917
2324
  ),
1918
- /* @__PURE__ */ jsxs2("div", { style: { fontSize: "11.5px", color: t2.textMuted, marginTop: "3px" }, children: [
2325
+ /* @__PURE__ */ jsxs3("div", { style: { fontSize: "11.5px", color: t2.textMuted, marginTop: "3px" }, children: [
1919
2326
  phase === "type" ? null : reportTypeLabel,
1920
2327
  phase !== "type" && severityAsked && severity ? ` \xB7 ${SEVERITY_LABELS[severity]}` : null,
1921
- projectSlot ? /* @__PURE__ */ jsx2("span", { style: { marginLeft: "6px" }, children: projectSlot }) : null
2328
+ projectSlot ? /* @__PURE__ */ jsx3("span", { style: { marginLeft: "6px" }, children: projectSlot }) : null
1922
2329
  ] })
1923
2330
  ] }),
1924
- /* @__PURE__ */ jsx2(
2331
+ /* @__PURE__ */ jsx3(
1925
2332
  "button",
1926
2333
  {
1927
2334
  type: "button",
@@ -1948,7 +2355,7 @@ function AssistSheet({
1948
2355
  ]
1949
2356
  }
1950
2357
  ),
1951
- /* @__PURE__ */ jsx2(
2358
+ /* @__PURE__ */ jsx3(
1952
2359
  "div",
1953
2360
  {
1954
2361
  ref: scrollRef,
@@ -1960,7 +2367,7 @@ function AssistSheet({
1960
2367
  display: "flex",
1961
2368
  flexDirection: "column"
1962
2369
  },
1963
- children: /* @__PURE__ */ jsxs2(
2370
+ children: /* @__PURE__ */ jsxs3(
1964
2371
  "div",
1965
2372
  {
1966
2373
  style: {
@@ -1971,10 +2378,10 @@ function AssistSheet({
1971
2378
  minWidth: 0
1972
2379
  },
1973
2380
  children: [
1974
- phase === "type" && /* @__PURE__ */ jsxs2("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
1975
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "8px" }, children: [
1976
- /* @__PURE__ */ jsx2(Avatar, { who: "assistant", theme: t2 }),
1977
- /* @__PURE__ */ jsxs2(
2381
+ phase === "type" && /* @__PURE__ */ jsxs3("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
2382
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: "8px" }, children: [
2383
+ /* @__PURE__ */ jsx3(Avatar, { who: "assistant", theme: t2 }),
2384
+ /* @__PURE__ */ jsxs3(
1978
2385
  "div",
1979
2386
  {
1980
2387
  style: {
@@ -1992,7 +2399,7 @@ function AssistSheet({
1992
2399
  }
1993
2400
  )
1994
2401
  ] }),
1995
- /* @__PURE__ */ jsx2(
2402
+ /* @__PURE__ */ jsx3(
1996
2403
  "div",
1997
2404
  {
1998
2405
  style: {
@@ -2003,7 +2410,7 @@ function AssistSheet({
2003
2410
  },
2004
2411
  children: tiles.map((tile) => {
2005
2412
  const rate = tile === "RATING";
2006
- return /* @__PURE__ */ jsx2(
2413
+ return /* @__PURE__ */ jsx3(
2007
2414
  "button",
2008
2415
  {
2009
2416
  type: "button",
@@ -2036,10 +2443,10 @@ function AssistSheet({
2036
2443
  }
2037
2444
  )
2038
2445
  ] }),
2039
- phase === "severity" && /* @__PURE__ */ jsxs2("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
2040
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "8px" }, children: [
2041
- /* @__PURE__ */ jsx2(Avatar, { who: "assistant", theme: t2 }),
2042
- /* @__PURE__ */ jsx2(
2446
+ phase === "severity" && /* @__PURE__ */ jsxs3("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
2447
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: "8px" }, children: [
2448
+ /* @__PURE__ */ jsx3(Avatar, { who: "assistant", theme: t2 }),
2449
+ /* @__PURE__ */ jsx3(
2043
2450
  "div",
2044
2451
  {
2045
2452
  style: {
@@ -2054,7 +2461,7 @@ function AssistSheet({
2054
2461
  }
2055
2462
  )
2056
2463
  ] }),
2057
- /* @__PURE__ */ jsx2(
2464
+ /* @__PURE__ */ jsx3(
2058
2465
  "div",
2059
2466
  {
2060
2467
  role: "radiogroup",
@@ -2065,7 +2472,7 @@ function AssistSheet({
2065
2472
  gap: "6px",
2066
2473
  paddingLeft: "32px"
2067
2474
  },
2068
- children: SEVERITY_LEVELS.map((s) => /* @__PURE__ */ jsx2(
2475
+ children: SEVERITY_LEVELS.map((s) => /* @__PURE__ */ jsx3(
2069
2476
  "button",
2070
2477
  {
2071
2478
  type: "button",
@@ -2092,10 +2499,10 @@ function AssistSheet({
2092
2499
  }
2093
2500
  )
2094
2501
  ] }),
2095
- phase === "rating" && !submitted && /* @__PURE__ */ jsxs2("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
2096
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "8px" }, children: [
2097
- /* @__PURE__ */ jsx2(Avatar, { who: "assistant", theme: t2 }),
2098
- /* @__PURE__ */ jsx2(
2502
+ phase === "rating" && !submitted && /* @__PURE__ */ jsxs3("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
2503
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: "8px" }, children: [
2504
+ /* @__PURE__ */ jsx3(Avatar, { who: "assistant", theme: t2 }),
2505
+ /* @__PURE__ */ jsx3(
2099
2506
  "div",
2100
2507
  {
2101
2508
  style: {
@@ -2110,7 +2517,7 @@ function AssistSheet({
2110
2517
  }
2111
2518
  )
2112
2519
  ] }),
2113
- /* @__PURE__ */ jsxs2(
2520
+ /* @__PURE__ */ jsxs3(
2114
2521
  "div",
2115
2522
  {
2116
2523
  style: {
@@ -2124,9 +2531,9 @@ function AssistSheet({
2124
2531
  backgroundColor: "rgba(245,158,11,0.06)"
2125
2532
  },
2126
2533
  children: [
2127
- /* @__PURE__ */ jsx2("div", { style: { display: "flex", gap: "4px" }, role: "group", "aria-label": "Rating", children: [1, 2, 3, 4, 5].map((star) => {
2534
+ /* @__PURE__ */ jsx3("div", { style: { display: "flex", gap: "4px" }, role: "group", "aria-label": "Rating", children: [1, 2, 3, 4, 5].map((star) => {
2128
2535
  const filled = star <= (hoveredStar || rating);
2129
- return /* @__PURE__ */ jsx2(
2536
+ return /* @__PURE__ */ jsx3(
2130
2537
  "button",
2131
2538
  {
2132
2539
  type: "button",
@@ -2142,7 +2549,7 @@ function AssistSheet({
2142
2549
  cursor: "pointer",
2143
2550
  lineHeight: 0
2144
2551
  },
2145
- children: /* @__PURE__ */ jsx2("svg", { width: "30", height: "30", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx2(
2552
+ children: /* @__PURE__ */ jsx3("svg", { width: "30", height: "30", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx3(
2146
2553
  "path",
2147
2554
  {
2148
2555
  d: "M12 3l2.6 5.3 5.9.9-4.3 4.1 1 5.8L12 16.4 6.8 19.1l1-5.8L3.5 9.2l5.9-.9L12 3z",
@@ -2156,7 +2563,7 @@ function AssistSheet({
2156
2563
  star
2157
2564
  );
2158
2565
  }) }),
2159
- /* @__PURE__ */ jsx2(
2566
+ /* @__PURE__ */ jsx3(
2160
2567
  "textarea",
2161
2568
  {
2162
2569
  value: description,
@@ -2179,7 +2586,7 @@ function AssistSheet({
2179
2586
  }
2180
2587
  }
2181
2588
  ),
2182
- /* @__PURE__ */ jsx2(
2589
+ /* @__PURE__ */ jsx3(
2183
2590
  "button",
2184
2591
  {
2185
2592
  type: "button",
@@ -2203,10 +2610,10 @@ function AssistSheet({
2203
2610
  }
2204
2611
  )
2205
2612
  ] }),
2206
- empty && /* @__PURE__ */ jsxs2("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
2207
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "8px" }, children: [
2208
- /* @__PURE__ */ jsx2(Avatar, { who: "assistant", theme: t2 }),
2209
- /* @__PURE__ */ jsxs2(
2613
+ empty && /* @__PURE__ */ jsxs3("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
2614
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: "8px" }, children: [
2615
+ /* @__PURE__ */ jsx3(Avatar, { who: "assistant", theme: t2 }),
2616
+ /* @__PURE__ */ jsxs3(
2210
2617
  "div",
2211
2618
  {
2212
2619
  style: {
@@ -2224,7 +2631,7 @@ function AssistSheet({
2224
2631
  }
2225
2632
  )
2226
2633
  ] }),
2227
- /* @__PURE__ */ jsx2(
2634
+ /* @__PURE__ */ jsx3(
2228
2635
  "div",
2229
2636
  {
2230
2637
  style: {
@@ -2233,7 +2640,7 @@ function AssistSheet({
2233
2640
  gap: "6px",
2234
2641
  paddingLeft: "32px"
2235
2642
  },
2236
- children: STARTERS.map((s) => /* @__PURE__ */ jsx2(
2643
+ children: STARTERS.map((s) => /* @__PURE__ */ jsx3(
2237
2644
  "button",
2238
2645
  {
2239
2646
  type: "button",
@@ -2263,9 +2670,9 @@ function AssistSheet({
2263
2670
  const mine = m.role === "user";
2264
2671
  if (m.kind === "report") {
2265
2672
  const live = phase === "draft" && i === messages.length - 1;
2266
- return /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "8px", minWidth: 0 }, children: [
2267
- /* @__PURE__ */ jsx2(Avatar, { who: "assistant", theme: t2 }),
2268
- /* @__PURE__ */ jsx2(
2673
+ return /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: "8px", minWidth: 0 }, children: [
2674
+ /* @__PURE__ */ jsx3(Avatar, { who: "assistant", theme: t2 }),
2675
+ /* @__PURE__ */ jsx3(
2269
2676
  "div",
2270
2677
  {
2271
2678
  "data-gg-draft-bubble": "",
@@ -2284,8 +2691,8 @@ function AssistSheet({
2284
2691
  // #402: "have a read" beside a countdown reads as a
2285
2692
  // contradiction. Say what is about to happen instead.
2286
2693
  autoFileLeft !== null ? "Here's your report \u2014 I'll file it unless you want to change something." : "Here's your report \u2014 have a read."
2287
- ) : /* @__PURE__ */ jsxs2(Fragment, { children: [
2288
- /* @__PURE__ */ jsx2(
2694
+ ) : /* @__PURE__ */ jsxs3(Fragment2, { children: [
2695
+ /* @__PURE__ */ jsx3(
2289
2696
  "span",
2290
2697
  {
2291
2698
  style: {
@@ -2300,7 +2707,7 @@ function AssistSheet({
2300
2707
  children: "Draft so far"
2301
2708
  }
2302
2709
  ),
2303
- /* @__PURE__ */ jsx2(
2710
+ /* @__PURE__ */ jsx3(
2304
2711
  "span",
2305
2712
  {
2306
2713
  style: {
@@ -2319,7 +2726,7 @@ function AssistSheet({
2319
2726
  )
2320
2727
  ] }, i);
2321
2728
  }
2322
- return /* @__PURE__ */ jsxs2(
2729
+ return /* @__PURE__ */ jsxs3(
2323
2730
  "div",
2324
2731
  {
2325
2732
  style: {
@@ -2329,22 +2736,24 @@ function AssistSheet({
2329
2736
  flexDirection: mine ? "row-reverse" : "row"
2330
2737
  },
2331
2738
  children: [
2332
- /* @__PURE__ */ jsx2(Avatar, { who: m.role, theme: t2, initials }),
2333
- /* @__PURE__ */ jsx2(
2739
+ /* @__PURE__ */ jsx3(Avatar, { who: m.role, theme: t2, initials }),
2740
+ /* @__PURE__ */ jsx3(
2334
2741
  "div",
2335
2742
  {
2336
2743
  style: {
2337
2744
  maxWidth: "82%",
2745
+ minWidth: 0,
2338
2746
  padding: "9px 12px",
2339
2747
  borderRadius: mine ? "12px 12px 4px 12px" : "12px 12px 12px 4px",
2340
2748
  fontSize: "13px",
2341
2749
  lineHeight: 1.55,
2342
- whiteSpace: "pre-wrap",
2750
+ // Markdown owns the assistant's line breaks and lists.
2751
+ whiteSpace: mine ? "pre-wrap" : "normal",
2343
2752
  wordBreak: "break-word",
2344
2753
  backgroundColor: mine ? t2.accent : t2.bgSecondary,
2345
2754
  color: mine ? t2.accentText : t2.text
2346
2755
  },
2347
- children: m.content
2756
+ children: mine ? m.content : /* @__PURE__ */ jsx3(ChatMarkdown, { text: m.content, theme: t2 })
2348
2757
  }
2349
2758
  )
2350
2759
  ]
@@ -2352,8 +2761,8 @@ function AssistSheet({
2352
2761
  i
2353
2762
  );
2354
2763
  }),
2355
- duplicate && !busy && phase === "chat" && /* @__PURE__ */ jsx2("div", { style: { paddingLeft: "32px", minWidth: 0 }, children: renderKnownIssue({ title: false }) }),
2356
- glitchgrabOffer && onReportGlitchgrabProblem && !busy && phase === "chat" && /* @__PURE__ */ jsx2("div", { style: { paddingLeft: "32px", minWidth: 0 }, children: /* @__PURE__ */ jsxs2(
2764
+ duplicate && !busy && phase === "chat" && /* @__PURE__ */ jsx3("div", { style: { paddingLeft: "32px", minWidth: 0 }, children: renderKnownIssue({ title: false }) }),
2765
+ glitchgrabOffer && onReportGlitchgrabProblem && !busy && phase === "chat" && /* @__PURE__ */ jsx3("div", { style: { paddingLeft: "32px", minWidth: 0 }, children: /* @__PURE__ */ jsxs3(
2357
2766
  "div",
2358
2767
  {
2359
2768
  "data-gg-glitchgrab-offer": "",
@@ -2369,10 +2778,10 @@ function AssistSheet({
2369
2778
  lineHeight: 1.5
2370
2779
  },
2371
2780
  children: [
2372
- /* @__PURE__ */ jsx2("span", { style: { color: t2.text, fontWeight: 600 }, children: "This is about Glitchgrab, not this app" }),
2373
- /* @__PURE__ */ jsx2("span", { style: { color: t2.textMuted }, children: "It goes to the team that builds this reporter, with your chat attached." }),
2374
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", flexWrap: "wrap", gap: "6px" }, children: [
2375
- /* @__PURE__ */ jsx2(
2781
+ /* @__PURE__ */ jsx3("span", { style: { color: t2.text, fontWeight: 600 }, children: "This is about Glitchgrab, not this app" }),
2782
+ /* @__PURE__ */ jsx3("span", { style: { color: t2.textMuted }, children: "It goes to the team that builds this reporter, with your chat attached." }),
2783
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", flexWrap: "wrap", gap: "6px" }, children: [
2784
+ /* @__PURE__ */ jsx3(
2376
2785
  "button",
2377
2786
  {
2378
2787
  type: "button",
@@ -2401,7 +2810,7 @@ function AssistSheet({
2401
2810
  children: "Send to the Glitchgrab team"
2402
2811
  }
2403
2812
  ),
2404
- /* @__PURE__ */ jsx2(
2813
+ /* @__PURE__ */ jsx3(
2405
2814
  "button",
2406
2815
  {
2407
2816
  type: "button",
@@ -2428,7 +2837,7 @@ function AssistSheet({
2428
2837
  ]
2429
2838
  }
2430
2839
  ) }),
2431
- options.length > 0 && !busy && phase === "chat" && !glitchgrabOffer && /* @__PURE__ */ jsx2(
2840
+ options.length > 0 && !busy && phase === "chat" && !glitchgrabOffer && /* @__PURE__ */ jsx3(
2432
2841
  "div",
2433
2842
  {
2434
2843
  style: {
@@ -2443,7 +2852,7 @@ function AssistSheet({
2443
2852
  gap: "6px",
2444
2853
  paddingLeft: "32px"
2445
2854
  },
2446
- children: options.map((option) => /* @__PURE__ */ jsx2(
2855
+ children: options.map((option) => /* @__PURE__ */ jsx3(
2447
2856
  "button",
2448
2857
  {
2449
2858
  type: "button",
@@ -2472,9 +2881,9 @@ function AssistSheet({
2472
2881
  ))
2473
2882
  }
2474
2883
  ),
2475
- busy && /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "8px" }, role: "status", "aria-label": "Thinking", children: [
2476
- /* @__PURE__ */ jsx2(Avatar, { who: "assistant", theme: t2 }),
2477
- /* @__PURE__ */ jsx2(
2884
+ busy && /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: "8px" }, role: "status", "aria-label": "Thinking", children: [
2885
+ /* @__PURE__ */ jsx3(Avatar, { who: "assistant", theme: t2 }),
2886
+ /* @__PURE__ */ jsx3(
2478
2887
  "span",
2479
2888
  {
2480
2889
  style: {
@@ -2485,7 +2894,7 @@ function AssistSheet({
2485
2894
  borderRadius: "12px 12px 12px 4px",
2486
2895
  backgroundColor: t2.bgSecondary
2487
2896
  },
2488
- children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx2(
2897
+ children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx3(
2489
2898
  "span",
2490
2899
  {
2491
2900
  style: {
@@ -2501,7 +2910,7 @@ function AssistSheet({
2501
2910
  }
2502
2911
  )
2503
2912
  ] }),
2504
- phase === "draft" && !submitted && /* @__PURE__ */ jsxs2(
2913
+ phase === "draft" && !submitted && /* @__PURE__ */ jsxs3(
2505
2914
  "div",
2506
2915
  {
2507
2916
  style: {
@@ -2516,7 +2925,7 @@ function AssistSheet({
2516
2925
  boxSizing: "border-box"
2517
2926
  },
2518
2927
  children: [
2519
- /* @__PURE__ */ jsx2(
2928
+ /* @__PURE__ */ jsx3(
2520
2929
  "span",
2521
2930
  {
2522
2931
  style: {
@@ -2533,7 +2942,7 @@ function AssistSheet({
2533
2942
  title: true,
2534
2943
  footer: "Your details will be added to it instead of opening a new issue."
2535
2944
  }),
2536
- /* @__PURE__ */ jsx2(
2945
+ /* @__PURE__ */ jsx3(
2537
2946
  "textarea",
2538
2947
  {
2539
2948
  ref: draftRef,
@@ -2560,8 +2969,8 @@ function AssistSheet({
2560
2969
  }
2561
2970
  }
2562
2971
  ),
2563
- severityAsked && autoFileLeft === null && /* @__PURE__ */ jsxs2("div", { children: [
2564
- /* @__PURE__ */ jsxs2(
2972
+ severityAsked && autoFileLeft === null && /* @__PURE__ */ jsxs3("div", { children: [
2973
+ /* @__PURE__ */ jsxs3(
2565
2974
  "span",
2566
2975
  {
2567
2976
  style: {
@@ -2572,7 +2981,7 @@ function AssistSheet({
2572
2981
  },
2573
2982
  children: [
2574
2983
  "How bad is it?",
2575
- !severity && /* @__PURE__ */ jsx2(
2984
+ !severity && /* @__PURE__ */ jsx3(
2576
2985
  "span",
2577
2986
  {
2578
2987
  style: {
@@ -2586,7 +2995,7 @@ function AssistSheet({
2586
2995
  ]
2587
2996
  }
2588
2997
  ),
2589
- /* @__PURE__ */ jsx2(
2998
+ /* @__PURE__ */ jsx3(
2590
2999
  "div",
2591
3000
  {
2592
3001
  role: "radiogroup",
@@ -2594,7 +3003,7 @@ function AssistSheet({
2594
3003
  style: { display: "flex", gap: "6px" },
2595
3004
  children: SEVERITY_LEVELS.map((s) => {
2596
3005
  const on = severity === s;
2597
- return /* @__PURE__ */ jsx2(
3006
+ return /* @__PURE__ */ jsx3(
2598
3007
  "button",
2599
3008
  {
2600
3009
  type: "button",
@@ -2625,7 +3034,7 @@ function AssistSheet({
2625
3034
  }
2626
3035
  )
2627
3036
  ] }),
2628
- attachmentCount > 0 && /* @__PURE__ */ jsxs2("span", { style: { fontSize: "11.5px", color: t2.textMuted }, children: [
3037
+ attachmentCount > 0 && /* @__PURE__ */ jsxs3("span", { style: { fontSize: "11.5px", color: t2.textMuted }, children: [
2629
3038
  attachmentCount,
2630
3039
  " ",
2631
3040
  attachmentCount === 1 ? "attachment" : "attachments",
@@ -2634,10 +3043,10 @@ function AssistSheet({
2634
3043
  ]
2635
3044
  }
2636
3045
  ),
2637
- phase === "solved" && solved && /* @__PURE__ */ jsxs2("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
2638
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "8px" }, children: [
2639
- /* @__PURE__ */ jsx2(Avatar, { who: "assistant", theme: t2 }),
2640
- /* @__PURE__ */ jsx2(
3046
+ phase === "solved" && solved && /* @__PURE__ */ jsxs3("div", { style: { display: "flex", flexDirection: "column", gap: "12px" }, children: [
3047
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: "8px" }, children: [
3048
+ /* @__PURE__ */ jsx3(Avatar, { who: "assistant", theme: t2 }),
3049
+ /* @__PURE__ */ jsx3(
2641
3050
  "div",
2642
3051
  {
2643
3052
  style: {
@@ -2653,7 +3062,7 @@ function AssistSheet({
2653
3062
  }
2654
3063
  )
2655
3064
  ] }),
2656
- /* @__PURE__ */ jsx2(
3065
+ /* @__PURE__ */ jsx3(
2657
3066
  "span",
2658
3067
  {
2659
3068
  style: { fontSize: "11.5px", color: t2.textMuted, paddingLeft: "32px" },
@@ -2661,7 +3070,7 @@ function AssistSheet({
2661
3070
  }
2662
3071
  )
2663
3072
  ] }),
2664
- submitted && /* @__PURE__ */ jsxs2(
3073
+ submitted && /* @__PURE__ */ jsxs3(
2665
3074
  "div",
2666
3075
  {
2667
3076
  style: {
@@ -2682,7 +3091,7 @@ function AssistSheet({
2682
3091
  )
2683
3092
  }
2684
3093
  ),
2685
- !submitted && phase !== "type" && phase !== "severity" && /* @__PURE__ */ jsxs2(
3094
+ !submitted && phase !== "type" && phase !== "severity" && /* @__PURE__ */ jsxs3(
2686
3095
  "div",
2687
3096
  {
2688
3097
  style: {
@@ -2693,7 +3102,7 @@ function AssistSheet({
2693
3102
  backgroundColor: t2.bg
2694
3103
  },
2695
3104
  children: [
2696
- phase === "solved" ? /* @__PURE__ */ jsx2(
3105
+ phase === "solved" ? /* @__PURE__ */ jsx3(
2697
3106
  "button",
2698
3107
  {
2699
3108
  type: "button",
@@ -2713,7 +3122,7 @@ function AssistSheet({
2713
3122
  },
2714
3123
  children: "Done"
2715
3124
  }
2716
- ) : phase === "rating" ? /* @__PURE__ */ jsx2(
3125
+ ) : phase === "rating" ? /* @__PURE__ */ jsx3(
2717
3126
  "button",
2718
3127
  {
2719
3128
  type: "button",
@@ -2739,8 +3148,8 @@ function AssistSheet({
2739
3148
  // element on both sides of a draft landing — it stays put
2740
3149
  // instead of remounting, and a draft is something you can
2741
3150
  // still reply to (#360), not a form that replaced the chat.
2742
- /* @__PURE__ */ jsxs2(Fragment, { children: [
2743
- (screenshots.length > 0 || files.length > 0 || onAddFiles) && /* @__PURE__ */ jsxs2(
3151
+ /* @__PURE__ */ jsxs3(Fragment2, { children: [
3152
+ (screenshots.length > 0 || files.length > 0 || onAddFiles) && /* @__PURE__ */ jsxs3(
2744
3153
  "div",
2745
3154
  {
2746
3155
  style: {
@@ -2753,7 +3162,7 @@ function AssistSheet({
2753
3162
  children: [
2754
3163
  screenshots.map((shot, i) => {
2755
3164
  const read = readShots.has(shot);
2756
- return /* @__PURE__ */ jsxs2(
3165
+ return /* @__PURE__ */ jsxs3(
2757
3166
  "div",
2758
3167
  {
2759
3168
  style: {
@@ -2763,7 +3172,7 @@ function AssistSheet({
2763
3172
  flexShrink: 0
2764
3173
  },
2765
3174
  children: [
2766
- /* @__PURE__ */ jsx2(
3175
+ /* @__PURE__ */ jsx3(
2767
3176
  "img",
2768
3177
  {
2769
3178
  src: shot,
@@ -2781,7 +3190,7 @@ function AssistSheet({
2781
3190
  }
2782
3191
  }
2783
3192
  ),
2784
- onRemoveImage && /* @__PURE__ */ jsx2(
3193
+ onRemoveImage && /* @__PURE__ */ jsx3(
2785
3194
  "button",
2786
3195
  {
2787
3196
  type: "button",
@@ -2811,7 +3220,7 @@ function AssistSheet({
2811
3220
  justifyContent: "center",
2812
3221
  borderRadius: "50%"
2813
3222
  },
2814
- children: /* @__PURE__ */ jsx2(
3223
+ children: /* @__PURE__ */ jsx3(
2815
3224
  "span",
2816
3225
  {
2817
3226
  "aria-hidden": "true",
@@ -2827,7 +3236,7 @@ function AssistSheet({
2827
3236
  alignItems: "center",
2828
3237
  justifyContent: "center"
2829
3238
  },
2830
- children: /* @__PURE__ */ jsx2("svg", { width: "8", height: "8", viewBox: "0 0 10 10", fill: "none", children: /* @__PURE__ */ jsx2(
3239
+ children: /* @__PURE__ */ jsx3("svg", { width: "8", height: "8", viewBox: "0 0 10 10", fill: "none", children: /* @__PURE__ */ jsx3(
2831
3240
  "path",
2832
3241
  {
2833
3242
  d: "M1 1L9 9M9 1L1 9",
@@ -2848,7 +3257,7 @@ function AssistSheet({
2848
3257
  files.map((file, i) => {
2849
3258
  const read = readFiles.has(i);
2850
3259
  const why = read ? "the assistant reads this file" : isAssistReadableFile(file.name) ? "attached, but more than one message can carry, so the assistant is not reading it" : "attached to the report \u2014 the assistant can't read this kind of file";
2851
- return /* @__PURE__ */ jsxs2(
3260
+ return /* @__PURE__ */ jsxs3(
2852
3261
  "div",
2853
3262
  {
2854
3263
  "data-gg-assist-file": "",
@@ -2869,7 +3278,7 @@ function AssistSheet({
2869
3278
  flexShrink: 0
2870
3279
  },
2871
3280
  children: [
2872
- /* @__PURE__ */ jsx2("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", style: { flexShrink: 0 }, children: /* @__PURE__ */ jsx2(
3281
+ /* @__PURE__ */ jsx3("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", style: { flexShrink: 0 }, children: /* @__PURE__ */ jsx3(
2873
3282
  "path",
2874
3283
  {
2875
3284
  d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z M14 2v6h6",
@@ -2879,7 +3288,7 @@ function AssistSheet({
2879
3288
  strokeLinejoin: "round"
2880
3289
  }
2881
3290
  ) }),
2882
- /* @__PURE__ */ jsx2(
3291
+ /* @__PURE__ */ jsx3(
2883
3292
  "span",
2884
3293
  {
2885
3294
  style: {
@@ -2892,7 +3301,7 @@ function AssistSheet({
2892
3301
  children: file.name
2893
3302
  }
2894
3303
  ),
2895
- onRemoveFile && /* @__PURE__ */ jsx2(
3304
+ onRemoveFile && /* @__PURE__ */ jsx3(
2896
3305
  "button",
2897
3306
  {
2898
3307
  type: "button",
@@ -2919,7 +3328,7 @@ function AssistSheet({
2919
3328
  justifyContent: "center",
2920
3329
  borderRadius: "50%"
2921
3330
  },
2922
- children: /* @__PURE__ */ jsx2(
3331
+ children: /* @__PURE__ */ jsx3(
2923
3332
  "span",
2924
3333
  {
2925
3334
  "aria-hidden": "true",
@@ -2935,7 +3344,7 @@ function AssistSheet({
2935
3344
  alignItems: "center",
2936
3345
  justifyContent: "center"
2937
3346
  },
2938
- children: /* @__PURE__ */ jsx2("svg", { width: "8", height: "8", viewBox: "0 0 10 10", fill: "none", children: /* @__PURE__ */ jsx2(
3347
+ children: /* @__PURE__ */ jsx3("svg", { width: "8", height: "8", viewBox: "0 0 10 10", fill: "none", children: /* @__PURE__ */ jsx3(
2939
3348
  "path",
2940
3349
  {
2941
3350
  d: "M1 1L9 9M9 1L1 9",
@@ -2953,7 +3362,7 @@ function AssistSheet({
2953
3362
  `file-${i}-${file.name}`
2954
3363
  );
2955
3364
  }),
2956
- onAddFiles && /* @__PURE__ */ jsxs2(
3365
+ onAddFiles && /* @__PURE__ */ jsxs3(
2957
3366
  "label",
2958
3367
  {
2959
3368
  "data-gg-assist-attach": "",
@@ -2973,7 +3382,7 @@ function AssistSheet({
2973
3382
  },
2974
3383
  children: [
2975
3384
  "+",
2976
- /* @__PURE__ */ jsx2(
3385
+ /* @__PURE__ */ jsx3(
2977
3386
  "input",
2978
3387
  {
2979
3388
  type: "file",
@@ -2999,7 +3408,7 @@ function AssistSheet({
2999
3408
  ]
3000
3409
  }
3001
3410
  ),
3002
- readShots.size < screenshots.length && /* @__PURE__ */ jsxs2("span", { style: { color: t2.textMuted, fontSize: "11px" }, children: [
3411
+ readShots.size < screenshots.length && /* @__PURE__ */ jsxs3("span", { style: { color: t2.textMuted, fontSize: "11px" }, children: [
3003
3412
  readShots.size,
3004
3413
  " of ",
3005
3414
  screenshots.length,
@@ -3008,8 +3417,8 @@ function AssistSheet({
3008
3417
  ]
3009
3418
  }
3010
3419
  ),
3011
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "8px", alignItems: "flex-end" }, children: [
3012
- /* @__PURE__ */ jsx2(
3420
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: "8px", alignItems: "flex-end" }, children: [
3421
+ /* @__PURE__ */ jsx3(
3013
3422
  "textarea",
3014
3423
  {
3015
3424
  value: input,
@@ -3045,7 +3454,7 @@ function AssistSheet({
3045
3454
  }
3046
3455
  }
3047
3456
  ),
3048
- /* @__PURE__ */ jsx2(
3457
+ /* @__PURE__ */ jsx3(
3049
3458
  "button",
3050
3459
  {
3051
3460
  type: "button",
@@ -3067,7 +3476,7 @@ function AssistSheet({
3067
3476
  color: busy || !input.trim() ? t2.textMuted : t2.accentText,
3068
3477
  cursor: busy || !input.trim() ? "default" : "pointer"
3069
3478
  },
3070
- children: /* @__PURE__ */ jsx2("svg", { width: "17", height: "17", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx2(
3479
+ children: /* @__PURE__ */ jsx3("svg", { width: "17", height: "17", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx3(
3071
3480
  "path",
3072
3481
  {
3073
3482
  d: "M3 20.5L21.5 12 3 3.5V10l12 2-12 2v6.5z",
@@ -3077,8 +3486,8 @@ function AssistSheet({
3077
3486
  }
3078
3487
  )
3079
3488
  ] }),
3080
- phase === "draft" && /* @__PURE__ */ jsxs2(Fragment, { children: [
3081
- validationError && /* @__PURE__ */ jsx2(
3489
+ phase === "draft" && /* @__PURE__ */ jsxs3(Fragment2, { children: [
3490
+ validationError && /* @__PURE__ */ jsx3(
3082
3491
  "p",
3083
3492
  {
3084
3493
  style: {
@@ -3092,9 +3501,11 @@ function AssistSheet({
3092
3501
  autoFileLeft !== null ? (
3093
3502
  // #402: "Yes, that's it" was the confirmation. The draft
3094
3503
  // files itself unless they stop it — the bar shows how
3095
- // long is left, the button sends now.
3096
- /* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "8px", marginTop: "8px" }, children: [
3097
- /* @__PURE__ */ jsxs2(
3504
+ // long is left, the button sends now, the × on its right
3505
+ // stops it (#406). Stopping keeps the draft: Send Report
3506
+ // comes back, and closing the sheet drops it.
3507
+ /* @__PURE__ */ jsxs3("div", { style: { display: "flex", gap: "8px", marginTop: "8px" }, children: [
3508
+ /* @__PURE__ */ jsxs3(
3098
3509
  "button",
3099
3510
  {
3100
3511
  type: "button",
@@ -3117,7 +3528,7 @@ function AssistSheet({
3117
3528
  cursor: "pointer"
3118
3529
  },
3119
3530
  children: [
3120
- /* @__PURE__ */ jsx2(
3531
+ /* @__PURE__ */ jsx3(
3121
3532
  "span",
3122
3533
  {
3123
3534
  "aria-hidden": "true",
@@ -3130,7 +3541,7 @@ function AssistSheet({
3130
3541
  }
3131
3542
  }
3132
3543
  ),
3133
- /* @__PURE__ */ jsxs2("span", { style: { position: "relative" }, children: [
3544
+ /* @__PURE__ */ jsxs3("span", { style: { position: "relative" }, children: [
3134
3545
  "Filing in ",
3135
3546
  autoFileLeft,
3136
3547
  "s\u2026"
@@ -3138,33 +3549,39 @@ function AssistSheet({
3138
3549
  ]
3139
3550
  }
3140
3551
  ),
3141
- /* @__PURE__ */ jsx2(
3552
+ /* @__PURE__ */ jsx3(
3142
3553
  "button",
3143
3554
  {
3144
3555
  type: "button",
3145
- "data-gg-edit-first": "",
3146
- onClick: () => {
3147
- var _a;
3148
- stopAutoFile("edit first");
3149
- (_a = draftRef.current) == null ? void 0 : _a.focus();
3150
- },
3556
+ "data-gg-stop-auto-file": "",
3557
+ onClick: () => stopAutoFile("pressed stop"),
3558
+ "aria-label": "Stop \u2014 don't send",
3559
+ title: "Stop \u2014 don't send",
3151
3560
  style: {
3152
3561
  flexShrink: 0,
3153
- padding: "12px 14px",
3562
+ width: "44px",
3154
3563
  borderRadius: "10px",
3155
3564
  border: `1px solid ${t2.inputBorder}`,
3156
3565
  background: "transparent",
3157
3566
  color: t2.text,
3158
- fontSize: "13px",
3159
- fontWeight: 600,
3160
- fontFamily: "inherit",
3567
+ display: "inline-flex",
3568
+ alignItems: "center",
3569
+ justifyContent: "center",
3161
3570
  cursor: "pointer"
3162
3571
  },
3163
- children: "Edit first"
3572
+ children: /* @__PURE__ */ jsx3("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx3(
3573
+ "path",
3574
+ {
3575
+ d: "M6 6l12 12M18 6L6 18",
3576
+ stroke: "currentColor",
3577
+ strokeWidth: "2.25",
3578
+ strokeLinecap: "round"
3579
+ }
3580
+ ) })
3164
3581
  }
3165
3582
  )
3166
3583
  ] })
3167
- ) : /* @__PURE__ */ jsx2(
3584
+ ) : /* @__PURE__ */ jsx3(
3168
3585
  "button",
3169
3586
  {
3170
3587
  type: "button",
@@ -3190,7 +3607,7 @@ function AssistSheet({
3190
3607
  ] })
3191
3608
  ] })
3192
3609
  ),
3193
- phase === "chat" && messages.length > 0 && /* @__PURE__ */ jsx2(
3610
+ phase === "chat" && messages.length > 0 && /* @__PURE__ */ jsx3(
3194
3611
  "button",
3195
3612
  {
3196
3613
  type: "button",
@@ -3210,7 +3627,7 @@ function AssistSheet({
3210
3627
  children: "Not getting it? Fill the form yourself \u2192"
3211
3628
  }
3212
3629
  ),
3213
- onReportGlitchgrabProblem && phase !== "solved" && !glitchgrabOffer && /* @__PURE__ */ jsx2(
3630
+ onReportGlitchgrabProblem && phase !== "solved" && !glitchgrabOffer && /* @__PURE__ */ jsx3(
3214
3631
  "button",
3215
3632
  {
3216
3633
  type: "button",
@@ -3373,7 +3790,7 @@ function GlitchgrabProblemPanel({
3373
3790
  // `data-glitchgrab-layer` exempts this from the dialog's anti-focus-trap
3374
3791
  // sweep, which sets `inert` on every other role="dialog" on the page —
3375
3792
  // without it the panel renders but cannot be typed into.
3376
- /* @__PURE__ */ jsx3(
3793
+ /* @__PURE__ */ jsx4(
3377
3794
  "div",
3378
3795
  {
3379
3796
  "data-glitchgrab-layer": "",
@@ -3393,7 +3810,7 @@ function GlitchgrabProblemPanel({
3393
3810
  boxSizing: "border-box",
3394
3811
  fontFamily: FONT
3395
3812
  },
3396
- children: /* @__PURE__ */ jsx3(
3813
+ children: /* @__PURE__ */ jsx4(
3397
3814
  "div",
3398
3815
  {
3399
3816
  style: {
@@ -3407,10 +3824,10 @@ function GlitchgrabProblemPanel({
3407
3824
  boxShadow: "0 20px 50px rgba(0,0,0,0.5)",
3408
3825
  padding: "18px"
3409
3826
  },
3410
- children: sent ? /* @__PURE__ */ jsxs3(Fragment2, { children: [
3411
- /* @__PURE__ */ jsx3("div", { id: "gg-self-report-title", style: { fontSize: "15px", fontWeight: 600 }, children: "Sent to the Glitchgrab team" }),
3412
- /* @__PURE__ */ jsx3("p", { style: { margin: "6px 0 16px", fontSize: "13px", lineHeight: 1.5, color: t2.textMuted }, children: "Thanks \u2014 we'll look into it. Your report is still open behind this, exactly as you left it." }),
3413
- /* @__PURE__ */ jsx3(
3827
+ children: sent ? /* @__PURE__ */ jsxs4(Fragment3, { children: [
3828
+ /* @__PURE__ */ jsx4("div", { id: "gg-self-report-title", style: { fontSize: "15px", fontWeight: 600 }, children: "Sent to the Glitchgrab team" }),
3829
+ /* @__PURE__ */ jsx4("p", { style: { margin: "6px 0 16px", fontSize: "13px", lineHeight: 1.5, color: t2.textMuted }, children: "Thanks \u2014 we'll look into it. Your report is still open behind this, exactly as you left it." }),
3830
+ /* @__PURE__ */ jsx4(
3414
3831
  "button",
3415
3832
  {
3416
3833
  type: "button",
@@ -3420,8 +3837,8 @@ function GlitchgrabProblemPanel({
3420
3837
  children: "Back to your report"
3421
3838
  }
3422
3839
  )
3423
- ] }) : /* @__PURE__ */ jsxs3(Fragment2, { children: [
3424
- /* @__PURE__ */ jsxs3(
3840
+ ] }) : /* @__PURE__ */ jsxs4(Fragment3, { children: [
3841
+ /* @__PURE__ */ jsxs4(
3425
3842
  "div",
3426
3843
  {
3427
3844
  style: {
@@ -3431,8 +3848,8 @@ function GlitchgrabProblemPanel({
3431
3848
  gap: "12px"
3432
3849
  },
3433
3850
  children: [
3434
- /* @__PURE__ */ jsx3("div", { id: "gg-self-report-title", style: { fontSize: "15px", fontWeight: 600 }, children: "Problem with Glitchgrab?" }),
3435
- /* @__PURE__ */ jsx3(
3851
+ /* @__PURE__ */ jsx4("div", { id: "gg-self-report-title", style: { fontSize: "15px", fontWeight: 600 }, children: "Problem with Glitchgrab?" }),
3852
+ /* @__PURE__ */ jsx4(
3436
3853
  "button",
3437
3854
  {
3438
3855
  type: "button",
@@ -3454,8 +3871,8 @@ function GlitchgrabProblemPanel({
3454
3871
  ]
3455
3872
  }
3456
3873
  ),
3457
- /* @__PURE__ */ jsx3("p", { style: { margin: "6px 0 12px", fontSize: "13px", lineHeight: 1.5, color: t2.textMuted }, children: "This goes to the people who build this reporter \u2014 not to this project's team. Tell us what went wrong: the AI chat, a button, anything." }),
3458
- /* @__PURE__ */ jsx3(
3874
+ /* @__PURE__ */ jsx4("p", { style: { margin: "6px 0 12px", fontSize: "13px", lineHeight: 1.5, color: t2.textMuted }, children: "This goes to the people who build this reporter \u2014 not to this project's team. Tell us what went wrong: the AI chat, a button, anything." }),
3875
+ /* @__PURE__ */ jsx4(
3459
3876
  "textarea",
3460
3877
  {
3461
3878
  ref: inputRef,
@@ -3489,7 +3906,7 @@ function GlitchgrabProblemPanel({
3489
3906
  }
3490
3907
  }
3491
3908
  ),
3492
- /* @__PURE__ */ jsxs3(
3909
+ /* @__PURE__ */ jsxs4(
3493
3910
  "div",
3494
3911
  {
3495
3912
  "data-gg-self-report-images": "",
@@ -3501,8 +3918,8 @@ function GlitchgrabProblemPanel({
3501
3918
  marginTop: "10px"
3502
3919
  },
3503
3920
  children: [
3504
- images.map((src, i) => /* @__PURE__ */ jsxs3("div", { style: { position: "relative", width: "48px", height: "48px" }, children: [
3505
- /* @__PURE__ */ jsx3(
3921
+ images.map((src, i) => /* @__PURE__ */ jsxs4("div", { style: { position: "relative", width: "48px", height: "48px" }, children: [
3922
+ /* @__PURE__ */ jsx4(
3506
3923
  "img",
3507
3924
  {
3508
3925
  src,
@@ -3518,7 +3935,7 @@ function GlitchgrabProblemPanel({
3518
3935
  }
3519
3936
  }
3520
3937
  ),
3521
- /* @__PURE__ */ jsx3(
3938
+ /* @__PURE__ */ jsx4(
3522
3939
  "button",
3523
3940
  {
3524
3941
  type: "button",
@@ -3541,7 +3958,7 @@ function GlitchgrabProblemPanel({
3541
3958
  justifyContent: "center",
3542
3959
  borderRadius: "50%"
3543
3960
  },
3544
- children: /* @__PURE__ */ jsx3(
3961
+ children: /* @__PURE__ */ jsx4(
3545
3962
  "span",
3546
3963
  {
3547
3964
  "aria-hidden": "true",
@@ -3557,7 +3974,7 @@ function GlitchgrabProblemPanel({
3557
3974
  alignItems: "center",
3558
3975
  justifyContent: "center"
3559
3976
  },
3560
- children: /* @__PURE__ */ jsx3("svg", { width: "8", height: "8", viewBox: "0 0 10 10", fill: "none", children: /* @__PURE__ */ jsx3(
3977
+ children: /* @__PURE__ */ jsx4("svg", { width: "8", height: "8", viewBox: "0 0 10 10", fill: "none", children: /* @__PURE__ */ jsx4(
3561
3978
  "path",
3562
3979
  {
3563
3980
  d: "M1 1L9 9M9 1L1 9",
@@ -3571,7 +3988,7 @@ function GlitchgrabProblemPanel({
3571
3988
  }
3572
3989
  )
3573
3990
  ] }, i)),
3574
- images.length < MAX_SELF_REPORT_IMAGES && /* @__PURE__ */ jsx3(
3991
+ images.length < MAX_SELF_REPORT_IMAGES && /* @__PURE__ */ jsx4(
3575
3992
  "button",
3576
3993
  {
3577
3994
  type: "button",
@@ -3598,7 +4015,7 @@ function GlitchgrabProblemPanel({
3598
4015
  children: images.length >= 3 ? "+ Add" : "+ Add screenshot"
3599
4016
  }
3600
4017
  ),
3601
- /* @__PURE__ */ jsx3(
4018
+ /* @__PURE__ */ jsx4(
3602
4019
  "input",
3603
4020
  {
3604
4021
  ref: fileRef,
@@ -3617,7 +4034,7 @@ function GlitchgrabProblemPanel({
3617
4034
  ]
3618
4035
  }
3619
4036
  ),
3620
- /* @__PURE__ */ jsxs3(
4037
+ /* @__PURE__ */ jsxs4(
3621
4038
  "p",
3622
4039
  {
3623
4040
  "data-gg-self-report-includes": "",
@@ -3630,10 +4047,10 @@ function GlitchgrabProblemPanel({
3630
4047
  ]
3631
4048
  }
3632
4049
  ),
3633
- error && /* @__PURE__ */ jsx3("p", { role: "alert", style: { margin: "8px 0 0", fontSize: "12px", color: "#ef4444" }, children: error }),
3634
- /* @__PURE__ */ jsxs3("div", { style: { display: "flex", justifyContent: "flex-end", gap: "8px", marginTop: "14px" }, children: [
3635
- /* @__PURE__ */ jsx3("button", { type: "button", onClick: onClose, style: secondaryButton, children: "Cancel" }),
3636
- /* @__PURE__ */ jsx3(
4050
+ error && /* @__PURE__ */ jsx4("p", { role: "alert", style: { margin: "8px 0 0", fontSize: "12px", color: "#ef4444" }, children: error }),
4051
+ /* @__PURE__ */ jsxs4("div", { style: { display: "flex", justifyContent: "flex-end", gap: "8px", marginTop: "14px" }, children: [
4052
+ /* @__PURE__ */ jsx4("button", { type: "button", onClick: onClose, style: secondaryButton, children: "Cancel" }),
4053
+ /* @__PURE__ */ jsx4(
3637
4054
  "button",
3638
4055
  {
3639
4056
  type: "button",
@@ -3812,7 +4229,7 @@ var SHOT_WAIT_MS = 3e3;
3812
4229
  var SIMILAR_WAIT_MS = 2500;
3813
4230
  var MAX_SIMILAR_SHOWN = 3;
3814
4231
  function ButtonSpinner() {
3815
- return /* @__PURE__ */ jsx4(
4232
+ return /* @__PURE__ */ jsx5(
3816
4233
  "span",
3817
4234
  {
3818
4235
  "aria-hidden": "true",
@@ -3964,13 +4381,13 @@ function ReporterChip({
3964
4381
  const label = isAnonymous ? "Anonymous" : name;
3965
4382
  const title = isAnonymous ? "No reporter identity was passed to Glitchgrab \u2014 this report won't be attributed to anyone" : [name, reporter == null ? void 0 : reporter.email, reporter == null ? void 0 : reporter.role].filter(Boolean).join(" \xB7 ");
3966
4383
  const showAvatarImage = !!avatarUrl && !avatarFailed;
3967
- return /* @__PURE__ */ jsxs4(
4384
+ return /* @__PURE__ */ jsxs5(
3968
4385
  "span",
3969
4386
  {
3970
4387
  title,
3971
4388
  style: { display: "flex", alignItems: "center", gap: "6px", minWidth: 0 },
3972
4389
  children: [
3973
- /* @__PURE__ */ jsx4(
4390
+ /* @__PURE__ */ jsx5(
3974
4391
  "span",
3975
4392
  {
3976
4393
  "aria-hidden": "true",
@@ -3990,7 +4407,7 @@ function ReporterChip({
3990
4407
  color: isAnonymous ? t2.textMuted : t2.accentText,
3991
4408
  border: `1px solid ${isAnonymous ? t2.inputBorder : "transparent"}`
3992
4409
  },
3993
- children: showAvatarImage ? /* @__PURE__ */ jsx4(
4410
+ children: showAvatarImage ? /* @__PURE__ */ jsx5(
3994
4411
  "img",
3995
4412
  {
3996
4413
  src: avatarUrl,
@@ -4000,9 +4417,9 @@ function ReporterChip({
4000
4417
  onError: () => setAvatarFailed(true),
4001
4418
  style: { width: "100%", height: "100%", objectFit: "cover" }
4002
4419
  }
4003
- ) : initials ? initials : /* @__PURE__ */ jsxs4("svg", { width: "10", height: "10", viewBox: "0 0 16 16", fill: "none", children: [
4004
- /* @__PURE__ */ jsx4("circle", { cx: "8", cy: "5.5", r: "2.75", stroke: "currentColor", strokeWidth: "1.4" }),
4005
- /* @__PURE__ */ jsx4(
4420
+ ) : initials ? initials : /* @__PURE__ */ jsxs5("svg", { width: "10", height: "10", viewBox: "0 0 16 16", fill: "none", children: [
4421
+ /* @__PURE__ */ jsx5("circle", { cx: "8", cy: "5.5", r: "2.75", stroke: "currentColor", strokeWidth: "1.4" }),
4422
+ /* @__PURE__ */ jsx5(
4006
4423
  "path",
4007
4424
  {
4008
4425
  d: "M2.75 13.5c0-2.35 2.35-3.75 5.25-3.75s5.25 1.4 5.25 3.75",
@@ -4014,7 +4431,7 @@ function ReporterChip({
4014
4431
  ] })
4015
4432
  }
4016
4433
  ),
4017
- /* @__PURE__ */ jsxs4(
4434
+ /* @__PURE__ */ jsxs5(
4018
4435
  "span",
4019
4436
  {
4020
4437
  style: {
@@ -4904,9 +5321,9 @@ function ReportDialog({
4904
5321
  }
4905
5322
  };
4906
5323
  if (!mounted) return null;
4907
- return /* @__PURE__ */ jsxs4(Fragment3, { children: [
5324
+ return /* @__PURE__ */ jsxs5(Fragment4, { children: [
4908
5325
  isOpen && createPortal3(
4909
- /* @__PURE__ */ jsx4("style", { children: `
5326
+ /* @__PURE__ */ jsx5("style", { children: `
4910
5327
  @keyframes gg-pulse{0%,100%{opacity:1}50%{opacity:0.35}}
4911
5328
  @keyframes gg-spin{to{transform:rotate(360deg)}}
4912
5329
  @keyframes gg-b1{0%,100%{height:3px}40%{height:13px}}
@@ -4944,7 +5361,7 @@ function ReportDialog({
4944
5361
  document.body
4945
5362
  ),
4946
5363
  isOpen && createPortal3(
4947
- /* @__PURE__ */ jsx4(
5364
+ /* @__PURE__ */ jsx5(
4948
5365
  "div",
4949
5366
  {
4950
5367
  "data-glitchgrab-layer": "",
@@ -4967,7 +5384,7 @@ function ReportDialog({
4967
5384
  },
4968
5385
  onPointerDown: (e) => e.stopPropagation(),
4969
5386
  onFocus: (e) => e.stopPropagation(),
4970
- children: /* @__PURE__ */ jsxs4(
5387
+ children: /* @__PURE__ */ jsxs5(
4971
5388
  "div",
4972
5389
  {
4973
5390
  ref: modalRef,
@@ -4993,7 +5410,7 @@ function ReportDialog({
4993
5410
  isolation: "isolate"
4994
5411
  },
4995
5412
  children: [
4996
- /* @__PURE__ */ jsxs4(
5413
+ /* @__PURE__ */ jsxs5(
4997
5414
  "div",
4998
5415
  {
4999
5416
  style: {
@@ -5002,7 +5419,7 @@ function ReportDialog({
5002
5419
  borderBottom: `1px solid ${t2.border}`
5003
5420
  },
5004
5421
  children: [
5005
- /* @__PURE__ */ jsxs4(
5422
+ /* @__PURE__ */ jsxs5(
5006
5423
  "div",
5007
5424
  {
5008
5425
  style: {
@@ -5011,7 +5428,7 @@ function ReportDialog({
5011
5428
  alignItems: "center"
5012
5429
  },
5013
5430
  children: [
5014
- /* @__PURE__ */ jsxs4(
5431
+ /* @__PURE__ */ jsxs5(
5015
5432
  "div",
5016
5433
  {
5017
5434
  style: {
@@ -5020,7 +5437,7 @@ function ReportDialog({
5020
5437
  gap: "8px"
5021
5438
  },
5022
5439
  children: [
5023
- step > 1 && availableTypes.length > 1 && /* @__PURE__ */ jsx4(
5440
+ step > 1 && availableTypes.length > 1 && /* @__PURE__ */ jsx5(
5024
5441
  "button",
5025
5442
  {
5026
5443
  type: "button",
@@ -5034,14 +5451,14 @@ function ReportDialog({
5034
5451
  alignItems: "center"
5035
5452
  },
5036
5453
  "aria-label": "Back",
5037
- children: /* @__PURE__ */ jsx4(
5454
+ children: /* @__PURE__ */ jsx5(
5038
5455
  "svg",
5039
5456
  {
5040
5457
  width: "16",
5041
5458
  height: "16",
5042
5459
  viewBox: "0 0 16 16",
5043
5460
  fill: "none",
5044
- children: /* @__PURE__ */ jsx4(
5461
+ children: /* @__PURE__ */ jsx5(
5045
5462
  "path",
5046
5463
  {
5047
5464
  d: "M10 3L5 8L10 13",
@@ -5055,7 +5472,7 @@ function ReportDialog({
5055
5472
  )
5056
5473
  }
5057
5474
  ),
5058
- /* @__PURE__ */ jsx4(
5475
+ /* @__PURE__ */ jsx5(
5059
5476
  "span",
5060
5477
  {
5061
5478
  style: {
@@ -5069,7 +5486,7 @@ function ReportDialog({
5069
5486
  ]
5070
5487
  }
5071
5488
  ),
5072
- /* @__PURE__ */ jsxs4(
5489
+ /* @__PURE__ */ jsxs5(
5073
5490
  "div",
5074
5491
  {
5075
5492
  style: {
@@ -5078,7 +5495,7 @@ function ReportDialog({
5078
5495
  gap: "8px"
5079
5496
  },
5080
5497
  children: [
5081
- step === 1 && /* @__PURE__ */ jsx4(
5498
+ step === 1 && /* @__PURE__ */ jsx5(
5082
5499
  "span",
5083
5500
  {
5084
5501
  title: "Press this anywhere to open Glitchgrab",
@@ -5096,7 +5513,7 @@ function ReportDialog({
5096
5513
  children: getShortcutLabel()
5097
5514
  }
5098
5515
  ),
5099
- /* @__PURE__ */ jsx4(
5516
+ /* @__PURE__ */ jsx5(
5100
5517
  "button",
5101
5518
  {
5102
5519
  type: "button",
@@ -5111,7 +5528,7 @@ function ReportDialog({
5111
5528
  justifyContent: "center"
5112
5529
  },
5113
5530
  "aria-label": "Close",
5114
- children: /* @__PURE__ */ jsx4(
5531
+ children: /* @__PURE__ */ jsx5(
5115
5532
  "svg",
5116
5533
  {
5117
5534
  width: "16",
@@ -5119,7 +5536,7 @@ function ReportDialog({
5119
5536
  viewBox: "0 0 16 16",
5120
5537
  fill: "none",
5121
5538
  style: { display: "block" },
5122
- children: /* @__PURE__ */ jsx4(
5539
+ children: /* @__PURE__ */ jsx5(
5123
5540
  "path",
5124
5541
  {
5125
5542
  d: "M4 4L12 12M12 4L4 12",
@@ -5138,7 +5555,7 @@ function ReportDialog({
5138
5555
  ]
5139
5556
  }
5140
5557
  ),
5141
- availableTypes.length > 1 && /* @__PURE__ */ jsx4(
5558
+ availableTypes.length > 1 && /* @__PURE__ */ jsx5(
5142
5559
  "div",
5143
5560
  {
5144
5561
  style: {
@@ -5148,12 +5565,12 @@ function ReportDialog({
5148
5565
  gap: "0",
5149
5566
  marginTop: "12px"
5150
5567
  },
5151
- children: [1, 2].map((s, i) => /* @__PURE__ */ jsxs4(
5568
+ children: [1, 2].map((s, i) => /* @__PURE__ */ jsxs5(
5152
5569
  "div",
5153
5570
  {
5154
5571
  style: { display: "flex", alignItems: "center" },
5155
5572
  children: [
5156
- /* @__PURE__ */ jsx4(
5573
+ /* @__PURE__ */ jsx5(
5157
5574
  "div",
5158
5575
  {
5159
5576
  style: {
@@ -5165,7 +5582,7 @@ function ReportDialog({
5165
5582
  }
5166
5583
  }
5167
5584
  ),
5168
- i < 1 && /* @__PURE__ */ jsx4(
5585
+ i < 1 && /* @__PURE__ */ jsx5(
5169
5586
  "div",
5170
5587
  {
5171
5588
  style: {
@@ -5185,7 +5602,7 @@ function ReportDialog({
5185
5602
  ]
5186
5603
  }
5187
5604
  ),
5188
- /* @__PURE__ */ jsx4(
5605
+ /* @__PURE__ */ jsx5(
5189
5606
  "div",
5190
5607
  {
5191
5608
  style: {
@@ -5194,7 +5611,7 @@ function ReportDialog({
5194
5611
  flex: "1 1 auto",
5195
5612
  minHeight: 0
5196
5613
  },
5197
- children: submitted ? /* @__PURE__ */ jsx4(
5614
+ children: submitted ? /* @__PURE__ */ jsx5(
5198
5615
  "div",
5199
5616
  {
5200
5617
  style: {
@@ -5204,7 +5621,7 @@ function ReportDialog({
5204
5621
  fontSize: "14px",
5205
5622
  fontWeight: 500
5206
5623
  },
5207
- children: queuedMessage ? /* @__PURE__ */ jsx4(
5624
+ children: queuedMessage ? /* @__PURE__ */ jsx5(
5208
5625
  "span",
5209
5626
  {
5210
5627
  style: {
@@ -5217,9 +5634,9 @@ function ReportDialog({
5217
5634
  }
5218
5635
  ) : addedToIssue ? `Added to #${addedToIssue}${addedAsRelated ? " as a related request" : ""}. Thank you!` : `${getTypeLabel(reportType)} sent. Thank you!`
5219
5636
  }
5220
- ) : /* @__PURE__ */ jsxs4(Fragment3, { children: [
5221
- step === 1 && headerSlot ? /* @__PURE__ */ jsx4("div", { style: { marginBottom: "14px" }, children: headerSlot }) : null,
5222
- step === 1 && sendFeedback2 && /* @__PURE__ */ jsxs4(
5637
+ ) : /* @__PURE__ */ jsxs5(Fragment4, { children: [
5638
+ step === 1 && headerSlot ? /* @__PURE__ */ jsx5("div", { style: { marginBottom: "14px" }, children: headerSlot }) : null,
5639
+ step === 1 && sendFeedback2 && /* @__PURE__ */ jsxs5(
5223
5640
  "div",
5224
5641
  {
5225
5642
  style: {
@@ -5236,16 +5653,16 @@ function ReportDialog({
5236
5653
  },
5237
5654
  onMouseLeave: () => setHoveredStar(0),
5238
5655
  children: [
5239
- /* @__PURE__ */ jsx4(
5656
+ /* @__PURE__ */ jsx5(
5240
5657
  "span",
5241
5658
  {
5242
5659
  style: { fontSize: "13px", fontWeight: 600, color: t2.text },
5243
5660
  children: "How are we doing?"
5244
5661
  }
5245
5662
  ),
5246
- /* @__PURE__ */ jsx4("span", { style: { display: "flex", gap: "4px" }, children: [1, 2, 3, 4, 5].map((star) => {
5663
+ /* @__PURE__ */ jsx5("span", { style: { display: "flex", gap: "4px" }, children: [1, 2, 3, 4, 5].map((star) => {
5247
5664
  const filled = star <= (hoveredStar || rating);
5248
- return /* @__PURE__ */ jsx4(
5665
+ return /* @__PURE__ */ jsx5(
5249
5666
  "button",
5250
5667
  {
5251
5668
  type: "button",
@@ -5266,7 +5683,7 @@ function ReportDialog({
5266
5683
  cursor: "pointer",
5267
5684
  lineHeight: 0
5268
5685
  },
5269
- children: /* @__PURE__ */ jsx4("svg", { width: "26", height: "26", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx4(
5686
+ children: /* @__PURE__ */ jsx5("svg", { width: "26", height: "26", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx5(
5270
5687
  "path",
5271
5688
  {
5272
5689
  d: "M12 3l2.6 5.3 5.9.9-4.3 4.1 1 5.8L12 16.4 6.8 19.1l1-5.8L3.5 9.2l5.9-.9L12 3z",
@@ -5283,7 +5700,7 @@ function ReportDialog({
5283
5700
  ]
5284
5701
  }
5285
5702
  ),
5286
- step === 1 && sendFeedback2 && /* @__PURE__ */ jsxs4(
5703
+ step === 1 && sendFeedback2 && /* @__PURE__ */ jsxs5(
5287
5704
  "div",
5288
5705
  {
5289
5706
  style: {
@@ -5293,13 +5710,13 @@ function ReportDialog({
5293
5710
  marginBottom: "16px"
5294
5711
  },
5295
5712
  children: [
5296
- /* @__PURE__ */ jsx4("span", { style: { flex: 1, height: "1px", background: t2.border } }),
5297
- /* @__PURE__ */ jsx4("span", { style: { fontSize: "11px", color: t2.textMuted }, children: "or report something" }),
5298
- /* @__PURE__ */ jsx4("span", { style: { flex: 1, height: "1px", background: t2.border } })
5713
+ /* @__PURE__ */ jsx5("span", { style: { flex: 1, height: "1px", background: t2.border } }),
5714
+ /* @__PURE__ */ jsx5("span", { style: { fontSize: "11px", color: t2.textMuted }, children: "or report something" }),
5715
+ /* @__PURE__ */ jsx5("span", { style: { flex: 1, height: "1px", background: t2.border } })
5299
5716
  ]
5300
5717
  }
5301
5718
  ),
5302
- step === 1 && screenshots.length > 0 && /* @__PURE__ */ jsxs4(
5719
+ step === 1 && screenshots.length > 0 && /* @__PURE__ */ jsxs5(
5303
5720
  "div",
5304
5721
  {
5305
5722
  style: {
@@ -5313,7 +5730,7 @@ function ReportDialog({
5313
5730
  background: t2.inputBg
5314
5731
  },
5315
5732
  children: [
5316
- /* @__PURE__ */ jsx4(
5733
+ /* @__PURE__ */ jsx5(
5317
5734
  "img",
5318
5735
  {
5319
5736
  src: screenshots[0],
@@ -5328,8 +5745,8 @@ function ReportDialog({
5328
5745
  }
5329
5746
  }
5330
5747
  ),
5331
- /* @__PURE__ */ jsx4("span", { style: { fontSize: "11px", color: t2.textMuted, flex: 1 }, children: "Screenshot attached" }),
5332
- /* @__PURE__ */ jsx4(
5748
+ /* @__PURE__ */ jsx5("span", { style: { fontSize: "11px", color: t2.textMuted, flex: 1 }, children: "Screenshot attached" }),
5749
+ /* @__PURE__ */ jsx5(
5333
5750
  "button",
5334
5751
  {
5335
5752
  type: "button",
@@ -5350,7 +5767,7 @@ function ReportDialog({
5350
5767
  ]
5351
5768
  }
5352
5769
  ),
5353
- step === 1 && /* @__PURE__ */ jsx4(
5770
+ step === 1 && /* @__PURE__ */ jsx5(
5354
5771
  "div",
5355
5772
  {
5356
5773
  ref: tileGridRef,
@@ -5360,7 +5777,7 @@ function ReportDialog({
5360
5777
  gridTemplateColumns: "1fr 1fr 1fr",
5361
5778
  gap: "10px"
5362
5779
  },
5363
- children: availableTypes.map((type) => /* @__PURE__ */ jsxs4(
5780
+ children: availableTypes.map((type) => /* @__PURE__ */ jsxs5(
5364
5781
  "button",
5365
5782
  {
5366
5783
  type: "button",
@@ -5391,7 +5808,7 @@ function ReportDialog({
5391
5808
  },
5392
5809
  children: [
5393
5810
  getTypeIcon(type, t2.accent, 22),
5394
- /* @__PURE__ */ jsx4(
5811
+ /* @__PURE__ */ jsx5(
5395
5812
  "span",
5396
5813
  {
5397
5814
  style: {
@@ -5409,8 +5826,8 @@ function ReportDialog({
5409
5826
  ))
5410
5827
  }
5411
5828
  ),
5412
- step === 2 && /* @__PURE__ */ jsxs4(Fragment3, { children: [
5413
- /* @__PURE__ */ jsxs4(
5829
+ step === 2 && /* @__PURE__ */ jsxs5(Fragment4, { children: [
5830
+ /* @__PURE__ */ jsxs5(
5414
5831
  "button",
5415
5832
  {
5416
5833
  type: "button",
@@ -5434,11 +5851,11 @@ function ReportDialog({
5434
5851
  children: [
5435
5852
  getTypeIcon(reportType, isRating ? "#f59e0b" : t2.accent, 13),
5436
5853
  getTypeLabel(reportType),
5437
- availableTypes.length > 1 && /* @__PURE__ */ jsx4("span", { style: { color: t2.textMuted, fontWeight: 400 }, children: "\xB7 change" })
5854
+ availableTypes.length > 1 && /* @__PURE__ */ jsx5("span", { style: { color: t2.textMuted, fontWeight: 400 }, children: "\xB7 change" })
5438
5855
  ]
5439
5856
  }
5440
5857
  ),
5441
- isRating && /* @__PURE__ */ jsx4(
5858
+ isRating && /* @__PURE__ */ jsx5(
5442
5859
  "div",
5443
5860
  {
5444
5861
  style: {
@@ -5449,7 +5866,7 @@ function ReportDialog({
5449
5866
  onMouseLeave: () => setHoveredStar(0),
5450
5867
  children: [1, 2, 3, 4, 5].map((star) => {
5451
5868
  const filled = star <= (hoveredStar || rating);
5452
- return /* @__PURE__ */ jsx4(
5869
+ return /* @__PURE__ */ jsx5(
5453
5870
  "button",
5454
5871
  {
5455
5872
  type: "button",
@@ -5466,7 +5883,7 @@ function ReportDialog({
5466
5883
  cursor: "pointer",
5467
5884
  lineHeight: 0
5468
5885
  },
5469
- children: /* @__PURE__ */ jsx4("svg", { width: "30", height: "30", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx4(
5886
+ children: /* @__PURE__ */ jsx5("svg", { width: "30", height: "30", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx5(
5470
5887
  "path",
5471
5888
  {
5472
5889
  d: "M12 3l2.6 5.3 5.9.9-4.3 4.1 1 5.8L12 16.4 6.8 19.1l1-5.8L3.5 9.2l5.9-.9L12 3z",
@@ -5482,7 +5899,7 @@ function ReportDialog({
5482
5899
  })
5483
5900
  }
5484
5901
  ),
5485
- assist && !isRating && !assistUsed && /* @__PURE__ */ jsxs4(
5902
+ assist && !isRating && !assistUsed && /* @__PURE__ */ jsxs5(
5486
5903
  "button",
5487
5904
  {
5488
5905
  type: "button",
@@ -5509,7 +5926,7 @@ function ReportDialog({
5509
5926
  },
5510
5927
  title: "Answer a question or two and the assistant writes the report for you",
5511
5928
  children: [
5512
- /* @__PURE__ */ jsx4("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx4(
5929
+ /* @__PURE__ */ jsx5("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx5(
5513
5930
  "path",
5514
5931
  {
5515
5932
  d: "M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5L12 3zM19 15l.75 2.25L22 18l-2.25.75L19 21l-.75-2.25L16 18l2.25-.75L19 15z",
@@ -5522,8 +5939,8 @@ function ReportDialog({
5522
5939
  ]
5523
5940
  }
5524
5941
  ),
5525
- /* @__PURE__ */ jsxs4("div", { style: { position: "relative" }, children: [
5526
- /* @__PURE__ */ jsx4(
5942
+ /* @__PURE__ */ jsxs5("div", { style: { position: "relative" }, children: [
5943
+ /* @__PURE__ */ jsx5(
5527
5944
  "textarea",
5528
5945
  {
5529
5946
  ref: textareaRef,
@@ -5565,7 +5982,7 @@ function ReportDialog({
5565
5982
  autoFocus: true
5566
5983
  }
5567
5984
  ),
5568
- (isListening || isTranscribing) && /* @__PURE__ */ jsxs4(
5985
+ (isListening || isTranscribing) && /* @__PURE__ */ jsxs5(
5569
5986
  "span",
5570
5987
  {
5571
5988
  style: {
@@ -5583,7 +6000,7 @@ function ReportDialog({
5583
6000
  zIndex: 1
5584
6001
  },
5585
6002
  children: [
5586
- /* @__PURE__ */ jsx4(
6003
+ /* @__PURE__ */ jsx5(
5587
6004
  "span",
5588
6005
  {
5589
6006
  style: {
@@ -5598,7 +6015,7 @@ function ReportDialog({
5598
6015
  }
5599
6016
  ),
5600
6017
  isTranscribing ? "Transcribing\u2026" : "REC",
5601
- isListening && !isTranscribing && /* @__PURE__ */ jsx4(
6018
+ isListening && !isTranscribing && /* @__PURE__ */ jsx5(
5602
6019
  "span",
5603
6020
  {
5604
6021
  style: {
@@ -5625,7 +6042,7 @@ function ReportDialog({
5625
6042
  dur: "0.55s",
5626
6043
  delay: "0.15s"
5627
6044
  }
5628
- ].map((b, i) => /* @__PURE__ */ jsx4(
6045
+ ].map((b, i) => /* @__PURE__ */ jsx5(
5629
6046
  "span",
5630
6047
  {
5631
6048
  style: {
@@ -5645,7 +6062,7 @@ function ReportDialog({
5645
6062
  ]
5646
6063
  }
5647
6064
  ),
5648
- enhanceText2 && /* @__PURE__ */ jsxs4(
6065
+ enhanceText2 && /* @__PURE__ */ jsxs5(
5649
6066
  "button",
5650
6067
  {
5651
6068
  type: "button",
@@ -5690,7 +6107,7 @@ function ReportDialog({
5690
6107
  },
5691
6108
  title: "Polish grammar \u2014 preserves your meaning",
5692
6109
  children: [
5693
- /* @__PURE__ */ jsx4(
6110
+ /* @__PURE__ */ jsx5(
5694
6111
  "svg",
5695
6112
  {
5696
6113
  width: "11",
@@ -5698,7 +6115,7 @@ function ReportDialog({
5698
6115
  viewBox: "0 0 24 24",
5699
6116
  fill: "none",
5700
6117
  "aria-hidden": "true",
5701
- children: /* @__PURE__ */ jsx4(
6118
+ children: /* @__PURE__ */ jsx5(
5702
6119
  "path",
5703
6120
  {
5704
6121
  d: "M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5L12 3zM19 15l.75 2.25L22 18l-2.25.75L19 21l-.75-2.25L16 18l2.25-.75L19 15z",
@@ -5713,7 +6130,7 @@ function ReportDialog({
5713
6130
  ]
5714
6131
  }
5715
6132
  ),
5716
- transcribeAudio2 && /* @__PURE__ */ jsx4(
6133
+ transcribeAudio2 && /* @__PURE__ */ jsx5(
5717
6134
  "button",
5718
6135
  {
5719
6136
  type: "button",
@@ -5739,7 +6156,7 @@ function ReportDialog({
5739
6156
  padding: 0,
5740
6157
  transition: "border-color 0.2s ease, color 0.2s ease"
5741
6158
  },
5742
- children: isListening ? /* @__PURE__ */ jsx4(
6159
+ children: isListening ? /* @__PURE__ */ jsx5(
5743
6160
  "svg",
5744
6161
  {
5745
6162
  width: "12",
@@ -5747,7 +6164,7 @@ function ReportDialog({
5747
6164
  viewBox: "0 0 24 24",
5748
6165
  fill: "currentColor",
5749
6166
  "aria-hidden": "true",
5750
- children: /* @__PURE__ */ jsx4(
6167
+ children: /* @__PURE__ */ jsx5(
5751
6168
  "rect",
5752
6169
  {
5753
6170
  x: "6",
@@ -5758,7 +6175,7 @@ function ReportDialog({
5758
6175
  }
5759
6176
  )
5760
6177
  }
5761
- ) : /* @__PURE__ */ jsxs4(
6178
+ ) : /* @__PURE__ */ jsxs5(
5762
6179
  "svg",
5763
6180
  {
5764
6181
  width: "13",
@@ -5767,7 +6184,7 @@ function ReportDialog({
5767
6184
  fill: "none",
5768
6185
  "aria-hidden": "true",
5769
6186
  children: [
5770
- /* @__PURE__ */ jsx4(
6187
+ /* @__PURE__ */ jsx5(
5771
6188
  "rect",
5772
6189
  {
5773
6190
  x: "9",
@@ -5779,7 +6196,7 @@ function ReportDialog({
5779
6196
  strokeWidth: "1.8"
5780
6197
  }
5781
6198
  ),
5782
- /* @__PURE__ */ jsx4(
6199
+ /* @__PURE__ */ jsx5(
5783
6200
  "path",
5784
6201
  {
5785
6202
  d: "M5 10a7 7 0 0014 0M12 19v3M9 22h6",
@@ -5794,7 +6211,7 @@ function ReportDialog({
5794
6211
  }
5795
6212
  )
5796
6213
  ] }),
5797
- transcribeAudio2 && !isListening && !isTranscribing && !voiceError && /* @__PURE__ */ jsxs4(
6214
+ transcribeAudio2 && !isListening && !isTranscribing && !voiceError && /* @__PURE__ */ jsxs5(
5798
6215
  "div",
5799
6216
  {
5800
6217
  style: {
@@ -5808,16 +6225,16 @@ function ReportDialog({
5808
6225
  userSelect: "none"
5809
6226
  },
5810
6227
  children: [
5811
- /* @__PURE__ */ jsxs4("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
5812
- /* @__PURE__ */ jsx4("path", { d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z" }),
5813
- /* @__PURE__ */ jsx4("path", { d: "M19 10v2a7 7 0 0 1-14 0v-2" }),
5814
- /* @__PURE__ */ jsx4("line", { x1: "12", x2: "12", y1: "19", y2: "22" })
6228
+ /* @__PURE__ */ jsxs5("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
6229
+ /* @__PURE__ */ jsx5("path", { d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z" }),
6230
+ /* @__PURE__ */ jsx5("path", { d: "M19 10v2a7 7 0 0 1-14 0v-2" }),
6231
+ /* @__PURE__ */ jsx5("line", { x1: "12", x2: "12", y1: "19", y2: "22" })
5815
6232
  ] }),
5816
6233
  "Hold Space to speak \u2014 we'll transcribe it"
5817
6234
  ]
5818
6235
  }
5819
6236
  ),
5820
- isEnhanced && originalDescription !== null && /* @__PURE__ */ jsxs4(
6237
+ isEnhanced && originalDescription !== null && /* @__PURE__ */ jsxs5(
5821
6238
  "div",
5822
6239
  {
5823
6240
  style: {
@@ -5831,7 +6248,7 @@ function ReportDialog({
5831
6248
  border: `1px solid ${t2.accent}40`
5832
6249
  },
5833
6250
  children: [
5834
- /* @__PURE__ */ jsx4(
6251
+ /* @__PURE__ */ jsx5(
5835
6252
  "svg",
5836
6253
  {
5837
6254
  width: "12",
@@ -5839,7 +6256,7 @@ function ReportDialog({
5839
6256
  viewBox: "0 0 24 24",
5840
6257
  fill: "none",
5841
6258
  style: { flexShrink: 0 },
5842
- children: /* @__PURE__ */ jsx4(
6259
+ children: /* @__PURE__ */ jsx5(
5843
6260
  "path",
5844
6261
  {
5845
6262
  d: "M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5L12 3z",
@@ -5850,7 +6267,7 @@ function ReportDialog({
5850
6267
  )
5851
6268
  }
5852
6269
  ),
5853
- /* @__PURE__ */ jsx4(
6270
+ /* @__PURE__ */ jsx5(
5854
6271
  "span",
5855
6272
  {
5856
6273
  style: {
@@ -5861,7 +6278,7 @@ function ReportDialog({
5861
6278
  children: "AI enhanced"
5862
6279
  }
5863
6280
  ),
5864
- /* @__PURE__ */ jsx4(
6281
+ /* @__PURE__ */ jsx5(
5865
6282
  "button",
5866
6283
  {
5867
6284
  type: "button",
@@ -5883,7 +6300,7 @@ function ReportDialog({
5883
6300
  children: "Keep"
5884
6301
  }
5885
6302
  ),
5886
- /* @__PURE__ */ jsx4(
6303
+ /* @__PURE__ */ jsx5(
5887
6304
  "button",
5888
6305
  {
5889
6306
  type: "button",
@@ -5909,7 +6326,7 @@ function ReportDialog({
5909
6326
  ]
5910
6327
  }
5911
6328
  ),
5912
- voiceError && /* @__PURE__ */ jsx4(
6329
+ voiceError && /* @__PURE__ */ jsx5(
5913
6330
  "p",
5914
6331
  {
5915
6332
  role: "alert",
@@ -5923,7 +6340,7 @@ function ReportDialog({
5923
6340
  children: voiceError
5924
6341
  }
5925
6342
  ),
5926
- assistNotice && /* @__PURE__ */ jsx4(
6343
+ assistNotice && /* @__PURE__ */ jsx5(
5927
6344
  "p",
5928
6345
  {
5929
6346
  style: {
@@ -5936,8 +6353,8 @@ function ReportDialog({
5936
6353
  children: assistNotice
5937
6354
  }
5938
6355
  ),
5939
- !isRating && /* @__PURE__ */ jsxs4("div", { style: { marginTop: "10px" }, children: [
5940
- /* @__PURE__ */ jsxs4(
6356
+ !isRating && /* @__PURE__ */ jsxs5("div", { style: { marginTop: "10px" }, children: [
6357
+ /* @__PURE__ */ jsxs5(
5941
6358
  "span",
5942
6359
  {
5943
6360
  style: {
@@ -5953,7 +6370,7 @@ function ReportDialog({
5953
6370
  ]
5954
6371
  }
5955
6372
  ),
5956
- (screenshots.length > 0 || shotPending) && /* @__PURE__ */ jsxs4(
6373
+ (screenshots.length > 0 || shotPending) && /* @__PURE__ */ jsxs5(
5957
6374
  "div",
5958
6375
  {
5959
6376
  style: {
@@ -5963,7 +6380,7 @@ function ReportDialog({
5963
6380
  marginBottom: "8px"
5964
6381
  },
5965
6382
  children: [
5966
- shotPending && /* @__PURE__ */ jsx4(
6383
+ shotPending && /* @__PURE__ */ jsx5(
5967
6384
  "div",
5968
6385
  {
5969
6386
  role: "status",
@@ -5988,7 +6405,7 @@ function ReportDialog({
5988
6405
  children: "Capturing\u2026"
5989
6406
  }
5990
6407
  ),
5991
- screenshots.map((src, i) => /* @__PURE__ */ jsxs4(
6408
+ screenshots.map((src, i) => /* @__PURE__ */ jsxs5(
5992
6409
  "div",
5993
6410
  {
5994
6411
  style: {
@@ -5997,7 +6414,7 @@ function ReportDialog({
5997
6414
  height: "56px"
5998
6415
  },
5999
6416
  children: [
6000
- /* @__PURE__ */ jsx4(
6417
+ /* @__PURE__ */ jsx5(
6001
6418
  "img",
6002
6419
  {
6003
6420
  src,
@@ -6015,7 +6432,7 @@ function ReportDialog({
6015
6432
  }
6016
6433
  }
6017
6434
  ),
6018
- /* @__PURE__ */ jsx4(
6435
+ /* @__PURE__ */ jsx5(
6019
6436
  "button",
6020
6437
  {
6021
6438
  type: "button",
@@ -6041,14 +6458,14 @@ function ReportDialog({
6041
6458
  alignItems: "center",
6042
6459
  justifyContent: "center"
6043
6460
  },
6044
- children: /* @__PURE__ */ jsx4(
6461
+ children: /* @__PURE__ */ jsx5(
6045
6462
  "svg",
6046
6463
  {
6047
6464
  width: "8",
6048
6465
  height: "8",
6049
6466
  viewBox: "0 0 10 10",
6050
6467
  fill: "none",
6051
- children: /* @__PURE__ */ jsx4(
6468
+ children: /* @__PURE__ */ jsx5(
6052
6469
  "path",
6053
6470
  {
6054
6471
  d: "M1 1L9 9M9 1L1 9",
@@ -6061,7 +6478,7 @@ function ReportDialog({
6061
6478
  )
6062
6479
  }
6063
6480
  ),
6064
- /* @__PURE__ */ jsx4(
6481
+ /* @__PURE__ */ jsx5(
6065
6482
  "button",
6066
6483
  {
6067
6484
  type: "button",
@@ -6086,14 +6503,14 @@ function ReportDialog({
6086
6503
  justifyContent: "center",
6087
6504
  boxShadow: "0 2px 8px rgba(0,0,0,0.45)"
6088
6505
  },
6089
- children: /* @__PURE__ */ jsx4(
6506
+ children: /* @__PURE__ */ jsx5(
6090
6507
  "svg",
6091
6508
  {
6092
6509
  width: "12",
6093
6510
  height: "12",
6094
6511
  viewBox: "0 0 24 24",
6095
6512
  fill: "none",
6096
- children: /* @__PURE__ */ jsx4(
6513
+ children: /* @__PURE__ */ jsx5(
6097
6514
  "path",
6098
6515
  {
6099
6516
  d: "M12 20h9M16.5 3.5a2.12 2.12 0 013 3L7 19l-4 1 1-4L16.5 3.5z",
@@ -6114,7 +6531,7 @@ function ReportDialog({
6114
6531
  ]
6115
6532
  }
6116
6533
  ),
6117
- attachments.length > 0 && /* @__PURE__ */ jsx4(
6534
+ attachments.length > 0 && /* @__PURE__ */ jsx5(
6118
6535
  "div",
6119
6536
  {
6120
6537
  style: {
@@ -6123,7 +6540,7 @@ function ReportDialog({
6123
6540
  gap: "6px",
6124
6541
  marginBottom: "8px"
6125
6542
  },
6126
- children: attachments.map((a, i) => /* @__PURE__ */ jsxs4(
6543
+ children: attachments.map((a, i) => /* @__PURE__ */ jsxs5(
6127
6544
  "div",
6128
6545
  {
6129
6546
  style: {
@@ -6135,7 +6552,7 @@ function ReportDialog({
6135
6552
  border: `1px solid ${t2.border}`
6136
6553
  },
6137
6554
  children: [
6138
- /* @__PURE__ */ jsxs4(
6555
+ /* @__PURE__ */ jsxs5(
6139
6556
  "svg",
6140
6557
  {
6141
6558
  width: "14",
@@ -6144,7 +6561,7 @@ function ReportDialog({
6144
6561
  fill: "none",
6145
6562
  style: { flexShrink: 0, opacity: 0.6 },
6146
6563
  children: [
6147
- /* @__PURE__ */ jsx4(
6564
+ /* @__PURE__ */ jsx5(
6148
6565
  "path",
6149
6566
  {
6150
6567
  d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z",
@@ -6154,7 +6571,7 @@ function ReportDialog({
6154
6571
  strokeLinejoin: "round"
6155
6572
  }
6156
6573
  ),
6157
- /* @__PURE__ */ jsx4(
6574
+ /* @__PURE__ */ jsx5(
6158
6575
  "path",
6159
6576
  {
6160
6577
  d: "M14 2v6h6",
@@ -6167,7 +6584,7 @@ function ReportDialog({
6167
6584
  ]
6168
6585
  }
6169
6586
  ),
6170
- /* @__PURE__ */ jsx4(
6587
+ /* @__PURE__ */ jsx5(
6171
6588
  "span",
6172
6589
  {
6173
6590
  style: {
@@ -6181,7 +6598,7 @@ function ReportDialog({
6181
6598
  children: a.name
6182
6599
  }
6183
6600
  ),
6184
- /* @__PURE__ */ jsxs4(
6601
+ /* @__PURE__ */ jsxs5(
6185
6602
  "span",
6186
6603
  {
6187
6604
  style: { fontSize: "10px", color: t2.textMuted },
@@ -6191,7 +6608,7 @@ function ReportDialog({
6191
6608
  ]
6192
6609
  }
6193
6610
  ),
6194
- /* @__PURE__ */ jsx4(
6611
+ /* @__PURE__ */ jsx5(
6195
6612
  "button",
6196
6613
  {
6197
6614
  type: "button",
@@ -6215,14 +6632,14 @@ function ReportDialog({
6215
6632
  justifyContent: "center",
6216
6633
  flexShrink: 0
6217
6634
  },
6218
- children: /* @__PURE__ */ jsx4(
6635
+ children: /* @__PURE__ */ jsx5(
6219
6636
  "svg",
6220
6637
  {
6221
6638
  width: "8",
6222
6639
  height: "8",
6223
6640
  viewBox: "0 0 10 10",
6224
6641
  fill: "none",
6225
- children: /* @__PURE__ */ jsx4(
6642
+ children: /* @__PURE__ */ jsx5(
6226
6643
  "path",
6227
6644
  {
6228
6645
  d: "M1 1L9 9M9 1L1 9",
@@ -6241,7 +6658,7 @@ function ReportDialog({
6241
6658
  ))
6242
6659
  }
6243
6660
  ),
6244
- /* @__PURE__ */ jsx4(
6661
+ /* @__PURE__ */ jsx5(
6245
6662
  "div",
6246
6663
  {
6247
6664
  onClick: () => {
@@ -6267,7 +6684,7 @@ function ReportDialog({
6267
6684
  background: screenshotDragOver ? isDark ? "rgba(34,211,238,0.06)" : "rgba(8,145,178,0.04)" : "transparent",
6268
6685
  transition: "border-color 0.15s ease, background 0.15s ease"
6269
6686
  },
6270
- children: screenshots.length + attachments.length > 0 ? /* @__PURE__ */ jsx4(
6687
+ children: screenshots.length + attachments.length > 0 ? /* @__PURE__ */ jsx5(
6271
6688
  "p",
6272
6689
  {
6273
6690
  style: {
@@ -6278,8 +6695,8 @@ function ReportDialog({
6278
6695
  },
6279
6696
  children: screenshotDragOver ? "Drop to attach" : "+ Add more \xB7 Drag & drop \xB7 Paste"
6280
6697
  }
6281
- ) : /* @__PURE__ */ jsxs4(Fragment3, { children: [
6282
- /* @__PURE__ */ jsxs4(
6698
+ ) : /* @__PURE__ */ jsxs5(Fragment4, { children: [
6699
+ /* @__PURE__ */ jsxs5(
6283
6700
  "svg",
6284
6701
  {
6285
6702
  width: "22",
@@ -6292,7 +6709,7 @@ function ReportDialog({
6292
6709
  opacity: 0.45
6293
6710
  },
6294
6711
  children: [
6295
- /* @__PURE__ */ jsx4(
6712
+ /* @__PURE__ */ jsx5(
6296
6713
  "rect",
6297
6714
  {
6298
6715
  x: "3",
@@ -6304,7 +6721,7 @@ function ReportDialog({
6304
6721
  strokeWidth: "1.5"
6305
6722
  }
6306
6723
  ),
6307
- /* @__PURE__ */ jsx4(
6724
+ /* @__PURE__ */ jsx5(
6308
6725
  "circle",
6309
6726
  {
6310
6727
  cx: "8.5",
@@ -6314,7 +6731,7 @@ function ReportDialog({
6314
6731
  strokeWidth: "1.5"
6315
6732
  }
6316
6733
  ),
6317
- /* @__PURE__ */ jsx4(
6734
+ /* @__PURE__ */ jsx5(
6318
6735
  "path",
6319
6736
  {
6320
6737
  d: "M21 15l-5-5L5 21",
@@ -6327,7 +6744,7 @@ function ReportDialog({
6327
6744
  ]
6328
6745
  }
6329
6746
  ),
6330
- /* @__PURE__ */ jsx4(
6747
+ /* @__PURE__ */ jsx5(
6331
6748
  "p",
6332
6749
  {
6333
6750
  style: {
@@ -6339,7 +6756,7 @@ function ReportDialog({
6339
6756
  children: screenshotDragOver ? "Drop to attach" : "Add screenshots or files"
6340
6757
  }
6341
6758
  ),
6342
- /* @__PURE__ */ jsx4(
6759
+ /* @__PURE__ */ jsx5(
6343
6760
  "p",
6344
6761
  {
6345
6762
  style: {
@@ -6354,8 +6771,8 @@ function ReportDialog({
6354
6771
  }
6355
6772
  )
6356
6773
  ] }),
6357
- showSeverity && reportType === "BUG" && /* @__PURE__ */ jsxs4("div", { style: { marginTop: "10px" }, children: [
6358
- /* @__PURE__ */ jsxs4(
6774
+ showSeverity && reportType === "BUG" && /* @__PURE__ */ jsxs5("div", { style: { marginTop: "10px" }, children: [
6775
+ /* @__PURE__ */ jsxs5(
6359
6776
  "span",
6360
6777
  {
6361
6778
  style: {
@@ -6368,7 +6785,7 @@ function ReportDialog({
6368
6785
  },
6369
6786
  children: [
6370
6787
  "How bad is it?",
6371
- /* @__PURE__ */ jsx4(
6788
+ /* @__PURE__ */ jsx5(
6372
6789
  "span",
6373
6790
  {
6374
6791
  style: {
@@ -6381,7 +6798,7 @@ function ReportDialog({
6381
6798
  ]
6382
6799
  }
6383
6800
  ),
6384
- /* @__PURE__ */ jsx4(
6801
+ /* @__PURE__ */ jsx5(
6385
6802
  "div",
6386
6803
  {
6387
6804
  role: "radiogroup",
@@ -6389,7 +6806,7 @@ function ReportDialog({
6389
6806
  style: { display: "flex", gap: "6px" },
6390
6807
  children: SEVERITY_LEVELS.map((s) => {
6391
6808
  const on = severity === s;
6392
- return /* @__PURE__ */ jsx4(
6809
+ return /* @__PURE__ */ jsx5(
6393
6810
  "button",
6394
6811
  {
6395
6812
  type: "button",
@@ -6430,7 +6847,7 @@ function ReportDialog({
6430
6847
  }
6431
6848
  )
6432
6849
  ] }),
6433
- validationError && /* @__PURE__ */ jsx4(
6850
+ validationError && /* @__PURE__ */ jsx5(
6434
6851
  "p",
6435
6852
  {
6436
6853
  style: {
@@ -6445,7 +6862,7 @@ function ReportDialog({
6445
6862
  // Same visual language as the assistant's "Our team is
6446
6863
  // already on this" card, so both routes to a duplicate
6447
6864
  // read as one feature.
6448
- /* @__PURE__ */ jsxs4(
6865
+ /* @__PURE__ */ jsxs5(
6449
6866
  "div",
6450
6867
  {
6451
6868
  "data-gg-similar": "",
@@ -6460,11 +6877,11 @@ function ReportDialog({
6460
6877
  backgroundColor: "rgba(245,158,11,0.08)"
6461
6878
  },
6462
6879
  children: [
6463
- /* @__PURE__ */ jsxs4("div", { style: { display: "flex", flexDirection: "column", gap: "2px" }, children: [
6464
- /* @__PURE__ */ jsx4("span", { style: { color: t2.text, fontWeight: 600, fontSize: "13px" }, children: "Our team may already have this, or something close" }),
6465
- /* @__PURE__ */ jsx4("span", { style: { color: t2.textMuted, fontSize: "12px", lineHeight: 1.5 }, children: similarIssues.length > 1 ? "Pick the one that matches. Same problem, or a different request for the same feature \u2014 it's added to that issue, so the team has it in one place." : "Same problem, or a different request for the same feature? Pick it \u2014 it's added to that issue, so the team has it in one place." })
6880
+ /* @__PURE__ */ jsxs5("div", { style: { display: "flex", flexDirection: "column", gap: "2px" }, children: [
6881
+ /* @__PURE__ */ jsx5("span", { style: { color: t2.text, fontWeight: 600, fontSize: "13px" }, children: "Our team may already have this, or something close" }),
6882
+ /* @__PURE__ */ jsx5("span", { style: { color: t2.textMuted, fontSize: "12px", lineHeight: 1.5 }, children: similarIssues.length > 1 ? "Pick the one that matches. Same problem, or a different request for the same feature \u2014 it's added to that issue, so the team has it in one place." : "Same problem, or a different request for the same feature? Pick it \u2014 it's added to that issue, so the team has it in one place." })
6466
6883
  ] }),
6467
- /* @__PURE__ */ jsx4(
6884
+ /* @__PURE__ */ jsx5(
6468
6885
  "div",
6469
6886
  {
6470
6887
  role: "radiogroup",
@@ -6472,7 +6889,7 @@ function ReportDialog({
6472
6889
  style: { display: "flex", flexDirection: "column", gap: "6px" },
6473
6890
  children: similarIssues.map((issue) => {
6474
6891
  const picked = pickedSimilar === issue.number;
6475
- return /* @__PURE__ */ jsxs4(
6892
+ return /* @__PURE__ */ jsxs5(
6476
6893
  "button",
6477
6894
  {
6478
6895
  type: "button",
@@ -6497,7 +6914,7 @@ function ReportDialog({
6497
6914
  fontFamily: "inherit"
6498
6915
  },
6499
6916
  children: [
6500
- /* @__PURE__ */ jsx4(
6917
+ /* @__PURE__ */ jsx5(
6501
6918
  "span",
6502
6919
  {
6503
6920
  "aria-hidden": "true",
@@ -6514,7 +6931,7 @@ function ReportDialog({
6514
6931
  }
6515
6932
  }
6516
6933
  ),
6517
- /* @__PURE__ */ jsxs4(
6934
+ /* @__PURE__ */ jsxs5(
6518
6935
  "span",
6519
6936
  {
6520
6937
  style: {
@@ -6524,7 +6941,7 @@ function ReportDialog({
6524
6941
  minWidth: 0
6525
6942
  },
6526
6943
  children: [
6527
- /* @__PURE__ */ jsxs4(
6944
+ /* @__PURE__ */ jsxs5(
6528
6945
  "span",
6529
6946
  {
6530
6947
  title: issue.title,
@@ -6538,7 +6955,7 @@ function ReportDialog({
6538
6955
  WebkitBoxOrient: "vertical"
6539
6956
  },
6540
6957
  children: [
6541
- /* @__PURE__ */ jsxs4("span", { style: { color: t2.textMuted, fontWeight: 600 }, children: [
6958
+ /* @__PURE__ */ jsxs5("span", { style: { color: t2.textMuted, fontWeight: 600 }, children: [
6542
6959
  "#",
6543
6960
  issue.number
6544
6961
  ] }),
@@ -6547,7 +6964,7 @@ function ReportDialog({
6547
6964
  ]
6548
6965
  }
6549
6966
  ),
6550
- issue.status && /* @__PURE__ */ jsx4("span", { style: { fontSize: "11.5px", color: t2.textMuted }, children: issue.status })
6967
+ issue.status && /* @__PURE__ */ jsx5("span", { style: { fontSize: "11.5px", color: t2.textMuted }, children: issue.status })
6551
6968
  ]
6552
6969
  }
6553
6970
  )
@@ -6558,7 +6975,7 @@ function ReportDialog({
6558
6975
  })
6559
6976
  }
6560
6977
  ),
6561
- /* @__PURE__ */ jsx4(
6978
+ /* @__PURE__ */ jsx5(
6562
6979
  "button",
6563
6980
  {
6564
6981
  type: "button",
@@ -6583,15 +7000,15 @@ function ReportDialog({
6583
7000
  cursor: isSubmitting || !pickedSimilar ? "not-allowed" : "pointer",
6584
7001
  fontFamily: "inherit"
6585
7002
  },
6586
- children: typeof attachingTo === "number" && duplicateKind !== "related" ? /* @__PURE__ */ jsxs4(Fragment3, { children: [
6587
- /* @__PURE__ */ jsx4(ButtonSpinner, {}),
7003
+ children: typeof attachingTo === "number" && duplicateKind !== "related" ? /* @__PURE__ */ jsxs5(Fragment4, { children: [
7004
+ /* @__PURE__ */ jsx5(ButtonSpinner, {}),
6588
7005
  "Adding to #",
6589
7006
  attachingTo,
6590
7007
  "\u2026"
6591
7008
  ] }) : pickedSimilar ? `Add to #${pickedSimilar}` : "Pick the matching issue"
6592
7009
  }
6593
7010
  ),
6594
- pickedSimilar && /* @__PURE__ */ jsx4(
7011
+ pickedSimilar && /* @__PURE__ */ jsx5(
6595
7012
  "button",
6596
7013
  {
6597
7014
  type: "button",
@@ -6616,15 +7033,15 @@ function ReportDialog({
6616
7033
  cursor: isSubmitting ? "not-allowed" : "pointer",
6617
7034
  fontFamily: "inherit"
6618
7035
  },
6619
- children: typeof attachingTo === "number" && duplicateKind === "related" ? /* @__PURE__ */ jsxs4(Fragment3, { children: [
6620
- /* @__PURE__ */ jsx4(ButtonSpinner, {}),
7036
+ children: typeof attachingTo === "number" && duplicateKind === "related" ? /* @__PURE__ */ jsxs5(Fragment4, { children: [
7037
+ /* @__PURE__ */ jsx5(ButtonSpinner, {}),
6621
7038
  "Adding to #",
6622
7039
  attachingTo,
6623
7040
  "\u2026"
6624
7041
  ] }) : `Related request \u2014 add to #${pickedSimilar}`
6625
7042
  }
6626
7043
  ),
6627
- /* @__PURE__ */ jsx4(
7044
+ /* @__PURE__ */ jsx5(
6628
7045
  "button",
6629
7046
  {
6630
7047
  type: "button",
@@ -6649,8 +7066,8 @@ function ReportDialog({
6649
7066
  cursor: isSubmitting ? "not-allowed" : "pointer",
6650
7067
  fontFamily: "inherit"
6651
7068
  },
6652
- children: attachingTo === "new" ? /* @__PURE__ */ jsxs4(Fragment3, { children: [
6653
- /* @__PURE__ */ jsx4(ButtonSpinner, {}),
7069
+ children: attachingTo === "new" ? /* @__PURE__ */ jsxs5(Fragment4, { children: [
7070
+ /* @__PURE__ */ jsx5(ButtonSpinner, {}),
6654
7071
  "Sending as new\u2026"
6655
7072
  ] }) : "No, mine is different \u2014 send as new"
6656
7073
  }
@@ -6658,7 +7075,7 @@ function ReportDialog({
6658
7075
  ]
6659
7076
  }
6660
7077
  )
6661
- ) : /* @__PURE__ */ jsx4(
7078
+ ) : /* @__PURE__ */ jsx5(
6662
7079
  "button",
6663
7080
  {
6664
7081
  type: "button",
@@ -6678,8 +7095,8 @@ function ReportDialog({
6678
7095
  fontFamily: "inherit",
6679
7096
  transition: "background-color 0.15s ease"
6680
7097
  },
6681
- children: checkingSimilar ? /* @__PURE__ */ jsxs4(Fragment3, { children: [
6682
- /* @__PURE__ */ jsx4(ButtonSpinner, {}),
7098
+ children: checkingSimilar ? /* @__PURE__ */ jsxs5(Fragment4, { children: [
7099
+ /* @__PURE__ */ jsx5(ButtonSpinner, {}),
6683
7100
  "Checking for existing reports\u2026"
6684
7101
  ] }) : isSubmitting ? shotPending && !isRating ? "Attaching screenshot\u2026" : "Sending..." : isRating ? "Send Rating" : "Send Report"
6685
7102
  }
@@ -6688,7 +7105,7 @@ function ReportDialog({
6688
7105
  ] })
6689
7106
  }
6690
7107
  ),
6691
- /* @__PURE__ */ jsxs4(
7108
+ /* @__PURE__ */ jsxs5(
6692
7109
  "div",
6693
7110
  {
6694
7111
  style: {
@@ -6700,8 +7117,8 @@ function ReportDialog({
6700
7117
  gap: "12px"
6701
7118
  },
6702
7119
  children: [
6703
- /* @__PURE__ */ jsx4(ReporterChip, { reporter, t: t2 }),
6704
- reportGlitchgrabProblem ? /* @__PURE__ */ jsx4(
7120
+ /* @__PURE__ */ jsx5(ReporterChip, { reporter, t: t2 }),
7121
+ reportGlitchgrabProblem ? /* @__PURE__ */ jsx5(
6705
7122
  "button",
6706
7123
  {
6707
7124
  type: "button",
@@ -6728,7 +7145,7 @@ function ReportDialog({
6728
7145
  },
6729
7146
  children: "Problem with Glitchgrab?"
6730
7147
  }
6731
- ) : /* @__PURE__ */ jsx4(
7148
+ ) : /* @__PURE__ */ jsx5(
6732
7149
  "span",
6733
7150
  {
6734
7151
  style: {
@@ -6750,7 +7167,7 @@ function ReportDialog({
6750
7167
  ),
6751
7168
  document.body
6752
7169
  ),
6753
- /* @__PURE__ */ jsx4(
7170
+ /* @__PURE__ */ jsx5(
6754
7171
  "input",
6755
7172
  {
6756
7173
  ref: fileInputRef,
@@ -6762,7 +7179,7 @@ function ReportDialog({
6762
7179
  }
6763
7180
  ),
6764
7181
  isOpen && previewIndex !== null && screenshots[previewIndex] && createPortal3(
6765
- /* @__PURE__ */ jsxs4(
7182
+ /* @__PURE__ */ jsxs5(
6766
7183
  "div",
6767
7184
  {
6768
7185
  "data-glitchgrab-layer": "",
@@ -6784,7 +7201,7 @@ function ReportDialog({
6784
7201
  },
6785
7202
  onMouseDown: (e) => e.stopPropagation(),
6786
7203
  children: [
6787
- /* @__PURE__ */ jsxs4(
7204
+ /* @__PURE__ */ jsxs5(
6788
7205
  "div",
6789
7206
  {
6790
7207
  ref: previewImgRef,
@@ -6796,7 +7213,7 @@ function ReportDialog({
6796
7213
  },
6797
7214
  onClick: (e) => e.stopPropagation(),
6798
7215
  children: [
6799
- /* @__PURE__ */ jsx4(
7216
+ /* @__PURE__ */ jsx5(
6800
7217
  "div",
6801
7218
  {
6802
7219
  ref: previewScrollRef,
@@ -6815,7 +7232,7 @@ function ReportDialog({
6815
7232
  touchAction: "none",
6816
7233
  cursor: "grab"
6817
7234
  } : { maxWidth: "100%", lineHeight: 0 },
6818
- children: /* @__PURE__ */ jsx4(
7235
+ children: /* @__PURE__ */ jsx5(
6819
7236
  "img",
6820
7237
  {
6821
7238
  ref: previewImgElRef,
@@ -6843,7 +7260,7 @@ function ReportDialog({
6843
7260
  )
6844
7261
  }
6845
7262
  ),
6846
- /* @__PURE__ */ jsxs4(
7263
+ /* @__PURE__ */ jsxs5(
6847
7264
  "button",
6848
7265
  {
6849
7266
  type: "button",
@@ -6871,7 +7288,7 @@ function ReportDialog({
6871
7288
  animation: "gg-pulse 2s ease-in-out infinite"
6872
7289
  },
6873
7290
  children: [
6874
- /* @__PURE__ */ jsx4("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx4(
7291
+ /* @__PURE__ */ jsx5("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx5(
6875
7292
  "path",
6876
7293
  {
6877
7294
  d: "M12 20h9M16.5 3.5a2.12 2.12 0 013 3L7 19l-4 1 1-4L16.5 3.5z",
@@ -6888,7 +7305,7 @@ function ReportDialog({
6888
7305
  ]
6889
7306
  }
6890
7307
  ),
6891
- /* @__PURE__ */ jsx4(
7308
+ /* @__PURE__ */ jsx5(
6892
7309
  "div",
6893
7310
  {
6894
7311
  style: {
@@ -6897,7 +7314,7 @@ function ReportDialog({
6897
7314
  alignItems: "center",
6898
7315
  gap: "12px"
6899
7316
  },
6900
- children: /* @__PURE__ */ jsx4(
7317
+ children: /* @__PURE__ */ jsx5(
6901
7318
  "span",
6902
7319
  {
6903
7320
  style: {
@@ -6919,7 +7336,7 @@ function ReportDialog({
6919
7336
  document.body
6920
7337
  ),
6921
7338
  isOpen && annotatingIndex !== null && screenshots[annotatingIndex] && createPortal3(
6922
- /* @__PURE__ */ jsx4(
7339
+ /* @__PURE__ */ jsx5(
6923
7340
  AnnotationCanvas,
6924
7341
  {
6925
7342
  imageSrc: screenshots[annotatingIndex],
@@ -6935,7 +7352,7 @@ function ReportDialog({
6935
7352
  ),
6936
7353
  document.body
6937
7354
  ),
6938
- isOpen && selfReportFrom && reportGlitchgrabProblem && /* @__PURE__ */ jsx4(
7355
+ isOpen && selfReportFrom && reportGlitchgrabProblem && /* @__PURE__ */ jsx5(
6939
7356
  GlitchgrabProblemPanel,
6940
7357
  {
6941
7358
  send: reportGlitchgrabProblem,
@@ -6948,7 +7365,7 @@ function ReportDialog({
6948
7365
  onClose: () => setSelfReportFrom(null)
6949
7366
  }
6950
7367
  ),
6951
- isOpen && sheetUp && /* @__PURE__ */ jsx4(
7368
+ isOpen && sheetUp && /* @__PURE__ */ jsx5(
6952
7369
  AssistSheet,
6953
7370
  {
6954
7371
  assist,
@@ -7049,7 +7466,7 @@ function getTypeIcon(type, color, size = 24) {
7049
7466
  };
7050
7467
  switch (type) {
7051
7468
  case "RATING":
7052
- return /* @__PURE__ */ jsx4("svg", { ...props, children: /* @__PURE__ */ jsx4(
7469
+ return /* @__PURE__ */ jsx5("svg", { ...props, children: /* @__PURE__ */ jsx5(
7053
7470
  "path",
7054
7471
  {
7055
7472
  d: "M12 3l2.6 5.3 5.9.9-4.3 4.1 1 5.8L12 16.4 6.8 19.1l1-5.8L3.5 9.2l5.9-.9L12 3z",
@@ -7059,7 +7476,7 @@ function getTypeIcon(type, color, size = 24) {
7059
7476
  }
7060
7477
  ) });
7061
7478
  case "BUG":
7062
- return /* @__PURE__ */ jsx4("svg", { ...props, children: /* @__PURE__ */ jsx4(
7479
+ return /* @__PURE__ */ jsx5("svg", { ...props, children: /* @__PURE__ */ jsx5(
7063
7480
  "path",
7064
7481
  {
7065
7482
  d: "M8 2L6.5 3.5M16 2L17.5 3.5M3 9H7M17 9H21M12 2a5 5 0 015 5v4a5 5 0 01-10 0V7a5 5 0 015-5zM7 16l-2 3M17 16l2 3",
@@ -7069,7 +7486,7 @@ function getTypeIcon(type, color, size = 24) {
7069
7486
  }
7070
7487
  ) });
7071
7488
  case "FEATURE_REQUEST":
7072
- return /* @__PURE__ */ jsx4("svg", { ...props, children: /* @__PURE__ */ jsx4(
7489
+ return /* @__PURE__ */ jsx5("svg", { ...props, children: /* @__PURE__ */ jsx5(
7073
7490
  "path",
7074
7491
  {
7075
7492
  d: "M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2z",
@@ -7079,8 +7496,8 @@ function getTypeIcon(type, color, size = 24) {
7079
7496
  }
7080
7497
  ) });
7081
7498
  case "UI_IMPROVEMENT":
7082
- return /* @__PURE__ */ jsxs4("svg", { ...props, children: [
7083
- /* @__PURE__ */ jsx4(
7499
+ return /* @__PURE__ */ jsxs5("svg", { ...props, children: [
7500
+ /* @__PURE__ */ jsx5(
7084
7501
  "rect",
7085
7502
  {
7086
7503
  x: "3",
@@ -7092,7 +7509,7 @@ function getTypeIcon(type, color, size = 24) {
7092
7509
  strokeWidth: "1.5"
7093
7510
  }
7094
7511
  ),
7095
- /* @__PURE__ */ jsx4(
7512
+ /* @__PURE__ */ jsx5(
7096
7513
  "path",
7097
7514
  {
7098
7515
  d: "M3 9h18M9 21V9",
@@ -7103,7 +7520,7 @@ function getTypeIcon(type, color, size = 24) {
7103
7520
  )
7104
7521
  ] });
7105
7522
  case "PERFORMANCE":
7106
- return /* @__PURE__ */ jsx4("svg", { ...props, children: /* @__PURE__ */ jsx4(
7523
+ return /* @__PURE__ */ jsx5("svg", { ...props, children: /* @__PURE__ */ jsx5(
7107
7524
  "path",
7108
7525
  {
7109
7526
  d: "M12 21a9 9 0 100-18 9 9 0 000 18zM12 12l4-4M12 7v.01",
@@ -7114,7 +7531,7 @@ function getTypeIcon(type, color, size = 24) {
7114
7531
  }
7115
7532
  ) });
7116
7533
  case "SECURITY":
7117
- return /* @__PURE__ */ jsx4("svg", { ...props, children: /* @__PURE__ */ jsx4(
7534
+ return /* @__PURE__ */ jsx5("svg", { ...props, children: /* @__PURE__ */ jsx5(
7118
7535
  "path",
7119
7536
  {
7120
7537
  d: "M12 3l7 3v5c0 4.5-3 8.5-7 10-4-1.5-7-5.5-7-10V6l7-3z",
@@ -7124,9 +7541,9 @@ function getTypeIcon(type, color, size = 24) {
7124
7541
  }
7125
7542
  ) });
7126
7543
  case "QUESTION":
7127
- return /* @__PURE__ */ jsxs4("svg", { ...props, children: [
7128
- /* @__PURE__ */ jsx4("circle", { cx: "12", cy: "12", r: "10", stroke: color, strokeWidth: "1.5" }),
7129
- /* @__PURE__ */ jsx4(
7544
+ return /* @__PURE__ */ jsxs5("svg", { ...props, children: [
7545
+ /* @__PURE__ */ jsx5("circle", { cx: "12", cy: "12", r: "10", stroke: color, strokeWidth: "1.5" }),
7546
+ /* @__PURE__ */ jsx5(
7130
7547
  "path",
7131
7548
  {
7132
7549
  d: "M9.09 9a3 3 0 015.83 1c0 2-3 3-3 3M12 17h.01",
@@ -7138,7 +7555,7 @@ function getTypeIcon(type, color, size = 24) {
7138
7555
  )
7139
7556
  ] });
7140
7557
  case "OTHER":
7141
- return /* @__PURE__ */ jsx4("svg", { ...props, children: /* @__PURE__ */ jsx4(
7558
+ return /* @__PURE__ */ jsx5("svg", { ...props, children: /* @__PURE__ */ jsx5(
7142
7559
  "path",
7143
7560
  {
7144
7561
  d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2v10z",
@@ -7152,7 +7569,7 @@ function getTypeIcon(type, color, size = 24) {
7152
7569
 
7153
7570
  // src/booking-dialog.tsx
7154
7571
  import { useCallback as useCallback2, useEffect as useEffect5, useMemo as useMemo3, useState as useState5 } from "react";
7155
- import { Fragment as Fragment4, jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
7572
+ import { Fragment as Fragment5, jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
7156
7573
  var t = {
7157
7574
  bg: "#141414",
7158
7575
  surface: "#1c1c1c",
@@ -7314,7 +7731,7 @@ function BookingDialog({
7314
7731
  }
7315
7732
  }
7316
7733
  const canSubmitDetails = name.trim() && email.includes("@") && phone.replace(/\D/g, "").length >= 8;
7317
- return /* @__PURE__ */ jsx5(
7734
+ return /* @__PURE__ */ jsx6(
7318
7735
  "div",
7319
7736
  {
7320
7737
  onClick: (e) => {
@@ -7331,7 +7748,7 @@ function BookingDialog({
7331
7748
  padding: 16,
7332
7749
  fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
7333
7750
  },
7334
- children: /* @__PURE__ */ jsxs5(
7751
+ children: /* @__PURE__ */ jsxs6(
7335
7752
  "div",
7336
7753
  {
7337
7754
  role: "dialog",
@@ -7349,7 +7766,7 @@ function BookingDialog({
7349
7766
  overflow: "hidden"
7350
7767
  },
7351
7768
  children: [
7352
- /* @__PURE__ */ jsxs5(
7769
+ /* @__PURE__ */ jsxs6(
7353
7770
  "div",
7354
7771
  {
7355
7772
  style: {
@@ -7361,11 +7778,11 @@ function BookingDialog({
7361
7778
  gap: 12
7362
7779
  },
7363
7780
  children: [
7364
- /* @__PURE__ */ jsxs5("div", { children: [
7365
- /* @__PURE__ */ jsx5("div", { style: { fontSize: 15, fontWeight: 600 }, children: heading.title }),
7366
- heading.description && /* @__PURE__ */ jsx5("div", { style: { fontSize: 12, color: t.muted, marginTop: 2 }, children: heading.description })
7781
+ /* @__PURE__ */ jsxs6("div", { children: [
7782
+ /* @__PURE__ */ jsx6("div", { style: { fontSize: 15, fontWeight: 600 }, children: heading.title }),
7783
+ heading.description && /* @__PURE__ */ jsx6("div", { style: { fontSize: 12, color: t.muted, marginTop: 2 }, children: heading.description })
7367
7784
  ] }),
7368
- /* @__PURE__ */ jsx5(
7785
+ /* @__PURE__ */ jsx6(
7369
7786
  "button",
7370
7787
  {
7371
7788
  onClick: onClose,
@@ -7377,10 +7794,10 @@ function BookingDialog({
7377
7794
  ]
7378
7795
  }
7379
7796
  ),
7380
- /* @__PURE__ */ jsxs5("div", { style: { padding: 18, overflowY: "auto", flex: "1 1 auto" }, children: [
7381
- error && /* @__PURE__ */ jsx5("div", { style: { color: t.danger, fontSize: 12, marginBottom: 12, lineHeight: 1.5 }, children: error }),
7382
- step === "slots" && /* @__PURE__ */ jsxs5(Fragment4, { children: [
7383
- whatsappUrl && /* @__PURE__ */ jsxs5(
7797
+ /* @__PURE__ */ jsxs6("div", { style: { padding: 18, overflowY: "auto", flex: "1 1 auto" }, children: [
7798
+ error && /* @__PURE__ */ jsx6("div", { style: { color: t.danger, fontSize: 12, marginBottom: 12, lineHeight: 1.5 }, children: error }),
7799
+ step === "slots" && /* @__PURE__ */ jsxs6(Fragment5, { children: [
7800
+ whatsappUrl && /* @__PURE__ */ jsxs6(
7384
7801
  "a",
7385
7802
  {
7386
7803
  href: whatsappUrl,
@@ -7399,15 +7816,15 @@ function BookingDialog({
7399
7816
  },
7400
7817
  children: [
7401
7818
  "\u{1F4AC} Rather book on WhatsApp?",
7402
- /* @__PURE__ */ jsx5("span", { style: { display: "block", fontSize: 11, color: t.muted, marginTop: 2 }, children: "We'll ask the same questions in chat." })
7819
+ /* @__PURE__ */ jsx6("span", { style: { display: "block", fontSize: 11, color: t.muted, marginTop: 2 }, children: "We'll ask the same questions in chat." })
7403
7820
  ]
7404
7821
  }
7405
7822
  ),
7406
- slots === null && /* @__PURE__ */ jsx5("div", { style: { color: t.muted, fontSize: 13 }, children: "Finding times\u2026" }),
7407
- (slots == null ? void 0 : slots.length) === 0 && !error && /* @__PURE__ */ jsx5("div", { style: { color: t.muted, fontSize: 13 }, children: "No times available right now." }),
7408
- [...byDay.entries()].map(([day, daySlots]) => /* @__PURE__ */ jsxs5("div", { style: { marginBottom: 18 }, children: [
7409
- /* @__PURE__ */ jsx5("div", { style: { fontSize: 11, color: t.muted, marginBottom: 8, textTransform: "uppercase", letterSpacing: ".6px" }, children: formatDay(daySlots[0].startsAt) }),
7410
- /* @__PURE__ */ jsx5("div", { style: { display: "flex", flexWrap: "wrap", gap: 8 }, children: daySlots.map((slot) => /* @__PURE__ */ jsx5(
7823
+ slots === null && /* @__PURE__ */ jsx6("div", { style: { color: t.muted, fontSize: 13 }, children: "Finding times\u2026" }),
7824
+ (slots == null ? void 0 : slots.length) === 0 && !error && /* @__PURE__ */ jsx6("div", { style: { color: t.muted, fontSize: 13 }, children: "No times available right now." }),
7825
+ [...byDay.entries()].map(([day, daySlots]) => /* @__PURE__ */ jsxs6("div", { style: { marginBottom: 18 }, children: [
7826
+ /* @__PURE__ */ jsx6("div", { style: { fontSize: 11, color: t.muted, marginBottom: 8, textTransform: "uppercase", letterSpacing: ".6px" }, children: formatDay(daySlots[0].startsAt) }),
7827
+ /* @__PURE__ */ jsx6("div", { style: { display: "flex", flexWrap: "wrap", gap: 8 }, children: daySlots.map((slot) => /* @__PURE__ */ jsx6(
7411
7828
  "button",
7412
7829
  {
7413
7830
  onClick: () => {
@@ -7429,13 +7846,13 @@ function BookingDialog({
7429
7846
  )) })
7430
7847
  ] }, day))
7431
7848
  ] }),
7432
- step === "details" && selected && /* @__PURE__ */ jsxs5("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
7433
- /* @__PURE__ */ jsxs5("div", { style: { fontSize: 13, color: t.muted }, children: [
7849
+ step === "details" && selected && /* @__PURE__ */ jsxs6("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
7850
+ /* @__PURE__ */ jsxs6("div", { style: { fontSize: 13, color: t.muted }, children: [
7434
7851
  formatDay(selected.startsAt),
7435
7852
  " \xB7 ",
7436
7853
  formatTime(selected.startsAt),
7437
7854
  " \xB7 ",
7438
- /* @__PURE__ */ jsx5(
7855
+ /* @__PURE__ */ jsx6(
7439
7856
  "button",
7440
7857
  {
7441
7858
  onClick: () => setStep("slots"),
@@ -7444,9 +7861,9 @@ function BookingDialog({
7444
7861
  }
7445
7862
  )
7446
7863
  ] }),
7447
- /* @__PURE__ */ jsx5(Field, { label: "Your name", value: name, onChange: setName }),
7448
- /* @__PURE__ */ jsx5(Field, { label: "Email", value: email, onChange: setEmail, type: "email" }),
7449
- /* @__PURE__ */ jsx5(
7864
+ /* @__PURE__ */ jsx6(Field, { label: "Your name", value: name, onChange: setName }),
7865
+ /* @__PURE__ */ jsx6(Field, { label: "Email", value: email, onChange: setEmail, type: "email" }),
7866
+ /* @__PURE__ */ jsx6(
7450
7867
  Field,
7451
7868
  {
7452
7869
  label: "Mobile number",
@@ -7456,8 +7873,8 @@ function BookingDialog({
7456
7873
  hint: "We send a code here to confirm, then a reminder before the call."
7457
7874
  }
7458
7875
  ),
7459
- /* @__PURE__ */ jsx5(Field, { label: "Anything we should know? (optional)", value: note, onChange: setNote }),
7460
- /* @__PURE__ */ jsx5(
7876
+ /* @__PURE__ */ jsx6(Field, { label: "Anything we should know? (optional)", value: note, onChange: setNote }),
7877
+ /* @__PURE__ */ jsx6(
7461
7878
  "button",
7462
7879
  {
7463
7880
  onClick: startBooking,
@@ -7467,10 +7884,10 @@ function BookingDialog({
7467
7884
  }
7468
7885
  )
7469
7886
  ] }),
7470
- step === "code" && /* @__PURE__ */ jsxs5("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
7471
- /* @__PURE__ */ jsx5("div", { style: { fontSize: 13, color: t.muted, lineHeight: 1.5 }, children: "We sent a 4-digit code to your phone. Your slot is held for 10 minutes." }),
7472
- /* @__PURE__ */ jsx5(Field, { label: "Code", value: code, onChange: setCode }),
7473
- /* @__PURE__ */ jsx5(
7887
+ step === "code" && /* @__PURE__ */ jsxs6("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
7888
+ /* @__PURE__ */ jsx6("div", { style: { fontSize: 13, color: t.muted, lineHeight: 1.5 }, children: "We sent a 4-digit code to your phone. Your slot is held for 10 minutes." }),
7889
+ /* @__PURE__ */ jsx6(Field, { label: "Code", value: code, onChange: setCode }),
7890
+ /* @__PURE__ */ jsx6(
7474
7891
  "button",
7475
7892
  {
7476
7893
  onClick: confirmBooking,
@@ -7480,15 +7897,15 @@ function BookingDialog({
7480
7897
  }
7481
7898
  )
7482
7899
  ] }),
7483
- step === "done" && /* @__PURE__ */ jsxs5("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
7484
- /* @__PURE__ */ jsx5("div", { style: { fontSize: 15, fontWeight: 600 }, children: "You're booked." }),
7485
- /* @__PURE__ */ jsxs5("div", { style: { fontSize: 13, color: t.muted, lineHeight: 1.6 }, children: [
7900
+ step === "done" && /* @__PURE__ */ jsxs6("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
7901
+ /* @__PURE__ */ jsx6("div", { style: { fontSize: 15, fontWeight: 600 }, children: "You're booked." }),
7902
+ /* @__PURE__ */ jsxs6("div", { style: { fontSize: 13, color: t.muted, lineHeight: 1.6 }, children: [
7486
7903
  selected && `${formatDay(selected.startsAt)} at ${formatTime(selected.startsAt)}. `,
7487
7904
  "A calendar invite is on its way to ",
7488
7905
  email,
7489
7906
  ", and we'll send a WhatsApp reminder before the call."
7490
7907
  ] }),
7491
- meetUrl && /* @__PURE__ */ jsx5("a", { href: meetUrl, target: "_blank", rel: "noreferrer", style: { ...primaryStyle(false), textAlign: "center", textDecoration: "none" }, children: "Open the meeting link" })
7908
+ meetUrl && /* @__PURE__ */ jsx6("a", { href: meetUrl, target: "_blank", rel: "noreferrer", style: { ...primaryStyle(false), textAlign: "center", textDecoration: "none" }, children: "Open the meeting link" })
7492
7909
  ] })
7493
7910
  ] })
7494
7911
  ]
@@ -7517,9 +7934,9 @@ function Field({
7517
7934
  type = "text",
7518
7935
  hint
7519
7936
  }) {
7520
- return /* @__PURE__ */ jsxs5("label", { style: { display: "block", fontSize: 11, color: t.muted }, children: [
7937
+ return /* @__PURE__ */ jsxs6("label", { style: { display: "block", fontSize: 11, color: t.muted }, children: [
7521
7938
  label,
7522
- /* @__PURE__ */ jsx5(
7939
+ /* @__PURE__ */ jsx6(
7523
7940
  "input",
7524
7941
  {
7525
7942
  type,
@@ -7540,7 +7957,7 @@ function Field({
7540
7957
  }
7541
7958
  }
7542
7959
  ),
7543
- hint && /* @__PURE__ */ jsx5("div", { style: { marginTop: 4, fontSize: 10, color: t.muted }, children: hint })
7960
+ hint && /* @__PURE__ */ jsx6("div", { style: { marginTop: 4, fontSize: 10, color: t.muted }, children: hint })
7544
7961
  ] });
7545
7962
  }
7546
7963
 
@@ -7681,7 +8098,7 @@ function matchesShortcut(e) {
7681
8098
  }
7682
8099
 
7683
8100
  // src/provider.tsx
7684
- import { Fragment as Fragment5, jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
8101
+ import { Fragment as Fragment6, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
7685
8102
  var DEFAULT_BASE_URL2 = "https://glitchgrab.dev";
7686
8103
  var GlitchgrabContext = createContext(null);
7687
8104
  function useGlitchgrab() {
@@ -8163,7 +8580,7 @@ function GlitchgrabProviderInner({
8163
8580
  useEffect6(() => {
8164
8581
  setShortcutLabel(getShortcutLabel2());
8165
8582
  }, []);
8166
- return /* @__PURE__ */ jsxs6(
8583
+ return /* @__PURE__ */ jsxs7(
8167
8584
  GlitchgrabContext.Provider,
8168
8585
  {
8169
8586
  value: {
@@ -8183,7 +8600,7 @@ function GlitchgrabProviderInner({
8183
8600
  shortcutLabel
8184
8601
  },
8185
8602
  children: [
8186
- /* @__PURE__ */ jsx6(
8603
+ /* @__PURE__ */ jsx7(
8187
8604
  GlitchgrabErrorBoundary,
8188
8605
  {
8189
8606
  token,
@@ -8195,7 +8612,7 @@ function GlitchgrabProviderInner({
8195
8612
  children
8196
8613
  }
8197
8614
  ),
8198
- /* @__PURE__ */ jsx6(
8615
+ /* @__PURE__ */ jsx7(
8199
8616
  BookingDialog,
8200
8617
  {
8201
8618
  token,
@@ -8204,7 +8621,7 @@ function GlitchgrabProviderInner({
8204
8621
  onClose: () => setBookingOpen(false)
8205
8622
  }
8206
8623
  ),
8207
- /* @__PURE__ */ jsx6(
8624
+ /* @__PURE__ */ jsx7(
8208
8625
  ReportDialog,
8209
8626
  {
8210
8627
  report,
@@ -8217,9 +8634,9 @@ function GlitchgrabProviderInner({
8217
8634
  types,
8218
8635
  showSeverity,
8219
8636
  reporter,
8220
- headerSlot: projectName ? /* @__PURE__ */ jsxs6("div", { style: { fontSize: 11, color: "#9aa0a6" }, children: [
8637
+ headerSlot: projectName ? /* @__PURE__ */ jsxs7("div", { style: { fontSize: 11, color: "#9aa0a6" }, children: [
8221
8638
  "Reporting to ",
8222
- /* @__PURE__ */ jsx6("strong", { style: { color: "#e5e5e5" }, children: projectName })
8639
+ /* @__PURE__ */ jsx7("strong", { style: { color: "#e5e5e5" }, children: projectName })
8223
8640
  ] }) : null
8224
8641
  }
8225
8642
  )
@@ -8228,21 +8645,21 @@ function GlitchgrabProviderInner({
8228
8645
  );
8229
8646
  }
8230
8647
  function GlitchgrabProvider(props) {
8231
- if (!props.token) return /* @__PURE__ */ jsx6(Fragment5, { children: props.children });
8648
+ if (!props.token) return /* @__PURE__ */ jsx7(Fragment6, { children: props.children });
8232
8649
  const resolvedProps = {
8233
8650
  ...props,
8234
8651
  baseUrl: props.baseUrl || DEFAULT_BASE_URL2
8235
8652
  };
8236
8653
  try {
8237
- return /* @__PURE__ */ jsx6(GlitchgrabProviderInner, { ...resolvedProps });
8654
+ return /* @__PURE__ */ jsx7(GlitchgrabProviderInner, { ...resolvedProps });
8238
8655
  } catch (e) {
8239
- return /* @__PURE__ */ jsx6(Fragment5, { children: props.children });
8656
+ return /* @__PURE__ */ jsx7(Fragment6, { children: props.children });
8240
8657
  }
8241
8658
  }
8242
8659
 
8243
8660
  // src/report-button.tsx
8244
8661
  import { useState as useState7 } from "react";
8245
- import { Fragment as Fragment6, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
8662
+ import { Fragment as Fragment7, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
8246
8663
  function useGlitchgrabSafe() {
8247
8664
  try {
8248
8665
  return useGlitchgrab();
@@ -8266,7 +8683,7 @@ function ReportButton({
8266
8683
  setCapturing(false);
8267
8684
  };
8268
8685
  if (children) {
8269
- return /* @__PURE__ */ jsx7(Fragment6, { children: children({ onClick: handleClick, capturing }) });
8686
+ return /* @__PURE__ */ jsx8(Fragment7, { children: children({ onClick: handleClick, capturing }) });
8270
8687
  }
8271
8688
  const isTop = (_a = position == null ? void 0 : position.startsWith("top")) != null ? _a : false;
8272
8689
  const isLeft = (_b = position == null ? void 0 : position.endsWith("left")) != null ? _b : false;
@@ -8274,7 +8691,7 @@ function ReportButton({
8274
8691
  ...isLeft ? { left: "16px" } : { right: "16px" },
8275
8692
  ...isTop ? { top: "16px" } : { bottom: "16px" }
8276
8693
  };
8277
- return /* @__PURE__ */ jsxs7(
8694
+ return /* @__PURE__ */ jsxs8(
8278
8695
  "button",
8279
8696
  {
8280
8697
  type: "button",
@@ -8309,7 +8726,7 @@ function ReportButton({
8309
8726
  },
8310
8727
  "aria-label": label,
8311
8728
  children: [
8312
- /* @__PURE__ */ jsx7(
8729
+ /* @__PURE__ */ jsx8(
8313
8730
  "svg",
8314
8731
  {
8315
8732
  width: "16",
@@ -8317,7 +8734,7 @@ function ReportButton({
8317
8734
  viewBox: "0 0 16 16",
8318
8735
  fill: "none",
8319
8736
  style: { flexShrink: 0 },
8320
- children: /* @__PURE__ */ jsx7(
8737
+ children: /* @__PURE__ */ jsx8(
8321
8738
  "path",
8322
8739
  {
8323
8740
  d: "M8 1C4.134 1 1 4.134 1 8s3.134 7 7 7 7-3.134 7-7-3.134-7-7-7zm0 12.5a.75.75 0 110-1.5.75.75 0 010 1.5zm.75-3.5a.75.75 0 01-1.5 0V5a.75.75 0 011.5 0v5z",
@@ -8333,15 +8750,15 @@ function ReportButton({
8333
8750
  }
8334
8751
 
8335
8752
  // src/book-demo-button.tsx
8336
- import { Fragment as Fragment7, jsx as jsx8 } from "react/jsx-runtime";
8753
+ import { Fragment as Fragment8, jsx as jsx9 } from "react/jsx-runtime";
8337
8754
  function BookDemoButton({
8338
8755
  label = "Book a demo",
8339
8756
  className,
8340
8757
  children
8341
8758
  }) {
8342
8759
  const { openBookingDialog } = useGlitchgrab();
8343
- if (children) return /* @__PURE__ */ jsx8(Fragment7, { children: children({ onClick: openBookingDialog }) });
8344
- return /* @__PURE__ */ jsx8(
8760
+ if (children) return /* @__PURE__ */ jsx9(Fragment8, { children: children({ onClick: openBookingDialog }) });
8761
+ return /* @__PURE__ */ jsx9(
8345
8762
  "button",
8346
8763
  {
8347
8764
  type: "button",
@@ -8363,7 +8780,7 @@ function BookDemoButton({
8363
8780
  }
8364
8781
 
8365
8782
  // src/feedback-button.tsx
8366
- import { Fragment as Fragment8, jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
8783
+ import { Fragment as Fragment9, jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
8367
8784
  function useGlitchgrabSafe2() {
8368
8785
  try {
8369
8786
  return useGlitchgrab();
@@ -8382,7 +8799,7 @@ function FeedbackButton({
8382
8799
  if (!glitchgrab) return null;
8383
8800
  const handleClick = () => glitchgrab.openFeedbackDialog();
8384
8801
  if (children) {
8385
- return /* @__PURE__ */ jsx9(Fragment8, { children: children({ onClick: handleClick }) });
8802
+ return /* @__PURE__ */ jsx10(Fragment9, { children: children({ onClick: handleClick }) });
8386
8803
  }
8387
8804
  const isTop = (_a = position == null ? void 0 : position.startsWith("top")) != null ? _a : false;
8388
8805
  const isLeft = (_b = position == null ? void 0 : position.endsWith("left")) != null ? _b : false;
@@ -8390,7 +8807,7 @@ function FeedbackButton({
8390
8807
  ...isLeft ? { left: "16px" } : { right: "16px" },
8391
8808
  ...isTop ? { top: "16px" } : { bottom: "16px" }
8392
8809
  };
8393
- return /* @__PURE__ */ jsxs8(
8810
+ return /* @__PURE__ */ jsxs9(
8394
8811
  "button",
8395
8812
  {
8396
8813
  type: "button",
@@ -8423,7 +8840,7 @@ function FeedbackButton({
8423
8840
  },
8424
8841
  "aria-label": label,
8425
8842
  children: [
8426
- /* @__PURE__ */ jsx9(
8843
+ /* @__PURE__ */ jsx10(
8427
8844
  "svg",
8428
8845
  {
8429
8846
  width: "16",
@@ -8432,7 +8849,7 @@ function FeedbackButton({
8432
8849
  fill: "none",
8433
8850
  style: { flexShrink: 0 },
8434
8851
  "aria-hidden": "true",
8435
- children: /* @__PURE__ */ jsx9(
8852
+ children: /* @__PURE__ */ jsx10(
8436
8853
  "path",
8437
8854
  {
8438
8855
  d: "M12 2.5l2.9 5.9 6.5.9-4.7 4.6 1.1 6.5L12 17.4l-5.8 3 1.1-6.5L2.6 9.3l6.5-.9L12 2.5z",