@pixelmatters/markup 1.16.1 → 1.17.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/widget.js CHANGED
@@ -248,7 +248,7 @@ e = h.slice, t = { __e: function(e, t, n, r) {
248
248
  }, O.__r = 0, s = Math.random().toString(8), c = "__d" + s, l = "__a" + s, u = /(PointerCapture)$|Capture$/i, d = 0, f = re(!1), p = re(!0);
249
249
  //#endregion
250
250
  //#region src/styles.css?inline
251
- var pe = ":host{--markup-paper:#fdfcfa;--markup-surface:#fff;--markup-surface-2:oklch(98.5% .002 250);--markup-surface-3:oklch(95% .003 250);--markup-hover:oklch(95% .003 250);--markup-ink:#1a1614;--markup-ink-soft:oklch(32% .005 250);--markup-muted:#6b6661;--markup-border:#1a16141a;--markup-border-strong:#1a16142e;--markup-brand:#e35d2a;--markup-brand-hover:#c84d20;--markup-accent-soft:oklch(95% .04 60);--markup-accent-ink:oklch(45% .14 38);--markup-accent-glow:color-mix(in srgb, var(--markup-brand) 28%, transparent);--markup-team:#2a4ac8;--markup-shadow:0 1px 2px #1a16140f, 0 8px 28px #1a16141f;--markup-shadow-toolbar:0 1px 1px #0000000a, 0 4px 10px -2px #0f14281a, 0 18px 36px -12px #0f14282e;--markup-shadow-pop:0 1px 1px #0000000a, 0 8px 24px -6px #0f14281f, 0 28px 60px -18px #0f142838;--markup-overlay-tint:#1a16140a;--markup-danger:#dc2626;--markup-success:oklch(62% .16 150);--markup-radius:6px;--markup-radius-sm:4px;--markup-font:\"Geist Variable\", \"Geist\", ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;--markup-font-mono:\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;all:initial;font-family:var(--markup-font);color:var(--markup-ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}:host([data-theme=dark]){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}@media (prefers-color-scheme:dark){:host(:not([data-theme])){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}}.markup-sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-shadow-root{font-family:var(--markup-font)}.markup-shadow-root *,.markup-shadow-root :before,.markup-shadow-root :after{box-sizing:border-box}:where(.markup-shadow-root button,.markup-shadow-root input,.markup-shadow-root textarea){font:inherit;color:inherit}.markup-eyebrow{font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--markup-muted);font-size:10px;font-weight:500}.markup-toolbar{z-index:10;background:var(--markup-surface);border:1px solid var(--markup-border);pointer-events:none;height:44px;box-shadow:var(--markup-shadow-toolbar);border-radius:9999px;align-items:center;gap:2px;padding:4px;transition:box-shadow .15s,left .22s cubic-bezier(.2,.7,.2,1),transform .22s cubic-bezier(.2,.7,.2,1);display:inline-flex;position:fixed;bottom:22px;left:100%;transform:translate(calc(-100% - 22px))}.markup-toolbar>*{pointer-events:auto}.markup-tb-btn{width:36px;height:36px;color:var(--markup-ink-soft);cursor:pointer;touch-action:none;font-family:var(--markup-font);background:0 0;border:1px solid #0000;border-radius:9999px;justify-content:center;align-items:center;gap:6px;padding:0;font-size:13px;font-weight:500;transition:background .12s,color .12s;display:inline-flex;position:relative}.markup-tb-btn:hover{background:var(--markup-hover);color:var(--markup-ink)}.markup-tb-btn:focus-visible{box-shadow:0 0 0 2px var(--markup-surface), 0 0 0 4px var(--markup-accent-glow);outline:none}.markup-tb-btn[data-on=true]{background:var(--markup-ink);color:var(--markup-paper)}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}}:host([data-theme=dark]) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}.markup-tb-btn[data-armed=true]{background:var(--markup-brand);color:#fff}.markup-tb-btn[data-armed=true]:hover{background:var(--markup-brand-hover);color:#fff}.markup-tb-btn[disabled]{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);cursor:default}.markup-tb-btn[disabled]:hover{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);background:0 0}.markup-tb-btn[data-kind=identity]{gap:6px;width:auto;padding:0 4px}.markup-tb-avatar{background:var(--markup-surface-3);width:28px;height:28px;font-family:var(--markup-font-mono);color:var(--markup-ink);border:1px solid var(--markup-border);border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-tb-avatar.is-anon{color:var(--markup-muted);background:var(--markup-surface-2)}.markup-tb-sep{background:var(--markup-border);flex-shrink:0;width:1px;height:20px;margin:0 4px}.markup-tb-badge{background:var(--markup-brand);color:#fff;min-width:16px;height:16px;font-family:var(--markup-font-mono);box-shadow:0 0 0 2px var(--markup-surface);pointer-events:none;border-radius:9999px;justify-content:center;align-items:center;padding:0 4px;font-size:9.5px;font-weight:600;line-height:1;display:inline-flex;position:absolute;top:0;right:0}.markup-toolbar-left{left:0;transform:translate(22px)}.markup-toolbar-center{left:50%;transform:translate(-50%)}.markup-toolbar-right{left:100%;transform:translate(calc(-100% - 22px))}.markup-pop{background:var(--markup-surface);border:1px solid var(--markup-border);box-shadow:var(--markup-shadow-pop);color:var(--markup-ink);z-index:11;border-radius:12px;font-size:13px;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;position:absolute;bottom:calc(100% + 8px);overflow:hidden}.markup-pop[data-pop=overflow]{width:260px;padding:6px}.markup-pop[data-pop=identity]{width:240px;padding:6px}.markup-pop[data-pop=inbox]{width:380px;padding:0}.markup-pop.is-anchor-right{right:0}.markup-pop.is-anchor-left{left:0}.markup-pop.is-anchor-center{left:50%;transform:translate(-50%)}@keyframes markup-pop-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.markup-pop.is-anchor-center{animation-name:markup-pop-in-center}@keyframes markup-pop-in-center{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.markup-pop-group-label{font-family:var(--markup-font-mono);letter-spacing:.06em;color:var(--markup-muted);text-transform:lowercase;padding:8px 10px 4px;font-size:10px}.markup-segmented-row{border-radius:6px;align-items:center;gap:10px;padding:7px 8px;display:flex}.markup-segmented-row .lbl{min-width:0;color:var(--markup-ink);flex:1;font-size:13px}.markup-segmented{background:var(--markup-surface-3);border-radius:7px;gap:2px;padding:2px;display:inline-flex}.markup-segmented button{font:inherit;width:28px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background .1s,color .1s;display:inline-flex}.markup-segmented button:hover{color:var(--markup-ink)}.markup-segmented button.is-on{background:var(--markup-surface);color:var(--markup-ink);box-shadow:0 1px 2px #0000000d}.markup-menu-row{cursor:pointer;width:100%;color:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:7px 8px;font-family:inherit;font-size:13px;display:flex}.markup-menu-row:hover{background:var(--markup-hover)}.markup-menu-row:disabled{opacity:.5;cursor:default}.markup-menu-row:disabled:hover{background:0 0}.markup-menu-row .ic{width:16px;height:16px;color:var(--markup-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.markup-menu-row .lbl{flex-direction:column;flex:1;min-width:0;display:flex}.markup-menu-row .lbl .sub{color:var(--markup-muted);margin-top:1px;font-size:11px}.markup-menu-row .right{font-family:var(--markup-font-mono);color:var(--markup-muted);margin-left:auto;font-size:10.5px}.markup-menu-row.is-danger,.markup-menu-row.is-danger .ic{color:var(--markup-danger)}.markup-menu-row.is-danger:hover{background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-menu-row .switch{background:var(--markup-border-strong);border-radius:9999px;flex-shrink:0;width:26px;height:16px;transition:background .12s;position:relative}.markup-menu-row .switch:after{content:\"\";background:var(--markup-surface);border-radius:9999px;width:12px;height:12px;transition:left .12s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.markup-menu-row[data-on=true] .switch{background:var(--markup-brand)}.markup-menu-row[data-on=true] .switch:after{left:12px}.markup-menu-divider{background:var(--markup-border);height:1px;margin:4px 0}.markup-brand-line{font-family:var(--markup-font-mono);color:var(--markup-muted);border-top:1px solid var(--markup-border);align-items:center;gap:8px;margin-top:6px;padding:8px 10px;font-size:10.5px;text-decoration:none;display:flex}.markup-brand-line:hover{color:var(--markup-ink)}.markup-brand-line svg{color:var(--markup-brand)}.markup-brand-line .ver{margin-left:auto}.markup-id-who{border-bottom:1px solid var(--markup-border);flex-direction:column;gap:2px;margin-bottom:4px;padding:10px 8px 12px;display:flex}.markup-id-who .nm{color:var(--markup-ink);font-size:13.5px;font-weight:600}.markup-id-who .em{font-family:var(--markup-font-mono);color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.markup-id-anon{text-align:left;flex-direction:column;gap:10px;padding:14px 10px;display:flex}.markup-id-anon .h{letter-spacing:-.005em;color:var(--markup-ink);font-size:14px;font-weight:600}.markup-id-anon .sub{color:var(--markup-muted);font-size:12.5px;line-height:18px}.markup-id-anon button:not(.markup-menu-row){background:var(--markup-ink);width:100%;color:var(--markup-paper);height:32px;font:inherit;cursor:pointer;border:none;border-radius:7px;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:500;display:inline-flex}.markup-id-anon button:disabled{opacity:.7;cursor:default}.markup-id-anon button:not(.markup-menu-row):hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-surface))}.markup-hud-hidden-toast{z-index:10;background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:12px;font-weight:500;animation:.22s ease-out markup-hud-hidden-in,.32s ease-in 4.6s forwards markup-hud-hidden-out;display:inline-flex;position:fixed;bottom:24px}.markup-hud-hidden-toast-right{right:24px}.markup-hud-hidden-toast-left{left:24px}.markup-hud-hidden-toast-center{width:max-content;margin-inline:auto;left:0;right:0}.markup-kbd{background:color-mix(in srgb, var(--markup-paper) 14%, transparent);min-width:18px;height:18px;color:var(--markup-paper);font-family:var(--markup-font);border-radius:4px;justify-content:center;align-items:center;padding:0 5px;font-size:10px;font-weight:600;line-height:1;display:inline-flex}.markup-kbd.is-inline{background:color-mix(in srgb, var(--markup-ink) 8%, transparent);min-width:14px;height:14px;color:var(--markup-muted);border-radius:3px;padding:0 3px;font-size:9.5px}@keyframes markup-hud-hidden-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes markup-hud-hidden-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}.markup-pins-layer{pointer-events:none;position:fixed;inset:0}.markup-pin{border:2px solid var(--markup-paper);background:var(--markup-brand);color:#fff;width:28px;height:28px;font-family:var(--markup-font-mono);cursor:pointer;pointer-events:auto;box-shadow:0 4px 14px -4px #00000059, 0 0 0 1px color-mix(in srgb, var(--markup-brand) 50%, transparent);border-radius:999px 999px 999px 4px;justify-content:center;align-items:center;margin:0;padding:0;font-size:11.5px;font-weight:600;line-height:1;transition:background .15s,color .15s,opacity .15s,top .2s,left .2s;display:inline-flex;position:absolute;transform:translate(-50%,-100%)}.markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 92%, black)}:host([data-theme=dark]) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}}.markup-pin.is-active{background:var(--markup-brand);color:#fff;border-color:var(--markup-paper)}.markup-pin.is-anchor{anchor-name:--markup-active-anchor}.markup-pin.is-unresolved{opacity:.6}.markup-pin-ghost{background:var(--markup-brand);color:#fff;cursor:default;pointer-events:none;animation:1.2s ease-in-out infinite markup-ghost-pulse}.markup-pin-num{pointer-events:none;justify-content:center;align-items:center;display:inline-flex}.markup-pin-count{background:var(--markup-ink);min-width:16px;height:16px;color:var(--markup-paper);font-family:var(--markup-font-mono);text-align:center;border:2px solid var(--markup-paper);pointer-events:none;border-radius:999px;padding:0 4px;font-size:9.5px;font-weight:600;line-height:12px;position:absolute;top:-6px;right:-8px}@keyframes markup-ghost-pulse{0%,to{box-shadow:0 4px 14px -4px #00000059,0 0 #e35d2a66}50%{box-shadow:0 4px 14px -4px #00000059,0 0 0 10px #e35d2a00}}.markup-placement-overlay{background:var(--markup-overlay-tint);cursor:crosshair;pointer-events:auto;z-index:1;animation:.18s ease-out markup-overlay-in;position:fixed;inset:0}.markup-placement-cursor-help{background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;padding:10px 16px;font-size:12px;font-weight:500;animation:.22s ease-out 60ms backwards markup-help-in;position:fixed;top:24px;left:50%;transform:translate(-50%)}@keyframes markup-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes markup-help-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.markup-popover{width:360px;max-width:calc(100vw - 24px);height:auto;max-height:calc(100dvh - 24px);inset:auto;left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);background:var(--markup-paper);color:var(--markup-ink);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);box-shadow:var(--markup-shadow);pointer-events:auto;flex-direction:column;gap:0;margin:0;padding:0;animation:.16s ease-out markup-popover-in;display:flex;position:fixed;overflow:hidden}@supports (anchor-name:--x){.markup-popover{position-anchor:--markup-active-anchor;left:calc(anchor(right) + 8px);top:calc(anchor(top) - 9px);position-try-fallbacks:flip-block, flip-inline, flip-block flip-inline;position-try-order:most-block-size}.markup-popover.is-floating{left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);position-try-fallbacks:none}}.markup-popover.is-hud-hidden{display:none}@keyframes markup-popover-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.markup-popover-header{border-bottom:1px solid var(--markup-border);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.markup-popover.is-dragging .markup-popover-header{cursor:grabbing}.markup-popover-header-actions{align-items:center;gap:4px;display:flex}.markup-popover-title{min-width:0;font-family:var(--markup-font-mono);letter-spacing:.02em;color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-size:11px;line-height:1;overflow:hidden}.markup-thread-menu{display:flex;position:relative}.markup-thread-menu-list{z-index:10;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);min-width:160px;box-shadow:var(--markup-shadow);padding:4px;animation:.12s ease-out markup-menu-in;position:absolute;top:calc(100% + 6px);right:0}.markup-thread-menu-item{border-radius:var(--markup-radius-sm);width:100%;color:var(--markup-ink);text-align:left;cursor:pointer;background:0 0;border:none;padding:7px 10px;font-size:13px;transition:background .1s,color .1s;display:block}.markup-thread-menu-item:hover{background:var(--markup-border)}.markup-thread-menu-item.is-danger{color:var(--markup-danger,#dc2626)}.markup-thread-menu-item.is-danger:hover{background:color-mix(in srgb, var(--markup-danger,#dc2626) 10%, transparent)}.markup-thread-menu-item:disabled{opacity:.5;cursor:default}@keyframes markup-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.markup-popover-body{border-top:1px solid var(--markup-border);background:var(--markup-paper);flex-direction:column;gap:6px;padding:10px 12px 8px;display:flex}.markup-popover-header+.markup-popover-body{border-top:none}.markup-popover-byline{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-popover-name{color:var(--markup-ink);font-weight:500}.markup-icon-btn{border-radius:var(--markup-radius-sm);width:24px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex}.markup-icon-btn:hover,.markup-icon-btn.is-open{background:var(--markup-border);color:var(--markup-ink)}.markup-comments{flex-direction:column;max-height:420px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.markup-comment{border-bottom:1px solid var(--markup-border);grid-template-columns:26px 1fr;align-items:start;gap:0 10px;padding:12px;display:grid}.markup-comment:last-child{border-bottom:none}.markup-comment>:not(.markup-comment-avatar){grid-column:2}.markup-comment-avatar{background:var(--markup-border);width:26px;height:26px;color:var(--markup-ink);font-family:var(--markup-font-mono);letter-spacing:.02em;text-transform:uppercase;-webkit-user-select:none;user-select:none;border-radius:999px;grid-area:1/1/span 4;justify-content:center;align-items:center;margin-top:-3px;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-avatar-initials{text-box-trim:trim-both;text-box-edge:cap alphabetic;line-height:1}.markup-avatar-img{object-fit:cover;width:100%;height:100%;display:block}.markup-comment-avatar[data-tone=\"1\"]{color:oklch(25% .07 230);background:oklch(85% .07 200)}.markup-comment-avatar[data-tone=\"2\"]{color:oklch(30% .1 150);background:oklch(88% .07 130)}.markup-comment-avatar[data-tone=\"3\"]{color:oklch(35% .1 40);background:oklch(90% .05 50)}.markup-comment-avatar[data-tone=\"4\"]{color:oklch(30% .1 320);background:oklch(87% .07 320)}.markup-comment-avatar[data-tone=\"5\"]{color:oklch(32% .09 70);background:oklch(88% .06 80)}.markup-comment-meta{align-items:center;gap:8px;min-width:0;margin-bottom:4px;font-size:13px;display:flex}.markup-comment-author{color:var(--markup-ink);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.markup-comment-badge{background:color-mix(in srgb, var(--markup-team) 12%, transparent);height:14px;color:var(--markup-team);font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;border-radius:999px;align-items:center;padding:0 5px;font-size:9px;font-weight:500;line-height:1;display:inline-flex}.markup-comment-badge.is-agent{background:color-mix(in srgb, var(--markup-brand) 14%, transparent);color:var(--markup-brand);letter-spacing:normal;justify-content:center;width:14px;padding:0}.markup-comment-time{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;white-space:nowrap;flex-shrink:0;font-size:10.5px}.markup-comment-body{color:var(--markup-ink);white-space:pre-wrap;word-break:break-word;margin:0;font-size:13.5px;line-height:19px}.markup-comment-edited{color:var(--markup-muted);font-family:var(--markup-font-mono);margin-left:2px;font-size:10.5px}.markup-comment-edited:before{content:\" · \"}.markup-thread-actions{align-items:center;gap:4px;display:flex}.markup-comment-meta .markup-reaction-picker-wrap,.markup-thread-actions{margin-left:auto}.markup-comment-meta .markup-reaction-add{width:22px;height:22px;margin-top:-4px;margin-bottom:-4px}.markup-reaction-picker-wrap>.markup-icon-btn,.markup-comment-menu>.markup-icon-btn{margin-top:-4px;margin-bottom:-4px}.markup-comment-menu.is-up .markup-thread-menu-list{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-comment-menu.is-side .markup-thread-menu-list{animation-name:markup-menu-in-side;top:-4px;right:calc(100% + 2px)}@keyframes markup-menu-in-side{0%{opacity:0;transform:translate(4px)}to{opacity:1;transform:translate(0)}}@keyframes markup-menu-in-up{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.markup-comment{position:relative}.markup-reactions{flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;display:flex}.markup-reaction-chip{border:1px solid var(--markup-border);background:var(--markup-surface-3);color:var(--markup-ink);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:11.5px;line-height:1.2;transition:background .12s,border-color .12s;display:inline-flex}.markup-reaction-chip:hover:not(:disabled){background:var(--markup-hover)}.markup-reaction-chip.is-mine{background:var(--markup-accent-soft);border-color:color-mix(in srgb, var(--markup-brand) 50%, transparent);color:var(--markup-accent-ink)}.markup-reaction-chip.is-mine:hover:not(:disabled){background:color-mix(in srgb, var(--markup-brand) 18%, transparent)}.markup-reaction-chip:disabled{cursor:default;opacity:.6}.markup-reaction-emoji{font-size:13px;line-height:1}.markup-reaction-count{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);font-size:10.5px}.markup-reaction-chip.is-mine .markup-reaction-count{color:var(--markup-accent-ink)}.markup-reaction-picker-wrap{opacity:0;flex:none;transition:opacity .12s;display:inline-flex;position:relative}.markup-comment:hover .markup-reaction-picker-wrap,.markup-comment:focus-within .markup-reaction-picker-wrap,.markup-reaction-picker-wrap.is-open{opacity:1}.markup-reaction-add{width:22px;height:22px;color:var(--markup-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .12s,color .12s;display:inline-flex}.markup-reaction-add:hover,.markup-reaction-add.is-open{background:var(--markup-hover);color:var(--markup-ink)}.markup-reaction-picker{z-index:1;border:1px solid var(--markup-border-strong);background:var(--markup-paper);border-radius:8px;gap:2px;padding:4px;animation:.12s markup-menu-in;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 1px 2px #1a16140f,0 8px 28px #1a16141a}.markup-reaction-picker-wrap.is-up .markup-reaction-picker{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-reaction-picker-wrap.is-side .markup-reaction-picker{animation-name:markup-menu-in-side;top:-4px;right:calc(100% + 2px)}.markup-reaction-picker-item{cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:16px;line-height:1;transition:background .12s;display:inline-flex}.markup-reaction-picker-item:hover{background:color-mix(in srgb, var(--markup-ink) 8%, transparent)}.markup-reaction-picker-item.is-mine{background:color-mix(in srgb, var(--markup-brand) 14%, transparent)}.markup-comment-edit-form{flex-direction:column;gap:6px;display:flex}.markup-comment-edit-actions{justify-content:flex-end;gap:6px;display:flex}.markup-composer{flex-direction:column;display:flex;position:relative}.markup-composer-input{width:100%;min-height:38px;max-height:120px;color:var(--markup-ink);font-family:var(--markup-font);background:0 0;border:none;border-radius:0;padding:2px 0;font-size:13.5px;line-height:19px;transition:none;overflow-y:auto}.markup-composer-input:focus-visible{box-shadow:none;outline:none}.markup-composer-footer-wrap{grid-template-rows:0fr;transition:grid-template-rows .15s;display:grid}.markup-composer.is-filled .markup-composer-footer-wrap{grid-template-rows:1fr}.markup-composer-footer{opacity:0;background:0 0;border:none;border-radius:0;justify-content:space-between;align-items:center;gap:8px;padding:0;transition:opacity .1s;display:flex;overflow:hidden}.markup-composer.is-filled .markup-composer-footer{opacity:1;transition-delay:60ms}.markup-composer-hint{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);align-items:center;gap:3px;font-size:10.5px;display:inline-flex}.markup-composer-hint-label{margin-left:2px}.markup-composer-error{color:var(--markup-brand)}.markup-composer-actions{align-items:center;gap:6px;display:flex}.markup-composer .markup-btn-primary{background:var(--markup-ink);height:26px;color:var(--markup-paper);border-radius:6px;padding:0 10px}.markup-composer .markup-btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-paper))}.markup-composer-actions-empty{transition:opacity .12s;position:absolute;bottom:0;right:0}.markup-composer.is-filled .markup-composer-actions-empty{opacity:0;pointer-events:none}.markup-author-prompt{flex-direction:column;gap:10px;padding:12px;display:flex}.markup-author-status{color:var(--markup-muted);margin:0;font-size:12px}.markup-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;height:36px;color:var(--markup-ink);outline:none;padding:0 10px;font-size:14px;transition:border-color .12s,box-shadow .12s}.markup-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-btn{border-radius:var(--markup-radius-sm);height:30px;color:var(--markup-ink);cursor:pointer;letter-spacing:-.01em;white-space:nowrap;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s,color .12s,opacity .12s;display:inline-flex}.markup-btn:disabled{opacity:.5;cursor:not-allowed}.markup-btn-primary{background:var(--markup-ink);color:var(--markup-paper)}.markup-btn-primary:hover:not(:disabled){background:var(--markup-brand)}.markup-btn-ghost{color:var(--markup-muted)}.markup-btn-ghost:hover:not(:disabled){background:var(--markup-border);color:var(--markup-ink)}.markup-screenshot-row{border:1px dashed var(--markup-border-strong);color:var(--markup-muted);border-radius:6px;align-items:center;gap:8px;margin-top:0;padding:6px 8px;font-size:11.5px;display:flex}.markup-screenshot-status{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;display:flex}.markup-screenshot-row.is-failed{opacity:.85;border-style:dotted}.markup-screenshot-toggle{cursor:pointer;color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;transition:color .12s;display:flex}.markup-screenshot-toggle:hover{color:var(--markup-ink)}.markup-screenshot-checkbox{width:12px;height:12px;accent-color:var(--markup-brand);cursor:pointer;margin:0}.markup-screenshot-thumb{border:1px solid var(--markup-border-strong);object-fit:cover;border-radius:3px;flex-shrink:0;width:auto;height:25px;margin:-5px 0 -5px auto;display:block}.markup-screenshot-redacted{font-family:var(--markup-font-mono);color:var(--markup-muted);margin-left:auto;font-size:10px}.markup-screenshot-redacted-chip{background:color-mix(in srgb, var(--markup-success,oklch(62% .16 150)) 16%, transparent);color:var(--markup-success,oklch(62% .16 150));font-family:var(--markup-font-mono);cursor:pointer;border:none;border-radius:999px;align-items:center;gap:3px;padding:1px 7px;font-size:10px;display:inline-flex}.markup-screenshot-redacted-chip:hover{filter:brightness(1.05)}.markup-screenshot-redacted-arrow{font-style:normal}.markup-screenshot-redacted-list{margin-top:3px;padding-left:10px}.markup-screenshot-redacted-selector{font-family:var(--markup-font-mono);color:var(--markup-muted);font-size:9px;display:block}.markup-screenshot-help{font-family:var(--markup-font-mono);color:var(--markup-muted);margin:5px 0 0;font-size:10px;line-height:1.5}.markup-screenshot-help-code{font-family:var(--markup-font-mono);color:var(--markup-ink)}.markup-comment-screenshot{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);cursor:pointer;background:0 0;margin-top:8px;padding:0;transition:border-color .12s,opacity .12s;display:block;overflow:hidden}.markup-comment-screenshot:hover{border-color:var(--markup-brand);opacity:.9}.markup-comment-screenshot img{object-fit:cover;object-position:top;width:100%;height:auto;max-height:120px;display:block}.markup-lightbox{background:#1a1614e0;border:none;width:100%;max-width:100%;height:100%;max-height:100%;margin:0;padding:24px;position:fixed;inset:0}.markup-lightbox[open]{justify-content:center;align-items:center;display:flex}.markup-lightbox::backdrop{display:none}.markup-lightbox-img{border-radius:var(--markup-radius);object-fit:contain;max-width:100%;max-height:100%;box-shadow:var(--markup-shadow);animation:.16s ease-out markup-lightbox-in}.markup-lightbox-close{color:#fdfcfa;background:#1a161499;position:absolute;top:16px;right:16px}.markup-lightbox-close:hover{color:#fdfcfa;background:#1a1614d9}@keyframes markup-lightbox-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.markup-toolbar,.markup-pin,.markup-icon-btn,.markup-btn,.markup-popover,.markup-pin-ghost,.markup-placement-overlay,.markup-placement-cursor-help,.markup-lightbox-img{transition:none;animation:none}}.markup-mention-chip{background:var(--markup-accent-soft);color:var(--markup-accent-ink);border-radius:3px;padding:0 2px;font-weight:500;display:inline-block}.markup-mention-input{white-space:pre-wrap;overflow-wrap:anywhere;cursor:text;outline:none;position:relative}.markup-mention-input[aria-disabled=true]{opacity:.6;cursor:default}.markup-mention-input[data-empty]:before{content:attr(data-placeholder);color:var(--markup-muted);pointer-events:none;position:absolute;inset:0 auto auto 0}.markup-mention-input .markup-mention-chip{white-space:nowrap;padding:0 3px}.markup-comment-edit-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;min-height:58px;max-height:200px;color:var(--markup-ink);font:inherit;padding:8px 10px;font-size:13px;line-height:1.5;overflow-y:auto}.markup-comment-edit-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-comment-edit-input[data-empty]:before{inset:8px auto auto 10px}.markup-mention-picker{z-index:10;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);max-height:180px;box-shadow:var(--markup-shadow);margin:0 0 4px;padding:4px;list-style:none;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto}.markup-mention-picker-item{border-radius:var(--markup-radius-sm);cursor:pointer;color:var(--markup-ink);justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.markup-mention-picker-item.is-active{background:color-mix(in srgb, var(--markup-brand) 12%, transparent)}.markup-mention-picker-name{font-weight:500}.markup-mention-picker-trigger{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel{max-height:min(60vh,420px);color:var(--markup-ink);flex-direction:column;display:flex}.markup-notifications-panel-header{border-bottom:1px solid var(--markup-border);align-items:center;gap:8px;padding:8px 10px;display:flex}.markup-notifications-panel-header .markup-eyebrow{flex:1}.markup-notifications-panel-actions{align-items:center;gap:8px;display:flex}.markup-notifications-panel-mark-all{color:var(--markup-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px}.markup-notifications-panel-mark-all:hover{color:var(--markup-ink)}.markup-notifications-panel-body{flex:1;overflow-y:auto}.markup-notifications-panel-empty,.markup-notifications-panel-error{text-align:center;color:var(--markup-muted);padding:24px 12px;font-size:12px}.markup-notifications-panel-empty-title{color:var(--markup-ink);margin:0 0 4px;font-weight:500}.markup-notifications-panel-empty-sub{color:var(--markup-muted);margin:0;line-height:1.4}.markup-notifications-panel-error{color:var(--markup-danger,#b91c1c)}.markup-notifications-panel-list{margin:0;padding:4px;list-style:none}.markup-notifications-panel-row{border-radius:var(--markup-radius-sm);text-align:start;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:none;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.markup-notifications-panel-row:hover{background:color-mix(in srgb, var(--markup-brand) 8%, transparent)}.markup-notifications-panel-row.is-unread{background:color-mix(in srgb, var(--markup-brand) 5%, transparent)}.markup-notifications-panel-meta{align-items:center;gap:6px;font-size:11px;display:flex}.markup-notifications-panel-dot{background:var(--markup-brand);border-radius:999px;flex-shrink:0;width:6px;height:6px}.markup-notifications-panel-actor{font-weight:600}.markup-notifications-panel-sep{color:var(--markup-muted)}.markup-notifications-panel-time{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel-thread{color:var(--markup-muted);margin:0;font-size:12px}.markup-notifications-panel-thread-title{color:var(--markup-ink)}.markup-notifications-panel-excerpt{color:color-mix(in srgb, var(--markup-ink) 80%, transparent);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;font-style:italic;display:-webkit-box;overflow:hidden}.markup-inbox-pop{z-index:11;pointer-events:auto;width:380px;max-width:calc(100vw - 24px);position:fixed;bottom:76px}.markup-inbox-pop-right{right:22px}.markup-inbox-pop-left{left:22px}.markup-inbox-pop-center{left:50%;transform:translate(-50%)}.markup-inbox-pop .markup-pop{width:100%;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;position:static}.markup-inbox-pop .markup-notifications-panel{max-height:min(60vh,480px)}.markup-inbox-pop .markup-notifications-panel-header{padding:12px 14px}.markup-inbox-pop .markup-notifications-panel-header .markup-icon-btn{display:none}", M = class extends C {
251
+ var pe = ":host{--markup-paper:#fdfcfa;--markup-surface:#fff;--markup-surface-2:oklch(98.5% .002 250);--markup-surface-3:oklch(95% .003 250);--markup-hover:oklch(95% .003 250);--markup-ink:#1a1614;--markup-ink-soft:oklch(32% .005 250);--markup-muted:#6b6661;--markup-border:#1a16141a;--markup-border-strong:#1a16142e;--markup-brand:#e35d2a;--markup-brand-hover:#c84d20;--markup-accent-soft:oklch(95% .04 60);--markup-accent-ink:oklch(45% .14 38);--markup-accent-glow:color-mix(in srgb, var(--markup-brand) 28%, transparent);--markup-team:#2a4ac8;--markup-shadow:0 1px 2px #1a16140f, 0 8px 28px #1a16141f;--markup-shadow-toolbar:0 1px 1px #0000000a, 0 4px 10px -2px #0f14281a, 0 18px 36px -12px #0f14282e;--markup-shadow-pop:0 1px 1px #0000000a, 0 8px 24px -6px #0f14281f, 0 28px 60px -18px #0f142838;--markup-overlay-tint:#1a16140a;--markup-danger:#dc2626;--markup-success:oklch(62% .16 150);--markup-radius:6px;--markup-radius-sm:4px;--markup-font:\"Geist Variable\", \"Geist\", ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;--markup-font-mono:\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;all:initial;font-family:var(--markup-font);color:var(--markup-ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}:host([data-theme=dark]){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}@media (prefers-color-scheme:dark){:host(:not([data-theme])){--markup-paper:#1a1614;--markup-surface:oklch(16% .005 250);--markup-surface-2:oklch(20% .005 250);--markup-surface-3:oklch(24% .005 250);--markup-hover:oklch(24% .005 250);--markup-ink:#fdfcfa;--markup-ink-soft:oklch(80% .005 250);--markup-muted:#a8a39e;--markup-border:#fdfcfa1f;--markup-border-strong:#fdfcfa38;--markup-team:#7b99f0;--markup-accent-soft:color-mix(in srgb, var(--markup-brand) 22%, transparent);--markup-accent-ink:oklch(86% .13 55);--markup-shadow:0 1px 2px #00000059, 0 12px 40px #00000073;--markup-shadow-toolbar:0 1px 0 #ffffff0a inset, 0 1px 2px #0006, 0 12px 30px -10px #0000008c, 0 28px 60px -20px #00000080;--markup-shadow-pop:0 1px 0 #ffffff0a inset, 0 8px 24px -6px #00000073, 0 28px 60px -18px #0000008c;--markup-overlay-tint:#fdfcfa0d;--markup-danger:#f87171}}.markup-sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-shadow-root{font-family:var(--markup-font)}.markup-shadow-root *,.markup-shadow-root :before,.markup-shadow-root :after{box-sizing:border-box}:where(.markup-shadow-root button,.markup-shadow-root input,.markup-shadow-root textarea){font:inherit;color:inherit}.markup-eyebrow{font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--markup-muted);font-size:10px;font-weight:500}.markup-toolbar{z-index:10;background:var(--markup-surface);border:1px solid var(--markup-border);pointer-events:none;height:44px;box-shadow:var(--markup-shadow-toolbar);border-radius:9999px;align-items:center;gap:2px;padding:4px;transition:box-shadow .15s,left .22s cubic-bezier(.2,.7,.2,1),transform .22s cubic-bezier(.2,.7,.2,1);display:inline-flex;position:fixed;bottom:22px;left:100%;transform:translate(calc(-100% - 22px))}.markup-toolbar>*{pointer-events:auto}.markup-tb-btn{width:36px;height:36px;color:var(--markup-ink-soft);cursor:pointer;touch-action:none;font-family:var(--markup-font);background:0 0;border:1px solid #0000;border-radius:9999px;justify-content:center;align-items:center;gap:6px;padding:0;font-size:13px;font-weight:500;transition:background .12s,color .12s;display:inline-flex;position:relative}.markup-tb-btn:hover{background:var(--markup-hover);color:var(--markup-ink)}.markup-tb-btn:focus-visible{box-shadow:0 0 0 2px var(--markup-surface), 0 0 0 4px var(--markup-accent-glow);outline:none}.markup-tb-btn[data-on=true]{background:var(--markup-ink);color:var(--markup-paper)}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}}:host([data-theme=dark]) .markup-tb-btn[data-on=true]{background:var(--markup-surface-3);color:var(--markup-ink)}.markup-tb-btn[data-armed=true]{background:var(--markup-brand);color:#fff}.markup-tb-btn[data-armed=true]:hover{background:var(--markup-brand-hover);color:#fff}.markup-tb-btn[disabled]{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);cursor:default}.markup-tb-btn[disabled]:hover{color:color-mix(in srgb, var(--markup-muted) 60%, transparent);background:0 0}.markup-tb-btn[data-kind=identity]{gap:6px;width:auto;padding:0 4px}.markup-tb-avatar{background:var(--markup-surface-3);width:28px;height:28px;font-family:var(--markup-font-mono);color:var(--markup-ink);border:1px solid var(--markup-border);border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-tb-avatar.is-anon{color:var(--markup-muted);background:var(--markup-surface-2)}.markup-tb-sep{background:var(--markup-border);flex-shrink:0;width:1px;height:20px;margin:0 4px}.markup-tb-badge{background:var(--markup-brand);color:#fff;min-width:16px;height:16px;font-family:var(--markup-font-mono);box-shadow:0 0 0 2px var(--markup-surface);pointer-events:none;border-radius:9999px;justify-content:center;align-items:center;padding:0 4px;font-size:9.5px;font-weight:600;line-height:1;display:inline-flex;position:absolute;top:0;right:0}.markup-toolbar-left{left:0;transform:translate(22px)}.markup-toolbar-center{left:50%;transform:translate(-50%)}.markup-toolbar-right{left:100%;transform:translate(calc(-100% - 22px))}.markup-pop{background:var(--markup-surface);border:1px solid var(--markup-border);box-shadow:var(--markup-shadow-pop);color:var(--markup-ink);z-index:11;border-radius:12px;font-size:13px;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;position:absolute;bottom:calc(100% + 8px);overflow:hidden}.markup-pop[data-pop=overflow]{width:260px;padding:6px}.markup-pop[data-pop=identity]{width:240px;padding:6px}.markup-pop[data-pop=inbox]{width:380px;padding:0}.markup-pop.is-anchor-right{right:0}.markup-pop.is-anchor-left{left:0}.markup-pop.is-anchor-center{left:50%;transform:translate(-50%)}@keyframes markup-pop-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.markup-pop.is-anchor-center{animation-name:markup-pop-in-center}@keyframes markup-pop-in-center{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.markup-pop-group-label{font-family:var(--markup-font-mono);letter-spacing:.06em;color:var(--markup-muted);text-transform:lowercase;padding:8px 10px 4px;font-size:10px}.markup-segmented-row{border-radius:6px;align-items:center;gap:10px;padding:7px 8px;display:flex}.markup-segmented-row .lbl{min-width:0;color:var(--markup-ink);flex:1;font-size:13px}.markup-segmented{background:var(--markup-surface-3);border-radius:7px;gap:2px;padding:2px;display:inline-flex}.markup-segmented button{font:inherit;width:28px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background .1s,color .1s;display:inline-flex}.markup-segmented button:hover{color:var(--markup-ink)}.markup-segmented button.is-on{background:var(--markup-surface);color:var(--markup-ink);box-shadow:0 1px 2px #0000000d}.markup-menu-row{cursor:pointer;width:100%;color:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:7px 8px;font-family:inherit;font-size:13px;display:flex}.markup-menu-row:hover{background:var(--markup-hover)}.markup-menu-row:disabled{opacity:.5;cursor:default}.markup-menu-row:disabled:hover{background:0 0}.markup-menu-row .ic{width:16px;height:16px;color:var(--markup-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.markup-menu-row .lbl{flex-direction:column;flex:1;min-width:0;display:flex}.markup-menu-row .lbl .sub{color:var(--markup-muted);margin-top:1px;font-size:11px}.markup-menu-row .right{font-family:var(--markup-font-mono);color:var(--markup-muted);margin-left:auto;font-size:10.5px}.markup-menu-row.is-danger,.markup-menu-row.is-danger .ic{color:var(--markup-danger)}.markup-menu-row.is-danger:hover{background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-menu-row .switch{background:var(--markup-border-strong);border-radius:9999px;flex-shrink:0;width:26px;height:16px;transition:background .12s;position:relative}.markup-menu-row .switch:after{content:\"\";background:var(--markup-surface);border-radius:9999px;width:12px;height:12px;transition:left .12s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.markup-menu-row[data-on=true] .switch{background:var(--markup-brand)}.markup-menu-row[data-on=true] .switch:after{left:12px}.markup-menu-divider{background:var(--markup-border);height:1px;margin:4px 0}.markup-brand-line{font-family:var(--markup-font-mono);color:var(--markup-muted);border-top:1px solid var(--markup-border);align-items:center;gap:8px;margin-top:6px;padding:8px 10px;font-size:10.5px;text-decoration:none;display:flex}.markup-brand-line:hover{color:var(--markup-ink)}.markup-brand-line svg{color:var(--markup-brand)}.markup-brand-line .ver{margin-left:auto}.markup-id-who{border-bottom:1px solid var(--markup-border);flex-direction:column;gap:2px;margin-bottom:4px;padding:10px 8px 12px;display:flex}.markup-id-who .nm{color:var(--markup-ink);font-size:13.5px;font-weight:600}.markup-id-who .em{font-family:var(--markup-font-mono);color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.markup-id-anon{text-align:left;flex-direction:column;gap:10px;padding:14px 10px;display:flex}.markup-id-anon .h{letter-spacing:-.005em;color:var(--markup-ink);font-size:14px;font-weight:600}.markup-id-anon .sub{color:var(--markup-muted);font-size:12.5px;line-height:18px}.markup-id-anon button:not(.markup-menu-row){background:var(--markup-ink);width:100%;color:var(--markup-paper);height:32px;font:inherit;cursor:pointer;border:none;border-radius:7px;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:500;display:inline-flex}.markup-id-anon button:disabled{opacity:.7;cursor:default}.markup-id-anon button:not(.markup-menu-row):hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-surface))}.markup-hud-hidden-toast{z-index:10;background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:12px;font-weight:500;animation:.22s ease-out markup-hud-hidden-in,.32s ease-in 4.6s forwards markup-hud-hidden-out;display:inline-flex;position:fixed;bottom:24px}.markup-hud-hidden-toast-right{right:24px}.markup-hud-hidden-toast-left{left:24px}.markup-hud-hidden-toast-center{width:max-content;margin-inline:auto;left:0;right:0}.markup-kbd{background:color-mix(in srgb, var(--markup-paper) 14%, transparent);min-width:18px;height:18px;color:var(--markup-paper);font-family:var(--markup-font);border-radius:4px;justify-content:center;align-items:center;padding:0 5px;font-size:10px;font-weight:600;line-height:1;display:inline-flex}.markup-kbd.is-inline{background:color-mix(in srgb, var(--markup-ink) 8%, transparent);min-width:14px;height:14px;color:var(--markup-muted);border-radius:3px;padding:0 3px;font-size:9.5px}@keyframes markup-hud-hidden-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes markup-hud-hidden-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}.markup-pins-layer{pointer-events:none;position:fixed;inset:0}.markup-pin{border:2px solid var(--markup-paper);background:var(--markup-brand);color:#fff;width:28px;height:28px;font-family:var(--markup-font-mono);cursor:pointer;pointer-events:auto;box-shadow:0 4px 14px -4px #00000059, 0 0 0 1px color-mix(in srgb, var(--markup-brand) 50%, transparent);border-radius:999px 999px 999px 4px;justify-content:center;align-items:center;margin:0;padding:0;font-size:11.5px;font-weight:600;line-height:1;transition:background .15s,color .15s,opacity .15s,top .2s,left .2s;display:inline-flex;position:absolute;transform:translate(-50%,-100%)}.markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 92%, black)}:host([data-theme=dark]) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}@media (prefers-color-scheme:dark){:host(:not([data-theme])) .markup-pin:hover{background:color-mix(in oklab, var(--markup-brand) 88%, var(--markup-paper))}}.markup-pin.is-active{background:var(--markup-brand);color:#fff;border-color:var(--markup-paper)}.markup-pin.is-anchor{anchor-name:--markup-active-anchor}.markup-pin.is-unresolved{opacity:.6}.markup-pin-ghost{background:var(--markup-brand);color:#fff;cursor:default;pointer-events:none;animation:1.2s ease-in-out infinite markup-ghost-pulse}.markup-pin-num{pointer-events:none;justify-content:center;align-items:center;display:inline-flex}.markup-pin-count{background:var(--markup-ink);min-width:16px;height:16px;color:var(--markup-paper);font-family:var(--markup-font-mono);text-align:center;border:2px solid var(--markup-paper);pointer-events:none;border-radius:999px;padding:0 4px;font-size:9.5px;font-weight:600;line-height:12px;position:absolute;top:-6px;right:-8px}@keyframes markup-ghost-pulse{0%,to{box-shadow:0 4px 14px -4px #00000059,0 0 #e35d2a66}50%{box-shadow:0 4px 14px -4px #00000059,0 0 0 10px #e35d2a00}}.markup-placement-overlay{background:var(--markup-overlay-tint);cursor:crosshair;pointer-events:auto;z-index:1;animation:.18s ease-out markup-overlay-in;position:fixed;inset:0}.markup-placement-cursor-help{background:var(--markup-ink);color:var(--markup-paper);letter-spacing:-.01em;box-shadow:var(--markup-shadow);pointer-events:none;border-radius:999px;padding:10px 16px;font-size:12px;font-weight:500;animation:.22s ease-out 60ms backwards markup-help-in;position:fixed;top:24px;left:50%;transform:translate(-50%)}@keyframes markup-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes markup-help-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.markup-popover{width:360px;max-width:calc(100vw - 24px);height:auto;max-height:calc(100dvh - 24px);inset:auto;left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);background:var(--markup-paper);color:var(--markup-ink);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);box-shadow:var(--markup-shadow);pointer-events:auto;flex-direction:column;gap:0;margin:0;padding:0;animation:.16s ease-out markup-popover-in;display:flex;position:fixed;overflow:hidden}@supports (anchor-name:--x){.markup-popover{position-anchor:--markup-active-anchor;left:calc(anchor(right) + 8px);top:calc(anchor(top) - 9px);position-try-fallbacks:flip-block, flip-inline, flip-block flip-inline;position-try-order:most-block-size}.markup-popover.is-floating{left:var(--markup-pop-x,0);top:var(--markup-pop-y,0);position-try-fallbacks:none}}.markup-popover.is-hud-hidden{display:none}@keyframes markup-popover-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.markup-popover-header{border-bottom:1px solid var(--markup-border);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.markup-popover.is-dragging .markup-popover-header{cursor:grabbing}.markup-popover-header-actions{align-items:center;gap:4px;display:flex}.markup-popover-title{min-width:0;font-family:var(--markup-font-mono);letter-spacing:.02em;color:var(--markup-muted);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-size:11px;line-height:1;overflow:hidden}.markup-thread-menu{display:flex;position:relative}.markup-thread-menu-list{z-index:10;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius);min-width:160px;box-shadow:var(--markup-shadow);padding:4px;animation:.12s ease-out markup-menu-in;position:absolute;top:calc(100% + 6px);right:0}.markup-thread-menu-item{border-radius:var(--markup-radius-sm);width:100%;color:var(--markup-ink);text-align:left;cursor:pointer;background:0 0;border:none;padding:7px 10px;font-size:13px;transition:background .1s,color .1s;display:block}.markup-thread-menu-item:hover{background:var(--markup-border)}.markup-thread-menu-item.is-danger{color:var(--markup-danger,#dc2626)}.markup-thread-menu-item.is-danger:hover{background:color-mix(in srgb, var(--markup-danger,#dc2626) 10%, transparent)}.markup-thread-menu-item:disabled{opacity:.5;cursor:default}@keyframes markup-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.markup-popover-body{border-top:1px solid var(--markup-border);background:var(--markup-paper);flex-direction:column;gap:6px;padding:10px 12px 8px;display:flex}.markup-popover-header+.markup-popover-body{border-top:none}.markup-popover-byline{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markup-popover-name{color:var(--markup-ink);font-weight:500}.markup-icon-btn{border-radius:var(--markup-radius-sm);width:24px;height:24px;color:var(--markup-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex}.markup-icon-btn:hover,.markup-icon-btn.is-open{background:var(--markup-border);color:var(--markup-ink)}.markup-comments{flex-direction:column;max-height:420px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.markup-comment{border-bottom:1px solid var(--markup-border);grid-template-columns:26px 1fr;align-items:start;gap:0 10px;padding:12px;display:grid}.markup-comment:last-child{border-bottom:none}.markup-comment>:not(.markup-comment-avatar){grid-column:2}.markup-comment-avatar{background:var(--markup-border);width:26px;height:26px;color:var(--markup-ink);font-family:var(--markup-font-mono);letter-spacing:.02em;text-transform:uppercase;-webkit-user-select:none;user-select:none;border-radius:999px;grid-area:1/1/span 4;justify-content:center;align-items:center;margin-top:-3px;font-size:10.5px;font-weight:600;display:inline-flex;overflow:hidden}.markup-avatar-initials{text-box-trim:trim-both;text-box-edge:cap alphabetic;line-height:1}.markup-avatar-img{object-fit:cover;width:100%;height:100%;display:block}.markup-comment-avatar[data-tone=\"1\"]{color:oklch(25% .07 230);background:oklch(85% .07 200)}.markup-comment-avatar[data-tone=\"2\"]{color:oklch(30% .1 150);background:oklch(88% .07 130)}.markup-comment-avatar[data-tone=\"3\"]{color:oklch(35% .1 40);background:oklch(90% .05 50)}.markup-comment-avatar[data-tone=\"4\"]{color:oklch(30% .1 320);background:oklch(87% .07 320)}.markup-comment-avatar[data-tone=\"5\"]{color:oklch(32% .09 70);background:oklch(88% .06 80)}.markup-comment-meta{align-items:center;gap:8px;min-width:0;margin-bottom:4px;font-size:13px;display:flex}.markup-comment-author{color:var(--markup-ink);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.markup-comment-badge{background:color-mix(in srgb, var(--markup-team) 12%, transparent);height:14px;color:var(--markup-team);font-family:var(--markup-font-mono);letter-spacing:.12em;text-transform:uppercase;border-radius:999px;align-items:center;padding:0 5px;font-size:9px;font-weight:500;line-height:1;display:inline-flex}.markup-comment-badge.is-agent{background:color-mix(in srgb, var(--markup-brand) 14%, transparent);color:var(--markup-brand);letter-spacing:normal;justify-content:center;width:14px;padding:0}.markup-comment-time{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;white-space:nowrap;flex-shrink:0;font-size:10.5px}.markup-comment-body{color:var(--markup-ink);white-space:pre-wrap;word-break:break-word;margin:0;font-size:13.5px;line-height:19px}.markup-comment-edited{color:var(--markup-muted);font-family:var(--markup-font-mono);margin-left:2px;font-size:10.5px}.markup-comment-edited:before{content:\" · \"}.markup-thread-actions{align-items:center;gap:4px;display:flex}.markup-comment-meta .markup-reaction-picker-wrap,.markup-thread-actions{margin-left:auto}.markup-comment-meta .markup-reaction-add{width:22px;height:22px;margin-top:-4px;margin-bottom:-4px}.markup-reaction-picker-wrap>.markup-icon-btn,.markup-comment-menu>.markup-icon-btn{margin-top:-4px;margin-bottom:-4px}.markup-comment-menu.is-up .markup-thread-menu-list{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-comment-menu.is-side .markup-thread-menu-list{animation-name:markup-menu-in-side;top:-4px;right:calc(100% + 2px)}@keyframes markup-menu-in-side{0%{opacity:0;transform:translate(4px)}to{opacity:1;transform:translate(0)}}@keyframes markup-menu-in-up{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.markup-comment{position:relative}.markup-reactions{flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;display:flex}.markup-reaction-chip{border:1px solid var(--markup-border);background:var(--markup-surface-3);color:var(--markup-ink);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:11.5px;line-height:1.2;transition:background .12s,border-color .12s;display:inline-flex}.markup-reaction-chip:hover:not(:disabled){background:var(--markup-hover)}.markup-reaction-chip.is-mine{background:var(--markup-accent-soft);border-color:color-mix(in srgb, var(--markup-brand) 50%, transparent);color:var(--markup-accent-ink)}.markup-reaction-chip.is-mine:hover:not(:disabled){background:color-mix(in srgb, var(--markup-brand) 18%, transparent)}.markup-reaction-chip:disabled{cursor:default;opacity:.6}.markup-reaction-emoji{font-size:13px;line-height:1}.markup-reaction-count{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);font-size:10.5px}.markup-reaction-chip.is-mine .markup-reaction-count{color:var(--markup-accent-ink)}.markup-reaction-picker-wrap{opacity:0;flex:none;transition:opacity .12s;display:inline-flex;position:relative}.markup-comment:hover .markup-reaction-picker-wrap,.markup-comment:focus-within .markup-reaction-picker-wrap,.markup-reaction-picker-wrap.is-open{opacity:1}.markup-reaction-add{width:22px;height:22px;color:var(--markup-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .12s,color .12s;display:inline-flex}.markup-reaction-add:hover,.markup-reaction-add.is-open{background:var(--markup-hover);color:var(--markup-ink)}.markup-reaction-picker{z-index:1;border:1px solid var(--markup-border-strong);background:var(--markup-paper);border-radius:8px;gap:2px;padding:4px;animation:.12s markup-menu-in;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 1px 2px #1a16140f,0 8px 28px #1a16141a}.markup-reaction-picker-wrap.is-up .markup-reaction-picker{animation-name:markup-menu-in-up;top:auto;bottom:calc(100% + 6px)}.markup-reaction-picker-wrap.is-side .markup-reaction-picker{animation-name:markup-menu-in-side;top:-4px;right:calc(100% + 2px)}.markup-reaction-picker-item{cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:16px;line-height:1;transition:background .12s;display:inline-flex}.markup-reaction-picker-item:hover{background:color-mix(in srgb, var(--markup-ink) 8%, transparent)}.markup-reaction-picker-item.is-mine{background:color-mix(in srgb, var(--markup-brand) 14%, transparent)}.markup-comment-edit-form{flex-direction:column;gap:6px;display:flex}.markup-comment-edit-actions{justify-content:flex-end;gap:6px;display:flex}.markup-composer{flex-direction:column;display:flex;position:relative}.markup-composer-input{width:100%;min-height:38px;max-height:120px;color:var(--markup-ink);font-family:var(--markup-font);background:0 0;border:none;border-radius:0;padding:2px 0;font-size:13.5px;line-height:19px;transition:none;overflow-y:auto}.markup-composer-input:focus-visible{box-shadow:none;outline:none}.markup-composer-footer-wrap{grid-template-rows:0fr;transition:grid-template-rows .15s;display:grid}.markup-composer.is-filled .markup-composer-footer-wrap{grid-template-rows:1fr}.markup-composer-footer{opacity:0;background:0 0;border:none;border-radius:0;justify-content:space-between;align-items:center;gap:8px;padding:0;transition:opacity .1s;display:flex;overflow:hidden}.markup-composer.is-filled .markup-composer-footer{opacity:1;transition-delay:60ms}.markup-composer-hint{font-family:var(--markup-font-mono);letter-spacing:.04em;color:var(--markup-muted);align-items:center;gap:3px;font-size:10.5px;display:inline-flex}.markup-composer-hint-label{margin-left:2px}.markup-composer-error{color:var(--markup-brand)}.markup-composer-actions{align-items:center;gap:6px;display:flex}.markup-composer .markup-btn-primary{background:var(--markup-ink);height:26px;color:var(--markup-paper);border-radius:6px;padding:0 10px}.markup-composer .markup-btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--markup-ink) 88%, var(--markup-paper))}.markup-composer-actions-empty{transition:opacity .12s;position:absolute;bottom:0;right:0}.markup-composer.is-filled .markup-composer-actions-empty{opacity:0;pointer-events:none}.markup-author-prompt{flex-direction:column;gap:10px;padding:12px;display:flex}.markup-author-status{color:var(--markup-muted);margin:0;font-size:12px}.markup-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;height:36px;color:var(--markup-ink);outline:none;padding:0 10px;font-size:14px;transition:border-color .12s,box-shadow .12s}.markup-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-btn{border-radius:var(--markup-radius-sm);height:30px;color:var(--markup-ink);cursor:pointer;letter-spacing:-.01em;white-space:nowrap;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s,color .12s,opacity .12s;display:inline-flex}.markup-btn:disabled{opacity:.5;cursor:not-allowed}.markup-btn-primary{background:var(--markup-ink);color:var(--markup-paper)}.markup-btn-primary:hover:not(:disabled){background:var(--markup-brand)}.markup-btn-ghost{color:var(--markup-muted)}.markup-btn-ghost:hover:not(:disabled){background:var(--markup-border);color:var(--markup-ink)}.markup-screenshot-row{border:1px dashed var(--markup-border-strong);color:var(--markup-muted);border-radius:6px;align-items:center;gap:8px;margin-top:0;padding:6px 8px;font-size:11.5px;display:flex}.markup-screenshot-status{color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;display:flex}.markup-screenshot-row.is-failed{opacity:.85;border-style:dotted}.markup-screenshot-toggle{cursor:pointer;color:var(--markup-muted);font-family:var(--markup-font-mono);letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;transition:color .12s;display:flex}.markup-screenshot-toggle:hover{color:var(--markup-ink)}.markup-screenshot-checkbox{width:12px;height:12px;accent-color:var(--markup-brand);cursor:pointer;margin:0}.markup-screenshot-thumb{border:1px solid var(--markup-border-strong);object-fit:cover;border-radius:3px;flex-shrink:0;width:auto;height:25px;margin:-5px 0 -5px auto;display:block}.markup-screenshot-redacted{font-family:var(--markup-font-mono);color:var(--markup-muted);margin-left:auto;font-size:10px}.markup-screenshot-redacted-chip{background:color-mix(in srgb, var(--markup-success,oklch(62% .16 150)) 16%, transparent);color:var(--markup-success,oklch(62% .16 150));font-family:var(--markup-font-mono);cursor:pointer;border:none;border-radius:999px;align-items:center;gap:3px;padding:1px 7px;font-size:10px;display:inline-flex}.markup-screenshot-redacted-chip:hover{filter:brightness(1.05)}.markup-screenshot-redacted-arrow{font-style:normal}.markup-screenshot-redacted-list{margin-top:3px;padding-left:10px}.markup-screenshot-redacted-selector{font-family:var(--markup-font-mono);color:var(--markup-muted);font-size:9px;display:block}.markup-screenshot-help{font-family:var(--markup-font-mono);color:var(--markup-muted);margin:5px 0 0;font-size:10px;line-height:1.5}.markup-screenshot-help-code{font-family:var(--markup-font-mono);color:var(--markup-ink)}.markup-comment-screenshot{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);cursor:pointer;background:0 0;margin-top:8px;padding:0;transition:border-color .12s,opacity .12s;display:block;overflow:hidden}.markup-comment-screenshot:hover{border-color:var(--markup-brand);opacity:.9}.markup-comment-screenshot img{object-fit:cover;object-position:top;width:100%;height:auto;max-height:120px;display:block}.markup-lightbox{background:#1a1614e0;border:none;width:100%;max-width:100%;height:100%;max-height:100%;margin:0;padding:24px;position:fixed;inset:0}.markup-lightbox[open]{justify-content:center;align-items:center;display:flex}.markup-lightbox::backdrop{display:none}.markup-lightbox-img{border-radius:var(--markup-radius);object-fit:contain;max-width:100%;max-height:100%;box-shadow:var(--markup-shadow);animation:.16s ease-out markup-lightbox-in}.markup-lightbox-close{color:#fdfcfa;background:#1a161499;position:absolute;top:16px;right:16px}.markup-lightbox-close:hover{color:#fdfcfa;background:#1a1614d9}@keyframes markup-lightbox-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.markup-toolbar,.markup-pin,.markup-icon-btn,.markup-btn,.markup-popover,.markup-pin-ghost,.markup-placement-overlay,.markup-placement-cursor-help,.markup-lightbox-img{transition:none;animation:none}}.markup-mention-chip{background:var(--markup-accent-soft);color:var(--markup-accent-ink);border-radius:3px;padding:0 2px;font-weight:500;display:inline-block}.markup-mention-input{white-space:pre-wrap;overflow-wrap:anywhere;cursor:text;outline:none;position:relative}.markup-mention-input[aria-disabled=true]{opacity:.6;cursor:default}.markup-mention-input[data-empty]:before{content:attr(data-placeholder);color:var(--markup-muted);pointer-events:none;position:absolute;inset:0 auto auto 0}.markup-mention-input .markup-mention-chip{white-space:nowrap;padding:0 3px}.markup-comment-edit-input{border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);background:var(--markup-paper);width:100%;min-height:58px;max-height:200px;color:var(--markup-ink);font:inherit;padding:8px 10px;font-size:13px;line-height:1.5;overflow-y:auto}.markup-comment-edit-input:focus-visible{border-color:var(--markup-brand);box-shadow:0 0 0 3px #e35d2a2e}.markup-comment-edit-input[data-empty]:before{inset:8px auto auto 10px}.markup-mention-picker{z-index:10;background:var(--markup-paper);border:1px solid var(--markup-border-strong);border-radius:var(--markup-radius-sm);max-height:180px;box-shadow:var(--markup-shadow);margin:0 0 4px;padding:4px;list-style:none;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto}.markup-mention-picker-item{border-radius:var(--markup-radius-sm);cursor:pointer;color:var(--markup-ink);justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.markup-mention-picker-item.is-active{background:color-mix(in srgb, var(--markup-brand) 12%, transparent)}.markup-mention-picker-name{font-weight:500}.markup-mention-picker-trigger{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel{max-height:min(60vh,420px);color:var(--markup-ink);flex-direction:column;display:flex}.markup-notifications-panel-header{border-bottom:1px solid var(--markup-border);align-items:center;gap:8px;padding:8px 10px;display:flex}.markup-notifications-panel-header .markup-eyebrow{flex:1}.markup-notifications-panel-actions{align-items:center;gap:8px;display:flex}.markup-notifications-panel-mark-all{color:var(--markup-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px}.markup-notifications-panel-mark-all:hover{color:var(--markup-ink)}.markup-notifications-panel-body{flex:1;overflow-y:auto}.markup-notifications-panel-empty,.markup-notifications-panel-error{text-align:center;color:var(--markup-muted);padding:24px 12px;font-size:12px}.markup-notifications-panel-empty-title{color:var(--markup-ink);margin:0 0 4px;font-weight:500}.markup-notifications-panel-empty-sub{color:var(--markup-muted);margin:0;line-height:1.4}.markup-notifications-panel-error{color:var(--markup-danger,#b91c1c)}.markup-notifications-panel-list{margin:0;padding:4px;list-style:none}.markup-notifications-panel-row{border-radius:var(--markup-radius-sm);text-align:start;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:none;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.markup-notifications-panel-row:hover{background:color-mix(in srgb, var(--markup-brand) 8%, transparent)}.markup-notifications-panel-row.is-unread{background:color-mix(in srgb, var(--markup-brand) 5%, transparent)}.markup-notifications-panel-meta{align-items:center;gap:6px;font-size:11px;display:flex}.markup-notifications-panel-dot{background:var(--markup-brand);border-radius:999px;flex-shrink:0;width:6px;height:6px}.markup-notifications-panel-actor{font-weight:600}.markup-notifications-panel-sep{color:var(--markup-muted)}.markup-notifications-panel-time{color:var(--markup-muted);font-family:var(--markup-font-mono);font-size:10px}.markup-notifications-panel-thread{color:var(--markup-muted);margin:0;font-size:12px}.markup-notifications-panel-thread-title{color:var(--markup-ink)}.markup-notifications-panel-excerpt{color:color-mix(in srgb, var(--markup-ink) 80%, transparent);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;font-style:italic;display:-webkit-box;overflow:hidden}.markup-panel-pop{z-index:11;pointer-events:auto;width:380px;max-width:calc(100vw - 24px);position:fixed;bottom:76px}.markup-panel-pop[data-panel=privacy]{width:340px}.markup-panel-pop[data-panel=shortcuts]{width:320px}.markup-panel-pop-right{right:22px}.markup-panel-pop-left{left:22px}.markup-panel-pop-center{left:50%;transform:translate(-50%)}.markup-panel-pop .markup-pop{width:100%;animation:.14s cubic-bezier(.2,.7,.2,1) markup-pop-in;position:static}.markup-panel-pop .markup-notifications-panel{max-height:min(60vh,480px)}.markup-panel-pop .markup-notifications-panel-header{padding:12px 14px}.markup-panel-pop .markup-notifications-panel-header .markup-icon-btn{display:none}.markup-pop[data-pop=privacy],.markup-pop[data-pop=shortcuts]{padding:0}.markup-panel{max-height:min(70vh,520px);color:var(--markup-ink);flex-direction:column;display:flex}.markup-panel-header{border-bottom:1px solid var(--markup-border);align-items:center;gap:8px;padding:12px 14px;display:flex}.markup-panel-header .markup-eyebrow{flex:1}.markup-panel-body{flex:1;padding:4px 14px 14px;overflow-y:auto}.markup-panel-section{border-bottom:1px solid var(--markup-border);padding:10px 0}.markup-panel-section:last-child{border-bottom:none;padding-bottom:2px}.markup-panel-section-title{font-family:var(--markup-font-mono);letter-spacing:.06em;text-transform:lowercase;color:var(--markup-muted);margin:0 0 6px;font-size:10px;font-weight:400}.markup-panel-text{color:var(--markup-ink-soft);margin:0;font-size:12.5px;line-height:1.5}.markup-panel-text strong{color:var(--markup-ink);font-weight:600}.markup-panel-mono{font-family:var(--markup-font-mono);color:var(--markup-ink);word-break:break-all;font-size:11.5px}.markup-panel-list{color:var(--markup-ink-soft);margin:0;padding-left:16px;font-size:12.5px;line-height:1.5}.markup-panel-list li{margin-bottom:3px}.markup-panel-list li::marker{color:var(--markup-muted)}.markup-panel-note{color:var(--markup-muted);margin:8px 0 0;font-size:11.5px;line-height:1.45}.markup-panel-error{color:var(--markup-danger);margin:8px 0 0;font-size:11.5px;line-height:1.45}.markup-panel-action{border:1px solid var(--markup-border-strong);width:100%;height:30px;color:var(--markup-ink);font:inherit;cursor:pointer;background:0 0;border-radius:7px;margin-top:10px;padding:0 10px;font-size:12.5px;transition:background .12s,border-color .12s,color .12s}.markup-panel-action:hover:not(:disabled){background:var(--markup-hover)}.markup-panel-action:disabled{opacity:.6;cursor:default}.markup-panel-action.is-danger{border-color:color-mix(in srgb, var(--markup-danger) 45%, transparent);color:var(--markup-danger)}.markup-panel-action.is-danger:hover:not(:disabled){background:color-mix(in srgb, var(--markup-danger) 10%, transparent)}.markup-shortcut-list{margin:0;padding:0;list-style:none}.markup-shortcut-row{align-items:center;gap:10px;min-height:24px;padding:2px 0;display:flex}.markup-shortcut-label{min-width:0;color:var(--markup-ink-soft);flex:1;font-size:12.5px;line-height:1.4}.markup-shortcut-keys{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.markup-shortcut-chord{align-items:center;gap:3px;display:inline-flex}.markup-shortcut-or{color:var(--markup-muted);margin-right:1px;font-size:10px}", me = class extends C {
252
252
  state = { hasError: !1 };
253
253
  static getDerivedStateFromError() {
254
254
  return { hasError: !0 };
@@ -261,12 +261,12 @@ var pe = ":host{--markup-paper:#fdfcfa;--markup-surface:#fff;--markup-surface-2:
261
261
  render() {
262
262
  return this.state.hasError ? null : this.props.children;
263
263
  }
264
- }, me = 1e3;
264
+ }, M = 1e3;
265
265
  function he(e) {
266
266
  let t = !1, n = 0;
267
267
  return (r) => {
268
268
  let i = Date.now();
269
- t || i - n < me || (t = !0, n = i, fetch(`${e.apiUrl.replace(/\/+$/, "")}/widget/error`, {
269
+ t || i - n < M || (t = !0, n = i, fetch(`${e.apiUrl.replace(/\/+$/, "")}/widget/error`, {
270
270
  method: "POST",
271
271
  headers: {
272
272
  "content-type": "application/json",
@@ -4630,167 +4630,8 @@ function es(e) {
4630
4630
  return e && e.trim().split(/\s+/).slice(0, 2).map((e) => e[0]?.toUpperCase() ?? "").join("") || null;
4631
4631
  }
4632
4632
  //#endregion
4633
- //#region src/runtime/ui/notifications-panel.tsx
4634
- function ts({ items: e, isLoading: t, error: n, onBack: r, onItemClick: i, onMarkAllRead: a, isMarkingAll: o }) {
4635
- let s = e.some((e) => e.readAt == null);
4636
- return /* @__PURE__ */ Q("div", {
4637
- class: "markup-notifications-panel",
4638
- role: "dialog",
4639
- "aria-label": "Notifications",
4640
- children: [/* @__PURE__ */ Q("header", {
4641
- class: "markup-notifications-panel-header",
4642
- children: [
4643
- /* @__PURE__ */ Q("button", {
4644
- type: "button",
4645
- class: "markup-icon-btn",
4646
- title: "Back to menu",
4647
- "aria-label": "Back to menu",
4648
- onClick: r,
4649
- children: /* @__PURE__ */ Q(Mo, { size: 16 })
4650
- }),
4651
- /* @__PURE__ */ Q("span", {
4652
- class: "markup-eyebrow",
4653
- children: "notifications"
4654
- }),
4655
- /* @__PURE__ */ Q("div", {
4656
- class: "markup-notifications-panel-actions",
4657
- children: s ? /* @__PURE__ */ Q("button", {
4658
- type: "button",
4659
- class: "markup-notifications-panel-mark-all",
4660
- disabled: o,
4661
- onClick: a,
4662
- children: o ? "Marking…" : "Mark all read"
4663
- }) : null
4664
- })
4665
- ]
4666
- }), /* @__PURE__ */ Q("div", {
4667
- class: "markup-notifications-panel-body",
4668
- children: n ? /* @__PURE__ */ Q("p", {
4669
- class: "markup-notifications-panel-error",
4670
- children: n
4671
- }) : t ? /* @__PURE__ */ Q("p", {
4672
- class: "markup-notifications-panel-empty",
4673
- children: "Loading…"
4674
- }) : e.length === 0 ? /* @__PURE__ */ Q("div", {
4675
- class: "markup-notifications-panel-empty",
4676
- children: [/* @__PURE__ */ Q("p", {
4677
- class: "markup-notifications-panel-empty-title",
4678
- children: "You're all caught up."
4679
- }), /* @__PURE__ */ Q("p", {
4680
- class: "markup-notifications-panel-empty-sub",
4681
- children: "New @mentions on this site land here."
4682
- })]
4683
- }) : /* @__PURE__ */ Q("ul", {
4684
- class: "markup-notifications-panel-list",
4685
- children: e.map((e) => /* @__PURE__ */ Q("li", { children: /* @__PURE__ */ Q("button", {
4686
- type: "button",
4687
- class: Z("markup-notifications-panel-row", e.readAt == null && "is-unread"),
4688
- onClick: () => i(e),
4689
- children: [
4690
- /* @__PURE__ */ Q("div", {
4691
- class: "markup-notifications-panel-meta",
4692
- children: [
4693
- e.readAt == null ? /* @__PURE__ */ Q("span", {
4694
- "aria-hidden": "true",
4695
- class: "markup-notifications-panel-dot"
4696
- }) : null,
4697
- /* @__PURE__ */ Q("span", {
4698
- class: "markup-notifications-panel-actor",
4699
- children: e.actorName
4700
- }),
4701
- e.actorVia === "mcp" ? /* @__PURE__ */ Q("span", {
4702
- class: "markup-comment-badge is-agent",
4703
- role: "img",
4704
- "aria-label": "Written by an AI agent",
4705
- title: "Written by an AI agent on this person's behalf",
4706
- children: /* @__PURE__ */ Q(Zo, { size: 11 })
4707
- }) : null,
4708
- /* @__PURE__ */ Q("span", {
4709
- class: "markup-notifications-panel-sep",
4710
- children: "·"
4711
- }),
4712
- /* @__PURE__ */ Q("span", {
4713
- class: "markup-notifications-panel-time",
4714
- children: ns(e.createdAt)
4715
- })
4716
- ]
4717
- }),
4718
- /* @__PURE__ */ Q("p", {
4719
- class: "markup-notifications-panel-thread",
4720
- children: [
4721
- "mentioned you in",
4722
- " ",
4723
- /* @__PURE__ */ Q("span", {
4724
- class: "markup-notifications-panel-thread-title",
4725
- children: e.threadTitle
4726
- })
4727
- ]
4728
- }),
4729
- e.commentExcerpt ? /* @__PURE__ */ Q("p", {
4730
- class: "markup-notifications-panel-excerpt",
4731
- children: [
4732
- "“",
4733
- e.commentExcerpt,
4734
- "”"
4735
- ]
4736
- }) : null
4737
- ]
4738
- }) }, e._id))
4739
- })
4740
- })]
4741
- });
4742
- }
4743
- function ns(e) {
4744
- let t = Date.now() - e, n = Math.floor(t / 1e3);
4745
- if (n < 60) return "just now";
4746
- let r = Math.floor(n / 60);
4747
- if (r < 60) return `${r}m ago`;
4748
- let i = Math.floor(r / 60);
4749
- if (i < 24) return `${i}h ago`;
4750
- let a = Math.floor(i / 24);
4751
- return a < 30 ? `${a}d ago` : new Date(e).toLocaleDateString();
4752
- }
4753
- //#endregion
4754
- //#region src/runtime/ui/inbox-popover.tsx
4755
- function rs({ position: e, items: t, isLoading: n, error: r, isMarkingAll: i, onClose: a, onItemClick: o, onMarkAllRead: s }) {
4756
- let c = z(null);
4757
- return R(() => {
4758
- function e(e) {
4759
- let t = c.current;
4760
- if (t && !e.composedPath().includes(t)) {
4761
- if (e.composedPath().some((e) => e?.dataset?.kind === "inbox")) return;
4762
- a();
4763
- }
4764
- }
4765
- function t(e) {
4766
- e.key === "Escape" && a();
4767
- }
4768
- return document.addEventListener("click", e, !0), document.addEventListener("keydown", t), () => {
4769
- document.removeEventListener("click", e, !0), document.removeEventListener("keydown", t);
4770
- };
4771
- }, [a]), /* @__PURE__ */ Q("div", {
4772
- ref: c,
4773
- class: Z("markup-inbox-pop", e === "bottom-left" ? "markup-inbox-pop-left" : e === "bottom-center" ? "markup-inbox-pop-center" : "markup-inbox-pop-right"),
4774
- role: "dialog",
4775
- "aria-label": "Inbox",
4776
- children: /* @__PURE__ */ Q("div", {
4777
- class: "markup-pop",
4778
- "data-pop": "inbox",
4779
- children: /* @__PURE__ */ Q(ts, {
4780
- items: t,
4781
- isLoading: n,
4782
- error: r,
4783
- isMarkingAll: i,
4784
- onBack: a,
4785
- onItemClick: o,
4786
- onMarkAllRead: s
4787
- })
4788
- })
4789
- });
4790
- }
4791
- //#endregion
4792
4633
  //#region src/runtime/use-drag.ts
4793
- function is(e) {
4634
+ function ts(e) {
4794
4635
  let t = z(e);
4795
4636
  t.current = e;
4796
4637
  let [n, r] = L(!1);
@@ -4818,8 +4659,8 @@ function is(e) {
4818
4659
  h = !0, r(!0), t.current.onStart?.();
4819
4660
  }
4820
4661
  let a = Math.max(p, window.innerWidth - u - p), _ = Math.max(p, window.innerHeight - d - p), v = {
4821
- left: as(c + n, p, a),
4822
- top: as(l + i, p, _)
4662
+ left: ns(c + n, p, a),
4663
+ top: ns(l + i, p, _)
4823
4664
  };
4824
4665
  g = v, t.current.onMove(v);
4825
4666
  }
@@ -4834,12 +4675,12 @@ function is(e) {
4834
4675
  isDragging: n
4835
4676
  };
4836
4677
  }
4837
- function as(e, t, n) {
4678
+ function ns(e, t, n) {
4838
4679
  return Math.max(t, Math.min(n, e));
4839
4680
  }
4840
4681
  //#endregion
4841
4682
  //#region src/runtime/use-focus-trap.ts
4842
- var os = [
4683
+ var rs = [
4843
4684
  "a[href]",
4844
4685
  "button:not([disabled])",
4845
4686
  "input:not([disabled])",
@@ -4847,14 +4688,14 @@ var os = [
4847
4688
  "textarea:not([disabled])",
4848
4689
  "[tabindex]:not([tabindex=\"-1\"])"
4849
4690
  ].join(",");
4850
- function ss(e, t) {
4691
+ function is(e, t) {
4851
4692
  R(() => {
4852
4693
  if (!t) return;
4853
4694
  let n = e.current;
4854
4695
  if (!n) return;
4855
4696
  function r(e) {
4856
4697
  if (e.key !== "Tab") return;
4857
- let t = Array.from(n.querySelectorAll(os)), r = t[0], i = t[t.length - 1];
4698
+ let t = Array.from(n.querySelectorAll(rs)), r = t[0], i = t[t.length - 1];
4858
4699
  if (!r || !i) return;
4859
4700
  let a = n.getRootNode(), o = a instanceof ShadowRoot ? a.activeElement : document.activeElement;
4860
4701
  (e.shiftKey ? o === r : o === i) && (e.preventDefault(), (e.shiftKey ? i : r).focus());
@@ -4864,7 +4705,7 @@ function ss(e, t) {
4864
4705
  }
4865
4706
  //#endregion
4866
4707
  //#region src/runtime/use-object-url.ts
4867
- function cs(e) {
4708
+ function as(e) {
4868
4709
  let [t, n] = L(null);
4869
4710
  return R(() => {
4870
4711
  if (!e) {
@@ -4877,7 +4718,7 @@ function cs(e) {
4877
4718
  }
4878
4719
  //#endregion
4879
4720
  //#region src/runtime/ui/author-prompt.tsx
4880
- function ls({ isPending: e, isConnecting: t = !1, isSigningIn: n = !1, onSubmit: r, onCancel: i, onSignIn: a }) {
4721
+ function os({ isPending: e, isConnecting: t = !1, isSigningIn: n = !1, onSubmit: r, onCancel: i, onSignIn: a }) {
4881
4722
  let [o, s] = L(""), [c, l] = L(""), u = z(null);
4882
4723
  R(() => {
4883
4724
  u.current?.focus();
@@ -4956,27 +4797,27 @@ function ls({ isPending: e, isConnecting: t = !1, isSigningIn: n = !1, onSubmit:
4956
4797
  }
4957
4798
  //#endregion
4958
4799
  //#region src/runtime/mention-input.ts
4959
- var us = "data-markup-mention", ds = "data-markup-mention-name", fs = new Set([
4800
+ var ss = "data-markup-mention", cs = "data-markup-mention-name", ls = new Set([
4960
4801
  "DIV",
4961
4802
  "P",
4962
4803
  "LI",
4963
4804
  "BLOCKQUOTE",
4964
4805
  "PRE"
4965
- ]), ps = 3, ms = 1;
4966
- function hs(e) {
4806
+ ]), us = 3, ds = 1;
4807
+ function fs(e) {
4967
4808
  let t = "", n = (r) => {
4968
4809
  let i = r.childNodes;
4969
4810
  for (let a = 0; a < i.length; a++) {
4970
4811
  let o = i[a];
4971
4812
  if (!o) continue;
4972
- if (o.nodeType === ps) {
4813
+ if (o.nodeType === us) {
4973
4814
  t += o.data;
4974
4815
  continue;
4975
4816
  }
4976
- if (o.nodeType !== ms) continue;
4977
- let s = o, c = s.getAttribute(us);
4817
+ if (o.nodeType !== ds) continue;
4818
+ let s = o, c = s.getAttribute(ss);
4978
4819
  if (c) {
4979
- let e = gs(s);
4820
+ let e = ps(s);
4980
4821
  t += Ir({
4981
4822
  userId: c,
4982
4823
  name: e
@@ -4987,77 +4828,77 @@ function hs(e) {
4987
4828
  r === e && a === i.length - 1 || (t += "\n");
4988
4829
  continue;
4989
4830
  }
4990
- fs.has(s.tagName) && t !== "" && !t.endsWith("\n") && (t += "\n"), n(s);
4831
+ ls.has(s.tagName) && t !== "" && !t.endsWith("\n") && (t += "\n"), n(s);
4991
4832
  }
4992
4833
  };
4993
4834
  return n(e), t;
4994
4835
  }
4995
- function gs(e) {
4996
- return e.getAttribute(ds) || (e.textContent ?? "").replace(/^@/, "");
4836
+ function ps(e) {
4837
+ return e.getAttribute(cs) || (e.textContent ?? "").replace(/^@/, "");
4997
4838
  }
4998
- function _s(e, t, n) {
4839
+ function ms(e, t, n) {
4999
4840
  let r = e.createElement("span");
5000
- return r.className = n, r.setAttribute("contenteditable", "false"), r.setAttribute(us, t.userId), r.setAttribute(ds, t.name), r.textContent = `@${t.name}`, r;
4841
+ return r.className = n, r.setAttribute("contenteditable", "false"), r.setAttribute(ss, t.userId), r.setAttribute(cs, t.name), r.textContent = `@${t.name}`, r;
5001
4842
  }
5002
- function vs(e, t, n) {
4843
+ function hs(e, t, n) {
5003
4844
  let r = e.createDocumentFragment();
5004
4845
  for (let i of Nr(t)) {
5005
4846
  if (i.type === "text") {
5006
4847
  i.value && r.appendChild(e.createTextNode(i.value));
5007
4848
  continue;
5008
4849
  }
5009
- r.appendChild(_s(e, {
4850
+ r.appendChild(ms(e, {
5010
4851
  userId: i.userId,
5011
4852
  name: i.name
5012
4853
  }, n));
5013
4854
  }
5014
4855
  return r;
5015
4856
  }
5016
- function ys(e) {
4857
+ function gs(e) {
5017
4858
  let t = e.getRootNode();
5018
4859
  return typeof t.getSelection == "function" ? t.getSelection() : e.ownerDocument.getSelection();
5019
4860
  }
5020
- function bs(e) {
5021
- let t = ys(e);
4861
+ function _s(e) {
4862
+ let t = gs(e);
5022
4863
  if (!t || t.rangeCount === 0 || !t.isCollapsed) return null;
5023
4864
  let n = t.focusNode;
5024
- return !n || n.nodeType !== ps || !e.contains(n) || xs(n, e) ? null : {
4865
+ return !n || n.nodeType !== us || !e.contains(n) || vs(n, e) ? null : {
5025
4866
  node: n,
5026
4867
  offset: t.focusOffset
5027
4868
  };
5028
4869
  }
5029
- function xs(e, t) {
4870
+ function vs(e, t) {
5030
4871
  let n = e;
5031
4872
  for (; n && n !== t;) {
5032
- if (n.nodeType === ms && n.hasAttribute("data-markup-mention")) return n;
4873
+ if (n.nodeType === ds && n.hasAttribute("data-markup-mention")) return n;
5033
4874
  n = n.parentNode;
5034
4875
  }
5035
4876
  return null;
5036
4877
  }
5037
- function Ss(e) {
5038
- let t = ys(e);
4878
+ function ys(e) {
4879
+ let t = gs(e);
5039
4880
  if (!t || t.rangeCount === 0 || !t.isCollapsed) return;
5040
4881
  let n = t.focusNode;
5041
4882
  if (!n || !e.contains(n)) return;
5042
- let r = xs(n, e);
4883
+ let r = vs(n, e);
5043
4884
  if (!r) return;
5044
4885
  let i = r.nextSibling;
5045
- (!i || i.nodeType !== ps) && (i = e.ownerDocument.createTextNode(""), r.parentNode?.insertBefore(i, r.nextSibling)), Cs(e, i, 0);
4886
+ (!i || i.nodeType !== us) && (i = e.ownerDocument.createTextNode(""), r.parentNode?.insertBefore(i, r.nextSibling)), bs(e, i, 0);
5046
4887
  }
5047
- function Cs(e, t, n) {
5048
- let r = ys(e);
4888
+ function bs(e, t, n) {
4889
+ let r = gs(e);
5049
4890
  if (!r) return;
5050
4891
  let i = e.ownerDocument.createRange();
5051
4892
  i.setStart(t, n), i.collapse(!0), r.removeAllRanges(), r.addRange(i);
5052
4893
  }
5053
- function ws(e) {
4894
+ function xs(e) {
5054
4895
  let t = Fr(e.node.data, e.offset);
5055
4896
  return t ? {
5056
4897
  ...t,
5057
4898
  textNode: e.node
5058
4899
  } : null;
5059
4900
  }
5060
- function Ts(e, t, n, r) {
4901
+ function Ss(e, t, n, r) {
5061
4902
  if (Ir(n) == null) return !1;
5062
4903
  let i = t.textNode;
5063
4904
  if (!e.contains(i)) return !1;
@@ -5065,31 +4906,31 @@ function Ts(e, t, n, r) {
5065
4906
  if (!a || t.caret > i.data.length) return !1;
5066
4907
  i.deleteData(t.at, t.caret - t.at);
5067
4908
  let o = i.splitText(t.at);
5068
- return a.insertBefore(_s(e.ownerDocument, n, r), o), o.data.startsWith(" ") || o.insertData(0, " "), Cs(e, o, 1), !0;
4909
+ return a.insertBefore(ms(e.ownerDocument, n, r), o), o.data.startsWith(" ") || o.insertData(0, " "), bs(e, o, 1), !0;
5069
4910
  }
5070
- function Es(e, t) {
5071
- let n = ys(e);
4911
+ function Cs(e, t) {
4912
+ let n = gs(e);
5072
4913
  if (!n || n.rangeCount === 0) return;
5073
4914
  let r = n.getRangeAt(0);
5074
4915
  if (!e.contains(r.commonAncestorContainer)) return;
5075
4916
  r.deleteContents();
5076
4917
  let { startContainer: i, startOffset: a } = r;
5077
- if (i.nodeType === ps) {
4918
+ if (i.nodeType === us) {
5078
4919
  let n = i;
5079
- n.insertData(a, t), Cs(e, n, a + t.length);
4920
+ n.insertData(a, t), bs(e, n, a + t.length);
5080
4921
  return;
5081
4922
  }
5082
4923
  let o = e.ownerDocument.createTextNode(t);
5083
- r.insertNode(o), Cs(e, o, o.data.length);
4924
+ r.insertNode(o), bs(e, o, o.data.length);
5084
4925
  }
5085
- function Ds(e, t) {
4926
+ function ws(e, t) {
5086
4927
  let n = e.ownerDocument, r = null, i = null, a = !0;
5087
4928
  function o(t) {
5088
4929
  let n = t.length === 0;
5089
4930
  n === a && e.hasAttribute("data-empty") === n || (a = n, e.toggleAttribute("data-empty", n));
5090
4931
  }
5091
4932
  function s() {
5092
- let n = hs(e);
4933
+ let n = fs(e);
5093
4934
  o(n), t.onChange(n);
5094
4935
  }
5095
4936
  function c(e) {
@@ -5105,7 +4946,7 @@ function Ds(e, t) {
5105
4946
  c(null);
5106
4947
  return;
5107
4948
  }
5108
- let n = bs(e), r = n ? ws(n) : null;
4949
+ let n = _s(e), r = n ? xs(n) : null;
5109
4950
  if (r && i && r.textNode === i.node && r.at === i.at) {
5110
4951
  c(null);
5111
4952
  return;
@@ -5113,29 +4954,29 @@ function Ds(e, t) {
5113
4954
  i = null, c(r);
5114
4955
  }
5115
4956
  function u(r) {
5116
- e.replaceChildren(vs(n, r, t.chipClass)), o(hs(e)), i = null, c(null);
4957
+ e.replaceChildren(hs(n, r, t.chipClass)), o(fs(e)), i = null, c(null);
5117
4958
  }
5118
4959
  let d = () => {
5119
4960
  s(), l();
5120
4961
  }, f = () => l(), p = () => {
5121
- Ss(e), l();
4962
+ ys(e), l();
5122
4963
  }, m = (t) => {
5123
4964
  let n = t.clipboardData?.getData("text/plain");
5124
- t.preventDefault(), n && (Es(e, n.replace(/\r\n?/g, "\n")), s(), l());
4965
+ t.preventDefault(), n && (Cs(e, n.replace(/\r\n?/g, "\n")), s(), l());
5125
4966
  }, h = (e) => {
5126
4967
  e.preventDefault();
5127
4968
  };
5128
4969
  return e.addEventListener("input", d), e.addEventListener("keyup", f), e.addEventListener("mouseup", p), e.addEventListener("focus", p), e.addEventListener("paste", m), e.addEventListener("drop", h), u(t.initialValue ?? ""), {
5129
- getValue: () => hs(e),
4970
+ getValue: () => fs(e),
5130
4971
  setValue: u,
5131
4972
  focus() {
5132
4973
  e.focus();
5133
4974
  let t = e.lastChild;
5134
- t && (t.nodeType === ps ? Cs(e, t, t.data.length) : Cs(e, e, e.childNodes.length));
4975
+ t && (t.nodeType === us ? bs(e, t, t.data.length) : bs(e, e, e.childNodes.length));
5135
4976
  },
5136
4977
  insertMention(n) {
5137
- let a = bs(e), o = (a ? ws(a) : null) ?? r;
5138
- o && Ts(e, o, n, t.chipClass) && (s(), i = null, c(null));
4978
+ let a = _s(e), o = (a ? xs(a) : null) ?? r;
4979
+ o && Ss(e, o, n, t.chipClass) && (s(), i = null, c(null));
5139
4980
  },
5140
4981
  syncTrigger: l,
5141
4982
  clearTrigger: () => c(null),
@@ -5150,21 +4991,21 @@ function Ds(e, t) {
5150
4991
  }
5151
4992
  };
5152
4993
  }
5153
- var Os = null;
5154
- function ks() {
5155
- if (Os) return Os;
4994
+ var Ts = null;
4995
+ function Es() {
4996
+ if (Ts) return Ts;
5156
4997
  if (typeof document > "u") return "true";
5157
4998
  let e = document.createElement("div");
5158
4999
  try {
5159
- e.contentEditable = "plaintext-only", Os = e.contentEditable === "plaintext-only" ? "plaintext-only" : "true";
5000
+ e.contentEditable = "plaintext-only", Ts = e.contentEditable === "plaintext-only" ? "plaintext-only" : "true";
5160
5001
  } catch {
5161
- Os = "true";
5002
+ Ts = "true";
5162
5003
  }
5163
- return Os;
5004
+ return Ts;
5164
5005
  }
5165
5006
  //#endregion
5166
5007
  //#region src/runtime/ui/mentions.tsx
5167
- function As({ body: e, mentions: t, trailing: n }) {
5008
+ function Ds({ body: e, mentions: t, trailing: n }) {
5168
5009
  let r = B(() => new Set(t), [t]);
5169
5010
  return /* @__PURE__ */ Q("p", {
5170
5011
  class: "markup-comment-body",
@@ -5174,7 +5015,7 @@ function As({ body: e, mentions: t, trailing: n }) {
5174
5015
  }, t) : /* @__PURE__ */ Q("span", { children: e.type === "mention" ? `@${e.name}` : e.value }, t)), n]
5175
5016
  });
5176
5017
  }
5177
- function js(e) {
5018
+ function Os(e) {
5178
5019
  let { members: t, trigger: n, onSelect: r, onClose: i } = e, [a, o] = L(0), s = B(() => {
5179
5020
  if (!n) return [];
5180
5021
  let e = n.query.toLowerCase();
@@ -5202,7 +5043,7 @@ function js(e) {
5202
5043
  handleKeyDown: c
5203
5044
  };
5204
5045
  }
5205
- function Ms({ items: e, highlight: t, setHighlight: n, onSelect: r }) {
5046
+ function ks({ items: e, highlight: t, setHighlight: n, onSelect: r }) {
5206
5047
  return e.length === 0 ? null : /* @__PURE__ */ Q("ul", {
5207
5048
  class: "markup-mention-picker",
5208
5049
  role: "listbox",
@@ -5228,7 +5069,7 @@ function Ms({ items: e, highlight: t, setHighlight: n, onSelect: r }) {
5228
5069
  }
5229
5070
  //#endregion
5230
5071
  //#region src/runtime/ui/mention-input.tsx
5231
- function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeholder: a, disabled: o = !1, autoFocus: s = !1, class: c, handle: l }) {
5072
+ function As({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeholder: a, disabled: o = !1, autoFocus: s = !1, class: c, handle: l }) {
5232
5073
  let u = z(null), d = z(null), [f, p] = L(null), m = z(t);
5233
5074
  m.current = t;
5234
5075
  let h = z(r);
@@ -5237,7 +5078,7 @@ function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeho
5237
5078
  qe(() => {
5238
5079
  let e = u.current;
5239
5080
  if (!e) return;
5240
- let t = Ds(e, {
5081
+ let t = ws(e, {
5241
5082
  chipClass: "markup-mention-chip",
5242
5083
  initialValue: g.current,
5243
5084
  onChange: (e) => m.current(e),
@@ -5257,7 +5098,7 @@ function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeho
5257
5098
  let t = d.current;
5258
5099
  t && t.getValue() !== e && t.setValue(e);
5259
5100
  }, [e]);
5260
- let _ = js({
5101
+ let _ = Os({
5261
5102
  members: r ?? [],
5262
5103
  trigger: f,
5263
5104
  onSelect: (e) => d.current?.insertMention(e),
@@ -5270,7 +5111,7 @@ function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeho
5270
5111
  "aria-label": i,
5271
5112
  "aria-disabled": o || void 0,
5272
5113
  class: Z("markup-mention-input", c),
5273
- contentEditable: o ? "false" : ks(),
5114
+ contentEditable: o ? "false" : Es(),
5274
5115
  "data-placeholder": a,
5275
5116
  tabIndex: o ? -1 : 0,
5276
5117
  onKeyDown: (e) => {
@@ -5279,7 +5120,7 @@ function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeho
5279
5120
  onBlur: () => {
5280
5121
  setTimeout(() => d.current?.clearTrigger(), 120);
5281
5122
  }
5282
- }), _.isOpen ? /* @__PURE__ */ Q(Ms, {
5123
+ }), _.isOpen ? /* @__PURE__ */ Q(ks, {
5283
5124
  items: _.items,
5284
5125
  highlight: _.highlight,
5285
5126
  setHighlight: _.setHighlight,
@@ -5288,13 +5129,13 @@ function Ns({ value: e, onChange: t, onKeyDown: n, members: r, label: i, placeho
5288
5129
  }
5289
5130
  //#endregion
5290
5131
  //#region src/runtime/ui/composer.tsx
5291
- var Ps = 4e3;
5292
- function Fs({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "Post", initialFocus: r = !0, isPending: i, error: a, onSubmit: o, members: s }) {
5132
+ var js = 4e3;
5133
+ function Ms({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "Post", initialFocus: r = !0, isPending: i, error: a, onSubmit: o, members: s }) {
5293
5134
  let [c, l] = L(""), u = z(null), d = z(!1);
5294
5135
  R(() => {
5295
5136
  d.current && !i && !a && (l(""), u.current?.focus()), d.current = i;
5296
5137
  }, [i, a]);
5297
- let f = Ps - c.length, p = f < 0;
5138
+ let f = js - c.length, p = f < 0;
5298
5139
  function m(e) {
5299
5140
  e?.preventDefault();
5300
5141
  let t = c.trim();
@@ -5319,7 +5160,7 @@ function Fs({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "
5319
5160
  class: Z("markup-composer", g && "is-filled"),
5320
5161
  onSubmit: m,
5321
5162
  children: [
5322
- /* @__PURE__ */ Q(Ns, {
5163
+ /* @__PURE__ */ Q(As, {
5323
5164
  class: "markup-composer-input",
5324
5165
  label: e,
5325
5166
  placeholder: t,
@@ -5373,10 +5214,10 @@ function Fs({ label: e, placeholder: t = "Leave feedback…", submitLabel: n = "
5373
5214
  }
5374
5215
  //#endregion
5375
5216
  //#region src/runtime/ui/new-thread-popover.tsx
5376
- function Is({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolving: i, isSigningIn: a, isPending: o, error: s, screenshot: c, isScreenshotCapturing: l, screenshotFailed: u, screenshotRedactedCount: d, screenshotRedactedSelectors: f, members: p = [], onAuthor: m, onSignIn: h, onSubmit: g, onClose: _ }) {
5217
+ function Ns({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolving: i, isSigningIn: a, isPending: o, error: s, screenshot: c, isScreenshotCapturing: l, screenshotFailed: u, screenshotRedactedCount: d, screenshotRedactedSelectors: f, members: p = [], onAuthor: m, onSignIn: h, onSubmit: g, onClose: _ }) {
5377
5218
  let v = z(null);
5378
- ss(v, !0);
5379
- let [y, b] = L(!1), [x, C] = L(!1), w = cs(c), [T, E] = L(null), { onPointerDown: D, isDragging: O } = is({
5219
+ is(v, !0);
5220
+ let [y, b] = L(!1), [x, C] = L(!1), w = as(c), [T, E] = L(null), { onPointerDown: D, isDragging: O } = ts({
5380
5221
  targetRef: v,
5381
5222
  shouldStart: (e) => !e.target?.closest("button, a, input, textarea, select"),
5382
5223
  onMove: E
@@ -5392,7 +5233,7 @@ function Is({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
5392
5233
  }
5393
5234
  return e.addEventListener("toggle", t), () => e.removeEventListener("toggle", t);
5394
5235
  }, [_]);
5395
- let ee = Ls(e - window.scrollX + 16, 12, window.innerWidth - 320 - 12), te = Ls(t - window.scrollY - 16, 12, window.innerHeight - 220), k = typeof window < "u" ? window.location.href : "", A = c != null, j = l || A || u;
5236
+ let ee = Ps(e - window.scrollX + 16, 12, window.innerWidth - 320 - 12), te = Ps(t - window.scrollY - 16, 12, window.innerHeight - 220), k = typeof window < "u" ? window.location.href : "", A = c != null, j = l || A || u;
5396
5237
  return /* @__PURE__ */ Q("div", {
5397
5238
  ref: v,
5398
5239
  class: Z("markup-popover", T && "is-floating", O && "is-dragging"),
@@ -5417,7 +5258,7 @@ function Is({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
5417
5258
  onClick: _,
5418
5259
  children: /* @__PURE__ */ Q(jo, { size: 16 })
5419
5260
  })]
5420
- }), n == null ? /* @__PURE__ */ Q(ls, {
5261
+ }), n == null ? /* @__PURE__ */ Q(os, {
5421
5262
  isPending: o,
5422
5263
  isConnecting: i,
5423
5264
  isSigningIn: a,
@@ -5441,7 +5282,7 @@ function Is({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
5441
5282
  }) : null
5442
5283
  ]
5443
5284
  }),
5444
- /* @__PURE__ */ Q(Fs, {
5285
+ /* @__PURE__ */ Q(Ms, {
5445
5286
  label: "Feedback",
5446
5287
  placeholder: "What's wrong, missing, or worth noting?",
5447
5288
  submitLabel: "Post markup",
@@ -5524,12 +5365,133 @@ function Is({ pageX: e, pageY: t, authorName: n, isVerified: r, isIdentityResolv
5524
5365
  })]
5525
5366
  });
5526
5367
  }
5527
- function Ls(e, t, n) {
5368
+ function Ps(e, t, n) {
5528
5369
  return Math.max(t, Math.min(n, e));
5529
5370
  }
5530
5371
  //#endregion
5372
+ //#region src/runtime/ui/notifications-panel.tsx
5373
+ function Fs({ items: e, isLoading: t, error: n, onBack: r, onItemClick: i, onMarkAllRead: a, isMarkingAll: o }) {
5374
+ let s = e.some((e) => e.readAt == null);
5375
+ return /* @__PURE__ */ Q("div", {
5376
+ class: "markup-notifications-panel",
5377
+ role: "dialog",
5378
+ "aria-label": "Notifications",
5379
+ children: [/* @__PURE__ */ Q("header", {
5380
+ class: "markup-notifications-panel-header",
5381
+ children: [
5382
+ /* @__PURE__ */ Q("button", {
5383
+ type: "button",
5384
+ class: "markup-icon-btn",
5385
+ title: "Back to menu",
5386
+ "aria-label": "Back to menu",
5387
+ onClick: r,
5388
+ children: /* @__PURE__ */ Q(Mo, { size: 16 })
5389
+ }),
5390
+ /* @__PURE__ */ Q("span", {
5391
+ class: "markup-eyebrow",
5392
+ children: "notifications"
5393
+ }),
5394
+ /* @__PURE__ */ Q("div", {
5395
+ class: "markup-notifications-panel-actions",
5396
+ children: s ? /* @__PURE__ */ Q("button", {
5397
+ type: "button",
5398
+ class: "markup-notifications-panel-mark-all",
5399
+ disabled: o,
5400
+ onClick: a,
5401
+ children: o ? "Marking…" : "Mark all read"
5402
+ }) : null
5403
+ })
5404
+ ]
5405
+ }), /* @__PURE__ */ Q("div", {
5406
+ class: "markup-notifications-panel-body",
5407
+ children: n ? /* @__PURE__ */ Q("p", {
5408
+ class: "markup-notifications-panel-error",
5409
+ children: n
5410
+ }) : t ? /* @__PURE__ */ Q("p", {
5411
+ class: "markup-notifications-panel-empty",
5412
+ children: "Loading…"
5413
+ }) : e.length === 0 ? /* @__PURE__ */ Q("div", {
5414
+ class: "markup-notifications-panel-empty",
5415
+ children: [/* @__PURE__ */ Q("p", {
5416
+ class: "markup-notifications-panel-empty-title",
5417
+ children: "You're all caught up."
5418
+ }), /* @__PURE__ */ Q("p", {
5419
+ class: "markup-notifications-panel-empty-sub",
5420
+ children: "New @mentions on this site land here."
5421
+ })]
5422
+ }) : /* @__PURE__ */ Q("ul", {
5423
+ class: "markup-notifications-panel-list",
5424
+ children: e.map((e) => /* @__PURE__ */ Q("li", { children: /* @__PURE__ */ Q("button", {
5425
+ type: "button",
5426
+ class: Z("markup-notifications-panel-row", e.readAt == null && "is-unread"),
5427
+ onClick: () => i(e),
5428
+ children: [
5429
+ /* @__PURE__ */ Q("div", {
5430
+ class: "markup-notifications-panel-meta",
5431
+ children: [
5432
+ e.readAt == null ? /* @__PURE__ */ Q("span", {
5433
+ "aria-hidden": "true",
5434
+ class: "markup-notifications-panel-dot"
5435
+ }) : null,
5436
+ /* @__PURE__ */ Q("span", {
5437
+ class: "markup-notifications-panel-actor",
5438
+ children: e.actorName
5439
+ }),
5440
+ e.actorVia === "mcp" ? /* @__PURE__ */ Q("span", {
5441
+ class: "markup-comment-badge is-agent",
5442
+ role: "img",
5443
+ "aria-label": "Written by an AI agent",
5444
+ title: "Written by an AI agent on this person's behalf",
5445
+ children: /* @__PURE__ */ Q(Zo, { size: 11 })
5446
+ }) : null,
5447
+ /* @__PURE__ */ Q("span", {
5448
+ class: "markup-notifications-panel-sep",
5449
+ children: "·"
5450
+ }),
5451
+ /* @__PURE__ */ Q("span", {
5452
+ class: "markup-notifications-panel-time",
5453
+ children: Is(e.createdAt)
5454
+ })
5455
+ ]
5456
+ }),
5457
+ /* @__PURE__ */ Q("p", {
5458
+ class: "markup-notifications-panel-thread",
5459
+ children: [
5460
+ "mentioned you in",
5461
+ " ",
5462
+ /* @__PURE__ */ Q("span", {
5463
+ class: "markup-notifications-panel-thread-title",
5464
+ children: e.threadTitle
5465
+ })
5466
+ ]
5467
+ }),
5468
+ e.commentExcerpt ? /* @__PURE__ */ Q("p", {
5469
+ class: "markup-notifications-panel-excerpt",
5470
+ children: [
5471
+ "“",
5472
+ e.commentExcerpt,
5473
+ "”"
5474
+ ]
5475
+ }) : null
5476
+ ]
5477
+ }) }, e._id))
5478
+ })
5479
+ })]
5480
+ });
5481
+ }
5482
+ function Is(e) {
5483
+ let t = Date.now() - e, n = Math.floor(t / 1e3);
5484
+ if (n < 60) return "just now";
5485
+ let r = Math.floor(n / 60);
5486
+ if (r < 60) return `${r}m ago`;
5487
+ let i = Math.floor(r / 60);
5488
+ if (i < 24) return `${i}h ago`;
5489
+ let a = Math.floor(i / 24);
5490
+ return a < 30 ? `${a}d ago` : new Date(e).toLocaleDateString();
5491
+ }
5492
+ //#endregion
5531
5493
  //#region src/runtime/use-theme.ts
5532
- function Rs() {
5494
+ function Ls() {
5533
5495
  let [, e] = L(0);
5534
5496
  return R(() => Me(() => e((e) => e + 1)), []), {
5535
5497
  mode: ke(),
@@ -5539,8 +5501,8 @@ function Rs() {
5539
5501
  }
5540
5502
  //#endregion
5541
5503
  //#region src/runtime/ui/overflow-menu.tsx
5542
- function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked: r = !1, onToggleAutoCapture: i, onOpenPrivacy: a, onOpenShortcuts: o, onHideForSession: s, version: c, dashboardUrl: l }) {
5543
- let [u, d] = L(!1), f = z(null), p = Rs();
5504
+ function Rs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked: r = !1, onToggleAutoCapture: i, onOpenPrivacy: a, onOpenShortcuts: o, onHideForSession: s, version: c, dashboardUrl: l }) {
5505
+ let [u, d] = L(!1), f = z(null), p = Ls();
5544
5506
  R(() => {
5545
5507
  if (!u) return;
5546
5508
  function e(e) {
@@ -5640,7 +5602,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
5640
5602
  title: "Bottom left",
5641
5603
  class: Z(e === "bottom-left" && "is-on"),
5642
5604
  onClick: () => t("bottom-left"),
5643
- children: /* @__PURE__ */ Q(Bs, { side: "left" })
5605
+ children: /* @__PURE__ */ Q(zs, { side: "left" })
5644
5606
  }),
5645
5607
  /* @__PURE__ */ Q("button", {
5646
5608
  type: "button",
@@ -5650,7 +5612,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
5650
5612
  title: "Bottom center",
5651
5613
  class: Z(e === "bottom-center" && "is-on"),
5652
5614
  onClick: () => t("bottom-center"),
5653
- children: /* @__PURE__ */ Q(Bs, { side: "center" })
5615
+ children: /* @__PURE__ */ Q(zs, { side: "center" })
5654
5616
  }),
5655
5617
  /* @__PURE__ */ Q("button", {
5656
5618
  type: "button",
@@ -5660,7 +5622,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
5660
5622
  title: "Bottom right",
5661
5623
  class: Z(e === "bottom-right" && "is-on"),
5662
5624
  onClick: () => t("bottom-right"),
5663
- children: /* @__PURE__ */ Q(Bs, { side: "right" })
5625
+ children: /* @__PURE__ */ Q(zs, { side: "right" })
5664
5626
  })
5665
5627
  ]
5666
5628
  })]
@@ -5682,7 +5644,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
5682
5644
  children: [
5683
5645
  /* @__PURE__ */ Q("span", {
5684
5646
  class: "ic",
5685
- children: /* @__PURE__ */ Q(Vs, {})
5647
+ children: /* @__PURE__ */ Q(Bs, {})
5686
5648
  }),
5687
5649
  /* @__PURE__ */ Q("span", {
5688
5650
  class: "lbl",
@@ -5701,9 +5663,8 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
5701
5663
  type: "button",
5702
5664
  role: "menuitem",
5703
5665
  class: "markup-menu-row",
5704
- disabled: !a,
5705
5666
  onClick: () => {
5706
- d(!1), a?.();
5667
+ d(!1), a();
5707
5668
  },
5708
5669
  children: [/* @__PURE__ */ Q("span", {
5709
5670
  class: "ic",
@@ -5717,24 +5678,16 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
5717
5678
  type: "button",
5718
5679
  role: "menuitem",
5719
5680
  class: "markup-menu-row",
5720
- disabled: !o,
5721
5681
  onClick: () => {
5722
- d(!1), o?.();
5682
+ d(!1), o();
5723
5683
  },
5724
- children: [
5725
- /* @__PURE__ */ Q("span", {
5726
- class: "ic",
5727
- children: /* @__PURE__ */ Q(qo, { size: 16 })
5728
- }),
5729
- /* @__PURE__ */ Q("span", {
5730
- class: "lbl",
5731
- children: "Keyboard shortcuts"
5732
- }),
5733
- /* @__PURE__ */ Q("span", {
5734
- class: "right",
5735
- children: "?"
5736
- })
5737
- ]
5684
+ children: [/* @__PURE__ */ Q("span", {
5685
+ class: "ic",
5686
+ children: /* @__PURE__ */ Q(qo, { size: 16 })
5687
+ }), /* @__PURE__ */ Q("span", {
5688
+ class: "lbl",
5689
+ children: "Keyboard shortcuts"
5690
+ })]
5738
5691
  }),
5739
5692
  /* @__PURE__ */ Q("div", { class: "markup-menu-divider" }),
5740
5693
  /* @__PURE__ */ Q("button", {
@@ -5747,7 +5700,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
5747
5700
  children: [
5748
5701
  /* @__PURE__ */ Q("span", {
5749
5702
  class: "ic",
5750
- children: /* @__PURE__ */ Q(Hs, {})
5703
+ children: /* @__PURE__ */ Q(Vs, {})
5751
5704
  }),
5752
5705
  /* @__PURE__ */ Q("span", {
5753
5706
  class: "lbl",
@@ -5777,7 +5730,7 @@ function zs({ position: e, onSetPosition: t, autoCapture: n, autoCaptureLocked:
5777
5730
  }) : null]
5778
5731
  });
5779
5732
  }
5780
- function Bs({ side: e }) {
5733
+ function zs({ side: e }) {
5781
5734
  return /* @__PURE__ */ Q("svg", {
5782
5735
  width: 14,
5783
5736
  height: 14,
@@ -5803,7 +5756,7 @@ function Bs({ side: e }) {
5803
5756
  })]
5804
5757
  });
5805
5758
  }
5806
- function Vs() {
5759
+ function Bs() {
5807
5760
  return /* @__PURE__ */ Q("svg", {
5808
5761
  width: 16,
5809
5762
  height: 16,
@@ -5821,7 +5774,7 @@ function Vs() {
5821
5774
  })]
5822
5775
  });
5823
5776
  }
5824
- function Hs() {
5777
+ function Vs() {
5825
5778
  return /* @__PURE__ */ Q("svg", {
5826
5779
  width: 16,
5827
5780
  height: 16,
@@ -5841,6 +5794,36 @@ function Hs() {
5841
5794
  });
5842
5795
  }
5843
5796
  //#endregion
5797
+ //#region src/runtime/ui/panel-popover.tsx
5798
+ function Hs({ kind: e, label: t, position: n, ignoreToolbarKind: r, onClose: i, children: a }) {
5799
+ let o = z(null);
5800
+ return R(() => {
5801
+ function e(e) {
5802
+ let t = o.current;
5803
+ if (!t) return;
5804
+ let n = e.composedPath();
5805
+ n.includes(t) || r != null && n.some((e) => e?.dataset?.kind === r) || i();
5806
+ }
5807
+ function t(e) {
5808
+ e.key === "Escape" && i();
5809
+ }
5810
+ return document.addEventListener("click", e, !0), document.addEventListener("keydown", t), () => {
5811
+ document.removeEventListener("click", e, !0), document.removeEventListener("keydown", t);
5812
+ };
5813
+ }, [i, r]), /* @__PURE__ */ Q("div", {
5814
+ ref: o,
5815
+ class: Z("markup-panel-pop", n === "bottom-left" ? "markup-panel-pop-left" : n === "bottom-center" ? "markup-panel-pop-center" : "markup-panel-pop-right"),
5816
+ "data-panel": e,
5817
+ role: "dialog",
5818
+ "aria-label": t,
5819
+ children: /* @__PURE__ */ Q("div", {
5820
+ class: "markup-pop",
5821
+ "data-pop": e,
5822
+ children: a
5823
+ })
5824
+ });
5825
+ }
5826
+ //#endregion
5844
5827
  //#region src/runtime/ui/pin.tsx
5845
5828
  function Us({ pageX: e, pageY: t, count: n, isActive: r, isUnresolved: i, onClick: a }) {
5846
5829
  let o = t - window.scrollY, s = e - window.scrollX;
@@ -5880,7 +5863,7 @@ function Ws({ pageX: e, pageY: t }) {
5880
5863
  //#endregion
5881
5864
  //#region src/runtime/ui/placement-overlay.tsx
5882
5865
  function Gs({ onPlace: e, onCancel: t }) {
5883
- R(() => {
5866
+ qe(() => {
5884
5867
  function e(e) {
5885
5868
  e.key === "Escape" && t();
5886
5869
  }
@@ -5904,15 +5887,255 @@ function Gs({ onPlace: e, onCancel: t }) {
5904
5887
  });
5905
5888
  }
5906
5889
  //#endregion
5890
+ //#region src/runtime/ui/privacy-panel.tsx
5891
+ function Ks({ identity: e, apiUrl: t, autoCapture: n, autoCaptureLocked: r, isForgettingMe: i, forgetMeError: a, onForgetMe: o, onClose: s }) {
5892
+ let [c, l] = L(!1), u = Ni(e), d = e.kind === "verified", f = d ? e.identity.email : void 0, p = e.kind === "anon";
5893
+ return /* @__PURE__ */ Q("div", {
5894
+ class: "markup-panel",
5895
+ children: [/* @__PURE__ */ Q("header", {
5896
+ class: "markup-panel-header",
5897
+ children: [/* @__PURE__ */ Q("span", {
5898
+ class: "markup-eyebrow",
5899
+ children: "privacy & data"
5900
+ }), /* @__PURE__ */ Q("button", {
5901
+ type: "button",
5902
+ class: "markup-icon-btn",
5903
+ title: "Close",
5904
+ "aria-label": "Close privacy and data",
5905
+ onClick: s,
5906
+ children: /* @__PURE__ */ Q(jo, { size: 14 })
5907
+ })]
5908
+ }), /* @__PURE__ */ Q("div", {
5909
+ class: "markup-panel-body",
5910
+ children: [
5911
+ /* @__PURE__ */ Q("section", {
5912
+ class: "markup-panel-section",
5913
+ children: [/* @__PURE__ */ Q("h4", {
5914
+ class: "markup-panel-section-title",
5915
+ children: "who you are here"
5916
+ }), d ? /* @__PURE__ */ Q("p", {
5917
+ class: "markup-panel-text",
5918
+ children: [
5919
+ "Signed in as ",
5920
+ /* @__PURE__ */ Q("strong", { children: u ?? "you" }),
5921
+ f ? /* @__PURE__ */ Q("span", {
5922
+ class: "markup-panel-mono",
5923
+ children: [" ", f]
5924
+ }) : null,
5925
+ ". Comments you post carry that name, and your email is visible to this project's team."
5926
+ ]
5927
+ }) : u ? /* @__PURE__ */ Q("p", {
5928
+ class: "markup-panel-text",
5929
+ children: [
5930
+ "You post as ",
5931
+ /* @__PURE__ */ Q("strong", { children: u }),
5932
+ " — an anonymous commenter with a random id that only means anything on this site."
5933
+ ]
5934
+ }) : /* @__PURE__ */ Q("p", {
5935
+ class: "markup-panel-text",
5936
+ children: "You're anonymous. Markup holds a random id scoped to this site and asks for a name the first time you post."
5937
+ })]
5938
+ }),
5939
+ /* @__PURE__ */ Q("section", {
5940
+ class: "markup-panel-section",
5941
+ children: [/* @__PURE__ */ Q("h4", {
5942
+ class: "markup-panel-section-title",
5943
+ children: "what posting sends"
5944
+ }), /* @__PURE__ */ Q("ul", {
5945
+ class: "markup-panel-list",
5946
+ children: [
5947
+ /* @__PURE__ */ Q("li", { children: "What you wrote, under the name (and email, if you gave one) you post with" }),
5948
+ /* @__PURE__ */ Q("li", { children: "This page's URL, your window size, and your browser's user-agent" }),
5949
+ /* @__PURE__ */ Q("li", { children: "A screenshot — only the ones you attach yourself" })
5950
+ ]
5951
+ })]
5952
+ }),
5953
+ /* @__PURE__ */ Q("section", {
5954
+ class: "markup-panel-section",
5955
+ children: [
5956
+ /* @__PURE__ */ Q("h4", {
5957
+ class: "markup-panel-section-title",
5958
+ children: "kept in this browser"
5959
+ }),
5960
+ /* @__PURE__ */ Q("ul", {
5961
+ class: "markup-panel-list",
5962
+ children: [/* @__PURE__ */ Q("li", { children: d ? "Your sign-in token — in this site's storage, or a cookie only this site can send" : "Your commenter id and the token that proves it, in this site's storage" }), /* @__PURE__ */ Q("li", { children: "Your appearance and toolbar-position picks" })]
5963
+ }),
5964
+ /* @__PURE__ */ Q("p", {
5965
+ class: "markup-panel-note",
5966
+ children: "All of it is scoped to this site, so the same browser on another site is a different commenter to us. Nothing here follows you between sites."
5967
+ })
5968
+ ]
5969
+ }),
5970
+ /* @__PURE__ */ Q("section", {
5971
+ class: "markup-panel-section",
5972
+ children: [/* @__PURE__ */ Q("h4", {
5973
+ class: "markup-panel-section-title",
5974
+ children: "screenshots"
5975
+ }), /* @__PURE__ */ Q("p", {
5976
+ class: "markup-panel-text",
5977
+ children: r ? "This site turned captures off, so none are taken." : n ? "Captured when you drop a pin. Passwords, card numbers and one-time codes are blacked out before the image exists, and the composer lists what it covered. Nothing uploads unless you post with it attached." : "Auto-capture is off, so no screenshots are taken. You can turn it back on from the menu."
5978
+ })]
5979
+ }),
5980
+ /* @__PURE__ */ Q("section", {
5981
+ class: "markup-panel-section",
5982
+ children: [/* @__PURE__ */ Q("h4", {
5983
+ class: "markup-panel-section-title",
5984
+ children: "where it goes"
5985
+ }), /* @__PURE__ */ Q("p", {
5986
+ class: "markup-panel-text",
5987
+ children: [
5988
+ "Only ",
5989
+ /* @__PURE__ */ Q("span", {
5990
+ class: "markup-panel-mono",
5991
+ children: qs(t)
5992
+ }),
5993
+ ". No analytics, no ad tech, no third-party requests from the widget. If the widget itself crashes it posts the error, this page's URL and your user-agent to that same host — never your identity or what you were writing."
5994
+ ]
5995
+ })]
5996
+ }),
5997
+ p ? /* @__PURE__ */ Q("section", {
5998
+ class: "markup-panel-section",
5999
+ children: [
6000
+ /* @__PURE__ */ Q("h4", {
6001
+ class: "markup-panel-section-title",
6002
+ children: "erase what you left"
6003
+ }),
6004
+ /* @__PURE__ */ Q("p", {
6005
+ class: "markup-panel-text",
6006
+ children: "Removes every comment and reaction this browser posted on this site, and clears the name and email held for you. Replies from other people stay."
6007
+ }),
6008
+ /* @__PURE__ */ Q("button", {
6009
+ type: "button",
6010
+ class: Z("markup-panel-action", c && "is-danger"),
6011
+ disabled: i,
6012
+ onClick: () => {
6013
+ c ? (o(), l(!1)) : l(!0);
6014
+ },
6015
+ children: i ? "Erasing…" : c ? "Confirm — erase and forget me" : "Forget me on this site…"
6016
+ }),
6017
+ a ? /* @__PURE__ */ Q("p", {
6018
+ class: "markup-panel-error",
6019
+ children: a
6020
+ }) : null
6021
+ ]
6022
+ }) : null
6023
+ ]
6024
+ })]
6025
+ });
6026
+ }
6027
+ function qs(e) {
6028
+ try {
6029
+ return new URL(e).host;
6030
+ } catch {
6031
+ return e;
6032
+ }
6033
+ }
6034
+ //#endregion
6035
+ //#region src/runtime/ui/shortcuts-panel.tsx
6036
+ function Js({ onClose: e }) {
6037
+ let { mod: t, enter: n } = Oo();
6038
+ return /* @__PURE__ */ Q("div", {
6039
+ class: "markup-panel",
6040
+ children: [/* @__PURE__ */ Q("header", {
6041
+ class: "markup-panel-header",
6042
+ children: [/* @__PURE__ */ Q("span", {
6043
+ class: "markup-eyebrow",
6044
+ children: "keyboard shortcuts"
6045
+ }), /* @__PURE__ */ Q("button", {
6046
+ type: "button",
6047
+ class: "markup-icon-btn",
6048
+ title: "Close",
6049
+ "aria-label": "Close keyboard shortcuts",
6050
+ onClick: e,
6051
+ children: /* @__PURE__ */ Q(jo, { size: 14 })
6052
+ })]
6053
+ }), /* @__PURE__ */ Q("div", {
6054
+ class: "markup-panel-body",
6055
+ children: [[{
6056
+ title: "on the page",
6057
+ items: [
6058
+ {
6059
+ chords: [["c"]],
6060
+ label: "Start a markup"
6061
+ },
6062
+ {
6063
+ chords: [[t, "."]],
6064
+ label: "Show or hide Markup"
6065
+ },
6066
+ {
6067
+ chords: [["Esc"]],
6068
+ label: "Cancel placement, or close a menu"
6069
+ }
6070
+ ]
6071
+ }, {
6072
+ title: "while writing",
6073
+ items: [
6074
+ {
6075
+ chords: [["@"]],
6076
+ label: "Mention a teammate"
6077
+ },
6078
+ {
6079
+ chords: [["↑"], ["↓"]],
6080
+ label: "Move through the member list"
6081
+ },
6082
+ {
6083
+ chords: [[n], ["Tab"]],
6084
+ label: "Pick the highlighted member"
6085
+ },
6086
+ {
6087
+ chords: [[t, n]],
6088
+ label: "Post the comment"
6089
+ },
6090
+ {
6091
+ chords: [["Esc"]],
6092
+ label: "Dismiss the member list"
6093
+ }
6094
+ ]
6095
+ }].map((e) => /* @__PURE__ */ Q("section", {
6096
+ class: "markup-panel-section",
6097
+ children: [/* @__PURE__ */ Q("h4", {
6098
+ class: "markup-panel-section-title",
6099
+ children: e.title
6100
+ }), /* @__PURE__ */ Q("ul", {
6101
+ class: "markup-shortcut-list",
6102
+ children: e.items.map((e) => /* @__PURE__ */ Q("li", {
6103
+ class: "markup-shortcut-row",
6104
+ children: [/* @__PURE__ */ Q("span", {
6105
+ class: "markup-shortcut-label",
6106
+ children: e.label
6107
+ }), /* @__PURE__ */ Q("span", {
6108
+ class: "markup-shortcut-keys",
6109
+ children: e.chords.map((e, t) => /* @__PURE__ */ Q("span", {
6110
+ class: "markup-shortcut-chord",
6111
+ children: [t > 0 ? /* @__PURE__ */ Q("span", {
6112
+ class: "markup-shortcut-or",
6113
+ children: "or"
6114
+ }) : null, e.map((e) => /* @__PURE__ */ Q("kbd", {
6115
+ class: "markup-kbd is-inline",
6116
+ children: e
6117
+ }, e))]
6118
+ }, e.join("+")))
6119
+ })]
6120
+ }, e.label))
6121
+ })]
6122
+ }, e.title)), /* @__PURE__ */ Q("p", {
6123
+ class: "markup-panel-note",
6124
+ children: [t, "-click the comment button to hide Markup without opening the menu. Drag a popover's header to move it off whatever it covers."]
6125
+ })]
6126
+ })]
6127
+ });
6128
+ }
6129
+ //#endregion
5907
6130
  //#region src/runtime/ui/thread-popover.tsx
5908
- var Ks = [
6131
+ var Ys = [
5909
6132
  "👍",
5910
6133
  "❤️",
5911
6134
  "🎉",
5912
6135
  "😮",
5913
6136
  "😄",
5914
6137
  "❓"
5915
- ], qs = Ar({
6138
+ ], Xs = Ar({
5916
6139
  none: {
5917
6140
  "toggle-thread-menu": () => ({
5918
6141
  kind: "thread-menu",
@@ -5968,13 +6191,13 @@ var Ks = [
5968
6191
  dismiss: () => ({ kind: "none" })
5969
6192
  }
5970
6193
  });
5971
- function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIdentityResolving: i, isSigningIn: a, canDelete: o, isPending: s, error: c, isHidden: l = !1, members: u = [], onAuthor: d, onSignIn: f, onClose: p, onReply: m, onEditComment: h, onDeleteComment: g, onToggleReaction: _, onResolve: v, onDelete: y }) {
5972
- let b = z(null), x = z(null), S = z(null), C = z(null), [w, T] = jr(qs, { kind: "none" }), [E, D] = L(null), { onPointerDown: O, isDragging: ee } = is({
6194
+ function Zs({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIdentityResolving: i, isSigningIn: a, canDelete: o, isPending: s, error: c, isHidden: l = !1, members: u = [], onAuthor: d, onSignIn: f, onClose: p, onReply: m, onEditComment: h, onDeleteComment: g, onToggleReaction: _, onResolve: v, onDelete: y }) {
6195
+ let b = z(null), x = z(null), S = z(null), C = z(null), [w, T] = jr(Xs, { kind: "none" }), [E, D] = L(null), { onPointerDown: O, isDragging: ee } = ts({
5973
6196
  targetRef: b,
5974
6197
  shouldStart: (e) => !e.target?.closest("button, a, input, textarea, select"),
5975
6198
  onMove: D
5976
6199
  });
5977
- ss(b, !0);
6200
+ is(b, !0);
5978
6201
  let te = e.resolvedAt != null, k = B(() => e.comments.filter((e) => !e.deleted), [e.comments]);
5979
6202
  R(() => {
5980
6203
  if (w.kind === "none" || w.kind === "editing") return;
@@ -6020,8 +6243,8 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
6020
6243
  anchorSelector: e.anchorSelector
6021
6244
  });
6022
6245
  return {
6023
- left: Qs(t.pageX - window.scrollX + 16, 12, window.innerWidth - 320 - 12),
6024
- top: Qs(t.pageY - window.scrollY - 16, 12, window.innerHeight - 200)
6246
+ left: tc(t.pageX - window.scrollX + 16, 12, window.innerWidth - 320 - 12),
6247
+ top: tc(t.pageY - window.scrollY - 16, 12, window.innerHeight - 200)
6025
6248
  };
6026
6249
  }, [
6027
6250
  e.anchorX,
@@ -6109,10 +6332,10 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
6109
6332
  return /* @__PURE__ */ Q("li", {
6110
6333
  class: "markup-comment",
6111
6334
  children: [
6112
- /* @__PURE__ */ Q($s, {
6335
+ /* @__PURE__ */ Q(nc, {
6113
6336
  name: t.authorName,
6114
6337
  image: t.authorImage,
6115
- tone: tc(t.authorClientId ?? t.authorName)
6338
+ tone: ic(t.authorClientId ?? t.authorName)
6116
6339
  }),
6117
6340
  /* @__PURE__ */ Q("div", {
6118
6341
  class: "markup-comment-meta",
@@ -6131,18 +6354,18 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
6131
6354
  /* @__PURE__ */ Q("time", {
6132
6355
  class: "markup-comment-time",
6133
6356
  datetime: new Date(t.createdAt).toISOString(),
6134
- title: rc(t.createdAt),
6135
- children: nc(t.createdAt)
6357
+ title: oc(t.createdAt),
6358
+ children: ac(t.createdAt)
6136
6359
  }),
6137
6360
  t.editedAt == null ? null : /* @__PURE__ */ Q("time", {
6138
6361
  class: "markup-comment-edited",
6139
6362
  datetime: new Date(t.editedAt).toISOString(),
6140
- title: rc(t.editedAt),
6363
+ title: oc(t.editedAt),
6141
6364
  children: "edited"
6142
6365
  }),
6143
6366
  /* @__PURE__ */ Q("div", {
6144
6367
  class: "markup-thread-actions",
6145
- children: [!te && !l ? /* @__PURE__ */ Q(Ys, {
6368
+ children: [!te && !l ? /* @__PURE__ */ Q(Qs, {
6146
6369
  comment: t,
6147
6370
  pickerOpen: m,
6148
6371
  pickerDirection: v,
@@ -6250,7 +6473,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
6250
6473
  await h(t._id, n), T({ type: "dismiss" });
6251
6474
  } catch {}
6252
6475
  },
6253
- children: [/* @__PURE__ */ Q(Ns, {
6476
+ children: [/* @__PURE__ */ Q(As, {
6254
6477
  class: "markup-comment-edit-input",
6255
6478
  label: "Edit comment",
6256
6479
  value: w.draft,
@@ -6276,7 +6499,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
6276
6499
  children: "Save"
6277
6500
  })]
6278
6501
  })]
6279
- }) : /* @__PURE__ */ Q(As, {
6502
+ }) : /* @__PURE__ */ Q(Ds, {
6280
6503
  body: t.body,
6281
6504
  mentions: t.mentions
6282
6505
  }),
@@ -6289,7 +6512,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
6289
6512
  alt: "Screenshot"
6290
6513
  })
6291
6514
  }) : null,
6292
- !l && t.reactions.length > 0 ? /* @__PURE__ */ Q(Xs, {
6515
+ !l && t.reactions.length > 0 ? /* @__PURE__ */ Q($s, {
6293
6516
  comment: t,
6294
6517
  isResolved: te,
6295
6518
  onToggle: (e) => _(t._id, e)
@@ -6317,7 +6540,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
6317
6540
  onClick: (e) => e.stopPropagation()
6318
6541
  })]
6319
6542
  }) : null,
6320
- t == null ? /* @__PURE__ */ Q(ls, {
6543
+ t == null ? /* @__PURE__ */ Q(os, {
6321
6544
  isPending: s,
6322
6545
  isConnecting: i,
6323
6546
  isSigningIn: a,
@@ -6339,7 +6562,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
6339
6562
  children: "team"
6340
6563
  }) : null
6341
6564
  ]
6342
- }), /* @__PURE__ */ Q(Fs, {
6565
+ }), /* @__PURE__ */ Q(Ms, {
6343
6566
  label: "Reply",
6344
6567
  placeholder: "Write a reply…",
6345
6568
  submitLabel: "Reply",
@@ -6353,7 +6576,7 @@ function Js({ thread: e, authorName: t, currentClientId: n, isVerified: r, isIde
6353
6576
  ]
6354
6577
  });
6355
6578
  }
6356
- function Ys({ comment: e, pickerOpen: t, pickerDirection: n, pickerSide: r, pickerRef: i, onPickerClick: a, onPickerSelect: o }) {
6579
+ function Qs({ comment: e, pickerOpen: t, pickerDirection: n, pickerSide: r, pickerRef: i, onPickerClick: a, onPickerSelect: o }) {
6357
6580
  return /* @__PURE__ */ Q("div", {
6358
6581
  class: Z("markup-reaction-picker-wrap", t && "is-open", t && n === "up" && "is-up", r && "is-side"),
6359
6582
  ref: i,
@@ -6367,7 +6590,7 @@ function Ys({ comment: e, pickerOpen: t, pickerDirection: n, pickerSide: r, pick
6367
6590
  }), t ? /* @__PURE__ */ Q("div", {
6368
6591
  class: "markup-reaction-picker",
6369
6592
  role: "menu",
6370
- children: Ks.map((t) => /* @__PURE__ */ Q("button", {
6593
+ children: Ys.map((t) => /* @__PURE__ */ Q("button", {
6371
6594
  type: "button",
6372
6595
  role: "menuitem",
6373
6596
  class: Z("markup-reaction-picker-item", (e.reactions.find((e) => e.emoji === t)?.mine ?? !1) && "is-mine"),
@@ -6377,11 +6600,11 @@ function Ys({ comment: e, pickerOpen: t, pickerDirection: n, pickerSide: r, pick
6377
6600
  }) : null]
6378
6601
  });
6379
6602
  }
6380
- function Xs({ comment: e, isResolved: t, onToggle: n }) {
6603
+ function $s({ comment: e, isResolved: t, onToggle: n }) {
6381
6604
  return /* @__PURE__ */ Q("div", {
6382
6605
  class: "markup-reactions",
6383
6606
  children: e.reactions.map((e) => {
6384
- let r = Zs(e.reactors, e.mine, e.count, e.emoji);
6607
+ let r = ec(e.reactors, e.mine, e.count, e.emoji);
6385
6608
  return /* @__PURE__ */ Q("button", {
6386
6609
  type: "button",
6387
6610
  class: Z("markup-reaction-chip", e.mine && "is-mine"),
@@ -6402,14 +6625,14 @@ function Xs({ comment: e, isResolved: t, onToggle: n }) {
6402
6625
  })
6403
6626
  });
6404
6627
  }
6405
- function Zs(e, t, n, r) {
6628
+ function ec(e, t, n, r) {
6406
6629
  let i = e.slice(), a = i.length + +!!t, o = Math.max(0, n - a);
6407
6630
  return o > 0 && i.push(`${o} other${o === 1 ? "" : "s"}`), t && i.push("you"), i.length === 0 ? `${n} reacted with ${r}` : `${i.length === 1 ? i[0] : `${i.slice(0, -1).join(", ")} and ${i[i.length - 1]}`} reacted with ${r}`;
6408
6631
  }
6409
- function Qs(e, t, n) {
6632
+ function tc(e, t, n) {
6410
6633
  return Math.max(t, Math.min(n, e));
6411
6634
  }
6412
- function $s({ name: e, image: t, tone: n }) {
6635
+ function nc({ name: e, image: t, tone: n }) {
6413
6636
  let [r, i] = L(null);
6414
6637
  return /* @__PURE__ */ Q("span", {
6415
6638
  class: "markup-comment-avatar",
@@ -6425,11 +6648,11 @@ function $s({ name: e, image: t, tone: n }) {
6425
6648
  onError: () => i(t)
6426
6649
  }) : /* @__PURE__ */ Q("span", {
6427
6650
  class: "markup-avatar-initials",
6428
- children: ec(e)
6651
+ children: rc(e)
6429
6652
  })
6430
6653
  });
6431
6654
  }
6432
- function ec(e) {
6655
+ function rc(e) {
6433
6656
  let t = e.trim();
6434
6657
  if (!t) return "??";
6435
6658
  let n = t.split(/\s+/).filter(Boolean), r = n[0] ?? "";
@@ -6437,12 +6660,12 @@ function ec(e) {
6437
6660
  let i = n[n.length - 1] ?? "";
6438
6661
  return ((r[0] ?? "") + (i[0] ?? "")).toUpperCase();
6439
6662
  }
6440
- function tc(e) {
6663
+ function ic(e) {
6441
6664
  let t = 0;
6442
6665
  for (let n = 0; n < e.length; n++) t = t * 31 + e.charCodeAt(n) | 0;
6443
6666
  return Math.abs(t) % 5 + 1;
6444
6667
  }
6445
- function nc(e) {
6668
+ function ac(e) {
6446
6669
  let t = Date.now() - e, n = Math.floor(t / 1e3);
6447
6670
  if (n < 60) return "just now";
6448
6671
  let r = Math.floor(n / 60);
@@ -6459,7 +6682,7 @@ function nc(e) {
6459
6682
  year: "numeric"
6460
6683
  });
6461
6684
  }
6462
- function rc(e) {
6685
+ function oc(e) {
6463
6686
  return new Date(e).toLocaleDateString([], {
6464
6687
  month: "long",
6465
6688
  day: "numeric",
@@ -6470,7 +6693,7 @@ function rc(e) {
6470
6693
  }
6471
6694
  //#endregion
6472
6695
  //#region src/runtime/ui/toolbar.tsx
6473
- function ic({ isActive: e, onToggle: t, onHide: n, position: r = "bottom-right", unreadCount: i = 0, showInbox: a = !1, onOpenInbox: o, inboxOpen: s = !1, pinsVisible: c = !0, onTogglePins: l, identityButton: u, overflowButton: d }) {
6696
+ function sc({ isActive: e, onToggle: t, onHide: n, position: r = "bottom-right", unreadCount: i = 0, showInbox: a = !1, onOpenInbox: o, inboxOpen: s = !1, pinsVisible: c = !0, onTogglePins: l, identityButton: u, overflowButton: d }) {
6474
6697
  let f = r === "bottom-left" ? "markup-toolbar-left" : r === "bottom-center" ? "markup-toolbar-center" : "markup-toolbar-right";
6475
6698
  function p(e) {
6476
6699
  if (e.preventDefault(), e.stopPropagation(), (e.metaKey || e.ctrlKey) && n) {
@@ -6544,7 +6767,7 @@ function ic({ isActive: e, onToggle: t, onHide: n, position: r = "bottom-right",
6544
6767
  }
6545
6768
  //#endregion
6546
6769
  //#region src/runtime/ui/app.tsx
6547
- function ac(e) {
6770
+ function cc(e) {
6548
6771
  let t = {
6549
6772
  clientId: `markup_user_${e.identity.id}`,
6550
6773
  name: e.identity.name,
@@ -6570,17 +6793,17 @@ function ac(e) {
6570
6793
  } : {}
6571
6794
  };
6572
6795
  }
6573
- function oc() {
6796
+ function lc() {
6574
6797
  let e = document.activeElement;
6575
6798
  for (; e && e.shadowRoot && e.shadowRoot.activeElement;) e = e.shadowRoot.activeElement;
6576
6799
  if (!e) return !1;
6577
6800
  let t = e.tagName;
6578
6801
  return t === "INPUT" || t === "TEXTAREA" || t === "SELECT" ? !0 : e.isContentEditable;
6579
6802
  }
6580
- function sc() {
6803
+ function uc() {
6581
6804
  return window.location.host + window.location.pathname;
6582
6805
  }
6583
- var cc = Ar({
6806
+ var dc = Ar({
6584
6807
  visible: {
6585
6808
  "hide-with-toast": () => ({ kind: "hidden-with-toast" }),
6586
6809
  toggle: () => ({ kind: "hidden" })
@@ -6591,26 +6814,26 @@ var cc = Ar({
6591
6814
  },
6592
6815
  hidden: { toggle: () => ({ kind: "visible" }) }
6593
6816
  });
6594
- function lc(e) {
6817
+ function fc(e) {
6595
6818
  return ji(e), e;
6596
6819
  }
6597
- var uc = Ar({
6820
+ var pc = Ar({
6598
6821
  unresolved: {
6599
- "mint-success": (e, t) => lc({
6822
+ "mint-success": (e, t) => fc({
6600
6823
  kind: "anon",
6601
6824
  identity: t.identity
6602
6825
  }),
6603
- "signed-in": (e, t) => lc({
6826
+ "signed-in": (e, t) => fc({
6604
6827
  kind: "verified",
6605
6828
  identity: t.identity
6606
6829
  })
6607
6830
  },
6608
6831
  anon: {
6609
- "signed-in": (e, t) => lc({
6832
+ "signed-in": (e, t) => fc({
6610
6833
  kind: "verified",
6611
6834
  identity: t.identity
6612
6835
  }),
6613
- "author-set": (e, t) => lc({
6836
+ "author-set": (e, t) => fc({
6614
6837
  kind: "anon",
6615
6838
  identity: {
6616
6839
  ...e.identity,
@@ -6618,35 +6841,35 @@ var uc = Ar({
6618
6841
  email: t.email
6619
6842
  }
6620
6843
  }),
6621
- "forget-me": () => lc({ kind: "unresolved" })
6844
+ "forget-me": () => fc({ kind: "unresolved" })
6622
6845
  },
6623
6846
  verified: {
6624
- "signed-in": (e, t) => lc({
6847
+ "signed-in": (e, t) => fc({
6625
6848
  kind: "verified",
6626
6849
  identity: t.identity
6627
6850
  }),
6628
- unauthorized: (e) => lc({
6851
+ unauthorized: (e) => fc({
6629
6852
  kind: "recovering",
6630
6853
  preserved: {
6631
6854
  name: e.identity.name,
6632
6855
  email: e.identity.email
6633
6856
  }
6634
6857
  }),
6635
- "signed-out": () => lc({ kind: "unresolved" })
6858
+ "signed-out": () => fc({ kind: "unresolved" })
6636
6859
  },
6637
6860
  recovering: {
6638
- "mint-success": (e, t) => lc({
6861
+ "mint-success": (e, t) => fc({
6639
6862
  kind: "anon",
6640
6863
  identity: t.identity
6641
6864
  }),
6642
- "signed-in": (e, t) => lc({
6865
+ "signed-in": (e, t) => fc({
6643
6866
  kind: "verified",
6644
6867
  identity: t.identity
6645
6868
  })
6646
6869
  }
6647
6870
  });
6648
- function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r, dashboardUrl: i }) {
6649
- let [a, o] = L(sc), [s, c] = L([]), [l, u] = L(!1), d = B(() => Ai(), []), [f, p] = jr(uc, d.state), [m, h] = L(null);
6871
+ function mc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r, dashboardUrl: i }) {
6872
+ let [a, o] = L(uc), [s, c] = L([]), [l, u] = L(!1), d = B(() => Ai(), []), [f, p] = jr(pc, d.state), [m, h] = L(null);
6650
6873
  R(() => {
6651
6874
  let n = !1;
6652
6875
  return gi(e, t).then((e) => {
@@ -6655,27 +6878,27 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6655
6878
  n = !0;
6656
6879
  };
6657
6880
  }, [e, t]);
6658
- let [g, _] = L(n), [v, y] = L(!0), [b, x] = L(!0), [S, C] = L(!1), w = z(f);
6659
- w.current = f, Do(f, e, t, (e) => p({
6881
+ let [g, _] = L(n), [v, y] = L(!0), [b, x] = L(!0), [S, C] = L(null), w = V(() => C(null), []), T = z(f);
6882
+ T.current = f, Do(f, e, t, (e) => p({
6660
6883
  type: "signed-in",
6661
6884
  identity: e
6662
6885
  }), () => p({ type: "unauthorized" }));
6663
- let T = B(() => pi({
6886
+ let E = B(() => pi({
6664
6887
  apiUrl: e,
6665
6888
  apiKey: t,
6666
6889
  getToken: () => {
6667
- let e = w.current;
6890
+ let e = T.current;
6668
6891
  return e.kind !== "verified" || e.identity.token == null ? null : {
6669
6892
  token: e.identity.token,
6670
6893
  expiresAt: e.identity.tokenExpiresAt
6671
6894
  };
6672
6895
  },
6673
6896
  getStorageMode: () => {
6674
- let e = w.current;
6897
+ let e = T.current;
6675
6898
  return e.kind === "verified" ? e.identity.storage : null;
6676
6899
  },
6677
6900
  getAnonToken: () => {
6678
- let e = w.current;
6901
+ let e = T.current;
6679
6902
  return e.kind === "anon" ? e.identity.anonToken : null;
6680
6903
  },
6681
6904
  onUnauthorized: () => {
@@ -6685,29 +6908,29 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6685
6908
  e,
6686
6909
  t,
6687
6910
  p
6688
- ]), [E, D] = L({ kind: "idle" }), [O, ee] = L([]);
6911
+ ]), [D, O] = L({ kind: "idle" }), [ee, te] = L([]);
6689
6912
  R(() => {
6690
6913
  let e = !1;
6691
- return T.listMembers().then((t) => {
6692
- e || ee(t.members);
6914
+ return E.listMembers().then((t) => {
6915
+ e || te(t.members);
6693
6916
  }).catch(() => {}), () => {
6694
6917
  e = !0;
6695
6918
  };
6696
- }, [T]);
6697
- let [te, k] = L(0), [A, j] = L([]), [ne, re] = L(!1), [ie, ae] = L(void 0), [oe, se] = L(!1), ce = V(() => {
6698
- re(!0), ae(void 0), T.listNotifications().then((e) => {
6699
- j(e.notifications);
6919
+ }, [E]);
6920
+ let [k, A] = L(0), [j, ne] = L([]), [re, ie] = L(!1), [ae, oe] = L(void 0), [se, ce] = L(!1), le = V(() => {
6921
+ ie(!0), oe(void 0), E.listNotifications().then((e) => {
6922
+ ne(e.notifications);
6700
6923
  }).catch((e) => {
6701
- ae(e instanceof Error ? e.message : "Failed to load.");
6924
+ oe(e instanceof Error ? e.message : "Failed to load.");
6702
6925
  }).finally(() => {
6703
- re(!1);
6926
+ ie(!1);
6704
6927
  });
6705
- }, [T]), le = Rr(), ue = Rr(), de = Rr(), fe = Rr(), pe = Rr(), { run: M, reset: me } = le, { run: he } = ue, { run: ge, reset: _e } = de, { run: ve } = fe, { run: ye } = pe, be = pe.isPending, xe = le.isPending, N = le.error ?? ue.error ?? de.error, [Se, Ce] = jr(cc, { kind: "visible" }), P = Se.kind !== "visible", [we, Te] = L(0), Ee = z(null), De = Ni(f), Oe = f.kind === "verified", ke = f.kind === "unresolved" || f.kind === "recovering", Ae = Mi(f);
6928
+ }, [E]), ue = Rr(), de = Rr(), fe = Rr(), pe = Rr(), me = Rr(), { run: M, reset: he } = ue, { run: ge } = de, { run: _e, reset: ve } = fe, { run: ye } = pe, { run: be } = me, xe = me.isPending, N = ue.isPending, Se = ue.error ?? de.error ?? fe.error, [Ce, P] = jr(dc, { kind: "visible" }), we = Ce.kind !== "visible", [Te, Ee] = L(0), De = z(null), Oe = Ni(f), ke = f.kind === "verified", Ae = f.kind === "unresolved" || f.kind === "recovering", je = Mi(f);
6706
6929
  R(() => {
6707
6930
  if (f.kind !== "unresolved" && f.kind !== "recovering") return;
6708
6931
  let e = f.kind === "recovering" ? f.preserved : d.preserved, t = !1, n = null, r = 1e3;
6709
6932
  function i() {
6710
- T.mintAnonIdentity().then(({ clientId: n, token: r }) => {
6933
+ E.mintAnonIdentity().then(({ clientId: n, token: r }) => {
6711
6934
  t || p({
6712
6935
  type: "mint-success",
6713
6936
  identity: {
@@ -6725,71 +6948,73 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6725
6948
  t = !0, n && clearTimeout(n);
6726
6949
  };
6727
6950
  }, [
6728
- T,
6951
+ E,
6729
6952
  f,
6730
6953
  p,
6731
6954
  d
6732
6955
  ]);
6733
- let je = Co(T), [Me, Ne] = L(null);
6956
+ let Me = Co(E), [Ne, Pe] = L(null);
6734
6957
  R(() => {
6735
6958
  let t = new kr(e.replace(/\.convex\.site(\/.*)?$/, ".convex.cloud"));
6736
- return Ne(t), () => {
6737
- t.close(), Ne((e) => e === t ? null : e);
6959
+ return Pe(t), () => {
6960
+ t.close(), Pe((e) => e === t ? null : e);
6738
6961
  };
6739
6962
  }, [e]);
6740
- let Pe = z(!1);
6963
+ let F = z(!1);
6741
6964
  R(() => {
6742
- if (!(!Me || !je)) return me(), _e(), Me.onUpdate(bn("widget/queries:subscribeThreadsForRoute"), {
6743
- subscriptionToken: je,
6965
+ if (!(!Ne || !Me)) return he(), ve(), Ne.onUpdate(bn("widget/queries:subscribeThreadsForRoute"), {
6966
+ subscriptionToken: Me,
6744
6967
  route: a,
6745
- viewerClientId: Ae
6968
+ viewerClientId: je
6746
6969
  }, (e) => {
6747
6970
  e !== void 0 && (c(e), u(!0));
6748
6971
  });
6749
6972
  }, [
6973
+ Ne,
6750
6974
  Me,
6751
- je,
6752
6975
  a,
6753
- Ae,
6754
- me,
6755
- _e
6976
+ je,
6977
+ he,
6978
+ ve
6756
6979
  ]), R(() => {
6757
6980
  if (f.kind !== "verified") {
6758
- k(0);
6981
+ A(0);
6759
6982
  return;
6760
6983
  }
6761
- if (!(!Me || !je)) return Me.onUpdate(bn("widget/queries:subscribeUnreadCountForProject"), { subscriptionToken: je }, (e) => {
6762
- e !== void 0 && k(e.count);
6984
+ if (!(!Ne || !Me)) return Ne.onUpdate(bn("widget/queries:subscribeUnreadCountForProject"), { subscriptionToken: Me }, (e) => {
6985
+ e !== void 0 && A(e.count);
6763
6986
  });
6764
6987
  }, [
6988
+ Ne,
6765
6989
  Me,
6766
- je,
6767
6990
  f.kind
6768
6991
  ]), R(() => {
6769
- if (Pe.current || !l) return;
6992
+ if (F.current || !l) return;
6770
6993
  let e = window.location.hash.match(/^#markup-thread=(.+)$/);
6771
6994
  if (e) {
6772
6995
  let t = decodeURIComponent(e[1] ?? "");
6773
- s.find((e) => e._id === t) && D({
6996
+ s.find((e) => e._id === t) && O({
6774
6997
  kind: "thread",
6775
6998
  threadId: t
6776
6999
  }), history.replaceState(null, "", window.location.pathname + window.location.search);
6777
7000
  }
6778
- Pe.current = !0;
6779
- }, [s, l]), R(() => Ci(() => o(sc())), []), R(() => {
7001
+ F.current = !0;
7002
+ }, [s, l]), R(() => Ci(() => o(uc())), []), R(() => {
6780
7003
  function e(e) {
6781
- e.key === "." && (e.metaKey || e.ctrlKey) && (e.altKey || e.shiftKey || (e.preventDefault(), Ce({ type: "toggle" })));
7004
+ e.key === "." && (e.metaKey || e.ctrlKey) && (e.altKey || e.shiftKey || (e.preventDefault(), P({ type: "toggle" })));
6782
7005
  }
6783
7006
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
6784
- }, [Ce]), R(() => {
6785
- if (Se.kind !== "hidden-with-toast") return;
6786
- let e = window.setTimeout(() => Ce({ type: "dismiss-toast" }), 5e3);
7007
+ }, [P]), R(() => {
7008
+ we && C(null);
7009
+ }, [we]), R(() => {
7010
+ if (Ce.kind !== "hidden-with-toast") return;
7011
+ let e = window.setTimeout(() => P({ type: "dismiss-toast" }), 5e3);
6787
7012
  return () => window.clearTimeout(e);
6788
- }, [Se.kind, Ce]), R(() => {
7013
+ }, [Ce.kind, P]), R(() => {
6789
7014
  let e = null;
6790
7015
  function t() {
6791
7016
  e ??= requestAnimationFrame(() => {
6792
- e = null, Te((e) => e + 1);
7017
+ e = null, Ee((e) => e + 1);
6793
7018
  });
6794
7019
  }
6795
7020
  window.addEventListener("scroll", t, { passive: !0 }), window.addEventListener("resize", t);
@@ -6798,25 +7023,25 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6798
7023
  window.removeEventListener("scroll", t), window.removeEventListener("resize", t), n.disconnect(), e != null && cancelAnimationFrame(e);
6799
7024
  };
6800
7025
  }, []);
6801
- let F = V(() => {
6802
- me(), _e(), D({ kind: "placing" });
6803
- }, [me, _e]);
7026
+ let Fe = V(() => {
7027
+ he(), ve(), O({ kind: "placing" });
7028
+ }, [he, ve]);
6804
7029
  R(() => {
6805
7030
  function e(e) {
6806
- e.key === "c" && (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey || E.kind === "idle" && (P || oc() || (e.preventDefault(), F())));
7031
+ e.key === "c" && (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey || D.kind === "idle" && (we || lc() || (e.preventDefault(), Fe())));
6807
7032
  }
6808
7033
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
6809
7034
  }, [
6810
- E.kind,
6811
- P,
6812
- F
7035
+ D.kind,
7036
+ we,
7037
+ Fe
6813
7038
  ]);
6814
- let Fe = V(() => {
6815
- D({ kind: "idle" }), me(), _e();
6816
- }, [me, _e]), Ie = z(0), Le = V((e, t, n) => {
6817
- let i = t + window.scrollX, a = n + window.scrollY, o = ++Ie.current;
7039
+ let Ie = V(() => {
7040
+ O({ kind: "idle" }), he(), ve();
7041
+ }, [he, ve]), Le = z(0), Re = V((e, t, n) => {
7042
+ let i = t + window.scrollX, a = n + window.scrollY, o = ++Le.current;
6818
7043
  if (r?.enabled === !1 || !b) {
6819
- D({
7044
+ O({
6820
7045
  kind: "composing-new",
6821
7046
  coords: e,
6822
7047
  pageX: i,
@@ -6830,7 +7055,7 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6830
7055
  });
6831
7056
  return;
6832
7057
  }
6833
- D({
7058
+ O({
6834
7059
  kind: "composing-new",
6835
7060
  coords: e,
6836
7061
  pageX: i,
@@ -6842,7 +7067,7 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6842
7067
  screenshotRedactedSelectors: [],
6843
7068
  captureToken: o
6844
7069
  });
6845
- let s = Ee.current != null && Ee.current.getRootNode() instanceof ShadowRoot ? Ee.current.getRootNode().host : null, c = {
7070
+ let s = De.current != null && De.current.getRootNode() instanceof ShadowRoot ? De.current.getRootNode().host : null, c = {
6846
7071
  strictScrub: r?.strictScrub,
6847
7072
  redactSelector: r?.redactSelector
6848
7073
  };
@@ -6850,7 +7075,7 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6850
7075
  x: t,
6851
7076
  y: n
6852
7077
  }, c).then((e) => {
6853
- D((t) => t.kind !== "composing-new" || t.captureToken !== o ? t : {
7078
+ O((t) => t.kind !== "composing-new" || t.captureToken !== o ? t : {
6854
7079
  ...t,
6855
7080
  screenshot: e?.blob ?? null,
6856
7081
  isScreenshotCapturing: !1,
@@ -6859,15 +7084,15 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6859
7084
  screenshotRedactedSelectors: e?.redactedSelectors ?? []
6860
7085
  });
6861
7086
  });
6862
- }, [r, b]), Re = V((e, t) => {
7087
+ }, [r, b]), I = V((e, t) => {
6863
7088
  p({
6864
7089
  type: "author-set",
6865
7090
  name: e,
6866
7091
  email: t
6867
7092
  });
6868
- }, [p]), I = ue.isPending, ze = V(async () => {
6869
- await he(async () => {
6870
- let n = ac(await zi({
7093
+ }, [p]), ze = de.isPending, Be = V(async () => {
7094
+ await ge(async () => {
7095
+ let n = cc(await zi({
6871
7096
  apiUrl: e,
6872
7097
  apiKey: t,
6873
7098
  useCookies: m === !0
@@ -6882,20 +7107,20 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6882
7107
  e,
6883
7108
  t,
6884
7109
  m,
6885
- he,
7110
+ ge,
6886
7111
  p
6887
- ]), Be = V(async (e, t) => {
6888
- if (E.kind !== "composing-new") return;
7112
+ ]), Ve = V(async (e, t) => {
7113
+ if (D.kind !== "composing-new") return;
6889
7114
  let n = Pi(f);
6890
7115
  n && await M(async () => {
6891
7116
  let r;
6892
- if (t && E.screenshot) {
6893
- let { uploadUrl: e } = await T.getScreenshotUploadUrl(), t;
7117
+ if (t && D.screenshot) {
7118
+ let { uploadUrl: e } = await E.getScreenshotUploadUrl(), t;
6894
7119
  try {
6895
7120
  t = await fetch(e, {
6896
7121
  method: "POST",
6897
- headers: { "Content-Type": E.screenshot.type || "image/png" },
6898
- body: E.screenshot,
7122
+ headers: { "Content-Type": D.screenshot.type || "image/png" },
7123
+ body: D.screenshot,
6899
7124
  signal: AbortSignal.timeout(6e4)
6900
7125
  });
6901
7126
  } catch (e) {
@@ -6905,16 +7130,16 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6905
7130
  let { storageId: n } = await t.json();
6906
7131
  r = n;
6907
7132
  }
6908
- let i = Pr(e), o = await T.createThread({
7133
+ let i = Pr(e), o = await E.createThread({
6909
7134
  url: window.location.href,
6910
7135
  route: a,
6911
- anchorSelector: E.coords.anchorSelector,
6912
- anchorX: E.coords.anchorX,
6913
- anchorY: E.coords.anchorY,
6914
- anchorOffsetX: E.coords.anchorOffsetX,
6915
- anchorOffsetY: E.coords.anchorOffsetY,
6916
- viewportW: E.coords.viewportW,
6917
- viewportY: E.coords.viewportY,
7136
+ anchorSelector: D.coords.anchorSelector,
7137
+ anchorX: D.coords.anchorX,
7138
+ anchorY: D.coords.anchorY,
7139
+ anchorOffsetX: D.coords.anchorOffsetX,
7140
+ anchorOffsetY: D.coords.anchorOffsetY,
7141
+ viewportW: D.coords.viewportW,
7142
+ viewportY: D.coords.viewportY,
6918
7143
  userAgent: navigator.userAgent,
6919
7144
  authorName: n.name,
6920
7145
  authorEmail: n.email,
@@ -6922,43 +7147,43 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6922
7147
  mentions: i.length > 0 ? i : void 0,
6923
7148
  screenshotStorageId: r
6924
7149
  });
6925
- c((e) => [...e, o.thread]), D({
7150
+ c((e) => [...e, o.thread]), O({
6926
7151
  kind: "thread",
6927
7152
  threadId: o.thread._id
6928
7153
  });
6929
7154
  });
6930
7155
  }, [
6931
- T,
6932
- f,
6933
7156
  E,
7157
+ f,
7158
+ D,
6934
7159
  a,
6935
7160
  M
6936
- ]), Ve = V(async () => {
6937
- if (E.kind !== "thread") return;
6938
- let e = E.threadId;
7161
+ ]), He = V(async () => {
7162
+ if (D.kind !== "thread") return;
7163
+ let e = D.threadId;
6939
7164
  await M(async () => {
6940
- await T.deleteThread(e), c((t) => t.filter((t) => t._id !== e)), D({ kind: "idle" });
7165
+ await E.deleteThread(e), c((t) => t.filter((t) => t._id !== e)), O({ kind: "idle" });
6941
7166
  });
6942
7167
  }, [
6943
- T,
6944
7168
  E,
7169
+ D,
6945
7170
  M
6946
- ]), He = V(async () => {
6947
- if (E.kind !== "thread") return;
6948
- let e = E.threadId;
7171
+ ]), Ue = V(async () => {
7172
+ if (D.kind !== "thread") return;
7173
+ let e = D.threadId;
6949
7174
  await M(async () => {
6950
- await T.resolveThread(e, Ae), c((t) => t.filter((t) => t._id !== e)), D({ kind: "idle" });
7175
+ await E.resolveThread(e, je), c((t) => t.filter((t) => t._id !== e)), O({ kind: "idle" });
6951
7176
  });
6952
7177
  }, [
6953
- T,
6954
7178
  E,
6955
- Ae,
7179
+ D,
7180
+ je,
6956
7181
  M
6957
- ]), Ue = V((e) => {
6958
- if (e.readAt ?? (k((e) => Math.max(0, e - 1)), j((t) => t.map((t) => t._id === e._id ? {
7182
+ ]), We = V((e) => {
7183
+ if (e.readAt ?? (A((e) => Math.max(0, e - 1)), ne((t) => t.map((t) => t._id === e._id ? {
6959
7184
  ...t,
6960
7185
  readAt: Date.now()
6961
- } : t)), T.markNotificationRead(e._id).catch(() => {})), s.some((t) => t._id === e.threadId)) D({
7186
+ } : t)), E.markNotificationRead(e._id).catch(() => {})), s.some((t) => t._id === e.threadId)) O({
6962
7187
  kind: "thread",
6963
7188
  threadId: e.threadId
6964
7189
  });
@@ -6966,18 +7191,18 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6966
7191
  let t = Ti(e.threadUrl, window.location.href);
6967
7192
  t && (t.hash = `markup-thread=${e.threadId}`, window.location.href = t.toString());
6968
7193
  }
6969
- }, [T, s]), We = V(() => {
6970
- se(!0), k(0), j((e) => e.map((e) => e.readAt == null ? {
7194
+ }, [E, s]), Ge = V(() => {
7195
+ ce(!0), A(0), ne((e) => e.map((e) => e.readAt == null ? {
6971
7196
  ...e,
6972
7197
  readAt: Date.now()
6973
- } : e)), T.markAllNotificationsRead().catch(() => {}).finally(() => se(!1));
6974
- }, [T]), Ge = V(async (e) => {
6975
- if (E.kind !== "thread") return;
7198
+ } : e)), E.markAllNotificationsRead().catch(() => {}).finally(() => ce(!1));
7199
+ }, [E]), Ke = V(async (e) => {
7200
+ if (D.kind !== "thread") return;
6976
7201
  let t = Pi(f);
6977
7202
  if (!t) return;
6978
- let n = E.threadId;
7203
+ let n = D.threadId;
6979
7204
  await M(async () => {
6980
- let r = Pr(e), i = await T.addComment(n, {
7205
+ let r = Pr(e), i = await E.addComment(n, {
6981
7206
  body: e,
6982
7207
  authorName: t.name,
6983
7208
  authorEmail: t.email,
@@ -6986,83 +7211,84 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
6986
7211
  c((e) => e.map((e) => e._id === n ? i.thread : e));
6987
7212
  });
6988
7213
  }, [
6989
- T,
6990
- f,
6991
7214
  E,
7215
+ f,
7216
+ D,
6992
7217
  M
6993
- ]), Ke = V(async (e, t) => {
6994
- if (E.kind !== "thread" || f.kind !== "anon" && f.kind !== "verified") return;
6995
- let n = E.threadId;
7218
+ ]), qe = V(async (e, t) => {
7219
+ if (D.kind !== "thread" || f.kind !== "anon" && f.kind !== "verified") return;
7220
+ let n = D.threadId;
6996
7221
  await M(async () => {
6997
- let r = Pr(t), i = await T.editComment(n, e, {
7222
+ let r = Pr(t), i = await E.editComment(n, e, {
6998
7223
  body: t,
6999
7224
  mentions: r.length > 0 ? r : void 0
7000
7225
  });
7001
7226
  c((e) => e.map((e) => e._id === n ? i.thread : e));
7002
7227
  }, { rethrow: !0 });
7003
7228
  }, [
7004
- T,
7005
- f,
7006
7229
  E,
7230
+ f,
7231
+ D,
7007
7232
  M
7008
- ]), qe = V(async (e) => {
7009
- if (E.kind !== "thread" || f.kind !== "anon" && f.kind !== "verified") return;
7010
- let t = E.threadId;
7233
+ ]), Je = V(async (e) => {
7234
+ if (D.kind !== "thread" || f.kind !== "anon" && f.kind !== "verified") return;
7235
+ let t = D.threadId;
7011
7236
  await M(async () => {
7012
- let n = await T.deleteComment(t, e);
7237
+ let n = await E.deleteComment(t, e);
7013
7238
  c((e) => e.map((e) => e._id === t ? n.thread : e));
7014
7239
  });
7015
7240
  }, [
7016
- T,
7017
- f,
7018
7241
  E,
7242
+ f,
7243
+ D,
7019
7244
  M
7020
- ]), Je = V(async (e, t) => {
7021
- if (E.kind !== "thread") return;
7245
+ ]), Ye = V(async (e, t) => {
7246
+ if (D.kind !== "thread") return;
7022
7247
  let n = Pi(f);
7023
7248
  if (!n) return;
7024
- let r = E.threadId;
7025
- await ge(async () => {
7026
- let i = await T.toggleReaction(e, {
7249
+ let r = D.threadId;
7250
+ await _e(async () => {
7251
+ let i = await E.toggleReaction(e, {
7027
7252
  emoji: t,
7028
7253
  authorName: n.name
7029
7254
  });
7030
7255
  c((e) => e.map((e) => e._id === r ? i.thread : e));
7031
7256
  });
7032
7257
  }, [
7033
- T,
7034
- f,
7035
7258
  E,
7036
- ge
7037
- ]), [Ye, Xe] = L(!1), Ze = V(async () => {
7038
- await ve(async () => {
7039
- await T.forgetMe(), D({ kind: "idle" }), p({ type: "forget-me" }), Xe(!0);
7259
+ f,
7260
+ D,
7261
+ _e
7262
+ ]), [Xe, Ze] = L(!1), Qe = V(async () => {
7263
+ await ye(async () => {
7264
+ await E.forgetMe(), O({ kind: "idle" }), w(), p({ type: "forget-me" }), Ze(!0);
7040
7265
  });
7041
7266
  }, [
7042
- T,
7043
- ve,
7267
+ E,
7268
+ w,
7269
+ ye,
7044
7270
  p
7045
7271
  ]);
7046
7272
  R(() => {
7047
- if (!Ye) return;
7048
- let e = window.setTimeout(() => Xe(!1), 5e3);
7273
+ if (!Xe) return;
7274
+ let e = window.setTimeout(() => Ze(!1), 5e3);
7049
7275
  return () => window.clearTimeout(e);
7050
- }, [Ye]);
7051
- let [Qe, $e] = L(!1), et = V(async () => {
7052
- await ye(async () => {
7053
- await T.signOut(), D({ kind: "idle" }), p({ type: "signed-out" }), $e(!0);
7276
+ }, [Xe]);
7277
+ let [$e, et] = L(!1), tt = V(async () => {
7278
+ await be(async () => {
7279
+ await E.signOut(), O({ kind: "idle" }), p({ type: "signed-out" }), et(!0);
7054
7280
  });
7055
7281
  }, [
7056
- T,
7057
- ye,
7282
+ E,
7283
+ be,
7058
7284
  p
7059
7285
  ]);
7060
7286
  R(() => {
7061
- if (!Qe) return;
7062
- let e = window.setTimeout(() => $e(!1), 5e3);
7287
+ if (!$e) return;
7288
+ let e = window.setTimeout(() => et(!1), 5e3);
7063
7289
  return () => window.clearTimeout(e);
7064
- }, [Qe]);
7065
- let tt = E.kind === "thread" ? s.find((e) => e._id === E.threadId) ?? null : null, H = Oe || Ae != null && Ae === tt?.authorClientId, U = B(() => s.map((e) => ({
7290
+ }, [$e]);
7291
+ let H = D.kind === "thread" ? s.find((e) => e._id === D.threadId) ?? null : null, U = ke || je != null && je === H?.authorClientId, nt = B(() => s.map((e) => ({
7066
7292
  thread: e,
7067
7293
  point: oi({
7068
7294
  anchorX: e.anchorX,
@@ -7071,27 +7297,27 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
7071
7297
  anchorOffsetX: e.anchorOffsetX,
7072
7298
  anchorOffsetY: e.anchorOffsetY
7073
7299
  })
7074
- })), [s, we]), nt = z({
7300
+ })), [s, Te]), rt = z({
7075
7301
  retryable: !1,
7076
7302
  elements: []
7077
7303
  });
7078
7304
  R(() => {
7079
- nt.current = {
7080
- retryable: U.some((e) => !e.point.resolved && e.thread.anchorSelector != null),
7081
- elements: U.flatMap((e) => e.point.element ? [e.point.element] : [])
7305
+ rt.current = {
7306
+ retryable: nt.some((e) => !e.point.resolved && e.thread.anchorSelector != null),
7307
+ elements: nt.flatMap((e) => e.point.element ? [e.point.element] : [])
7082
7308
  };
7083
- }, [U]);
7084
- let rt = s.some((e) => e.anchorSelector != null);
7309
+ }, [nt]);
7310
+ let it = s.some((e) => e.anchorSelector != null);
7085
7311
  return R(() => {
7086
- if (!rt) return;
7312
+ if (!it) return;
7087
7313
  let e = null;
7088
7314
  function t() {
7089
7315
  e ??= requestAnimationFrame(() => {
7090
- e = null, Te((e) => e + 1);
7316
+ e = null, Ee((e) => e + 1);
7091
7317
  });
7092
7318
  }
7093
7319
  let n = new MutationObserver(() => {
7094
- let { retryable: e, elements: n } = nt.current;
7320
+ let { retryable: e, elements: n } = rt.current;
7095
7321
  !e && n.every((e) => e.isConnected) || t();
7096
7322
  });
7097
7323
  return n.observe(document.body, {
@@ -7100,136 +7326,167 @@ function dc({ apiUrl: e, apiKey: t, position: n = "bottom-right", screenshots: r
7100
7326
  }), () => {
7101
7327
  n.disconnect(), e != null && cancelAnimationFrame(e);
7102
7328
  };
7103
- }, [rt]), R(() => {
7104
- E.kind === "thread" && tt == null && Fe();
7329
+ }, [it]), R(() => {
7330
+ D.kind === "thread" && H == null && Ie();
7105
7331
  }, [
7106
- E,
7107
- tt,
7108
- Fe
7332
+ D,
7333
+ H,
7334
+ Ie
7109
7335
  ]), /* @__PURE__ */ Q("div", {
7110
7336
  class: "markup-root",
7111
- ref: Ee,
7337
+ ref: De,
7112
7338
  children: [
7113
- E.kind === "placing" ? null : /* @__PURE__ */ Q("div", {
7339
+ D.kind === "placing" ? null : /* @__PURE__ */ Q("div", {
7114
7340
  class: "markup-pins-layer",
7115
- children: [!P && v ? U.map(({ thread: e, point: t }) => {
7116
- let n = E.kind === "thread" && E.threadId === e._id, r = e.comments.reduce((e, t) => e + +!t.deleted, 0);
7341
+ children: [!we && v ? nt.map(({ thread: e, point: t }) => {
7342
+ let n = D.kind === "thread" && D.threadId === e._id, r = e.comments.reduce((e, t) => e + +!t.deleted, 0);
7117
7343
  return /* @__PURE__ */ Q(Us, {
7118
7344
  pageX: t.pageX,
7119
7345
  pageY: t.pageY,
7120
7346
  count: r,
7121
7347
  isActive: n,
7122
7348
  isUnresolved: !t.resolved,
7123
- onClick: () => D({
7349
+ onClick: () => O({
7124
7350
  kind: "thread",
7125
7351
  threadId: e._id
7126
7352
  })
7127
7353
  }, e._id);
7128
- }) : null, E.kind === "composing-new" ? /* @__PURE__ */ Q(Ws, {
7129
- pageX: E.pageX,
7130
- pageY: E.pageY
7354
+ }) : null, D.kind === "composing-new" ? /* @__PURE__ */ Q(Ws, {
7355
+ pageX: D.pageX,
7356
+ pageY: D.pageY
7131
7357
  }) : null]
7132
7358
  }),
7133
- E.kind === "placing" ? /* @__PURE__ */ Q(Gs, {
7134
- onPlace: Le,
7135
- onCancel: Fe
7359
+ D.kind === "placing" ? /* @__PURE__ */ Q(Gs, {
7360
+ onPlace: Re,
7361
+ onCancel: Ie
7136
7362
  }) : null,
7137
- E.kind === "thread" && tt ? /* @__PURE__ */ Q(Js, {
7138
- thread: tt,
7139
- authorName: De,
7140
- currentClientId: Ae ?? null,
7141
- isVerified: Oe,
7142
- isIdentityResolving: ke,
7143
- isSigningIn: I,
7144
- canDelete: H,
7145
- isPending: xe,
7146
- error: N,
7147
- isHidden: P,
7148
- members: O,
7149
- onAuthor: Re,
7150
- onSignIn: ze,
7151
- onClose: Fe,
7152
- onReply: Ge,
7153
- onEditComment: Ke,
7154
- onDeleteComment: qe,
7155
- onToggleReaction: Je,
7156
- onDelete: Ve,
7157
- onResolve: He
7158
- }, tt._id) : null,
7159
- E.kind === "composing-new" ? /* @__PURE__ */ Q(Is, {
7160
- pageX: E.pageX,
7161
- pageY: E.pageY,
7162
- authorName: De,
7163
- isVerified: Oe,
7164
- isIdentityResolving: ke,
7165
- isSigningIn: I,
7166
- isPending: xe,
7167
- error: N,
7168
- screenshot: E.screenshot,
7169
- isScreenshotCapturing: E.isScreenshotCapturing,
7170
- screenshotFailed: E.screenshotFailed,
7171
- screenshotRedactedCount: E.screenshotRedactedCount,
7172
- screenshotRedactedSelectors: E.screenshotRedactedSelectors,
7173
- members: O,
7174
- onAuthor: Re,
7175
- onSignIn: ze,
7176
- onSubmit: Be,
7177
- onClose: Fe
7363
+ D.kind === "thread" && H ? /* @__PURE__ */ Q(Zs, {
7364
+ thread: H,
7365
+ authorName: Oe,
7366
+ currentClientId: je ?? null,
7367
+ isVerified: ke,
7368
+ isIdentityResolving: Ae,
7369
+ isSigningIn: ze,
7370
+ canDelete: U,
7371
+ isPending: N,
7372
+ error: Se,
7373
+ isHidden: we,
7374
+ members: ee,
7375
+ onAuthor: I,
7376
+ onSignIn: Be,
7377
+ onClose: Ie,
7378
+ onReply: Ke,
7379
+ onEditComment: qe,
7380
+ onDeleteComment: Je,
7381
+ onToggleReaction: Ye,
7382
+ onDelete: He,
7383
+ onResolve: Ue
7384
+ }, H._id) : null,
7385
+ D.kind === "composing-new" ? /* @__PURE__ */ Q(Ns, {
7386
+ pageX: D.pageX,
7387
+ pageY: D.pageY,
7388
+ authorName: Oe,
7389
+ isVerified: ke,
7390
+ isIdentityResolving: Ae,
7391
+ isSigningIn: ze,
7392
+ isPending: N,
7393
+ error: Se,
7394
+ screenshot: D.screenshot,
7395
+ isScreenshotCapturing: D.isScreenshotCapturing,
7396
+ screenshotFailed: D.screenshotFailed,
7397
+ screenshotRedactedCount: D.screenshotRedactedCount,
7398
+ screenshotRedactedSelectors: D.screenshotRedactedSelectors,
7399
+ members: ee,
7400
+ onAuthor: I,
7401
+ onSignIn: Be,
7402
+ onSubmit: Ve,
7403
+ onClose: Ie
7178
7404
  }) : null,
7179
- !P || E.kind === "placing" || E.kind === "composing-new" ? /* @__PURE__ */ Q(ic, {
7180
- isActive: E.kind === "placing",
7181
- onToggle: () => E.kind === "placing" ? Fe() : F(),
7182
- onHide: () => Ce({ type: "hide-with-toast" }),
7405
+ !we || D.kind === "placing" || D.kind === "composing-new" ? /* @__PURE__ */ Q(sc, {
7406
+ isActive: D.kind === "placing",
7407
+ onToggle: () => D.kind === "placing" ? Ie() : Fe(),
7408
+ onHide: () => P({ type: "hide-with-toast" }),
7183
7409
  position: g,
7184
- showInbox: Oe,
7185
- unreadCount: Oe ? te : 0,
7186
- inboxOpen: S,
7410
+ showInbox: ke,
7411
+ unreadCount: ke ? k : 0,
7412
+ inboxOpen: S === "inbox",
7187
7413
  onOpenInbox: () => {
7188
- let e = !S;
7189
- C(e), e && ce();
7414
+ let e = S === "inbox" ? null : "inbox";
7415
+ C(e), e && le();
7190
7416
  },
7191
7417
  pinsVisible: v,
7192
7418
  onTogglePins: () => y((e) => !e),
7193
7419
  identityButton: /* @__PURE__ */ Q($o, {
7194
7420
  identity: f,
7195
7421
  position: g,
7196
- isSigningIn: I,
7197
- isSigningOut: be,
7422
+ isSigningIn: ze,
7423
+ isSigningOut: xe,
7198
7424
  dashboardUrl: i,
7199
- onSignIn: ze,
7200
- onSignOut: et,
7201
- onForgetMe: Ze
7425
+ onSignIn: Be,
7426
+ onSignOut: tt,
7427
+ onForgetMe: Qe
7202
7428
  }),
7203
- overflowButton: /* @__PURE__ */ Q(zs, {
7429
+ overflowButton: /* @__PURE__ */ Q(Rs, {
7204
7430
  position: g,
7205
7431
  onSetPosition: _,
7206
7432
  autoCapture: b && r?.enabled !== !1,
7207
7433
  autoCaptureLocked: r?.enabled === !1,
7208
7434
  onToggleAutoCapture: () => x((e) => !e),
7209
- onHideForSession: () => Ce({ type: "hide-with-toast" }),
7210
- version: "1.16.1",
7435
+ onOpenPrivacy: () => C("privacy"),
7436
+ onOpenShortcuts: () => C("shortcuts"),
7437
+ onHideForSession: () => P({ type: "hide-with-toast" }),
7438
+ version: "1.17.0",
7211
7439
  dashboardUrl: i
7212
7440
  })
7213
7441
  }) : null,
7214
- S && Oe ? /* @__PURE__ */ Q(rs, {
7442
+ S === "inbox" && ke ? /* @__PURE__ */ Q(Hs, {
7443
+ kind: "inbox",
7444
+ label: "Inbox",
7215
7445
  position: g,
7216
- items: A,
7217
- isLoading: ne,
7218
- error: ie,
7219
- isMarkingAll: oe,
7220
- onClose: () => C(!1),
7221
- onItemClick: (e) => {
7222
- C(!1), Ue(e);
7223
- },
7224
- onMarkAllRead: We
7446
+ ignoreToolbarKind: "inbox",
7447
+ onClose: w,
7448
+ children: /* @__PURE__ */ Q(Fs, {
7449
+ items: j,
7450
+ isLoading: re,
7451
+ error: ae,
7452
+ isMarkingAll: se,
7453
+ onBack: w,
7454
+ onItemClick: (e) => {
7455
+ w(), We(e);
7456
+ },
7457
+ onMarkAllRead: Ge
7458
+ })
7459
+ }) : null,
7460
+ S === "privacy" ? /* @__PURE__ */ Q(Hs, {
7461
+ kind: "privacy",
7462
+ label: "Privacy and data",
7463
+ position: g,
7464
+ onClose: w,
7465
+ children: /* @__PURE__ */ Q(Ks, {
7466
+ identity: f,
7467
+ apiUrl: e,
7468
+ autoCapture: b && r?.enabled !== !1,
7469
+ autoCaptureLocked: r?.enabled === !1,
7470
+ isForgettingMe: pe.isPending,
7471
+ forgetMeError: pe.error,
7472
+ onForgetMe: Qe,
7473
+ onClose: w
7474
+ })
7475
+ }) : null,
7476
+ S === "shortcuts" ? /* @__PURE__ */ Q(Hs, {
7477
+ kind: "shortcuts",
7478
+ label: "Keyboard shortcuts",
7479
+ position: g,
7480
+ onClose: w,
7481
+ children: /* @__PURE__ */ Q(Js, { onClose: w })
7225
7482
  }) : null,
7226
- Se.kind === "hidden-with-toast" ? /* @__PURE__ */ Q(fc, { position: g }) : null,
7227
- Ye ? /* @__PURE__ */ Q(pc, { position: g }) : null,
7228
- Qe ? /* @__PURE__ */ Q(mc, { position: g }) : null
7483
+ Ce.kind === "hidden-with-toast" ? /* @__PURE__ */ Q(hc, { position: g }) : null,
7484
+ Xe ? /* @__PURE__ */ Q(gc, { position: g }) : null,
7485
+ $e ? /* @__PURE__ */ Q(_c, { position: g }) : null
7229
7486
  ]
7230
7487
  });
7231
7488
  }
7232
- function fc({ position: e }) {
7489
+ function hc({ position: e }) {
7233
7490
  let { mod: t } = Oo();
7234
7491
  return /* @__PURE__ */ Q("div", {
7235
7492
  class: Z("markup-hud-hidden-toast", e === "bottom-left" ? "markup-hud-hidden-toast-left" : e === "bottom-center" ? "markup-hud-hidden-toast-center" : "markup-hud-hidden-toast-right"),
@@ -7249,7 +7506,7 @@ function fc({ position: e }) {
7249
7506
  ]
7250
7507
  });
7251
7508
  }
7252
- function pc({ position: e }) {
7509
+ function gc({ position: e }) {
7253
7510
  return /* @__PURE__ */ Q("div", {
7254
7511
  class: Z("markup-hud-hidden-toast", e === "bottom-left" ? "markup-hud-hidden-toast-left" : e === "bottom-center" ? "markup-hud-hidden-toast-center" : "markup-hud-hidden-toast-right"),
7255
7512
  role: "status",
@@ -7257,7 +7514,7 @@ function pc({ position: e }) {
7257
7514
  children: "Forgotten on this site — your name and email were cleared."
7258
7515
  });
7259
7516
  }
7260
- function mc({ position: e }) {
7517
+ function _c({ position: e }) {
7261
7518
  return /* @__PURE__ */ Q("div", {
7262
7519
  class: Z("markup-hud-hidden-toast", e === "bottom-left" ? "markup-hud-hidden-toast-left" : e === "bottom-center" ? "markup-hud-hidden-toast-center" : "markup-hud-hidden-toast-right"),
7263
7520
  role: "status",
@@ -7267,7 +7524,7 @@ function mc({ position: e }) {
7267
7524
  }
7268
7525
  //#endregion
7269
7526
  //#region src/runtime/mount.tsx
7270
- function hc(e, t) {
7527
+ function vc(e, t) {
7271
7528
  e.style.position = "fixed", e.style.inset = "0", e.style.zIndex = "2147483647", e.style.pointerEvents = "none", Oe(e, t.theme ?? "auto");
7272
7529
  let n = Ne(), r = e.attachShadow({ mode: "open" }), i = document.createElement("style");
7273
7530
  i.textContent = pe, r.appendChild(i);
@@ -7275,40 +7532,40 @@ function hc(e, t) {
7275
7532
  a.className = "markup-shadow-root", r.appendChild(a), xe({
7276
7533
  apiUrl: t.apiUrl,
7277
7534
  apiKey: t.apiKey,
7278
- widgetVersion: "1.16.1"
7535
+ widgetVersion: "1.17.0"
7279
7536
  });
7280
7537
  let { theme: o, ...s } = t;
7281
- return fe(/* @__PURE__ */ Q(M, {
7538
+ return fe(/* @__PURE__ */ Q(me, {
7282
7539
  onError: (e) => N(e, { context: "render" }),
7283
- children: /* @__PURE__ */ Q(dc, { ...s })
7540
+ children: /* @__PURE__ */ Q(mc, { ...s })
7284
7541
  }), a), () => {
7285
7542
  n(), xe(null), fe(null, a);
7286
7543
  };
7287
7544
  }
7288
7545
  //#endregion
7289
7546
  //#region src/widget.ts
7290
- var gc = null, _c = null, vc = null, yc = !1;
7291
- function bc(e) {
7547
+ var yc = null, bc = null, xc = null, Sc = !1;
7548
+ function Cc(e) {
7292
7549
  if (!e.apiUrl || !e.apiKey) return console.warn("[markup] init() requires both apiUrl and apiKey — widget not mounted"), () => {};
7293
- e.fab != null && !yc && (yc = !0, console.warn("[markup] the `fab` option is ignored and will be removed in the next major — the toolbar replaced the floating action button. Remove it from your config.")), xc();
7550
+ e.fab != null && !Sc && (Sc = !0, console.warn("[markup] the `fab` option is ignored and will be removed in the next major — the toolbar replaced the floating action button. Remove it from your config.")), wc();
7294
7551
  let t = () => {
7295
- if (vc = null, !document.body) return;
7552
+ if (xc = null, !document.body) return;
7296
7553
  let t = document.createElement("div");
7297
- t.id = "markup-widget", document.body.appendChild(t), _c = t, gc = hc(t, e);
7554
+ t.id = "markup-widget", document.body.appendChild(t), bc = t, yc = vc(t, e);
7298
7555
  };
7299
7556
  if (document.readyState === "loading" || !document.body) {
7300
7557
  let e = () => t();
7301
- vc = () => document.removeEventListener("DOMContentLoaded", e), document.addEventListener("DOMContentLoaded", e, { once: !0 });
7558
+ xc = () => document.removeEventListener("DOMContentLoaded", e), document.addEventListener("DOMContentLoaded", e, { once: !0 });
7302
7559
  } else t();
7303
- return xc;
7560
+ return wc;
7304
7561
  }
7305
- function xc() {
7306
- vc &&= (vc(), null), gc &&= (gc(), null), _c?.parentNode && _c.parentNode.removeChild(_c), _c = null;
7562
+ function wc() {
7563
+ xc &&= (xc(), null), yc &&= (yc(), null), bc?.parentNode && bc.parentNode.removeChild(bc), bc = null;
7307
7564
  }
7308
7565
  if (typeof document < "u") {
7309
7566
  let e = document.currentScript ?? document.querySelector("script[data-markup-widget=\"true\"]"), t = e?.dataset.apiUrl, n = e?.dataset.apiKey;
7310
7567
  if (t && n) {
7311
- let r = e?.dataset.position, i = e?.dataset.theme, a = e?.dataset.fab, o = e?.dataset.dashboardUrl, s = () => bc({
7568
+ let r = e?.dataset.position, i = e?.dataset.theme, a = e?.dataset.fab, o = e?.dataset.dashboardUrl, s = () => Cc({
7312
7569
  apiUrl: t,
7313
7570
  apiKey: n,
7314
7571
  position: r,
@@ -7320,6 +7577,6 @@ if (typeof document < "u") {
7320
7577
  }
7321
7578
  }
7322
7579
  //#endregion
7323
- export { xc as destroy, bc as init };
7580
+ export { wc as destroy, Cc as init };
7324
7581
 
7325
7582
  //# sourceMappingURL=widget.js.map