linear-grab 0.25.0 → 0.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/linear-grab-bridge.mjs +14 -3
- package/bin/slop-scan.global.js +3 -3
- package/dist/index.global.js +7 -7
- package/dist/linear-grab.js +289 -234
- package/dist/slop-scan.global.js +3 -3
- package/package.json +1 -1
package/dist/linear-grab.js
CHANGED
|
@@ -46867,7 +46867,10 @@ function M4(e) {
|
|
|
46867
46867
|
for (let [e, t] of n) {
|
|
46868
46868
|
let n = t[0];
|
|
46869
46869
|
o.push(`## ${e} — ${n.severity} ×${t.length} [${n.part}]`), o.push(n.description);
|
|
46870
|
-
for (let e of t)
|
|
46870
|
+
for (let e of t) {
|
|
46871
|
+
let t = e.component || e.source ? ` — ${[e.component, e.source].filter(Boolean).join(" @ ")}` : "";
|
|
46872
|
+
o.push(`- ${a && e.page ? `\`${e.page}\` ` : ""}\`${e.selector}\` — ${e.evidence}${t}`);
|
|
46873
|
+
}
|
|
46871
46874
|
o.push("");
|
|
46872
46875
|
}
|
|
46873
46876
|
return o.join("\n");
|
|
@@ -46896,7 +46899,10 @@ function N4(e) {
|
|
|
46896
46899
|
" The scan already excludes them; do not \"fix\" them.",
|
|
46897
46900
|
"5. 'unverifiable' warnings mean the token collapsed to the anti-pattern this",
|
|
46898
46901
|
" theme — verify the intent in BOTH themes, do not just silence it.",
|
|
46899
|
-
"6.
|
|
46902
|
+
"6. Findings carry `Component @ file:line` when the fiber source resolved.",
|
|
46903
|
+
" When one file:line repeats across many components it is the nearest-",
|
|
46904
|
+
" debug-fiber fallback — locate the real code by the selector classes.",
|
|
46905
|
+
"7. PROOF REQUIRED: after the change I will re-run the scan — it must show 0",
|
|
46900
46906
|
" errors. State what you changed per token/variant; do not claim done blind.",
|
|
46901
46907
|
"",
|
|
46902
46908
|
"---",
|
|
@@ -46921,9 +46927,42 @@ function R4() {
|
|
|
46921
46927
|
}));
|
|
46922
46928
|
P4 = [...t, ...P4.filter((t) => t.page !== e)];
|
|
46923
46929
|
for (let e of F4) e(P4);
|
|
46924
|
-
return z4(t)
|
|
46930
|
+
return z4(t).then(() => {
|
|
46931
|
+
P4 = [...P4];
|
|
46932
|
+
for (let e of F4) e(P4);
|
|
46933
|
+
B4(t);
|
|
46934
|
+
}), t;
|
|
46935
|
+
}
|
|
46936
|
+
async function z4(e) {
|
|
46937
|
+
let t = null;
|
|
46938
|
+
try {
|
|
46939
|
+
t = (await Promise.resolve().then(() => (RZ(), AZ))).getGlobalApi() ?? null;
|
|
46940
|
+
} catch {
|
|
46941
|
+
return;
|
|
46942
|
+
}
|
|
46943
|
+
if (!t) return;
|
|
46944
|
+
let n = /* @__PURE__ */ new Map();
|
|
46945
|
+
for (let t of e) {
|
|
46946
|
+
let e = t.el?.deref();
|
|
46947
|
+
if (!e) continue;
|
|
46948
|
+
let r = n.get(e);
|
|
46949
|
+
r ? r.push(t) : n.set(e, [t]);
|
|
46950
|
+
}
|
|
46951
|
+
let r = 300;
|
|
46952
|
+
for (let [e, i] of n) {
|
|
46953
|
+
if (r-- <= 0) break;
|
|
46954
|
+
let n = null, a = null;
|
|
46955
|
+
try {
|
|
46956
|
+
n = t.getDisplayName?.(e) ?? null;
|
|
46957
|
+
} catch {}
|
|
46958
|
+
try {
|
|
46959
|
+
let n = await t.getSource?.(e);
|
|
46960
|
+
n?.filePath && (a = `${n.filePath}${n.lineNumber == null ? "" : `:${n.lineNumber}`}`);
|
|
46961
|
+
} catch {}
|
|
46962
|
+
if (!(!n && !a)) for (let e of i) e.component = n, e.source = a;
|
|
46963
|
+
}
|
|
46925
46964
|
}
|
|
46926
|
-
function
|
|
46965
|
+
function B4(e) {
|
|
46927
46966
|
if (e.length === 0) return;
|
|
46928
46967
|
let t = Date.now(), n = e.slice(0, 200).map(({ el: e, ...n }) => ({
|
|
46929
46968
|
kind: "slop-scan",
|
|
@@ -46937,59 +46976,59 @@ function z4(e) {
|
|
|
46937
46976
|
keepalive: !0
|
|
46938
46977
|
})).catch(() => {});
|
|
46939
46978
|
}
|
|
46940
|
-
var
|
|
46979
|
+
var V4 = !1;
|
|
46941
46980
|
try {
|
|
46942
|
-
|
|
46981
|
+
V4 = localStorage.getItem("linear-grab:slop-live") === "1";
|
|
46943
46982
|
} catch {}
|
|
46944
|
-
var
|
|
46945
|
-
function
|
|
46946
|
-
return
|
|
46983
|
+
var H4 = /* @__PURE__ */ new Set();
|
|
46984
|
+
function U4() {
|
|
46985
|
+
return V4;
|
|
46947
46986
|
}
|
|
46948
|
-
function
|
|
46949
|
-
|
|
46987
|
+
function W4(e) {
|
|
46988
|
+
V4 = e;
|
|
46950
46989
|
try {
|
|
46951
46990
|
localStorage.setItem("linear-grab:slop-live", e ? "1" : "0");
|
|
46952
46991
|
} catch {}
|
|
46953
|
-
for (let t of
|
|
46954
|
-
e &&
|
|
46992
|
+
for (let t of H4) t(e);
|
|
46993
|
+
e && q4(300);
|
|
46955
46994
|
}
|
|
46956
|
-
function
|
|
46957
|
-
return
|
|
46995
|
+
function G4(e) {
|
|
46996
|
+
return H4.add(e), e(V4), () => void H4.delete(e);
|
|
46958
46997
|
}
|
|
46959
|
-
var
|
|
46960
|
-
function
|
|
46961
|
-
|
|
46962
|
-
if (
|
|
46998
|
+
var K4 = null;
|
|
46999
|
+
function q4(e) {
|
|
47000
|
+
K4 && clearTimeout(K4), K4 = setTimeout(() => {
|
|
47001
|
+
if (K4 = null, V4) try {
|
|
46963
47002
|
R4();
|
|
46964
47003
|
} catch {}
|
|
46965
47004
|
}, e);
|
|
46966
47005
|
}
|
|
46967
|
-
var
|
|
46968
|
-
function
|
|
46969
|
-
if (
|
|
46970
|
-
|
|
47006
|
+
var J4 = !1;
|
|
47007
|
+
function Y4() {
|
|
47008
|
+
if (J4 || typeof window > "u") return;
|
|
47009
|
+
J4 = !0;
|
|
46971
47010
|
let e = location.pathname;
|
|
46972
47011
|
setInterval(() => {
|
|
46973
|
-
location.pathname !== e && (e = location.pathname,
|
|
47012
|
+
location.pathname !== e && (e = location.pathname, V4 && q4(1e3));
|
|
46974
47013
|
}, 500);
|
|
46975
47014
|
}
|
|
46976
47015
|
//#endregion
|
|
46977
47016
|
//#region src/panel/views/DesignView.tsx
|
|
46978
|
-
var
|
|
46979
|
-
function
|
|
47017
|
+
var X4 = /*#__PURE__*/ P("<span class=\"inline-block min-w-[7ch] text-center\">Extract"), Z4 = /*#__PURE__*/ P("<div class=\"relative flex flex-col gap-2 pl-4\"><div class=\"bg-border absolute top-1 bottom-1 left-[5px] w-px\"aria-hidden>"), Q4 = /*#__PURE__*/ P("<span class=\"text-success text-[12px] leading-none\">✓"), $4 = /*#__PURE__*/ P("<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round aria-hidden><path d=\"M4 4l8 8M12 4l-8 8\">"), e3 = /*#__PURE__*/ P("<div class=\"flex items-center justify-end gap-1 px-1\">"), t3 = /*#__PURE__*/ P("<span class=\"relative inline-flex items-center justify-center\"><svg width=12 height=12 viewBox=\"0 0 16 16\"fill=currentColor aria-hidden><rect x=3.5 y=3 width=3.2 height=10 rx=1></rect><rect x=9.3 y=3 width=3.2 height=10 rx=1></rect></svg><span class=\"bg-success absolute -top-0.5 -right-0.5 size-1.5 animate-pulse rounded-full\"aria-hidden>"), n3 = /*#__PURE__*/ P("<span class=\"inline-block min-w-[5ch] text-center\">Audit"), r3 = /*#__PURE__*/ P("<div class=\"flex max-h-72 flex-col gap-1.5 overflow-y-auto pr-2\">"), i3 = /*#__PURE__*/ P("<span class=\"text-[12px] leading-none\">✓"), a3 = /*#__PURE__*/ P("<div class=\"flex items-center gap-1 px-1\">"), o3 = /*#__PURE__*/ P("<span class=\"text-text-faint font-normal tabular-nums\"> · <!> pages"), s3 = /*#__PURE__*/ P("<span class=\"inline-block min-w-[4ch] text-center\">Scan"), c3 = /*#__PURE__*/ P("<div class=\"flex items-center gap-1 px-1\"><button class=\"border-border cursor-pointer rounded-full border px-2 py-0.5 text-[10px] font-medium tabular-nums\"> errors</button><button class=\"border-border cursor-pointer rounded-full border px-2 py-0.5 text-[10px] font-medium tabular-nums\"> warns"), l3 = /*#__PURE__*/ P("<div class=\"flex h-full flex-col gap-3 overflow-y-auto pt-3 pb-4 pr-3 pl-2\"><div class=\"flex items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">Design genomes</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Point at a component → get its structure, tokens and interaction states as a spec you can hand to an agent.</p></div></div><div class=\"border-border mt-1 flex flex-col gap-2 border-t pt-3\"><div class=\"flex items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">CSS slowdowns</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Transitions/delays over the 100ms house cap (§42) on interactive elements — feedback that animates instead of being instant. Live hits appear as you use the app; Audit sweeps the whole page.</p></div><div class=\"flex shrink-0 items-center gap-1\"></div></div></div><div class=\"border-border mt-1 flex flex-col gap-2 border-t pt-3\"><div class=\"flex items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">Slop scan</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Design-contract drift — Linear-primitives rules checked against the live DOM. Results accumulate per page as you navigate; re-scanning a page overwrites only that page's findings.</p></div><div class=\"flex shrink-0 items-center gap-1\">"), u3 = /*#__PURE__*/ P("<p class=\"text-text mt-1 text-[11px] font-semibold\">Interaction states"), d3 = /*#__PURE__*/ P("<svg width=12 height=12 viewBox=\"0 0 16 16\"aria-hidden><rect x=3.5 y=3.5 width=9 height=9 rx=1.5 fill=currentColor>"), f3 = /*#__PURE__*/ P("<span class=\"text-warn text-[10.5px] font-medium tabular-nums\">s · <!> states"), p3 = /*#__PURE__*/ P("<div class=\"border-border flex flex-col gap-2 border-t px-2.5 py-2\"><p class=\"text-text-faint truncate text-[10px]\"></p><div class=\"flex max-h-64 flex-col gap-2 overflow-y-auto pr-2\"></div><div class=\"flex items-center gap-1\">"), m3 = /*#__PURE__*/ P("<div class=relative><span class=\"border-border bg-surface absolute top-3 -left-[13.5px] size-[9px] rounded-full border\"aria-hidden></span><div class=\"bg-surface border-border flex flex-col rounded-lg border\"><button class=\"flex w-full cursor-pointer items-center gap-2 px-2.5 py-2 text-left\"><span class=\"text-accent min-w-0 truncate font-mono text-[12px]\"></span><span class=\"text-text-faint ml-auto shrink-0 text-[10.5px] tabular-nums\"> roles<!> · </span><svg width=10 height=10 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 class=\"text-text-faint shrink-0 transition-transform\"aria-hidden><path d=\"m4 6 4 4 4-4\">"), h3 = /*#__PURE__*/ P("<span class=text-text-faint> ×"), g3 = /*#__PURE__*/ P("<div class=\"flex flex-col gap-0.5\"><p class=\"text-text text-[11px] font-medium\">"), _3 = /*#__PURE__*/ P("<span class=text-accent> ← var(<!>)"), v3 = /*#__PURE__*/ P("<p class=\"text-text-dim font-mono text-[10px] leading-snug break-all\">: "), y3 = /*#__PURE__*/ P("<div class=\"flex flex-col gap-0.5\"><p class=\"text-warn text-[10.5px] font-medium\"> — "), b3 = /*#__PURE__*/ P("<p class=\"text-text-dim font-mono text-[10px] leading-snug break-all\">: <!> → "), x3 = /*#__PURE__*/ P("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round aria-hidden><circle cx=8 cy=8 r=6></circle><circle cx=8 cy=8 r=2 fill=currentColor stroke=none>"), S3 = /*#__PURE__*/ P("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linejoin=round aria-hidden><rect x=5.5 y=5.5 width=9 height=9 rx=1.5></rect><path d=\"M10.5 5.5v-2a2 2 0 0 0-2-2h-5a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h2\">"), C3 = /*#__PURE__*/ P("<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=currentColor aria-hidden><path d=\"M4.5 2.5v11l9-5.5z\">"), w3 = /*#__PURE__*/ P("<p class=\"text-text-faint px-1 text-[10.5px]\">Nothing caught yet — interact with the app, or run Audit."), T3 = /*#__PURE__*/ P("<span class=\"text-text-dim font-mono text-[10px] break-all\">"), E3 = /*#__PURE__*/ P("<span class=\"text-danger text-[10px] leading-snug\">⚠ layout/paint transition: "), D3 = /*#__PURE__*/ P("<span class=\"text-danger text-[10px] leading-snug\">⚠ ease-in easing: "), O3 = /*#__PURE__*/ P("<div class=\"bg-surface border-border flex flex-col gap-0.5 rounded-lg border p-2\"><div class=\"flex items-center gap-2\"><span class=\"text-warn shrink-0 text-[10px] font-semibold tracking-wide uppercase\"></span><span class=\"text-accent min-w-0 truncate font-mono text-[11.5px]\"></span><span class=\"text-text ml-auto shrink-0 text-[11px] font-medium tabular-nums\">ms</span></div><span class=\"text-text-dim text-[10px] leading-snug\"></span><span class=\"text-text-faint text-[10px] leading-snug\">"), k3 = /*#__PURE__*/ P("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round aria-hidden><path d=\"M8 1.5 9.6 6l4.4 1.6L9.6 9.2 8 13.7 6.4 9.2 2 7.6 6.4 6Z\"></path><path d=\"M13 11.5l.6 1.7 1.7.6-1.7.6-.6 1.7-.6-1.7-1.7-.6 1.7-.6Z\">"), A3 = /*#__PURE__*/ P("<p class=\"text-text-faint px-1 text-[10.5px]\">No scan yet — click Scan to audit this page against the contract."), j3 = /*#__PURE__*/ P("<div class=\"border-border flex flex-col gap-1 border-t px-2 py-1.5\"><p class=\"text-text-dim text-[10px] leading-snug\">"), M3 = /*#__PURE__*/ P("<div class=\"bg-surface border-border flex flex-col rounded-lg border\"><button class=\"flex w-full cursor-pointer items-center gap-2 px-2 py-1.5 text-left\"><span class=\"size-1.5 shrink-0 rounded-full\"aria-hidden></span><span class=\"text-accent min-w-0 truncate font-mono text-[11.5px]\"></span><span class=\"text-text-faint ml-auto shrink-0 text-[10.5px] tabular-nums\">×</span><svg width=10 height=10 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 class=\"text-text-faint shrink-0 transition-transform\"aria-hidden><path d=\"m4 6 4 4 4-4\">"), N3 = /*#__PURE__*/ P("<span class=text-accent> "), P3 = /*#__PURE__*/ P("<button class=\"hover:bg-surface-2 flex w-full cursor-pointer flex-col gap-0.5 rounded px-1 py-0.5 text-left\"title=\"Reveal on the page\"><span class=\"text-text min-w-0 truncate font-mono text-[10.5px]\"></span><span class=\"text-text-faint font-mono text-[10px] leading-snug break-all\">"), F3 = "linear-grab:genomes:v1", I3 = 30;
|
|
47018
|
+
function L3() {
|
|
46980
47019
|
try {
|
|
46981
|
-
return JSON.parse(localStorage.getItem(
|
|
47020
|
+
return JSON.parse(localStorage.getItem(F3) ?? "[]");
|
|
46982
47021
|
} catch {
|
|
46983
47022
|
return [];
|
|
46984
47023
|
}
|
|
46985
47024
|
}
|
|
46986
|
-
function
|
|
47025
|
+
function R3(e) {
|
|
46987
47026
|
try {
|
|
46988
|
-
localStorage.setItem(
|
|
47027
|
+
localStorage.setItem(F3, JSON.stringify(e.slice(0, I3)));
|
|
46989
47028
|
} catch {}
|
|
46990
47029
|
}
|
|
46991
|
-
var
|
|
46992
|
-
function
|
|
47030
|
+
var z3 = /* @__PURE__ */ new Map();
|
|
47031
|
+
function B3(e) {
|
|
46993
47032
|
let t = e.el?.deref();
|
|
46994
47033
|
if (!(t instanceof HTMLElement) || !t.isConnected) return !1;
|
|
46995
47034
|
t.scrollIntoView({
|
|
@@ -47001,8 +47040,8 @@ function z3(e) {
|
|
|
47001
47040
|
t.style.outline = n, t.style.outlineOffset = r;
|
|
47002
47041
|
}, 1400), !0;
|
|
47003
47042
|
}
|
|
47004
|
-
function
|
|
47005
|
-
let [e, t] = T(
|
|
47043
|
+
function V3() {
|
|
47044
|
+
let [e, t] = T(L3()), [n, r] = T(null), [i, a] = T(null), [o, s] = T(null), [c, l] = T(null), [u, d] = T(null), [f, p] = T({
|
|
47006
47045
|
active: !1,
|
|
47007
47046
|
msLeft: 0,
|
|
47008
47047
|
total: 0,
|
|
@@ -47034,8 +47073,8 @@ function B3() {
|
|
|
47034
47073
|
}
|
|
47035
47074
|
}, [k, ee] = T([]);
|
|
47036
47075
|
ie(I4(ee));
|
|
47037
|
-
let [A, j] = T(
|
|
47038
|
-
ie(
|
|
47076
|
+
let [A, j] = T(U4());
|
|
47077
|
+
ie(G4(j));
|
|
47039
47078
|
let [te, ne] = T(!1), [re, ae] = T(null), [oe, se] = T(!0), [ce, le] = T(!0), [ue, de] = T(!1), [fe, pe] = T(!1), me = () => {
|
|
47040
47079
|
l(null), ne(!0);
|
|
47041
47080
|
try {
|
|
@@ -47067,14 +47106,14 @@ function B3() {
|
|
|
47067
47106
|
l("Clipboard was blocked — click Copy again.");
|
|
47068
47107
|
}
|
|
47069
47108
|
}, Ce = (e) => {
|
|
47070
|
-
t(e),
|
|
47109
|
+
t(e), R3(e);
|
|
47071
47110
|
}, we = async () => {
|
|
47072
47111
|
l(null), a("extract"), window.dispatchEvent(new CustomEvent(BZ));
|
|
47073
47112
|
try {
|
|
47074
47113
|
let t = await u2();
|
|
47075
47114
|
if (!t) return;
|
|
47076
47115
|
let n = await e2(t), i = Date.now();
|
|
47077
|
-
|
|
47116
|
+
z3.set(i, new WeakRef(t)), Ce([{
|
|
47078
47117
|
id: i,
|
|
47079
47118
|
genome: n
|
|
47080
47119
|
}, ...e()]), r(i);
|
|
@@ -47086,10 +47125,10 @@ function B3() {
|
|
|
47086
47125
|
}, Te = async (t) => {
|
|
47087
47126
|
l(null), a(t.id), window.dispatchEvent(new CustomEvent(BZ));
|
|
47088
47127
|
try {
|
|
47089
|
-
let n =
|
|
47128
|
+
let n = z3.get(t.id)?.deref() ?? null;
|
|
47090
47129
|
if (!n || !n.isConnected) {
|
|
47091
47130
|
if (n = await u2(), !n) return;
|
|
47092
|
-
|
|
47131
|
+
z3.set(t.id, new WeakRef(n));
|
|
47093
47132
|
}
|
|
47094
47133
|
let r = await c2(n, 8e3, (e) => s(Math.ceil(e / 1e3)));
|
|
47095
47134
|
r.length === 0 && l("No state changes captured — hover/open the component while the 8s window runs."), Ce(e().map((e) => e.id === t.id ? {
|
|
@@ -47111,7 +47150,7 @@ function B3() {
|
|
|
47111
47150
|
l("Clipboard was blocked — click Copy again.");
|
|
47112
47151
|
}
|
|
47113
47152
|
}, De = (t) => {
|
|
47114
|
-
|
|
47153
|
+
z3.delete(t), Ce(e().filter((e) => e.id !== t));
|
|
47115
47154
|
}, [Oe, ke] = T(!1), Ae = async () => {
|
|
47116
47155
|
try {
|
|
47117
47156
|
let t = e().map((e) => l2(e.genome)).join("\n\n---\n\n");
|
|
@@ -47120,10 +47159,10 @@ function B3() {
|
|
|
47120
47159
|
l("Clipboard was blocked — click Copy again.");
|
|
47121
47160
|
}
|
|
47122
47161
|
}, je = () => {
|
|
47123
|
-
|
|
47162
|
+
z3.clear(), Ce([]), r(null);
|
|
47124
47163
|
};
|
|
47125
47164
|
return (() => {
|
|
47126
|
-
var t =
|
|
47165
|
+
var t = l3(), a = t.firstChild;
|
|
47127
47166
|
a.firstChild;
|
|
47128
47167
|
var o = a.nextSibling, s = o.firstChild.firstChild.nextSibling, d = o.nextSibling, p = d.firstChild.firstChild, h = p.firstChild;
|
|
47129
47168
|
h.firstChild;
|
|
@@ -47136,7 +47175,7 @@ function B3() {
|
|
|
47136
47175
|
},
|
|
47137
47176
|
onClick: () => void we(),
|
|
47138
47177
|
get children() {
|
|
47139
|
-
return
|
|
47178
|
+
return X4();
|
|
47140
47179
|
}
|
|
47141
47180
|
}), null), F(t, M(N, {
|
|
47142
47181
|
get when() {
|
|
@@ -47159,7 +47198,7 @@ function B3() {
|
|
|
47159
47198
|
},
|
|
47160
47199
|
get children() {
|
|
47161
47200
|
return [(() => {
|
|
47162
|
-
var t =
|
|
47201
|
+
var t = Z4();
|
|
47163
47202
|
return t.firstChild, F(t, M(Ue, {
|
|
47164
47203
|
get each() {
|
|
47165
47204
|
return e();
|
|
@@ -47167,7 +47206,7 @@ function B3() {
|
|
|
47167
47206
|
children: (e) => {
|
|
47168
47207
|
let t = () => n() === e.id;
|
|
47169
47208
|
return (() => {
|
|
47170
|
-
var n =
|
|
47209
|
+
var n = m3(), a = n.firstChild, o = a.nextSibling, s = o.firstChild, c = s.firstChild, l = c.nextSibling, d = l.firstChild, p = d.nextSibling;
|
|
47171
47210
|
p.nextSibling;
|
|
47172
47211
|
var m = l.nextSibling;
|
|
47173
47212
|
return s.$$click = () => r(t() ? null : e.id), F(c, () => e.genome.title), F(l, () => e.genome.nodes.length, d), F(l, (() => {
|
|
@@ -47178,19 +47217,19 @@ function B3() {
|
|
|
47178
47217
|
return t();
|
|
47179
47218
|
},
|
|
47180
47219
|
get children() {
|
|
47181
|
-
var t =
|
|
47220
|
+
var t = p3(), n = t.firstChild, r = n.nextSibling, a = r.nextSibling;
|
|
47182
47221
|
return F(n, () => e.genome.pageUrl), F(r, M(Ue, {
|
|
47183
47222
|
get each() {
|
|
47184
47223
|
return e.genome.nodes;
|
|
47185
47224
|
},
|
|
47186
47225
|
children: (e) => (() => {
|
|
47187
|
-
var t =
|
|
47226
|
+
var t = g3(), n = t.firstChild;
|
|
47188
47227
|
return F(n, () => e.label, null), F(n, M(N, {
|
|
47189
47228
|
get when() {
|
|
47190
47229
|
return e.count > 1;
|
|
47191
47230
|
},
|
|
47192
47231
|
get children() {
|
|
47193
|
-
var t =
|
|
47232
|
+
var t = h3();
|
|
47194
47233
|
return t.firstChild, F(t, () => e.count, null), t;
|
|
47195
47234
|
}
|
|
47196
47235
|
}), null), F(t, M(Ue, {
|
|
@@ -47198,13 +47237,13 @@ function B3() {
|
|
|
47198
47237
|
return Object.entries(e.styles);
|
|
47199
47238
|
},
|
|
47200
47239
|
children: ([t, n]) => (() => {
|
|
47201
|
-
var r =
|
|
47240
|
+
var r = v3(), i = r.firstChild;
|
|
47202
47241
|
return F(r, t, i), F(r, n, null), F(r, M(N, {
|
|
47203
47242
|
get when() {
|
|
47204
47243
|
return e.tokens[t];
|
|
47205
47244
|
},
|
|
47206
47245
|
get children() {
|
|
47207
|
-
var n =
|
|
47246
|
+
var n = _3(), r = n.firstChild.nextSibling;
|
|
47208
47247
|
return r.nextSibling, F(n, () => e.tokens[t], r), n;
|
|
47209
47248
|
}
|
|
47210
47249
|
}), null), r;
|
|
@@ -47216,18 +47255,18 @@ function B3() {
|
|
|
47216
47255
|
return e.genome.states.length > 0;
|
|
47217
47256
|
},
|
|
47218
47257
|
get children() {
|
|
47219
|
-
return [
|
|
47258
|
+
return [u3(), M(Ue, {
|
|
47220
47259
|
get each() {
|
|
47221
47260
|
return e.genome.states;
|
|
47222
47261
|
},
|
|
47223
47262
|
children: (e) => (() => {
|
|
47224
|
-
var t =
|
|
47263
|
+
var t = y3(), n = t.firstChild, r = n.firstChild;
|
|
47225
47264
|
return F(n, () => e.label, r), F(n, () => e.trigger, null), F(t, M(Ue, {
|
|
47226
47265
|
get each() {
|
|
47227
47266
|
return Object.entries(e.changed);
|
|
47228
47267
|
},
|
|
47229
47268
|
children: ([e, t]) => (() => {
|
|
47230
|
-
var n =
|
|
47269
|
+
var n = b3(), r = n.firstChild, i = r.nextSibling;
|
|
47231
47270
|
return i.nextSibling, F(n, e, r), F(n, () => t.from, i), F(n, () => t.to, null), n;
|
|
47232
47271
|
})()
|
|
47233
47272
|
}), null), t;
|
|
@@ -47249,7 +47288,7 @@ function B3() {
|
|
|
47249
47288
|
"aria-label": "Capture interaction states",
|
|
47250
47289
|
onClick: () => void Te(e),
|
|
47251
47290
|
get children() {
|
|
47252
|
-
return
|
|
47291
|
+
return x3();
|
|
47253
47292
|
}
|
|
47254
47293
|
});
|
|
47255
47294
|
},
|
|
@@ -47263,10 +47302,10 @@ function B3() {
|
|
|
47263
47302
|
"aria-label": "Stop recording states",
|
|
47264
47303
|
onClick: () => o2(),
|
|
47265
47304
|
get children() {
|
|
47266
|
-
return
|
|
47305
|
+
return d3();
|
|
47267
47306
|
}
|
|
47268
47307
|
}), (() => {
|
|
47269
|
-
var e =
|
|
47308
|
+
var e = f3(), t = e.firstChild, n = t.nextSibling;
|
|
47270
47309
|
return n.nextSibling, F(e, () => Math.ceil(f().msLeft / 1e3), t), F(e, () => f().total, n), e;
|
|
47271
47310
|
})()];
|
|
47272
47311
|
}
|
|
@@ -47284,10 +47323,10 @@ function B3() {
|
|
|
47284
47323
|
return u() === e.id;
|
|
47285
47324
|
},
|
|
47286
47325
|
get fallback() {
|
|
47287
|
-
return
|
|
47326
|
+
return S3();
|
|
47288
47327
|
},
|
|
47289
47328
|
get children() {
|
|
47290
|
-
return
|
|
47329
|
+
return Q4();
|
|
47291
47330
|
}
|
|
47292
47331
|
});
|
|
47293
47332
|
}
|
|
@@ -47298,7 +47337,7 @@ function B3() {
|
|
|
47298
47337
|
"aria-label": "Delete genome",
|
|
47299
47338
|
onClick: () => De(e.id),
|
|
47300
47339
|
get children() {
|
|
47301
|
-
return
|
|
47340
|
+
return $4();
|
|
47302
47341
|
}
|
|
47303
47342
|
}), null), t;
|
|
47304
47343
|
}
|
|
@@ -47313,7 +47352,7 @@ function B3() {
|
|
|
47313
47352
|
}
|
|
47314
47353
|
}), null), t;
|
|
47315
47354
|
})(), (() => {
|
|
47316
|
-
var e =
|
|
47355
|
+
var e = e3();
|
|
47317
47356
|
return F(e, M(kj, {
|
|
47318
47357
|
class: "size-7 px-0",
|
|
47319
47358
|
variant: "ghost",
|
|
@@ -47328,10 +47367,10 @@ function B3() {
|
|
|
47328
47367
|
return Oe();
|
|
47329
47368
|
},
|
|
47330
47369
|
get fallback() {
|
|
47331
|
-
return
|
|
47370
|
+
return S3();
|
|
47332
47371
|
},
|
|
47333
47372
|
get children() {
|
|
47334
|
-
return
|
|
47373
|
+
return Q4();
|
|
47335
47374
|
}
|
|
47336
47375
|
});
|
|
47337
47376
|
}
|
|
@@ -47342,7 +47381,7 @@ function B3() {
|
|
|
47342
47381
|
"aria-label": "Delete all genomes",
|
|
47343
47382
|
onClick: je,
|
|
47344
47383
|
get children() {
|
|
47345
|
-
return
|
|
47384
|
+
return $4();
|
|
47346
47385
|
}
|
|
47347
47386
|
}), null), e;
|
|
47348
47387
|
})()];
|
|
@@ -47363,10 +47402,10 @@ function B3() {
|
|
|
47363
47402
|
return g();
|
|
47364
47403
|
},
|
|
47365
47404
|
get fallback() {
|
|
47366
|
-
return
|
|
47405
|
+
return C3();
|
|
47367
47406
|
},
|
|
47368
47407
|
get children() {
|
|
47369
|
-
return
|
|
47408
|
+
return t3();
|
|
47370
47409
|
}
|
|
47371
47410
|
});
|
|
47372
47411
|
}
|
|
@@ -47378,24 +47417,24 @@ function B3() {
|
|
|
47378
47417
|
},
|
|
47379
47418
|
onClick: () => void S(),
|
|
47380
47419
|
get children() {
|
|
47381
|
-
return
|
|
47420
|
+
return n3();
|
|
47382
47421
|
}
|
|
47383
47422
|
}), null), F(o, M(N, {
|
|
47384
47423
|
get when() {
|
|
47385
47424
|
return m().length > 0;
|
|
47386
47425
|
},
|
|
47387
47426
|
get fallback() {
|
|
47388
|
-
return
|
|
47427
|
+
return w3();
|
|
47389
47428
|
},
|
|
47390
47429
|
get children() {
|
|
47391
47430
|
return [(() => {
|
|
47392
|
-
var e =
|
|
47431
|
+
var e = r3();
|
|
47393
47432
|
return F(e, M(Ue, {
|
|
47394
47433
|
get each() {
|
|
47395
47434
|
return m();
|
|
47396
47435
|
},
|
|
47397
47436
|
children: (e) => (() => {
|
|
47398
|
-
var t =
|
|
47437
|
+
var t = O3(), n = t.firstChild, r = n.firstChild, i = r.nextSibling, a = i.nextSibling, o = a.firstChild, s = n.nextSibling, c = s.nextSibling;
|
|
47399
47438
|
return F(r, () => e.mode === "live" ? "live" : "audit"), F(i, () => e.component ?? e.element, null), F(i, M(N, {
|
|
47400
47439
|
get when() {
|
|
47401
47440
|
return e.count > 1;
|
|
@@ -47411,7 +47450,7 @@ function B3() {
|
|
|
47411
47450
|
return e.source;
|
|
47412
47451
|
},
|
|
47413
47452
|
get children() {
|
|
47414
|
-
var t =
|
|
47453
|
+
var t = T3();
|
|
47415
47454
|
return F(t, () => e.source), t;
|
|
47416
47455
|
}
|
|
47417
47456
|
}), s), F(s, () => e.properties.join(", "), null), F(s, M(N, {
|
|
@@ -47430,7 +47469,7 @@ function B3() {
|
|
|
47430
47469
|
return e.jankProps?.length;
|
|
47431
47470
|
},
|
|
47432
47471
|
get children() {
|
|
47433
|
-
var t =
|
|
47472
|
+
var t = E3();
|
|
47434
47473
|
return t.firstChild, F(t, () => e.jankProps.join(", "), null), t;
|
|
47435
47474
|
}
|
|
47436
47475
|
}), c), F(t, M(N, {
|
|
@@ -47438,14 +47477,14 @@ function B3() {
|
|
|
47438
47477
|
return e.easing;
|
|
47439
47478
|
},
|
|
47440
47479
|
get children() {
|
|
47441
|
-
var t =
|
|
47480
|
+
var t = D3();
|
|
47442
47481
|
return t.firstChild, F(t, () => e.easing, null), t;
|
|
47443
47482
|
}
|
|
47444
47483
|
}), c), F(c, () => e.suggestion), t;
|
|
47445
47484
|
})()
|
|
47446
47485
|
})), e;
|
|
47447
47486
|
})(), (() => {
|
|
47448
|
-
var e =
|
|
47487
|
+
var e = a3();
|
|
47449
47488
|
return F(e, M(kj, {
|
|
47450
47489
|
class: "size-7 px-0",
|
|
47451
47490
|
variant: "primary",
|
|
@@ -47460,10 +47499,10 @@ function B3() {
|
|
|
47460
47499
|
return w();
|
|
47461
47500
|
},
|
|
47462
47501
|
get fallback() {
|
|
47463
|
-
return
|
|
47502
|
+
return k3();
|
|
47464
47503
|
},
|
|
47465
47504
|
get children() {
|
|
47466
|
-
return
|
|
47505
|
+
return i3();
|
|
47467
47506
|
}
|
|
47468
47507
|
});
|
|
47469
47508
|
}
|
|
@@ -47481,10 +47520,10 @@ function B3() {
|
|
|
47481
47520
|
return b();
|
|
47482
47521
|
},
|
|
47483
47522
|
get fallback() {
|
|
47484
|
-
return
|
|
47523
|
+
return S3();
|
|
47485
47524
|
},
|
|
47486
47525
|
get children() {
|
|
47487
|
-
return
|
|
47526
|
+
return Q4();
|
|
47488
47527
|
}
|
|
47489
47528
|
});
|
|
47490
47529
|
}
|
|
@@ -47495,7 +47534,7 @@ function B3() {
|
|
|
47495
47534
|
"aria-label": "Clear all findings",
|
|
47496
47535
|
onClick: M2,
|
|
47497
47536
|
get children() {
|
|
47498
|
-
return
|
|
47537
|
+
return $4();
|
|
47499
47538
|
}
|
|
47500
47539
|
}), null), e;
|
|
47501
47540
|
})()];
|
|
@@ -47505,7 +47544,7 @@ function B3() {
|
|
|
47505
47544
|
return ge() > 1;
|
|
47506
47545
|
},
|
|
47507
47546
|
get children() {
|
|
47508
|
-
var e =
|
|
47547
|
+
var e = o3(), t = e.firstChild.nextSibling;
|
|
47509
47548
|
return t.nextSibling, F(e, ge, t), e;
|
|
47510
47549
|
}
|
|
47511
47550
|
}), null), F(_, M(kj, {
|
|
@@ -47517,17 +47556,17 @@ function B3() {
|
|
|
47517
47556
|
get "aria-label"() {
|
|
47518
47557
|
return A() ? "Pause live scan" : "Start live scan";
|
|
47519
47558
|
},
|
|
47520
|
-
onClick: () =>
|
|
47559
|
+
onClick: () => W4(!A()),
|
|
47521
47560
|
get children() {
|
|
47522
47561
|
return M(N, {
|
|
47523
47562
|
get when() {
|
|
47524
47563
|
return A();
|
|
47525
47564
|
},
|
|
47526
47565
|
get fallback() {
|
|
47527
|
-
return
|
|
47566
|
+
return C3();
|
|
47528
47567
|
},
|
|
47529
47568
|
get children() {
|
|
47530
|
-
return
|
|
47569
|
+
return t3();
|
|
47531
47570
|
}
|
|
47532
47571
|
});
|
|
47533
47572
|
}
|
|
@@ -47540,19 +47579,19 @@ function B3() {
|
|
|
47540
47579
|
title: "Scan this page — cumulative: keeps other pages' findings, replaces this page's",
|
|
47541
47580
|
onClick: me,
|
|
47542
47581
|
get children() {
|
|
47543
|
-
return
|
|
47582
|
+
return s3();
|
|
47544
47583
|
}
|
|
47545
47584
|
}), null), F(d, M(N, {
|
|
47546
47585
|
get when() {
|
|
47547
47586
|
return k().length > 0;
|
|
47548
47587
|
},
|
|
47549
47588
|
get fallback() {
|
|
47550
|
-
return
|
|
47589
|
+
return A3();
|
|
47551
47590
|
},
|
|
47552
47591
|
get children() {
|
|
47553
47592
|
return [
|
|
47554
47593
|
(() => {
|
|
47555
|
-
var e =
|
|
47594
|
+
var e = c3(), t = e.firstChild, n = t.firstChild, r = t.nextSibling, i = r.firstChild;
|
|
47556
47595
|
return t.$$click = () => se(!oe()), F(t, ye, n), r.$$click = () => le(!ce()), F(r, be, i), D((e) => {
|
|
47557
47596
|
var n = {
|
|
47558
47597
|
"text-danger bg-danger/10 border-danger/40": oe(),
|
|
@@ -47570,7 +47609,7 @@ function B3() {
|
|
|
47570
47609
|
}), e;
|
|
47571
47610
|
})(),
|
|
47572
47611
|
(() => {
|
|
47573
|
-
var e =
|
|
47612
|
+
var e = r3();
|
|
47574
47613
|
return F(e, M(Ue, {
|
|
47575
47614
|
get each() {
|
|
47576
47615
|
return ve();
|
|
@@ -47578,7 +47617,7 @@ function B3() {
|
|
|
47578
47617
|
children: (e) => {
|
|
47579
47618
|
let t = e[0], n = () => re() === t.ruleId;
|
|
47580
47619
|
return (() => {
|
|
47581
|
-
var r =
|
|
47620
|
+
var r = M3(), i = r.firstChild, a = i.firstChild, o = a.nextSibling, s = o.nextSibling;
|
|
47582
47621
|
s.firstChild;
|
|
47583
47622
|
var c = s.nextSibling;
|
|
47584
47623
|
return i.$$click = () => ae(n() ? null : t.ruleId), F(o, () => t.ruleId), F(s, () => e.length, null), F(r, M(N, {
|
|
@@ -47586,22 +47625,38 @@ function B3() {
|
|
|
47586
47625
|
return n();
|
|
47587
47626
|
},
|
|
47588
47627
|
get children() {
|
|
47589
|
-
var n =
|
|
47628
|
+
var n = j3(), r = n.firstChild;
|
|
47590
47629
|
return F(r, () => t.description), F(n, M(Ue, {
|
|
47591
47630
|
each: e,
|
|
47592
47631
|
children: (e) => (() => {
|
|
47593
|
-
var t =
|
|
47632
|
+
var t = P3(), n = t.firstChild, r = n.nextSibling;
|
|
47594
47633
|
return t.$$click = () => {
|
|
47595
|
-
|
|
47634
|
+
B3(e) || l(e.page === location.pathname ? "Element is gone — run Scan again." : `This finding is on ${e.page} — navigate there to reveal it.`);
|
|
47596
47635
|
}, F(n, M(N, {
|
|
47597
47636
|
get when() {
|
|
47598
47637
|
return ge() > 1;
|
|
47599
47638
|
},
|
|
47600
47639
|
get children() {
|
|
47601
|
-
var t =
|
|
47640
|
+
var t = N3(), n = t.firstChild;
|
|
47602
47641
|
return F(t, () => e.page, n), t;
|
|
47603
47642
|
}
|
|
47604
|
-
}), null), F(n, (
|
|
47643
|
+
}), null), F(n, M(N, {
|
|
47644
|
+
get when() {
|
|
47645
|
+
return e.component;
|
|
47646
|
+
},
|
|
47647
|
+
get children() {
|
|
47648
|
+
var t = N3(), n = t.firstChild;
|
|
47649
|
+
return F(t, () => e.component, n), t;
|
|
47650
|
+
}
|
|
47651
|
+
}), null), F(n, () => e.selector, null), F(t, M(N, {
|
|
47652
|
+
get when() {
|
|
47653
|
+
return e.source;
|
|
47654
|
+
},
|
|
47655
|
+
get children() {
|
|
47656
|
+
var t = T3();
|
|
47657
|
+
return F(t, () => e.source), t;
|
|
47658
|
+
}
|
|
47659
|
+
}), r), F(r, () => e.evidence), t;
|
|
47605
47660
|
})()
|
|
47606
47661
|
}), null), n;
|
|
47607
47662
|
}
|
|
@@ -47618,7 +47673,7 @@ function B3() {
|
|
|
47618
47673
|
})), e;
|
|
47619
47674
|
})(),
|
|
47620
47675
|
(() => {
|
|
47621
|
-
var e =
|
|
47676
|
+
var e = a3();
|
|
47622
47677
|
return F(e, M(kj, {
|
|
47623
47678
|
class: "size-7 px-0",
|
|
47624
47679
|
variant: "primary",
|
|
@@ -47633,10 +47688,10 @@ function B3() {
|
|
|
47633
47688
|
return fe();
|
|
47634
47689
|
},
|
|
47635
47690
|
get fallback() {
|
|
47636
|
-
return
|
|
47691
|
+
return k3();
|
|
47637
47692
|
},
|
|
47638
47693
|
get children() {
|
|
47639
|
-
return
|
|
47694
|
+
return i3();
|
|
47640
47695
|
}
|
|
47641
47696
|
});
|
|
47642
47697
|
}
|
|
@@ -47654,10 +47709,10 @@ function B3() {
|
|
|
47654
47709
|
return ue();
|
|
47655
47710
|
},
|
|
47656
47711
|
get fallback() {
|
|
47657
|
-
return
|
|
47712
|
+
return S3();
|
|
47658
47713
|
},
|
|
47659
47714
|
get children() {
|
|
47660
|
-
return
|
|
47715
|
+
return Q4();
|
|
47661
47716
|
}
|
|
47662
47717
|
});
|
|
47663
47718
|
}
|
|
@@ -47668,7 +47723,7 @@ function B3() {
|
|
|
47668
47723
|
"aria-label": "Clear scan results",
|
|
47669
47724
|
onClick: he,
|
|
47670
47725
|
get children() {
|
|
47671
|
-
return
|
|
47726
|
+
return $4();
|
|
47672
47727
|
}
|
|
47673
47728
|
}), null), e;
|
|
47674
47729
|
})()
|
|
@@ -47680,7 +47735,7 @@ function B3() {
|
|
|
47680
47735
|
nt(["click"]);
|
|
47681
47736
|
//#endregion
|
|
47682
47737
|
//#region src/lib/projectConfig.ts
|
|
47683
|
-
var
|
|
47738
|
+
var H3 = [
|
|
47684
47739
|
"defaultTeamId",
|
|
47685
47740
|
"defaultProjectId",
|
|
47686
47741
|
"defaultLabelIds",
|
|
@@ -47695,29 +47750,29 @@ var V3 = [
|
|
|
47695
47750
|
"issueTemplate",
|
|
47696
47751
|
"testUsername"
|
|
47697
47752
|
];
|
|
47698
|
-
function
|
|
47753
|
+
function U3(e) {
|
|
47699
47754
|
let t = {};
|
|
47700
|
-
for (let n of
|
|
47755
|
+
for (let n of H3) {
|
|
47701
47756
|
let r = e[n];
|
|
47702
47757
|
r !== void 0 && r !== "" && !(Array.isArray(r) && r.length === 0) && (t[n] = r);
|
|
47703
47758
|
}
|
|
47704
47759
|
return t;
|
|
47705
47760
|
}
|
|
47706
|
-
function
|
|
47761
|
+
function W3(e, t) {
|
|
47707
47762
|
let n = {};
|
|
47708
|
-
for (let r of
|
|
47763
|
+
for (let r of H3) e[r] === void 0 && t[r] !== void 0 && (n[r] = t[r]);
|
|
47709
47764
|
return Object.keys(n).length ? n : null;
|
|
47710
47765
|
}
|
|
47711
47766
|
//#endregion
|
|
47712
47767
|
//#region src/lib/linear/auth.ts
|
|
47713
47768
|
zr();
|
|
47714
|
-
function
|
|
47769
|
+
function G3(e) {
|
|
47715
47770
|
let t = "";
|
|
47716
47771
|
for (let n of e) t += String.fromCharCode(n);
|
|
47717
47772
|
return btoa(t).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
47718
47773
|
}
|
|
47719
|
-
async function
|
|
47720
|
-
let t =
|
|
47774
|
+
async function K3(e) {
|
|
47775
|
+
let t = G3(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(32))), n = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(t)), r = G3(new Uint8Array(n)), i = G3(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16))), a = chrome.identity.getRedirectURL(), o = new URL("https://linear.app/oauth/authorize");
|
|
47721
47776
|
o.searchParams.set("client_id", e), o.searchParams.set("redirect_uri", a), o.searchParams.set("response_type", "code"), o.searchParams.set("scope", "read,write"), o.searchParams.set("state", i), o.searchParams.set("code_challenge", r), o.searchParams.set("code_challenge_method", "S256");
|
|
47722
47777
|
let s = await chrome.identity.launchWebAuthFlow({
|
|
47723
47778
|
url: o.toString(),
|
|
@@ -47745,15 +47800,15 @@ async function G3(e) {
|
|
|
47745
47800
|
linearOauthClientId: e
|
|
47746
47801
|
});
|
|
47747
47802
|
}
|
|
47748
|
-
async function
|
|
47803
|
+
async function q3() {
|
|
47749
47804
|
await Tr({
|
|
47750
47805
|
linearAccessToken: void 0,
|
|
47751
47806
|
linearApiKey: void 0
|
|
47752
47807
|
});
|
|
47753
47808
|
}
|
|
47754
47809
|
zr(), xr(), Fx(), gD();
|
|
47755
|
-
var
|
|
47756
|
-
function
|
|
47810
|
+
var J3 = /*#__PURE__*/ P("<div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\">"), Y3 = /*#__PURE__*/ P("<span class=\"text-text-faint text-[10.5px] leading-snug\">Cloud: picking an element opens the panel to draft & delegate to the Cursor agent. Local (react-grab style): picking auto-copies the element's context — source, stack, and your skills/memory paths — straight to the clipboard for a local Claude Code or Cursor session; the panel stays out of the way. Both share the same picker; switch anytime."), X3 = /*#__PURE__*/ P("<label class=\"flex cursor-pointer items-center gap-2 select-none\"><input type=checkbox class=\"accent-accent rounded\"><span class=\"text-text text-[12px]\">Element screenshots"), Z3 = /*#__PURE__*/ P("<span class=\"text-text-faint text-[10.5px] leading-snug\">Captures a highlighted screenshot of each picked element and attaches it to the issue. Costs a beat on huge pages — with this off, picking is instant (pure react-grab speed)."), Q3 = /*#__PURE__*/ P("<span class=text-text>Connected as <span class=font-medium></span> · <span class=text-text-dim>"), $3 = /*#__PURE__*/ P("<div class=\"bg-surface border-border flex items-center justify-between rounded-lg border p-2.5\"><span class=\"text-text text-[12px]\">"), e6 = /*#__PURE__*/ P("<option value>Select a team…"), t6 = /*#__PURE__*/ P("<option value>No project"), n6 = /*#__PURE__*/ P("<div class=\"flex flex-wrap gap-1\">"), r6 = /*#__PURE__*/ P("<label class=\"flex items-start gap-2\"><input type=checkbox class=\"accent-accent mt-0.5\"><span class=\"flex flex-col gap-0.5\"><span class=text-[12px]>Let agents close out Linear themselves</span><span class=\"text-text-faint text-[10.5px] leading-snug\">Embeds your Linear API key + raw GraphQL closeout recipes in every issue's Agent instructions — cloud agent VMs have no authenticated Linear MCP, so without this they can't comment, attach media, or move the issue. The key is visible to anyone who can read the issue."), i6 = /*#__PURE__*/ P("<p class=\"text-text-dim text-[11px]\">No agents found — install the Cursor integration in Linear first."), a6 = /*#__PURE__*/ P("<span class=\"text-text-faint text-[10.5px] leading-snug\">Empty = the default above (computer-use testing, video demo, PR + review babysitting)."), o6 = /*#__PURE__*/ P("<div class=\"flex flex-col gap-1.5\">"), s6 = /*#__PURE__*/ P("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Mode</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"></div><span class=\"text-text-faint text-[10.5px] leading-snug\">Beside page squeezes the app next to the panel, DevTools-style — nothing gets covered. Also toggleable from the dock icon in the panel header."), c6 = /*#__PURE__*/ P("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Dock side</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"></div><span class=\"text-text-faint text-[10.5px] leading-snug\">The launcher pill is draggable — park it anywhere it doesn't cover your app."), l6 = /*#__PURE__*/ P("<p class=\"text-text-faint text-[10.5px] leading-snug\">A committed <code>.lineargrab.json</code> at the repo root (where the bridge runs) shares team/project/labels, skills, staging branch, and workflow defaults with every machine and teammate — it seeds any setting you haven't set locally. Secrets never belong in it."), u6 = /*#__PURE__*/ P("<span class=\"inline-block min-w-[10ch] text-center\">"), d6 = /*#__PURE__*/ P("<div class=\"flex items-center gap-2\">"), f6 = /*#__PURE__*/ P("<option value>Select a channel…"), p6 = /*#__PURE__*/ P("<label class=\"flex cursor-pointer items-center gap-2 select-none\"><input type=checkbox class=\"accent-accent rounded\"><span class=\"text-text text-[12px]\">Announce new issues on create"), m6 = /*#__PURE__*/ P("<span class=\"text-text-faint text-[10.5px] leading-snug\">⚠️ Tokens are embedded in issue Agent-instructions so agents can post the finished demo — everyone who can read the issue can read them. Use single-channel-scoped bots."), h6 = /*#__PURE__*/ P("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Provider preference</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"><button>Auto</button><button>OpenAI</button><button>Anthropic"), g6 = /*#__PURE__*/ P("<p class=\"text-text-dim text-[11px]\">"), _6 = /*#__PURE__*/ P("<div class=min-h-[2lh]>"), v6 = /*#__PURE__*/ P("<ol class=\"text-text-faint flex list-decimal flex-col gap-1 pl-4 text-[11px] leading-relaxed\"><li>Pick an element on your running dev app.</li><li>Draft the issue (AI optional).</li><li>Create + delegate — Cursor's cloud agent fixes it and opens a PR.</li><li>Track and steer it from Activity."), y6 = /*#__PURE__*/ P("<div class=\"flex h-full flex-col gap-5 overflow-y-auto pt-3 pb-6 pl-3 pr-4\">"), b6 = /*#__PURE__*/ P("<button>"), x6 = /*#__PURE__*/ P("<div class=\"flex gap-1.5\">"), S6 = /*#__PURE__*/ P("<p class=\"text-text-faint text-center text-[10.5px]\">or"), C6 = /*#__PURE__*/ P("<span class=\"text-text-faint text-[10.5px] leading-snug\">Register this callback URL in your Linear OAuth app config:<br><span class=\"font-mono text-[10.5px] break-all\">"), w6 = /*#__PURE__*/ P("<div class=\"flex flex-col gap-3\">"), T6 = /*#__PURE__*/ P("<span class=text-text-dim>Connected — verifying…"), E6 = /*#__PURE__*/ P("<option> (<!>)"), D6 = /*#__PURE__*/ P("<option>"), O6 = /*#__PURE__*/ P("<button type=button><span class=\"mr-1 inline-block size-2 rounded-full align-middle\">"), k6 = /*#__PURE__*/ P("<option value>Select the agent…"), A6 = /*#__PURE__*/ P("<option>#"), j6 = /*#__PURE__*/ P("<p class=\"text-text-dim text-[11px]\">No key set — AI drafting disabled, manual drafting still works.");
|
|
47811
|
+
function M6() {
|
|
47757
47812
|
let e = or(), t = gr(() => ({
|
|
47758
47813
|
queryKey: ["settings"],
|
|
47759
47814
|
queryFn: wr,
|
|
@@ -47781,13 +47836,13 @@ function j6() {
|
|
|
47781
47836
|
retry: 0
|
|
47782
47837
|
})), [l, u] = T(!1), d = async () => {
|
|
47783
47838
|
try {
|
|
47784
|
-
await navigator.clipboard.writeText(JSON.stringify(
|
|
47839
|
+
await navigator.clipboard.writeText(JSON.stringify(U3(n()), null, 2) + "\n"), u(!0), setTimeout(() => u(!1), 1800);
|
|
47785
47840
|
} catch {}
|
|
47786
47841
|
}, f = () => {
|
|
47787
47842
|
let e = c.data?.projectConfig;
|
|
47788
47843
|
if (!e) return;
|
|
47789
47844
|
let t = {};
|
|
47790
|
-
for (let n of
|
|
47845
|
+
for (let n of H3) e[n] !== void 0 && (t[n] = e[n]);
|
|
47791
47846
|
r(t);
|
|
47792
47847
|
}, p = gr(() => ({
|
|
47793
47848
|
queryKey: ["linear-labels"],
|
|
@@ -47820,7 +47875,7 @@ function j6() {
|
|
|
47820
47875
|
}
|
|
47821
47876
|
E(!0), ee("");
|
|
47822
47877
|
try {
|
|
47823
|
-
await
|
|
47878
|
+
await K3(t), await e.invalidateQueries({ queryKey: ["settings"] }), await e.invalidateQueries({ queryKey: ["viewer"] }), await e.invalidateQueries({ queryKey: ["teams"] }), await e.invalidateQueries({ queryKey: ["agents"] }), await e.invalidateQueries({ queryKey: ["my-issues"] });
|
|
47824
47879
|
} catch (e) {
|
|
47825
47880
|
ee(e instanceof Error ? e.message : "OAuth flow failed.");
|
|
47826
47881
|
} finally {
|
|
@@ -47831,7 +47886,7 @@ function j6() {
|
|
|
47831
47886
|
async function ne() {
|
|
47832
47887
|
te(!0);
|
|
47833
47888
|
try {
|
|
47834
|
-
await
|
|
47889
|
+
await q3(), await e.invalidateQueries({ queryKey: ["settings"] }), await e.invalidateQueries({ queryKey: ["viewer"] }), await e.invalidateQueries({ queryKey: ["teams"] }), await e.invalidateQueries({ queryKey: ["agents"] }), await e.invalidateQueries({ queryKey: ["my-issues"] });
|
|
47835
47890
|
} finally {
|
|
47836
47891
|
te(!1);
|
|
47837
47892
|
}
|
|
@@ -47847,12 +47902,12 @@ function j6() {
|
|
|
47847
47902
|
return e ? `Drafting with ${e} — ${Nx[e].fast} (fast) / ${Nx[e].best} (best)` : null;
|
|
47848
47903
|
});
|
|
47849
47904
|
return (() => {
|
|
47850
|
-
var e =
|
|
47905
|
+
var e = y6();
|
|
47851
47906
|
return F(e, M(Rj, {
|
|
47852
47907
|
title: "Workflow",
|
|
47853
47908
|
get children() {
|
|
47854
47909
|
return [(() => {
|
|
47855
|
-
var e =
|
|
47910
|
+
var e = J3();
|
|
47856
47911
|
return F(e, M(Ue, {
|
|
47857
47912
|
each: [{
|
|
47858
47913
|
id: "cloud",
|
|
@@ -47862,19 +47917,19 @@ function j6() {
|
|
|
47862
47917
|
label: "Local · clipboard"
|
|
47863
47918
|
}],
|
|
47864
47919
|
children: (e) => (() => {
|
|
47865
|
-
var t =
|
|
47920
|
+
var t = b6();
|
|
47866
47921
|
return t.$$click = () => void r({ workflowMode: e.id }), F(t, () => e.label), D(() => ot(t, `flex-1 rounded-[5px] px-2 py-1 text-[11.5px] font-medium transition-colors ${(n().workflowMode ?? "cloud") === e.id ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`)), t;
|
|
47867
47922
|
})()
|
|
47868
47923
|
})), e;
|
|
47869
|
-
})(),
|
|
47924
|
+
})(), Y3()];
|
|
47870
47925
|
}
|
|
47871
47926
|
}), null), F(e, M(Rj, {
|
|
47872
47927
|
title: "Capture",
|
|
47873
47928
|
get children() {
|
|
47874
47929
|
return [(() => {
|
|
47875
|
-
var e =
|
|
47930
|
+
var e = X3(), t = e.firstChild;
|
|
47876
47931
|
return t.addEventListener("change", (e) => void r({ captureShots: e.currentTarget.checked || void 0 })), D(() => t.checked = !!n().captureShots), e;
|
|
47877
|
-
})(),
|
|
47932
|
+
})(), Z3()];
|
|
47878
47933
|
}
|
|
47879
47934
|
}), null), F(e, M(Rj, {
|
|
47880
47935
|
title: "Linear",
|
|
@@ -47885,13 +47940,13 @@ function j6() {
|
|
|
47885
47940
|
},
|
|
47886
47941
|
get fallback() {
|
|
47887
47942
|
return (() => {
|
|
47888
|
-
var e =
|
|
47943
|
+
var e = w6();
|
|
47889
47944
|
return F(e, M(Lj, {
|
|
47890
47945
|
label: "Personal API key",
|
|
47891
47946
|
hint: "Create one at linear.app → Settings → API — fastest path.",
|
|
47892
47947
|
get children() {
|
|
47893
47948
|
return [(() => {
|
|
47894
|
-
var e =
|
|
47949
|
+
var e = x6();
|
|
47895
47950
|
return F(e, M(jj, {
|
|
47896
47951
|
type: "password",
|
|
47897
47952
|
placeholder: "lin_api_…",
|
|
@@ -47928,12 +47983,12 @@ function j6() {
|
|
|
47928
47983
|
}), null), F(e, M(N, {
|
|
47929
47984
|
when: br,
|
|
47930
47985
|
get children() {
|
|
47931
|
-
return [
|
|
47986
|
+
return [S6(), M(Lj, {
|
|
47932
47987
|
label: "OAuth client ID",
|
|
47933
47988
|
get children() {
|
|
47934
47989
|
return [
|
|
47935
47990
|
(() => {
|
|
47936
|
-
var e =
|
|
47991
|
+
var e = x6();
|
|
47937
47992
|
return F(e, M(jj, {
|
|
47938
47993
|
placeholder: "your-client-id",
|
|
47939
47994
|
get value() {
|
|
@@ -47961,7 +48016,7 @@ function j6() {
|
|
|
47961
48016
|
}
|
|
47962
48017
|
}),
|
|
47963
48018
|
(() => {
|
|
47964
|
-
var e =
|
|
48019
|
+
var e = C6(), t = e.firstChild.nextSibling.nextSibling;
|
|
47965
48020
|
return F(t, re), e;
|
|
47966
48021
|
})()
|
|
47967
48022
|
];
|
|
@@ -47972,13 +48027,13 @@ function j6() {
|
|
|
47972
48027
|
})();
|
|
47973
48028
|
},
|
|
47974
48029
|
get children() {
|
|
47975
|
-
var e =
|
|
48030
|
+
var e = $3(), t = e.firstChild;
|
|
47976
48031
|
return F(t, M(N, {
|
|
47977
48032
|
get when() {
|
|
47978
48033
|
return !a.isLoading;
|
|
47979
48034
|
},
|
|
47980
48035
|
get fallback() {
|
|
47981
|
-
return
|
|
48036
|
+
return T6();
|
|
47982
48037
|
},
|
|
47983
48038
|
get children() {
|
|
47984
48039
|
return M(N, {
|
|
@@ -47991,7 +48046,7 @@ function j6() {
|
|
|
47991
48046
|
return a.isError;
|
|
47992
48047
|
},
|
|
47993
48048
|
get fallback() {
|
|
47994
|
-
return
|
|
48049
|
+
return T6();
|
|
47995
48050
|
},
|
|
47996
48051
|
get children() {
|
|
47997
48052
|
return M(Hj, { message: "Key rejected — reconnect" });
|
|
@@ -47999,7 +48054,7 @@ function j6() {
|
|
|
47999
48054
|
});
|
|
48000
48055
|
},
|
|
48001
48056
|
get children() {
|
|
48002
|
-
var e =
|
|
48057
|
+
var e = Q3(), t = e.firstChild.nextSibling, n = t.nextSibling.nextSibling;
|
|
48003
48058
|
return F(t, () => a.data.name), F(n, () => a.data.email), e;
|
|
48004
48059
|
}
|
|
48005
48060
|
});
|
|
@@ -48040,7 +48095,7 @@ function j6() {
|
|
|
48040
48095
|
return o.isLoading;
|
|
48041
48096
|
},
|
|
48042
48097
|
get children() {
|
|
48043
|
-
return [
|
|
48098
|
+
return [e6(), M(N, {
|
|
48044
48099
|
get when() {
|
|
48045
48100
|
return o.data;
|
|
48046
48101
|
},
|
|
@@ -48050,7 +48105,7 @@ function j6() {
|
|
|
48050
48105
|
return o.data;
|
|
48051
48106
|
},
|
|
48052
48107
|
children: (e) => (() => {
|
|
48053
|
-
var t =
|
|
48108
|
+
var t = E6(), r = t.firstChild, i = r.nextSibling;
|
|
48054
48109
|
return i.nextSibling, F(t, () => e.name, r), F(t, () => e.key, i), D(() => t.selected = e.id === n().defaultTeamId), D(() => t.value = e.id), t;
|
|
48055
48110
|
})()
|
|
48056
48111
|
});
|
|
@@ -48074,14 +48129,14 @@ function j6() {
|
|
|
48074
48129
|
},
|
|
48075
48130
|
get children() {
|
|
48076
48131
|
return [(() => {
|
|
48077
|
-
var e =
|
|
48132
|
+
var e = t6();
|
|
48078
48133
|
return D(() => e.selected = !n().defaultProjectId), e;
|
|
48079
48134
|
})(), M(Ue, {
|
|
48080
48135
|
get each() {
|
|
48081
48136
|
return s.data ?? [];
|
|
48082
48137
|
},
|
|
48083
48138
|
children: (e) => (() => {
|
|
48084
|
-
var t =
|
|
48139
|
+
var t = D6();
|
|
48085
48140
|
return F(t, () => e.name), D(() => t.selected = e.id === n().defaultProjectId), D(() => t.value = e.id), t;
|
|
48086
48141
|
})()
|
|
48087
48142
|
})];
|
|
@@ -48093,7 +48148,7 @@ function j6() {
|
|
|
48093
48148
|
label: "Default labels",
|
|
48094
48149
|
hint: "Applied to every issue created from the panel.",
|
|
48095
48150
|
get children() {
|
|
48096
|
-
var e =
|
|
48151
|
+
var e = n6();
|
|
48097
48152
|
return F(e, M(Ue, {
|
|
48098
48153
|
get each() {
|
|
48099
48154
|
return p.data ?? [];
|
|
@@ -48101,7 +48156,7 @@ function j6() {
|
|
|
48101
48156
|
children: (e) => {
|
|
48102
48157
|
let t = () => (n().defaultLabelIds ?? []).includes(e.id);
|
|
48103
48158
|
return (() => {
|
|
48104
|
-
var i =
|
|
48159
|
+
var i = O6(), a = i.firstChild;
|
|
48105
48160
|
return i.$$click = () => {
|
|
48106
48161
|
let i = n().defaultLabelIds ?? [];
|
|
48107
48162
|
r({ defaultLabelIds: t() ? i.filter((t) => t !== e.id) : [...i, e.id] });
|
|
@@ -48118,7 +48173,7 @@ function j6() {
|
|
|
48118
48173
|
}
|
|
48119
48174
|
}),
|
|
48120
48175
|
(() => {
|
|
48121
|
-
var e =
|
|
48176
|
+
var e = r6(), t = e.firstChild;
|
|
48122
48177
|
return t.addEventListener("change", (e) => void r({ shareLinearKey: e.currentTarget.checked })), D(() => t.checked = !!n().shareLinearKey), e;
|
|
48123
48178
|
})(),
|
|
48124
48179
|
M(Lj, {
|
|
@@ -48168,7 +48223,7 @@ function j6() {
|
|
|
48168
48223
|
return m.isLoading;
|
|
48169
48224
|
},
|
|
48170
48225
|
get children() {
|
|
48171
|
-
return [
|
|
48226
|
+
return [k6(), M(N, {
|
|
48172
48227
|
get when() {
|
|
48173
48228
|
return m.data;
|
|
48174
48229
|
},
|
|
@@ -48178,7 +48233,7 @@ function j6() {
|
|
|
48178
48233
|
return m.data;
|
|
48179
48234
|
},
|
|
48180
48235
|
children: (e) => (() => {
|
|
48181
|
-
var t =
|
|
48236
|
+
var t = D6();
|
|
48182
48237
|
return F(t, () => e.displayName), D(() => t.selected = e.id === n().cursorAgentId), D(() => t.value = e.id), t;
|
|
48183
48238
|
})()
|
|
48184
48239
|
});
|
|
@@ -48188,7 +48243,7 @@ function j6() {
|
|
|
48188
48243
|
});
|
|
48189
48244
|
},
|
|
48190
48245
|
get children() {
|
|
48191
|
-
return
|
|
48246
|
+
return i6();
|
|
48192
48247
|
}
|
|
48193
48248
|
});
|
|
48194
48249
|
}
|
|
@@ -48236,7 +48291,7 @@ function j6() {
|
|
|
48236
48291
|
onBlur: (e) => {
|
|
48237
48292
|
r({ issueTemplate: e.currentTarget.value.trim() || void 0 });
|
|
48238
48293
|
}
|
|
48239
|
-
}),
|
|
48294
|
+
}), a6()];
|
|
48240
48295
|
}
|
|
48241
48296
|
}),
|
|
48242
48297
|
M(Lj, {
|
|
@@ -48293,7 +48348,7 @@ function j6() {
|
|
|
48293
48348
|
label: "Test account",
|
|
48294
48349
|
hint: "The cloud agent logs into the app with this while testing and recording its demo. Added to every issue's Agent instructions. Use a throwaway account — it's visible to everyone who can read the issue.",
|
|
48295
48350
|
get children() {
|
|
48296
|
-
var e =
|
|
48351
|
+
var e = o6();
|
|
48297
48352
|
return F(e, M(jj, {
|
|
48298
48353
|
placeholder: "Username or email (e.g. demo@yourapp.com)",
|
|
48299
48354
|
get value() {
|
|
@@ -48325,7 +48380,7 @@ function j6() {
|
|
|
48325
48380
|
title: "Panel",
|
|
48326
48381
|
get children() {
|
|
48327
48382
|
return [(() => {
|
|
48328
|
-
var e =
|
|
48383
|
+
var e = s6(), t = e.firstChild.nextSibling;
|
|
48329
48384
|
return F(t, M(Ue, {
|
|
48330
48385
|
each: [{
|
|
48331
48386
|
id: "overlay",
|
|
@@ -48335,7 +48390,7 @@ function j6() {
|
|
|
48335
48390
|
label: "Beside page"
|
|
48336
48391
|
}],
|
|
48337
48392
|
children: (e) => (() => {
|
|
48338
|
-
var t =
|
|
48393
|
+
var t = b6();
|
|
48339
48394
|
return t.$$click = () => void r({
|
|
48340
48395
|
panelMode: e.id,
|
|
48341
48396
|
panelPos: void 0
|
|
@@ -48343,11 +48398,11 @@ function j6() {
|
|
|
48343
48398
|
})()
|
|
48344
48399
|
})), e;
|
|
48345
48400
|
})(), (() => {
|
|
48346
|
-
var e =
|
|
48401
|
+
var e = c6(), t = e.firstChild.nextSibling;
|
|
48347
48402
|
return F(t, M(Ue, {
|
|
48348
48403
|
each: ["left", "right"],
|
|
48349
48404
|
children: (e) => (() => {
|
|
48350
|
-
var t =
|
|
48405
|
+
var t = b6();
|
|
48351
48406
|
return t.$$click = () => void r({ panelSide: e }), F(t, e === "left" ? "Left" : "Right"), D(() => ot(t, `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors ${(n().panelSide ?? "right") === e ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`)), t;
|
|
48352
48407
|
})()
|
|
48353
48408
|
})), e;
|
|
@@ -48377,8 +48432,8 @@ function j6() {
|
|
|
48377
48432
|
}), null), F(e, M(Rj, {
|
|
48378
48433
|
title: "Project config (.lineargrab.json)",
|
|
48379
48434
|
get children() {
|
|
48380
|
-
return [
|
|
48381
|
-
var e =
|
|
48435
|
+
return [l6(), (() => {
|
|
48436
|
+
var e = d6();
|
|
48382
48437
|
return F(e, M(N, {
|
|
48383
48438
|
get when() {
|
|
48384
48439
|
return c.data?.projectConfig;
|
|
@@ -48409,7 +48464,7 @@ function j6() {
|
|
|
48409
48464
|
},
|
|
48410
48465
|
onClick: () => void d(),
|
|
48411
48466
|
get children() {
|
|
48412
|
-
var e =
|
|
48467
|
+
var e = u6();
|
|
48413
48468
|
return F(e, () => l() ? "Copied ✓" : "Copy config"), e;
|
|
48414
48469
|
}
|
|
48415
48470
|
}), null), e;
|
|
@@ -48500,12 +48555,12 @@ function j6() {
|
|
|
48500
48555
|
});
|
|
48501
48556
|
},
|
|
48502
48557
|
get children() {
|
|
48503
|
-
return [
|
|
48558
|
+
return [f6(), M(Ue, {
|
|
48504
48559
|
get each() {
|
|
48505
48560
|
return ie.data ?? [];
|
|
48506
48561
|
},
|
|
48507
48562
|
children: (e) => (() => {
|
|
48508
|
-
var t =
|
|
48563
|
+
var t = A6();
|
|
48509
48564
|
return t.firstChild, F(t, () => e.name, null), D(() => t.selected = e.id === n().slackChannelId), D(() => t.value = e.id), t;
|
|
48510
48565
|
})()
|
|
48511
48566
|
})];
|
|
@@ -48556,10 +48611,10 @@ function j6() {
|
|
|
48556
48611
|
}
|
|
48557
48612
|
}),
|
|
48558
48613
|
(() => {
|
|
48559
|
-
var e =
|
|
48614
|
+
var e = p6(), t = e.firstChild;
|
|
48560
48615
|
return t.addEventListener("change", (e) => void r({ notifyOnCreate: e.currentTarget.checked ? void 0 : !1 })), D(() => t.checked = n().notifyOnCreate !== !1), e;
|
|
48561
48616
|
})(),
|
|
48562
|
-
|
|
48617
|
+
m6()
|
|
48563
48618
|
];
|
|
48564
48619
|
}
|
|
48565
48620
|
}), null), F(e, M(Rj, {
|
|
@@ -48597,7 +48652,7 @@ function j6() {
|
|
|
48597
48652
|
}
|
|
48598
48653
|
}),
|
|
48599
48654
|
(() => {
|
|
48600
|
-
var e =
|
|
48655
|
+
var e = h6(), t = e.firstChild.nextSibling.firstChild, i = t.nextSibling, a = i.nextSibling;
|
|
48601
48656
|
return t.$$click = () => void r({ preferredProvider: void 0 }), i.$$click = () => void r({ preferredProvider: "openai" }), a.$$click = () => void r({ preferredProvider: "anthropic" }), D((e) => {
|
|
48602
48657
|
var r = `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors ${n().preferredProvider === void 0 ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`, o = `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors disabled:cursor-not-allowed ${n().preferredProvider === "openai" ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer disabled:text-text-faint"}`, s = !n().openaiKey, c = `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors disabled:cursor-not-allowed ${n().preferredProvider === "anthropic" ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer disabled:text-text-faint"}`, l = !n().anthropicKey;
|
|
48603
48658
|
return r !== e.e && ot(t, e.e = r), o !== e.t && ot(i, e.t = o), s !== e.a && (i.disabled = e.a = s), c !== e.o && ot(a, e.o = c), l !== e.i && (a.disabled = e.i = l), e;
|
|
@@ -48610,16 +48665,16 @@ function j6() {
|
|
|
48610
48665
|
}), e;
|
|
48611
48666
|
})(),
|
|
48612
48667
|
(() => {
|
|
48613
|
-
var e =
|
|
48668
|
+
var e = _6();
|
|
48614
48669
|
return F(e, M(N, {
|
|
48615
48670
|
get when() {
|
|
48616
48671
|
return oe();
|
|
48617
48672
|
},
|
|
48618
48673
|
get fallback() {
|
|
48619
|
-
return
|
|
48674
|
+
return j6();
|
|
48620
48675
|
},
|
|
48621
48676
|
get children() {
|
|
48622
|
-
var e =
|
|
48677
|
+
var e = g6();
|
|
48623
48678
|
return F(e, oe), e;
|
|
48624
48679
|
}
|
|
48625
48680
|
})), e;
|
|
@@ -48629,7 +48684,7 @@ function j6() {
|
|
|
48629
48684
|
}), null), F(e, M(Rj, {
|
|
48630
48685
|
title: "How it works",
|
|
48631
48686
|
get children() {
|
|
48632
|
-
return
|
|
48687
|
+
return v6();
|
|
48633
48688
|
}
|
|
48634
48689
|
}), null), e;
|
|
48635
48690
|
})();
|
|
@@ -48637,38 +48692,38 @@ function j6() {
|
|
|
48637
48692
|
nt(["click"]);
|
|
48638
48693
|
//#endregion
|
|
48639
48694
|
//#region src/lib/idbCache.ts
|
|
48640
|
-
var
|
|
48695
|
+
var N6 = "linear-grab", P6 = "queries", F6 = [
|
|
48641
48696
|
"my-issues",
|
|
48642
48697
|
"issue",
|
|
48643
48698
|
"sessions",
|
|
48644
48699
|
"teams",
|
|
48645
48700
|
"agents"
|
|
48646
48701
|
];
|
|
48647
|
-
function
|
|
48702
|
+
function I6() {
|
|
48648
48703
|
return new Promise((e) => {
|
|
48649
48704
|
try {
|
|
48650
|
-
let t = indexedDB.open(
|
|
48651
|
-
t.onupgradeneeded = () => t.result.createObjectStore(
|
|
48705
|
+
let t = indexedDB.open(N6, 1);
|
|
48706
|
+
t.onupgradeneeded = () => t.result.createObjectStore(P6), t.onsuccess = () => e(t.result), t.onerror = () => e(null);
|
|
48652
48707
|
} catch {
|
|
48653
48708
|
e(null);
|
|
48654
48709
|
}
|
|
48655
48710
|
});
|
|
48656
48711
|
}
|
|
48657
|
-
function
|
|
48658
|
-
return typeof e[0] == "string" &&
|
|
48712
|
+
function L6(e) {
|
|
48713
|
+
return typeof e[0] == "string" && F6.includes(e[0]);
|
|
48659
48714
|
}
|
|
48660
|
-
async function
|
|
48661
|
-
let t = await
|
|
48715
|
+
async function R6(e) {
|
|
48716
|
+
let t = await I6();
|
|
48662
48717
|
if (!t) return () => {};
|
|
48663
48718
|
await new Promise((n) => {
|
|
48664
48719
|
try {
|
|
48665
|
-
let r = t.transaction(
|
|
48720
|
+
let r = t.transaction(P6, "readonly").objectStore(P6).openCursor();
|
|
48666
48721
|
r.onsuccess = () => {
|
|
48667
48722
|
let t = r.result;
|
|
48668
48723
|
if (!t) return n();
|
|
48669
48724
|
try {
|
|
48670
48725
|
let { queryKey: n, data: r } = t.value;
|
|
48671
|
-
|
|
48726
|
+
L6(n) && e.getQueryData(n) === void 0 && e.setQueryData(n, r, { updatedAt: 0 });
|
|
48672
48727
|
} catch {}
|
|
48673
48728
|
t.continue();
|
|
48674
48729
|
}, r.onerror = () => n();
|
|
@@ -48679,14 +48734,14 @@ async function L6(e) {
|
|
|
48679
48734
|
let n = /* @__PURE__ */ new Map(), r = e.getQueryCache().subscribe((r) => {
|
|
48680
48735
|
if (r.type !== "updated" || r.action.type !== "success") return;
|
|
48681
48736
|
let { queryKey: i, queryHash: a } = r.query;
|
|
48682
|
-
if (!
|
|
48737
|
+
if (!L6(i)) return;
|
|
48683
48738
|
let o = n.get(a);
|
|
48684
48739
|
o && clearTimeout(o), n.set(a, setTimeout(() => {
|
|
48685
48740
|
n.delete(a);
|
|
48686
48741
|
try {
|
|
48687
48742
|
let n = e.getQueryData(i);
|
|
48688
48743
|
if (n === void 0) return;
|
|
48689
|
-
t.transaction(
|
|
48744
|
+
t.transaction(P6, "readwrite").objectStore(P6).put({
|
|
48690
48745
|
queryKey: i,
|
|
48691
48746
|
data: n
|
|
48692
48747
|
}, a);
|
|
@@ -48702,7 +48757,7 @@ async function L6(e) {
|
|
|
48702
48757
|
//#endregion
|
|
48703
48758
|
//#region src/panel/App.tsx
|
|
48704
48759
|
zr();
|
|
48705
|
-
var
|
|
48760
|
+
var z6 = /*#__PURE__*/ P("<svg viewBox=\"0 0 100 100\"fill=currentColor aria-hidden><path d=\"M1.22541 61.5228c-.2225-.9485.90748-1.5459 1.59638-.857L39.3342 97.1782c.6889.6889.0915 1.8189-.857 1.5964C20.0515 94.4522 5.54779 79.9485 1.22541 61.5228ZM.00189135 46.8891c-.01764375.2833.08887215.5599.28957165.7606L52.3503 99.7085c.2007.2007.4773.3075.7606.2896 2.3692-.1476 4.6938-.46 6.9624-.9259.7645-.157 1.0301-1.0963.4782-1.6481L2.57595 39.4485c-.55186-.5519-1.49117-.2863-1.648174.4782-.465915 2.2686-.77832 4.5932-.92588465 6.9624ZM4.21093 29.7054c-.16649.3738-.08169.8106.20765 1.1l64.77602 64.776c.2894.2894.7262.3742 1.1.2077 1.7861-.7956 3.5171-1.6927 5.1855-2.684.5521-.328.6373-1.0867.1832-1.5407L8.43566 24.3367c-.45409-.4541-1.21271-.3689-1.54074.1832-.99132 1.6684-1.88843 3.3994-2.68399 5.1855ZM12.6587 18.074c-.3701-.3701-.393-.9637-.0443-1.3541C21.7795 6.45931 35.1114 0 49.9519 0 77.5927 0 100 22.4073 100 50.0481c0 14.8405-6.4593 28.1724-16.7199 37.3375-.3903.3487-.984.3258-1.3541-.0443L12.6587 18.074Z\">"), B6 = /*#__PURE__*/ P("<button><svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 aria-hidden><rect x=1.5 y=2.5 width=13 height=11 rx=1.5></rect><path d=\"M10 2.5v11\">"), V6 = /*#__PURE__*/ P("<button aria-label=\"Minimize to launcher\"title=\"Minimize to launcher\"class=\"text-text-dim hover:text-text hover:bg-surface-3 grid size-6 shrink-0 cursor-pointer place-items-center rounded-md text-[15px] leading-none transition-colors\">–"), H6 = /*#__PURE__*/ P("<div class=\"bg-bg text-text flex h-full flex-col\"><header><span class=\"text-accent mr-0.5 inline-flex shrink-0\"title=\"Linear Grab\"></span><div class=\"no-scrollbar flex min-w-0 flex-1 items-center gap-1 overflow-x-auto\"></div></header><main class=\"min-h-0 flex-1\"><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full>"), U6 = /*#__PURE__*/ P("<button>"), W6 = [
|
|
48706
48761
|
{
|
|
48707
48762
|
id: "draft",
|
|
48708
48763
|
label: "Draft"
|
|
@@ -48739,35 +48794,35 @@ var R6 = /*#__PURE__*/ P("<svg viewBox=\"0 0 100 100\"fill=currentColor aria-hid
|
|
|
48739
48794
|
id: "settings",
|
|
48740
48795
|
label: "Settings"
|
|
48741
48796
|
}
|
|
48742
|
-
],
|
|
48743
|
-
function
|
|
48744
|
-
if (
|
|
48745
|
-
|
|
48797
|
+
], G6 = /* @__PURE__ */ new Set();
|
|
48798
|
+
function K6(e, t, n) {
|
|
48799
|
+
if (G6.has(e) || typeof Notification > "u") return;
|
|
48800
|
+
G6.add(e);
|
|
48746
48801
|
let r = () => new Notification(t, { body: n });
|
|
48747
48802
|
Notification.permission === "granted" ? r() : Notification.permission === "default" && Notification.requestPermission().then((e) => e === "granted" && r());
|
|
48748
48803
|
}
|
|
48749
|
-
function
|
|
48804
|
+
function q6() {
|
|
48750
48805
|
setInterval(() => {
|
|
48751
48806
|
NO().then((e) => {
|
|
48752
48807
|
for (let t of e) {
|
|
48753
48808
|
if (t.status !== "running") continue;
|
|
48754
48809
|
let e = t.lastEventAt ?? t.startedAt;
|
|
48755
|
-
Date.now() - e > 10 * 6e4 &&
|
|
48810
|
+
Date.now() - e > 10 * 6e4 && K6(`local-stuck:${t.id}:${e}`, "Local agent may be stuck", `${t.title.slice(0, 80)} — no output for ${Math.round((Date.now() - e) / 6e4)}m. Nudge or interrupt it in the Local tab.`);
|
|
48756
48811
|
}
|
|
48757
48812
|
}).catch(() => {}), gO().then((e) => {
|
|
48758
|
-
for (let t of e) /awaitingInput|elicit/i.test(t.status) &&
|
|
48813
|
+
for (let t of e) /awaitingInput|elicit/i.test(t.status) && K6(`cloud-input:${t.id}`, "Cloud agent needs input", `${t.issue?.identifier ?? "Session"} — ${t.issue?.title?.slice(0, 80) ?? "a Cursor agent"} is waiting for you.`);
|
|
48759
48814
|
}).catch(() => {});
|
|
48760
48815
|
}, 6e4);
|
|
48761
48816
|
}
|
|
48762
|
-
|
|
48763
|
-
var
|
|
48817
|
+
q6();
|
|
48818
|
+
var J6 = new hr({ defaultOptions: { queries: {
|
|
48764
48819
|
retry: 1,
|
|
48765
48820
|
refetchOnWindowFocus: !1,
|
|
48766
48821
|
staleTime: 5e3
|
|
48767
48822
|
} } });
|
|
48768
|
-
function
|
|
48823
|
+
function Y6(e) {
|
|
48769
48824
|
return (() => {
|
|
48770
|
-
var t =
|
|
48825
|
+
var t = z6();
|
|
48771
48826
|
return D((n) => {
|
|
48772
48827
|
var r = e.size ?? 14, i = e.size ?? 14;
|
|
48773
48828
|
return r !== n.e && rt(t, "width", n.e = r), i !== n.t && rt(t, "height", n.t = i), n;
|
|
@@ -48777,36 +48832,36 @@ function J6(e) {
|
|
|
48777
48832
|
}), t;
|
|
48778
48833
|
})();
|
|
48779
48834
|
}
|
|
48780
|
-
function
|
|
48835
|
+
function X6(e) {
|
|
48781
48836
|
let [t, n] = T("draft"), r = () => {
|
|
48782
|
-
|
|
48837
|
+
J6.invalidateQueries({ queryKey: ["grab"] }), cj() === "capture" && n("capture"), e.onGrab?.();
|
|
48783
48838
|
};
|
|
48784
48839
|
return O(() => {
|
|
48785
48840
|
let e = nj();
|
|
48786
48841
|
e && n(e);
|
|
48787
48842
|
}), re(() => {
|
|
48788
|
-
let e =
|
|
48843
|
+
let e = R6(J6), t = XZ(r), n = () => {
|
|
48789
48844
|
JO().then(y$), VO(), MO().then(async (e) => {
|
|
48790
48845
|
if (!e.projectConfig) return;
|
|
48791
|
-
let t =
|
|
48846
|
+
let t = W3(await wr(), e.projectConfig);
|
|
48792
48847
|
t && await Tr(t);
|
|
48793
48848
|
}).catch(() => {});
|
|
48794
48849
|
};
|
|
48795
48850
|
n();
|
|
48796
48851
|
let i = jr((e) => {
|
|
48797
|
-
e === "settings" && (
|
|
48852
|
+
e === "settings" && (J6.invalidateQueries({ queryKey: ["settings"] }), n()), e === "grab" && r();
|
|
48798
48853
|
});
|
|
48799
48854
|
ie(() => {
|
|
48800
48855
|
t(), i(), e.then((e) => e());
|
|
48801
48856
|
});
|
|
48802
48857
|
}), M(sr, {
|
|
48803
|
-
client:
|
|
48858
|
+
client: J6,
|
|
48804
48859
|
get children() {
|
|
48805
|
-
var r =
|
|
48806
|
-
return i.$$pointerdown = (t) => e.onHeaderPointerDown?.(t), F(a, M(
|
|
48807
|
-
each:
|
|
48860
|
+
var r = H6(), i = r.firstChild, a = i.firstChild, o = a.nextSibling, s = i.nextSibling.firstChild, c = s.nextSibling, l = c.nextSibling, u = l.nextSibling, d = u.nextSibling, f = d.nextSibling, p = f.nextSibling, m = p.nextSibling, h = m.nextSibling;
|
|
48861
|
+
return i.$$pointerdown = (t) => e.onHeaderPointerDown?.(t), F(a, M(Y6, { size: 14 })), F(o, M(Ue, {
|
|
48862
|
+
each: W6,
|
|
48808
48863
|
children: (e) => (() => {
|
|
48809
|
-
var r =
|
|
48864
|
+
var r = U6();
|
|
48810
48865
|
return r.$$click = () => n(e.id), F(r, () => e.label), D(() => ot(r, `h-6 shrink-0 rounded-md px-2 text-[12px] font-medium whitespace-nowrap transition-colors ${t() === e.id ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`)), r;
|
|
48811
48866
|
})()
|
|
48812
48867
|
})), F(i, M(N, {
|
|
@@ -48814,7 +48869,7 @@ function Y6(e) {
|
|
|
48814
48869
|
return e.onTogglePin;
|
|
48815
48870
|
},
|
|
48816
48871
|
get children() {
|
|
48817
|
-
var t =
|
|
48872
|
+
var t = B6();
|
|
48818
48873
|
return t.$$click = () => e.onTogglePin?.(), D((n) => {
|
|
48819
48874
|
var r = e.pinned ? "Switch to overlay" : "Dock beside page", i = e.pinned ? "Overlay the page" : "Dock beside page (squeezes the app, DevTools-style)", a = `hover:bg-surface-3 grid size-6 shrink-0 cursor-pointer place-items-center rounded-md transition-colors ${e.pinned ? "text-accent" : "text-text-dim hover:text-text"}`;
|
|
48820
48875
|
return r !== n.e && rt(t, "aria-label", n.e = r), i !== n.t && rt(t, "title", n.t = i), a !== n.a && ot(t, n.a = a), n;
|
|
@@ -48829,10 +48884,10 @@ function Y6(e) {
|
|
|
48829
48884
|
return e.onClose;
|
|
48830
48885
|
},
|
|
48831
48886
|
get children() {
|
|
48832
|
-
var t =
|
|
48887
|
+
var t = V6();
|
|
48833
48888
|
return t.$$click = () => e.onClose?.(), t;
|
|
48834
48889
|
}
|
|
48835
|
-
}), null), F(s, M(wM, { onCreated: () => n("activity") })), F(c, M(TQ, {})), F(l, M(_1, {})), F(u, M(B1, {})), F(d, M(P1, {})), F(f, M(T0, {})), F(p, M(B0, { onOpenIssue: () => n("activity") })), F(m, M(
|
|
48890
|
+
}), null), F(s, M(wM, { onCreated: () => n("activity") })), F(c, M(TQ, {})), F(l, M(_1, {})), F(u, M(B1, {})), F(d, M(P1, {})), F(f, M(T0, {})), F(p, M(B0, { onOpenIssue: () => n("activity") })), F(m, M(V3, {})), F(h, M(M6, {})), D((n) => {
|
|
48836
48891
|
var r = `border-border bg-surface flex shrink-0 items-center gap-1 border-b px-2 py-1.5 select-none ${e.onHeaderPointerDown ? "cursor-grab active:cursor-grabbing" : ""}`, a = t() !== "draft", o = t() !== "capture", g = t() !== "activity", _ = t() !== "running", v = t() !== "cloud", y = t() !== "local", b = t() !== "prs", x = t() !== "design", S = t() !== "settings";
|
|
48837
48892
|
return r !== n.e && ot(i, n.e = r), a !== n.t && s.classList.toggle("hidden", n.t = a), o !== n.a && c.classList.toggle("hidden", n.a = o), g !== n.o && l.classList.toggle("hidden", n.o = g), _ !== n.i && u.classList.toggle("hidden", n.i = _), v !== n.n && d.classList.toggle("hidden", n.n = v), y !== n.s && f.classList.toggle("hidden", n.s = y), b !== n.h && p.classList.toggle("hidden", n.h = b), x !== n.r && m.classList.toggle("hidden", n.r = x), S !== n.d && h.classList.toggle("hidden", n.d = S), n;
|
|
48838
48893
|
}, {
|
|
@@ -48853,16 +48908,16 @@ function Y6(e) {
|
|
|
48853
48908
|
nt(["pointerdown", "click"]);
|
|
48854
48909
|
//#endregion
|
|
48855
48910
|
//#region src/styles/app.css?inline
|
|
48856
|
-
var X6 = "/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-contain-size:initial;--tw-contain-layout:initial;--tw-contain-paint:initial;--tw-contain-style:initial}}}@layer theme{:root,:host{--font-sans:\"Inter\", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-serif:ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif;--font-mono:ui-monospace, \"SF Mono\", Menlo, monospace;--color-red-500:oklch(63.7% .237 25.331);--color-white:#fff;--spacing:.25rem;--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-wide:.025em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:.75rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#0b0c0e;--color-surface:#141517;--color-surface-2:#1c1d21;--color-surface-3:#24262b;--color-border:#26282d;--color-border-strong:#34363d;--color-text:#e8e9eb;--color-text-dim:#8b8e98;--color-text-faint:#5c5f6a;--color-accent:#5e6ad2;--color-accent-hover:#6e79e0;--color-accent-soft:#5e6ad226;--color-success:#4cb782;--color-warn:#f2c94c;--color-danger:#eb5757;--color-danger-soft:#eb575726}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.visible\\!{visibility:visible!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.-top-0{top:0}.-top-0\\.5{top:calc(var(--spacing) * -.5)}.top-0{top:0}.top-0\\.5{top:calc(var(--spacing) * .5)}.top-1{top:var(--spacing)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-\\[2px\\]{top:2px}.top-full{top:100%}.-right-0{right:0}.-right-0\\.5{right:calc(var(--spacing) * -.5)}.right-0{right:0}.right-0\\.5{right:calc(var(--spacing) * .5)}.right-4{right:calc(var(--spacing) * 4)}.right-full{right:100%}.bottom-0{bottom:0}.bottom-1{bottom:var(--spacing)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-\\[2px\\]{bottom:2px}.bottom-full{bottom:100%}.-left-\\[13\\.5px\\]{left:-13.5px}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\\/2{left:50%}.left-\\[5px\\]{left:5px}.left-full{left:100%}.z-1{z-index:1}.z-10{z-index:10}.z-\\[2147483645\\]{z-index:2147483645}.z-\\[2147483646\\]{z-index:2147483646}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.container\\!{width:100%!important}@media (width>=40rem){.container\\!{max-width:40rem!important}}@media (width>=48rem){.container\\!{max-width:48rem!important}}@media (width>=64rem){.container\\!{max-width:64rem!important}}@media (width>=80rem){.container\\!{max-width:80rem!important}}@media (width>=96rem){.container\\!{max-width:96rem!important}}.-m-0{margin:0}.-m-0\\.5{margin:calc(var(--spacing) * -.5)}.-m-4{margin:calc(var(--spacing) * -4)}.m-0{margin:0}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-1\\.5{margin-block:calc(var(--spacing) * -1.5)}.mt-0{margin-top:0}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-px{margin-top:1px}.mr-0{margin-right:0}.mr-0\\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:var(--spacing)}.mr-1\\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-2\\.5{margin-right:calc(var(--spacing) * 2.5)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0{margin-bottom:0}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-2\\.5{margin-left:calc(var(--spacing) * 2.5)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.size-0{width:0;height:0}.size-1{width:var(--spacing);height:var(--spacing)}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\\[9px\\]{width:9px;height:9px}.size-\\[12px\\]{width:12px;height:12px}.size-\\[16px\\]{width:16px;height:16px}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-16{height:calc(var(--spacing) * 16)}.h-\\[8px\\]{height:8px}.h-\\[17px\\]{height:17px}.h-\\[18px\\]{height:18px}.h-\\[20px\\]{height:20px}.h-\\[24px\\]{height:24px}.h-fit{height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\\[var\\(--rg-edit-list-max-h\\)\\]{max-height:var(--rg-edit-list-max-h)}.min-h-0{min-height:0}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-\\[2lh\\]{min-height:2lh}.min-h-\\[28px\\]{min-height:28px}.w-1{width:var(--spacing)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-72{width:calc(var(--spacing) * 72)}.w-\\[2px\\]{width:2px}.w-\\[Npx\\]{width:Npx}.w-\\[calc\\(100\\%\\+16px\\)\\]{width:calc(100% + 16px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\\[55\\%\\]{max-width:55%}.max-w-\\[100vw\\]{max-width:100vw}.max-w-\\[110px\\]{max-width:110px}.max-w-\\[280px\\]{max-width:280px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\\[3\\.5ch\\]{min-width:3.5ch}.min-w-\\[3ch\\]{min-width:3ch}.min-w-\\[4ch\\]{min-width:4ch}.min-w-\\[5ch\\]{min-width:5ch}.min-w-\\[6ch\\]{min-width:6ch}.min-w-\\[7ch\\]{min-width:7ch}.min-w-\\[8ch\\]{min-width:8ch}.min-w-\\[10ch\\]{min-width:10ch}.min-w-\\[12ch\\]{min-width:12ch}.min-w-\\[36px\\]{min-width:36px}.min-w-\\[52px\\]{min-width:52px}.min-w-\\[100px\\]{min-width:100px}.min-w-\\[150px\\]{min-width:150px}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-rotate-90{rotate:-90deg}.rotate-0{rotate:0deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-decimal{list-style-type:decimal}.grid-cols-\\[0fr\\]{grid-template-columns:0fr}.grid-cols-\\[1fr\\]{grid-template-columns:1fr}.grid-rows-\\[0fr\\]{grid-template-rows:0fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:0}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-\\[5px\\]{gap:5px}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\\[1px\\]{border-radius:1px}.rounded-\\[3px\\]{border-radius:3px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[5px\\]{border-radius:5px}.rounded-\\[6px\\]{border-radius:6px}.rounded-\\[13px\\]{border-radius:13px}.rounded-\\[14px\\]{border-radius:14px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-\\[10px\\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-\\[10px\\]{border-top-left-radius:10px;border-bottom-left-radius:10px}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-\\[10px\\]{border-top-right-radius:10px;border-bottom-right-radius:10px}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-\\[6px\\]{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.rounded-b-\\[10px\\]{border-bottom-right-radius:10px;border-bottom-left-radius:10px}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.\\[border-width\\:0\\.5px\\]{border-width:.5px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.\\[border-top-width\\:0\\.5px\\]{border-top-width:.5px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[var\\(--rg-border-button\\)\\]{border-color:var(--rg-border-button)}.border-accent{border-color:var(--color-accent)}.border-accent\\/40{border-color:#5e6ad266}@supports (color:color-mix(in lab, red, red)){.border-accent\\/40{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.border-border{border-color:var(--color-border)}.border-danger{border-color:var(--color-danger)}.border-danger\\/40{border-color:#eb575766}@supports (color:color-mix(in lab, red, red)){.border-danger\\/40{border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.border-success{border-color:var(--color-success)}.border-success\\/40{border-color:#4cb78266}@supports (color:color-mix(in lab, red, red)){.border-success\\/40{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.border-text-dim{border-color:var(--color-text-dim)}.border-transparent{border-color:#0000}.border-warn{border-color:var(--color-warn)}.border-warn\\/40{border-color:#f2c94c66}@supports (color:color-mix(in lab, red, red)){.border-warn\\/40{border-color:color-mix(in oklab, var(--color-warn) 40%, transparent)}}.border-t-\\[var\\(--rg-border-subtle\\)\\]{border-top-color:var(--rg-border-subtle)}.border-t-transparent{border-top-color:#0000}.bg-\\[var\\(--rg-error-bg\\)\\]{background-color:var(--rg-error-bg)}.bg-\\[var\\(--rg-panel-bg\\)\\]{background-color:var(--rg-panel-bg)}.bg-\\[var\\(--rg-submit-bg\\)\\]{background-color:var(--rg-submit-bg)}.bg-\\[var\\(--rg-surface-active\\)\\]{background-color:var(--rg-surface-active)}.bg-\\[var\\(--rg-surface-hover\\)\\]{background-color:var(--rg-surface-hover)}.bg-\\[var\\(--rg-text-primary\\)\\]{background-color:var(--rg-text-primary)}.bg-\\[var\\(--rg-text-secondary\\)\\]{background-color:var(--rg-text-secondary)}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-bg{background-color:var(--color-bg)}.bg-bg\\/80{background-color:#0b0c0ecc}@supports (color:color-mix(in lab, red, red)){.bg-bg\\/80{background-color:color-mix(in oklab, var(--color-bg) 80%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-current{background-color:currentColor}.bg-danger{background-color:var(--color-danger)}.bg-danger-soft{background-color:var(--color-danger-soft)}.bg-danger\\/10{background-color:#eb57571a}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-success{background-color:var(--color-success)}.bg-surface{background-color:var(--color-surface)}.bg-surface-2{background-color:var(--color-surface-2)}.bg-surface-3{background-color:var(--color-surface-3)}.bg-text-faint{background-color:var(--color-text-faint)}.bg-transparent{background-color:#0000}.bg-warn{background-color:var(--color-warn)}.bg-warn\\/10{background-color:#f2c94c1a}@supports (color:color-mix(in lab, red, red)){.bg-warn\\/10{background-color:color-mix(in oklab, var(--color-warn) 10%, transparent)}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-0\\.25{padding-inline:calc(var(--spacing) * .25)}.px-1{padding-inline:var(--spacing)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-\\[3px\\]{padding-inline:3px}.py-0{padding-block:0}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-0\\.25{padding-block:calc(var(--spacing) * .25)}.py-1{padding-block:var(--spacing)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-px{padding-block:1px}.pt-0{padding-top:0}.pt-0\\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pr-1\\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1{padding-bottom:var(--spacing)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-0{padding-left:0}.pl-0\\.5{padding-left:calc(var(--spacing) * .5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-end{text-align:end}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.font-serif{font-family:var(--font-serif)}.text-\\[9\\.5px\\]{font-size:9.5px}.text-\\[9px\\]{font-size:9px}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[10px\\]{font-size:10px}.text-\\[11\\.5px\\]{font-size:11.5px}.text-\\[11px\\]{font-size:11px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.leading-3{--tw-leading:calc(var(--spacing) * 3);line-height:calc(var(--spacing) * 3)}.leading-3\\.5{--tw-leading:calc(var(--spacing) * 3.5);line-height:calc(var(--spacing) * 3.5)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-normal{overflow-wrap:normal;word-break:normal}.break-words,.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-break-spaces{white-space:break-spaces}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[var\\(--rg-error-text\\)\\]{color:var(--rg-error-text)}.text-\\[var\\(--rg-submit-fg\\)\\]{color:var(--rg-submit-fg)}.text-\\[var\\(--rg-text-primary\\)\\]{color:var(--rg-text-primary)}.text-\\[var\\(--rg-text-primary-85\\)\\]{color:var(--rg-text-primary-85)}.text-\\[var\\(--rg-text-secondary\\)\\]{color:var(--rg-text-secondary)}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-text-faint{color:var(--color-text-faint)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\\[box-shadow\\:var\\(--rg-shadow\\)\\]{box-shadow:var(--rg-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\\[filter\\:var\\(--rg-drop-shadow\\)\\]{filter:var(--rg-drop-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-columns\\]{transition-property:grid-template-columns;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[padding\\,border-radius\\,transform\\]{transition-property:padding,border-radius,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[top\\,left\\,width\\,height\\,opacity\\,border-radius\\]{transition-property:top,left,width,height,opacity,border-radius;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,color\\]{transition-property:transform,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,opacity\\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-\\[80ms\\]{transition-delay:80ms}.duration-60{--tw-duration:60ms;transition-duration:60ms}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-120{--tw-duration:.12s;transition-duration:.12s}.duration-140{--tw-duration:.14s;transition-duration:.14s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-180{--tw-duration:.18s;transition-duration:.18s}.duration-220{--tw-duration:.22s;transition-duration:.22s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.ease-\\[cubic-bezier\\(0\\,0\\,0\\.2\\,1\\)\\]{--tw-ease:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-\\[opacity\\,transform\\]{will-change:opacity,transform}.will-change-transform{will-change:transform}.contain-layout{--tw-contain-layout:layout;contain:var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\\[corner-shape\\:superellipse\\(1\\.25\\)\\]{corner-shape:superellipse(1.25)}.\\[font-synthesis\\:none\\]{font-synthesis:none}.group-open\\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\\:text-\\[var\\(--rg-text-primary\\)\\]:is(:where(.group):hover *){color:var(--rg-text-primary)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-text-faint::placeholder{color:var(--color-text-faint)}@media (hover:hover){.hover\\:bg-\\[var\\(--rg-error-bg-hover\\)\\]:hover{background-color:var(--rg-error-bg-hover)}.hover\\:bg-\\[var\\(--rg-surface-active\\)\\]:hover{background-color:var(--rg-surface-active)}.hover\\:bg-\\[var\\(--rg-surface-hover\\)\\]:hover{background-color:var(--rg-surface-hover)}.hover\\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\\:bg-accent\\/50:hover{background-color:#5e6ad280}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.hover\\:bg-danger\\/30:hover{background-color:#eb57574d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/30:hover{background-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.hover\\:bg-surface-2:hover{background-color:var(--color-surface-2)}.hover\\:bg-surface-3:hover{background-color:var(--color-surface-3)}.hover\\:text-\\[var\\(--rg-text-primary\\)\\]:hover{color:var(--rg-text-primary)}.hover\\:text-accent:hover{color:var(--color-accent)}.hover\\:text-danger:hover{color:var(--color-danger)}.hover\\:text-text:hover{color:var(--color-text)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}}.focus\\:border-accent:focus{border-color:var(--color-accent)}.active\\:cursor-grabbing:active{cursor:grabbing}.active\\:bg-accent:active{background-color:var(--color-accent)}.active\\:transition-none:active{transition-property:none}.disabled\\:cursor-default:disabled{cursor:default}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-surface-3:disabled{background-color:var(--color-surface-3)}.disabled\\:text-text-faint:disabled{color:var(--color-text-faint)}.disabled\\:opacity-40:disabled{opacity:.4}@media (hover:hover){.disabled\\:hover\\:bg-surface-2:disabled:hover{background-color:var(--color-surface-2)}}.data-\\[state\\=on\\]\\:transition-none[data-state=on],.data-\\[state\\=open\\]\\:transition-none[data-state=open],.data-\\[state\\=…\\]\\:transition-none[data-state=…]{transition-property:none}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light],:host([data-theme=light]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}body{background-color:var(--color-bg);font-family:var(--font-sans);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px;margin:0;font-size:13px}@keyframes geist-spinner-fade{0%{opacity:1}to{opacity:.15}}[data-tip]{position:relative}[data-tip]:hover:after{content:attr(data-tip);color:#fff;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;z-index:60;background:#1b1c20;border-radius:6px;max-width:260px;padding:3px 8px;font-size:10.5px;font-weight:500;line-height:1.35;position:absolute;bottom:calc(100% + 6px);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 4px 12px #0000004d}[data-tip][data-tip-pos~=right]:hover:after{left:0;transform:none}[data-tip][data-tip-pos~=left]:hover:after{left:auto;right:0;transform:none}[data-tip][data-tip-pos~=bottom]:hover:after{top:calc(100% + 6px);bottom:auto}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.lg-md p{margin:0 0 6px}.lg-md p:last-child{margin-bottom:0}.lg-md a{color:var(--color-accent);word-break:break-all;text-decoration:none}.lg-md a:hover{text-decoration:underline}.lg-md code{background:var(--color-surface-2);border:1px solid var(--color-border);font-family:var(--font-mono);border-radius:4px;padding:0 4px;font-size:11px}.lg-md pre{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:6px;margin:6px 0;padding:8px;overflow-x:auto}.lg-md pre code{white-space:pre;background:0 0;border:none;padding:0;font-size:11px}.lg-md ul,.lg-md ol{flex-direction:column;gap:2px;margin:4px 0 6px;padding-left:18px;display:flex}.lg-md ul{list-style:outside}.lg-md ol{list-style:decimal}.lg-md h4{margin:8px 0 4px;font-size:12px;font-weight:600}.lg-md lg-media{display:block}.lg-md lg-media img,.lg-md lg-media video{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md video{border:1px solid var(--color-border);background:#000;border-radius:6px;max-width:100%;margin:4px 0}.lg-md img{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md strong{font-weight:600}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:4px}::-webkit-scrollbar-track{background:0 0}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-ordinal{syntax:\"*\";inherits:false}@property --tw-slashed-zero{syntax:\"*\";inherits:false}@property --tw-numeric-figure{syntax:\"*\";inherits:false}@property --tw-numeric-spacing{syntax:\"*\";inherits:false}@property --tw-numeric-fraction{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-backdrop-blur{syntax:\"*\";inherits:false}@property --tw-backdrop-brightness{syntax:\"*\";inherits:false}@property --tw-backdrop-contrast{syntax:\"*\";inherits:false}@property --tw-backdrop-grayscale{syntax:\"*\";inherits:false}@property --tw-backdrop-hue-rotate{syntax:\"*\";inherits:false}@property --tw-backdrop-invert{syntax:\"*\";inherits:false}@property --tw-backdrop-opacity{syntax:\"*\";inherits:false}@property --tw-backdrop-saturate{syntax:\"*\";inherits:false}@property --tw-backdrop-sepia{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@property --tw-contain-size{syntax:\"*\";inherits:false}@property --tw-contain-layout{syntax:\"*\";inherits:false}@property --tw-contain-paint{syntax:\"*\";inherits:false}@property --tw-contain-style{syntax:\"*\";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
|
|
48911
|
+
var Z6 = "/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-contain-size:initial;--tw-contain-layout:initial;--tw-contain-paint:initial;--tw-contain-style:initial}}}@layer theme{:root,:host{--font-sans:\"Inter\", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-serif:ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif;--font-mono:ui-monospace, \"SF Mono\", Menlo, monospace;--color-red-500:oklch(63.7% .237 25.331);--color-white:#fff;--spacing:.25rem;--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-wide:.025em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:.75rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#0b0c0e;--color-surface:#141517;--color-surface-2:#1c1d21;--color-surface-3:#24262b;--color-border:#26282d;--color-border-strong:#34363d;--color-text:#e8e9eb;--color-text-dim:#8b8e98;--color-text-faint:#5c5f6a;--color-accent:#5e6ad2;--color-accent-hover:#6e79e0;--color-accent-soft:#5e6ad226;--color-success:#4cb782;--color-warn:#f2c94c;--color-danger:#eb5757;--color-danger-soft:#eb575726}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.visible\\!{visibility:visible!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.-top-0{top:0}.-top-0\\.5{top:calc(var(--spacing) * -.5)}.top-0{top:0}.top-0\\.5{top:calc(var(--spacing) * .5)}.top-1{top:var(--spacing)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-\\[2px\\]{top:2px}.top-full{top:100%}.-right-0{right:0}.-right-0\\.5{right:calc(var(--spacing) * -.5)}.right-0{right:0}.right-0\\.5{right:calc(var(--spacing) * .5)}.right-4{right:calc(var(--spacing) * 4)}.right-full{right:100%}.bottom-0{bottom:0}.bottom-1{bottom:var(--spacing)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-\\[2px\\]{bottom:2px}.bottom-full{bottom:100%}.-left-\\[13\\.5px\\]{left:-13.5px}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\\/2{left:50%}.left-\\[5px\\]{left:5px}.left-full{left:100%}.z-1{z-index:1}.z-10{z-index:10}.z-\\[2147483645\\]{z-index:2147483645}.z-\\[2147483646\\]{z-index:2147483646}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.container\\!{width:100%!important}@media (width>=40rem){.container\\!{max-width:40rem!important}}@media (width>=48rem){.container\\!{max-width:48rem!important}}@media (width>=64rem){.container\\!{max-width:64rem!important}}@media (width>=80rem){.container\\!{max-width:80rem!important}}@media (width>=96rem){.container\\!{max-width:96rem!important}}.-m-0{margin:0}.-m-0\\.5{margin:calc(var(--spacing) * -.5)}.-m-4{margin:calc(var(--spacing) * -4)}.m-0{margin:0}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-1\\.5{margin-block:calc(var(--spacing) * -1.5)}.mt-0{margin-top:0}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-px{margin-top:1px}.mr-0{margin-right:0}.mr-0\\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:var(--spacing)}.mr-1\\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-2\\.5{margin-right:calc(var(--spacing) * 2.5)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0{margin-bottom:0}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-2\\.5{margin-left:calc(var(--spacing) * 2.5)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.size-0{width:0;height:0}.size-1{width:var(--spacing);height:var(--spacing)}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\\[9px\\]{width:9px;height:9px}.size-\\[12px\\]{width:12px;height:12px}.size-\\[16px\\]{width:16px;height:16px}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-16{height:calc(var(--spacing) * 16)}.h-\\[8px\\]{height:8px}.h-\\[17px\\]{height:17px}.h-\\[18px\\]{height:18px}.h-\\[20px\\]{height:20px}.h-\\[24px\\]{height:24px}.h-fit{height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\\[var\\(--rg-edit-list-max-h\\)\\]{max-height:var(--rg-edit-list-max-h)}.min-h-0{min-height:0}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-\\[2lh\\]{min-height:2lh}.min-h-\\[28px\\]{min-height:28px}.w-1{width:var(--spacing)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-72{width:calc(var(--spacing) * 72)}.w-\\[2px\\]{width:2px}.w-\\[Npx\\]{width:Npx}.w-\\[calc\\(100\\%\\+16px\\)\\]{width:calc(100% + 16px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\\[55\\%\\]{max-width:55%}.max-w-\\[100vw\\]{max-width:100vw}.max-w-\\[110px\\]{max-width:110px}.max-w-\\[280px\\]{max-width:280px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\\[3\\.5ch\\]{min-width:3.5ch}.min-w-\\[3ch\\]{min-width:3ch}.min-w-\\[4ch\\]{min-width:4ch}.min-w-\\[5ch\\]{min-width:5ch}.min-w-\\[6ch\\]{min-width:6ch}.min-w-\\[7ch\\]{min-width:7ch}.min-w-\\[8ch\\]{min-width:8ch}.min-w-\\[10ch\\]{min-width:10ch}.min-w-\\[12ch\\]{min-width:12ch}.min-w-\\[36px\\]{min-width:36px}.min-w-\\[52px\\]{min-width:52px}.min-w-\\[100px\\]{min-width:100px}.min-w-\\[150px\\]{min-width:150px}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-rotate-90{rotate:-90deg}.rotate-0{rotate:0deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-decimal{list-style-type:decimal}.grid-cols-\\[0fr\\]{grid-template-columns:0fr}.grid-cols-\\[1fr\\]{grid-template-columns:1fr}.grid-rows-\\[0fr\\]{grid-template-rows:0fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:0}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-\\[5px\\]{gap:5px}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\\[1px\\]{border-radius:1px}.rounded-\\[3px\\]{border-radius:3px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[5px\\]{border-radius:5px}.rounded-\\[6px\\]{border-radius:6px}.rounded-\\[13px\\]{border-radius:13px}.rounded-\\[14px\\]{border-radius:14px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-\\[10px\\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-\\[10px\\]{border-top-left-radius:10px;border-bottom-left-radius:10px}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-\\[10px\\]{border-top-right-radius:10px;border-bottom-right-radius:10px}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-\\[6px\\]{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.rounded-b-\\[10px\\]{border-bottom-right-radius:10px;border-bottom-left-radius:10px}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.\\[border-width\\:0\\.5px\\]{border-width:.5px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.\\[border-top-width\\:0\\.5px\\]{border-top-width:.5px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[var\\(--rg-border-button\\)\\]{border-color:var(--rg-border-button)}.border-accent{border-color:var(--color-accent)}.border-accent\\/40{border-color:#5e6ad266}@supports (color:color-mix(in lab, red, red)){.border-accent\\/40{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.border-border{border-color:var(--color-border)}.border-danger{border-color:var(--color-danger)}.border-danger\\/40{border-color:#eb575766}@supports (color:color-mix(in lab, red, red)){.border-danger\\/40{border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.border-success{border-color:var(--color-success)}.border-success\\/40{border-color:#4cb78266}@supports (color:color-mix(in lab, red, red)){.border-success\\/40{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.border-text-dim{border-color:var(--color-text-dim)}.border-transparent{border-color:#0000}.border-warn{border-color:var(--color-warn)}.border-warn\\/40{border-color:#f2c94c66}@supports (color:color-mix(in lab, red, red)){.border-warn\\/40{border-color:color-mix(in oklab, var(--color-warn) 40%, transparent)}}.border-t-\\[var\\(--rg-border-subtle\\)\\]{border-top-color:var(--rg-border-subtle)}.border-t-transparent{border-top-color:#0000}.bg-\\[var\\(--rg-error-bg\\)\\]{background-color:var(--rg-error-bg)}.bg-\\[var\\(--rg-panel-bg\\)\\]{background-color:var(--rg-panel-bg)}.bg-\\[var\\(--rg-submit-bg\\)\\]{background-color:var(--rg-submit-bg)}.bg-\\[var\\(--rg-surface-active\\)\\]{background-color:var(--rg-surface-active)}.bg-\\[var\\(--rg-surface-hover\\)\\]{background-color:var(--rg-surface-hover)}.bg-\\[var\\(--rg-text-primary\\)\\]{background-color:var(--rg-text-primary)}.bg-\\[var\\(--rg-text-secondary\\)\\]{background-color:var(--rg-text-secondary)}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-bg{background-color:var(--color-bg)}.bg-bg\\/80{background-color:#0b0c0ecc}@supports (color:color-mix(in lab, red, red)){.bg-bg\\/80{background-color:color-mix(in oklab, var(--color-bg) 80%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-current{background-color:currentColor}.bg-danger{background-color:var(--color-danger)}.bg-danger-soft{background-color:var(--color-danger-soft)}.bg-danger\\/10{background-color:#eb57571a}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-success{background-color:var(--color-success)}.bg-surface{background-color:var(--color-surface)}.bg-surface-2{background-color:var(--color-surface-2)}.bg-surface-3{background-color:var(--color-surface-3)}.bg-text-faint{background-color:var(--color-text-faint)}.bg-transparent{background-color:#0000}.bg-warn{background-color:var(--color-warn)}.bg-warn\\/10{background-color:#f2c94c1a}@supports (color:color-mix(in lab, red, red)){.bg-warn\\/10{background-color:color-mix(in oklab, var(--color-warn) 10%, transparent)}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-0\\.25{padding-inline:calc(var(--spacing) * .25)}.px-1{padding-inline:var(--spacing)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-\\[3px\\]{padding-inline:3px}.py-0{padding-block:0}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-0\\.25{padding-block:calc(var(--spacing) * .25)}.py-1{padding-block:var(--spacing)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-px{padding-block:1px}.pt-0{padding-top:0}.pt-0\\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pr-1\\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1{padding-bottom:var(--spacing)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-0{padding-left:0}.pl-0\\.5{padding-left:calc(var(--spacing) * .5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-end{text-align:end}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.font-serif{font-family:var(--font-serif)}.text-\\[9\\.5px\\]{font-size:9.5px}.text-\\[9px\\]{font-size:9px}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[10px\\]{font-size:10px}.text-\\[11\\.5px\\]{font-size:11.5px}.text-\\[11px\\]{font-size:11px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.leading-3{--tw-leading:calc(var(--spacing) * 3);line-height:calc(var(--spacing) * 3)}.leading-3\\.5{--tw-leading:calc(var(--spacing) * 3.5);line-height:calc(var(--spacing) * 3.5)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-normal{overflow-wrap:normal;word-break:normal}.break-words,.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-break-spaces{white-space:break-spaces}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[var\\(--rg-error-text\\)\\]{color:var(--rg-error-text)}.text-\\[var\\(--rg-submit-fg\\)\\]{color:var(--rg-submit-fg)}.text-\\[var\\(--rg-text-primary\\)\\]{color:var(--rg-text-primary)}.text-\\[var\\(--rg-text-primary-85\\)\\]{color:var(--rg-text-primary-85)}.text-\\[var\\(--rg-text-secondary\\)\\]{color:var(--rg-text-secondary)}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-text-faint{color:var(--color-text-faint)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\\[box-shadow\\:var\\(--rg-shadow\\)\\]{box-shadow:var(--rg-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\\[filter\\:var\\(--rg-drop-shadow\\)\\]{filter:var(--rg-drop-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-columns\\]{transition-property:grid-template-columns;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[padding\\,border-radius\\,transform\\]{transition-property:padding,border-radius,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[top\\,left\\,width\\,height\\,opacity\\,border-radius\\]{transition-property:top,left,width,height,opacity,border-radius;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,color\\]{transition-property:transform,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,opacity\\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-\\[80ms\\]{transition-delay:80ms}.duration-60{--tw-duration:60ms;transition-duration:60ms}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-120{--tw-duration:.12s;transition-duration:.12s}.duration-140{--tw-duration:.14s;transition-duration:.14s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-180{--tw-duration:.18s;transition-duration:.18s}.duration-220{--tw-duration:.22s;transition-duration:.22s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.ease-\\[cubic-bezier\\(0\\,0\\,0\\.2\\,1\\)\\]{--tw-ease:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-\\[opacity\\,transform\\]{will-change:opacity,transform}.will-change-transform{will-change:transform}.contain-layout{--tw-contain-layout:layout;contain:var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\\[corner-shape\\:superellipse\\(1\\.25\\)\\]{corner-shape:superellipse(1.25)}.\\[font-synthesis\\:none\\]{font-synthesis:none}.group-open\\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\\:text-\\[var\\(--rg-text-primary\\)\\]:is(:where(.group):hover *){color:var(--rg-text-primary)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-text-faint::placeholder{color:var(--color-text-faint)}@media (hover:hover){.hover\\:bg-\\[var\\(--rg-error-bg-hover\\)\\]:hover{background-color:var(--rg-error-bg-hover)}.hover\\:bg-\\[var\\(--rg-surface-active\\)\\]:hover{background-color:var(--rg-surface-active)}.hover\\:bg-\\[var\\(--rg-surface-hover\\)\\]:hover{background-color:var(--rg-surface-hover)}.hover\\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\\:bg-accent\\/50:hover{background-color:#5e6ad280}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.hover\\:bg-danger\\/30:hover{background-color:#eb57574d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/30:hover{background-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.hover\\:bg-surface-2:hover{background-color:var(--color-surface-2)}.hover\\:bg-surface-3:hover{background-color:var(--color-surface-3)}.hover\\:text-\\[var\\(--rg-text-primary\\)\\]:hover{color:var(--rg-text-primary)}.hover\\:text-accent:hover{color:var(--color-accent)}.hover\\:text-danger:hover{color:var(--color-danger)}.hover\\:text-text:hover{color:var(--color-text)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}}.focus\\:border-accent:focus{border-color:var(--color-accent)}.active\\:cursor-grabbing:active{cursor:grabbing}.active\\:bg-accent:active{background-color:var(--color-accent)}.active\\:transition-none:active{transition-property:none}.disabled\\:cursor-default:disabled{cursor:default}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-surface-3:disabled{background-color:var(--color-surface-3)}.disabled\\:text-text-faint:disabled{color:var(--color-text-faint)}.disabled\\:opacity-40:disabled{opacity:.4}@media (hover:hover){.disabled\\:hover\\:bg-surface-2:disabled:hover{background-color:var(--color-surface-2)}}.data-\\[state\\=on\\]\\:transition-none[data-state=on],.data-\\[state\\=open\\]\\:transition-none[data-state=open],.data-\\[state\\=…\\]\\:transition-none[data-state=…]{transition-property:none}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light],:host([data-theme=light]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}body{background-color:var(--color-bg);font-family:var(--font-sans);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px;margin:0;font-size:13px}@keyframes geist-spinner-fade{0%{opacity:1}to{opacity:.15}}[data-tip]{position:relative}[data-tip]:hover:after{content:attr(data-tip);color:#fff;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;z-index:60;background:#1b1c20;border-radius:6px;max-width:260px;padding:3px 8px;font-size:10.5px;font-weight:500;line-height:1.35;position:absolute;bottom:calc(100% + 6px);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 4px 12px #0000004d}[data-tip][data-tip-pos~=right]:hover:after{left:0;transform:none}[data-tip][data-tip-pos~=left]:hover:after{left:auto;right:0;transform:none}[data-tip][data-tip-pos~=bottom]:hover:after{top:calc(100% + 6px);bottom:auto}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.lg-md p{margin:0 0 6px}.lg-md p:last-child{margin-bottom:0}.lg-md a{color:var(--color-accent);word-break:break-all;text-decoration:none}.lg-md a:hover{text-decoration:underline}.lg-md code{background:var(--color-surface-2);border:1px solid var(--color-border);font-family:var(--font-mono);border-radius:4px;padding:0 4px;font-size:11px}.lg-md pre{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:6px;margin:6px 0;padding:8px;overflow-x:auto}.lg-md pre code{white-space:pre;background:0 0;border:none;padding:0;font-size:11px}.lg-md ul,.lg-md ol{flex-direction:column;gap:2px;margin:4px 0 6px;padding-left:18px;display:flex}.lg-md ul{list-style:outside}.lg-md ol{list-style:decimal}.lg-md h4{margin:8px 0 4px;font-size:12px;font-weight:600}.lg-md lg-media{display:block}.lg-md lg-media img,.lg-md lg-media video{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md video{border:1px solid var(--color-border);background:#000;border-radius:6px;max-width:100%;margin:4px 0}.lg-md img{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md strong{font-weight:600}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:4px}::-webkit-scrollbar-track{background:0 0}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-ordinal{syntax:\"*\";inherits:false}@property --tw-slashed-zero{syntax:\"*\";inherits:false}@property --tw-numeric-figure{syntax:\"*\";inherits:false}@property --tw-numeric-spacing{syntax:\"*\";inherits:false}@property --tw-numeric-fraction{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-backdrop-blur{syntax:\"*\";inherits:false}@property --tw-backdrop-brightness{syntax:\"*\";inherits:false}@property --tw-backdrop-contrast{syntax:\"*\";inherits:false}@property --tw-backdrop-grayscale{syntax:\"*\";inherits:false}@property --tw-backdrop-hue-rotate{syntax:\"*\";inherits:false}@property --tw-backdrop-invert{syntax:\"*\";inherits:false}@property --tw-backdrop-opacity{syntax:\"*\";inherits:false}@property --tw-backdrop-saturate{syntax:\"*\";inherits:false}@property --tw-backdrop-sepia{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@property --tw-contain-size{syntax:\"*\";inherits:false}@property --tw-contain-layout{syntax:\"*\";inherits:false}@property --tw-contain-paint{syntax:\"*\";inherits:false}@property --tw-contain-style{syntax:\"*\";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
|
|
48857
48912
|
//#endregion
|
|
48858
48913
|
//#region src/page/index.tsx
|
|
48859
48914
|
zr();
|
|
48860
|
-
var
|
|
48861
|
-
function
|
|
48915
|
+
var Q6 = /*#__PURE__*/ P("<span aria-hidden class=\"bg-danger size-2 shrink-0 animate-pulse rounded-full\">"), $6 = /*#__PURE__*/ P("<span class=\"text-text min-w-[5ch] text-[11px] font-medium tabular-nums\">"), e8 = /*#__PURE__*/ P("<button class=\"bg-accent hover:bg-accent-hover h-7 cursor-pointer rounded-full px-2.5 text-[11px] font-medium text-white transition-colors\"><span class=\"inline-block min-w-[4ch] text-center\">Stop"), t8 = /*#__PURE__*/ P("<p class=\"text-warn px-1.5 pt-1 pb-1.5 text-[10.5px] font-semibold tracking-wide uppercase\">Needs review"), n8 = /*#__PURE__*/ P("<div><p class=\"text-text-dim px-1.5 pt-1 pb-1.5 text-[10.5px] font-semibold tracking-wide uppercase\">Running agents"), r8 = /*#__PURE__*/ P("<div class=\"fixed z-[2147483646] select-none\"><div class=\"bg-surface border-border text-text flex h-9 cursor-grab items-center gap-1 rounded-full border py-1 pr-1 pl-2.5 font-sans shadow-lg active:cursor-grabbing\">"), i8 = /*#__PURE__*/ P("<div><div title=\"Drag to resize\">"), a8 = /*#__PURE__*/ P("<button title=\"Open Linear Grab\"aria-label=\"Open Linear Grab\"class=\"text-accent hover:opacity-80 inline-flex cursor-pointer items-center gap-1.5\">"), o8 = /*#__PURE__*/ P("<span class=\"bg-border h-4 w-px\"aria-hidden>"), s8 = /*#__PURE__*/ P("<span aria-hidden class=\"bg-warn size-2 rounded-full\">"), c8 = /*#__PURE__*/ P("<span class=\"text-warn min-w-[3.5ch] text-left text-[11px] font-medium tabular-nums\"> rev"), l8 = /*#__PURE__*/ P("<button title=\"Running agents\"aria-label=\"Running agents\"class=\"hover:bg-surface-2 flex h-7 cursor-pointer items-center gap-1.5 rounded-full px-2 transition-colors\"><span aria-hidden></span><span>"), u8 = /*#__PURE__*/ P("<span aria-hidden class=\"bg-accent size-2 shrink-0 animate-pulse rounded-full\">"), d8 = /*#__PURE__*/ P("<span class=\"text-text min-w-[3ch] text-[11px] font-medium tabular-nums\">s"), f8 = /*#__PURE__*/ P("<span class=\"text-text-dim min-w-[7ch] text-[11px] tabular-nums\"> states"), p8 = /*#__PURE__*/ P("<p class=\"text-text-faint px-1.5 pb-1.5 text-[11.5px]\">No agents running right now."), m8 = /*#__PURE__*/ P("<button class=\"hover:bg-surface-2 flex w-full cursor-pointer flex-col gap-0.5 rounded-md px-1.5 py-1.5 text-left transition-colors\"><span class=\"flex min-w-0 items-center gap-1.5\"><span aria-hidden class=\"size-1.5 shrink-0 rounded-full\"></span><span class=\"font-mono text-text-dim shrink-0 text-[10.5px]\"></span><span class=\"text-text truncate text-[11.5px]\"></span></span><span class=\"text-text-faint pl-3 text-[10.5px] tabular-nums\"> · <!> · ");
|
|
48916
|
+
function h8(e = {}) {
|
|
48862
48917
|
if (typeof window > "u" || window.__LINEAR_GRAB_PAGE__) return;
|
|
48863
48918
|
window.__LINEAR_GRAB_PAGE__ = !0;
|
|
48864
48919
|
let t = () => {
|
|
48865
|
-
lk(), z2(),
|
|
48920
|
+
lk(), z2(), Y4(), JZ();
|
|
48866
48921
|
let t = document.createElement("div");
|
|
48867
48922
|
t.id = "linear-grab-root", document.body.appendChild(t);
|
|
48868
48923
|
let n = (e) => {
|
|
@@ -48890,17 +48945,17 @@ function m8(e = {}) {
|
|
|
48890
48945
|
"keypress"
|
|
48891
48946
|
]) window.addEventListener(e, n, { capture: !0 });
|
|
48892
48947
|
let r = t.attachShadow({ mode: "open" }), i = document.createElement("style");
|
|
48893
|
-
i.textContent =
|
|
48948
|
+
i.textContent = Z6, r.appendChild(i);
|
|
48894
48949
|
let a = document.createElement("div");
|
|
48895
48950
|
r.appendChild(a);
|
|
48896
|
-
let o = () => a.setAttribute("data-theme",
|
|
48897
|
-
o(), matchMedia("(prefers-color-scheme: light)").addEventListener("change", o), tt(() => M(
|
|
48951
|
+
let o = () => a.setAttribute("data-theme", g8());
|
|
48952
|
+
o(), matchMedia("(prefers-color-scheme: light)").addEventListener("change", o), tt(() => M(S8, { get defaultOpen() {
|
|
48898
48953
|
return e.defaultOpen ?? !1;
|
|
48899
48954
|
} }), a);
|
|
48900
48955
|
};
|
|
48901
48956
|
document.body ? t() : document.addEventListener("DOMContentLoaded", t, { once: !0 });
|
|
48902
48957
|
}
|
|
48903
|
-
function
|
|
48958
|
+
function g8() {
|
|
48904
48959
|
try {
|
|
48905
48960
|
let e = [document.body, document.documentElement];
|
|
48906
48961
|
for (let t of e) {
|
|
@@ -48910,11 +48965,11 @@ function h8() {
|
|
|
48910
48965
|
} catch {}
|
|
48911
48966
|
return matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark";
|
|
48912
48967
|
}
|
|
48913
|
-
var
|
|
48914
|
-
function
|
|
48968
|
+
var _8 = 130, v8 = 36, y8 = 380, b8 = 280, x8 = 720;
|
|
48969
|
+
function S8(e) {
|
|
48915
48970
|
let [t, n] = T(e.defaultOpen), [r, i] = T("right"), [a, o] = T({
|
|
48916
|
-
x: Math.max(8, window.innerWidth -
|
|
48917
|
-
y: Math.max(8, window.innerHeight -
|
|
48971
|
+
x: Math.max(8, window.innerWidth - _8 - 24),
|
|
48972
|
+
y: Math.max(8, window.innerHeight - v8 - 20)
|
|
48918
48973
|
}), [s, c] = T({
|
|
48919
48974
|
running: [],
|
|
48920
48975
|
review: []
|
|
@@ -48934,12 +48989,12 @@ function x8(e) {
|
|
|
48934
48989
|
let t = Math.floor(e / 1e3);
|
|
48935
48990
|
return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
|
|
48936
48991
|
}, [b, x] = T(null), S = (e) => ({
|
|
48937
|
-
x: Math.min(Math.max(8, e.x), window.innerWidth -
|
|
48938
|
-
y: Math.min(Math.max(8, e.y), window.innerHeight -
|
|
48992
|
+
x: Math.min(Math.max(8, e.x), window.innerWidth - _8 - 8),
|
|
48993
|
+
y: Math.min(Math.max(8, e.y), window.innerHeight - v8 - 8)
|
|
48939
48994
|
}), C = (e) => ({
|
|
48940
48995
|
x: Math.min(Math.max(8 - (te() - 80), e.x), window.innerWidth - 80),
|
|
48941
48996
|
y: Math.min(Math.max(0, e.y), window.innerHeight - 80)
|
|
48942
|
-
}), [w, E] = T(!1), [k, ee] = T("cloud"), [A, j] = T(!1), [te, ne] = T(
|
|
48997
|
+
}), [w, E] = T(!1), [k, ee] = T("cloud"), [A, j] = T(!1), [te, ne] = T(y8), ae = (e) => Math.min(x8, Math.max(b8, Math.min(e, window.innerWidth - 60)));
|
|
48943
48998
|
O(() => {
|
|
48944
48999
|
let e = document.documentElement, n = t() && w();
|
|
48945
49000
|
e.style.transition = "margin 0.2s ease", e.style.marginRight = n && r() === "right" ? `${te()}px` : "", e.style.marginLeft = n && r() === "left" ? `${te()}px` : "";
|
|
@@ -49053,7 +49108,7 @@ function x8(e) {
|
|
|
49053
49108
|
return !t();
|
|
49054
49109
|
},
|
|
49055
49110
|
get children() {
|
|
49056
|
-
var e =
|
|
49111
|
+
var e = r8(), t = e.firstChild;
|
|
49057
49112
|
return t.$$click = () => {
|
|
49058
49113
|
se || p() === "recording" || h().active || (f(!1), n(!0));
|
|
49059
49114
|
}, t.$$pointerdown = ce, F(t, M(N, {
|
|
@@ -49063,14 +49118,14 @@ function x8(e) {
|
|
|
49063
49118
|
get fallback() {
|
|
49064
49119
|
return [
|
|
49065
49120
|
(() => {
|
|
49066
|
-
var e =
|
|
49121
|
+
var e = a8();
|
|
49067
49122
|
return e.$$click = () => {
|
|
49068
49123
|
se || (f(!1), n(!0));
|
|
49069
|
-
}, F(e, M(
|
|
49124
|
+
}, F(e, M(Y6, { size: 13 })), e;
|
|
49070
49125
|
})(),
|
|
49071
|
-
|
|
49126
|
+
o8(),
|
|
49072
49127
|
(() => {
|
|
49073
|
-
var e =
|
|
49128
|
+
var e = l8(), t = e.firstChild, n = t.nextSibling;
|
|
49074
49129
|
return e.$$click = (e) => {
|
|
49075
49130
|
e.stopPropagation(), !se && f((e) => !e);
|
|
49076
49131
|
}, F(n, (() => {
|
|
@@ -49081,8 +49136,8 @@ function x8(e) {
|
|
|
49081
49136
|
return Qe(() => !A())() && u().length > 0;
|
|
49082
49137
|
},
|
|
49083
49138
|
get children() {
|
|
49084
|
-
return [
|
|
49085
|
-
var e =
|
|
49139
|
+
return [s8(), (() => {
|
|
49140
|
+
var e = c8(), t = e.firstChild;
|
|
49086
49141
|
return F(e, () => u().length, t), e;
|
|
49087
49142
|
})()];
|
|
49088
49143
|
}
|
|
@@ -49103,17 +49158,17 @@ function x8(e) {
|
|
|
49103
49158
|
},
|
|
49104
49159
|
get fallback() {
|
|
49105
49160
|
return [
|
|
49106
|
-
|
|
49161
|
+
u8(),
|
|
49107
49162
|
(() => {
|
|
49108
|
-
var e =
|
|
49163
|
+
var e = d8(), t = e.firstChild;
|
|
49109
49164
|
return F(e, () => Math.ceil(h().msLeft / 1e3), t), e;
|
|
49110
49165
|
})(),
|
|
49111
49166
|
(() => {
|
|
49112
|
-
var e =
|
|
49167
|
+
var e = f8(), t = e.firstChild;
|
|
49113
49168
|
return F(e, () => h().total, t), D(() => rt(e, "title", Object.entries(h().byTrigger).map(([e, t]) => `${t} ${e}`).join(" · ") || "hover / open the component to record its states")), e;
|
|
49114
49169
|
})(),
|
|
49115
49170
|
(() => {
|
|
49116
|
-
var e =
|
|
49171
|
+
var e = e8();
|
|
49117
49172
|
return e.$$click = (e) => {
|
|
49118
49173
|
e.stopPropagation(), !se && o2();
|
|
49119
49174
|
}, e;
|
|
@@ -49122,13 +49177,13 @@ function x8(e) {
|
|
|
49122
49177
|
},
|
|
49123
49178
|
get children() {
|
|
49124
49179
|
return [
|
|
49125
|
-
|
|
49180
|
+
Q6(),
|
|
49126
49181
|
(() => {
|
|
49127
|
-
var e =
|
|
49182
|
+
var e = $6();
|
|
49128
49183
|
return F(e, () => y(_())), e;
|
|
49129
49184
|
})(),
|
|
49130
49185
|
(() => {
|
|
49131
|
-
var e =
|
|
49186
|
+
var e = e8();
|
|
49132
49187
|
return e.$$click = () => {
|
|
49133
49188
|
se || eO();
|
|
49134
49189
|
}, e;
|
|
@@ -49142,17 +49197,17 @@ function x8(e) {
|
|
|
49142
49197
|
return d();
|
|
49143
49198
|
},
|
|
49144
49199
|
get children() {
|
|
49145
|
-
var e =
|
|
49200
|
+
var e = n8(), t = e.firstChild;
|
|
49146
49201
|
return F(e, M(N, {
|
|
49147
49202
|
get when() {
|
|
49148
49203
|
return u().length > 0;
|
|
49149
49204
|
},
|
|
49150
49205
|
get children() {
|
|
49151
|
-
return [
|
|
49206
|
+
return [t8(), M(Ue, {
|
|
49152
49207
|
get each() {
|
|
49153
49208
|
return u();
|
|
49154
49209
|
},
|
|
49155
|
-
children: (e) => M(
|
|
49210
|
+
children: (e) => M(C8, {
|
|
49156
49211
|
agent: e,
|
|
49157
49212
|
review: !0,
|
|
49158
49213
|
onOpen: ue
|
|
@@ -49164,14 +49219,14 @@ function x8(e) {
|
|
|
49164
49219
|
return l().length > 0;
|
|
49165
49220
|
},
|
|
49166
49221
|
get fallback() {
|
|
49167
|
-
return
|
|
49222
|
+
return p8();
|
|
49168
49223
|
},
|
|
49169
49224
|
get children() {
|
|
49170
49225
|
return M(Ue, {
|
|
49171
49226
|
get each() {
|
|
49172
49227
|
return l();
|
|
49173
49228
|
},
|
|
49174
|
-
children: (e) => M(
|
|
49229
|
+
children: (e) => M(C8, {
|
|
49175
49230
|
agent: e,
|
|
49176
49231
|
onOpen: ue
|
|
49177
49232
|
})
|
|
@@ -49192,8 +49247,8 @@ function x8(e) {
|
|
|
49192
49247
|
return t();
|
|
49193
49248
|
},
|
|
49194
49249
|
get children() {
|
|
49195
|
-
var e =
|
|
49196
|
-
return t.$$pointerdown = de, F(e, M(
|
|
49250
|
+
var e = i8(), t = e.firstChild;
|
|
49251
|
+
return t.$$pointerdown = de, F(e, M(X6, {
|
|
49197
49252
|
onGrab: () => n(!0),
|
|
49198
49253
|
onClose: () => n(!1),
|
|
49199
49254
|
get onHeaderPointerDown() {
|
|
@@ -49221,19 +49276,19 @@ function x8(e) {
|
|
|
49221
49276
|
}
|
|
49222
49277
|
})];
|
|
49223
49278
|
}
|
|
49224
|
-
function
|
|
49279
|
+
function C8(e) {
|
|
49225
49280
|
return (() => {
|
|
49226
|
-
var t =
|
|
49281
|
+
var t = m8(), n = t.firstChild, r = n.firstChild, i = r.nextSibling, a = i.nextSibling, o = n.nextSibling, s = o.firstChild, c = s.nextSibling;
|
|
49227
49282
|
return c.nextSibling, t.$$click = () => e.onOpen(e.agent.id), F(i, () => e.agent.identifier), F(a, () => e.agent.title), F(o, (() => {
|
|
49228
49283
|
var t = Qe(() => !!e.review);
|
|
49229
49284
|
return () => t() ? "PR ready · needs review" : e.agent.stateName;
|
|
49230
|
-
})(), s), F(o, () => e.agent.delegateName, c), F(o, () =>
|
|
49285
|
+
})(), s), F(o, () => e.agent.delegateName, c), F(o, () => w8(e.agent.updatedAt), null), D((t) => ut(r, "background", e.review ? "var(--color-warn)" : e.agent.stateColor)), t;
|
|
49231
49286
|
})();
|
|
49232
49287
|
}
|
|
49233
|
-
function
|
|
49288
|
+
function w8(e) {
|
|
49234
49289
|
let t = Math.max(0, Math.floor((Date.now() - Date.parse(e)) / 1e3));
|
|
49235
49290
|
return t < 60 ? "now" : t < 3600 ? `${Math.floor(t / 60)}m` : t < 86400 ? `${Math.floor(t / 3600)}h` : `${Math.floor(t / 86400)}d`;
|
|
49236
49291
|
}
|
|
49237
49292
|
nt(["pointerdown", "click"]);
|
|
49238
49293
|
//#endregion
|
|
49239
|
-
export {
|
|
49294
|
+
export { h8 as init };
|