@consilioweb/payload-seo-analyzer 1.12.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/client.cjs +347 -145
- package/dist/client.js +347 -145
- package/dist/index.cjs +133 -1
- package/dist/index.js +133 -1
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -17349,9 +17349,210 @@ var C7 = {
|
|
|
17349
17349
|
green: "#22c55e",
|
|
17350
17350
|
red: "#ef4444",
|
|
17351
17351
|
amber: "#f59e0b",
|
|
17352
|
-
|
|
17352
|
+
violet: "#7c3aed"
|
|
17353
17353
|
};
|
|
17354
17354
|
var S4 = {
|
|
17355
|
+
fr: {
|
|
17356
|
+
title: "Opportunit\xE9s CTR (faible clic / bonne position)",
|
|
17357
|
+
subtitle: "Pages bien positionn\xE9es mais peu cliqu\xE9es (m\xE9ta peu attractive). Donn\xE9es Google Search Console \u2192 r\xE9\xE9criture m\xE9ta cibl\xE9e.",
|
|
17358
|
+
needGsc: "Connectez Google Search Console ci-dessus pour activer les opportunit\xE9s CTR.",
|
|
17359
|
+
none: "Aucune opportunit\xE9 d\xE9tect\xE9e sur la p\xE9riode. \u{1F389}",
|
|
17360
|
+
loading: "Analyse des donn\xE9es GSC\u2026",
|
|
17361
|
+
page: "Page",
|
|
17362
|
+
pos: "Pos.",
|
|
17363
|
+
ctr: "CTR",
|
|
17364
|
+
expected: "attendu",
|
|
17365
|
+
potential: "Clics/mois potentiels",
|
|
17366
|
+
optimize: "Optimiser",
|
|
17367
|
+
optimizing: "\u2026",
|
|
17368
|
+
apply: "Appliquer",
|
|
17369
|
+
applied: "Appliqu\xE9 \u2713",
|
|
17370
|
+
noKey: "Cl\xE9 API Claude requise (ANTHROPIC_API_KEY).",
|
|
17371
|
+
open: "Ouvrir",
|
|
17372
|
+
refresh: "Rafra\xEEchir"
|
|
17373
|
+
},
|
|
17374
|
+
en: {
|
|
17375
|
+
title: "CTR opportunities (low clicks / good rank)",
|
|
17376
|
+
subtitle: "Pages that rank well but get few clicks (weak meta). Google Search Console data \u2192 targeted meta rewrite.",
|
|
17377
|
+
needGsc: "Connect Google Search Console above to enable CTR opportunities.",
|
|
17378
|
+
none: "No opportunities for the period. \u{1F389}",
|
|
17379
|
+
loading: "Analyzing GSC data\u2026",
|
|
17380
|
+
page: "Page",
|
|
17381
|
+
pos: "Pos.",
|
|
17382
|
+
ctr: "CTR",
|
|
17383
|
+
expected: "expected",
|
|
17384
|
+
potential: "Potential clicks/mo",
|
|
17385
|
+
optimize: "Optimize",
|
|
17386
|
+
optimizing: "\u2026",
|
|
17387
|
+
apply: "Apply",
|
|
17388
|
+
applied: "Applied \u2713",
|
|
17389
|
+
noKey: "Claude API key required (ANTHROPIC_API_KEY).",
|
|
17390
|
+
open: "Open",
|
|
17391
|
+
refresh: "Refresh"
|
|
17392
|
+
}
|
|
17393
|
+
};
|
|
17394
|
+
function CtrOpportunitiesPanel({ locale }) {
|
|
17395
|
+
const s = S4[locale] ?? S4.fr;
|
|
17396
|
+
const [opps, setOpps] = useState(null);
|
|
17397
|
+
const [loading, setLoading] = useState(true);
|
|
17398
|
+
const [notConnected, setNotConnected] = useState(false);
|
|
17399
|
+
const [error, setError] = useState(null);
|
|
17400
|
+
const [state, setState] = useState({});
|
|
17401
|
+
const load = useCallback(async () => {
|
|
17402
|
+
setLoading(true);
|
|
17403
|
+
setError(null);
|
|
17404
|
+
try {
|
|
17405
|
+
const res = await fetch("/api/seo-plugin/ctr-opportunities", { credentials: "include", cache: "no-store" });
|
|
17406
|
+
if (res.status === 403 || res.status === 409 || res.status === 400) {
|
|
17407
|
+
setNotConnected(true);
|
|
17408
|
+
return;
|
|
17409
|
+
}
|
|
17410
|
+
const json = await res.json();
|
|
17411
|
+
if (!res.ok) {
|
|
17412
|
+
setError(json.error || `Error ${res.status}`);
|
|
17413
|
+
return;
|
|
17414
|
+
}
|
|
17415
|
+
setNotConnected(false);
|
|
17416
|
+
setOpps(json.opportunities || []);
|
|
17417
|
+
} catch (e) {
|
|
17418
|
+
setError(e instanceof Error ? e.message : "Network error");
|
|
17419
|
+
} finally {
|
|
17420
|
+
setLoading(false);
|
|
17421
|
+
}
|
|
17422
|
+
}, []);
|
|
17423
|
+
useEffect(() => {
|
|
17424
|
+
void load();
|
|
17425
|
+
}, [load]);
|
|
17426
|
+
const setRow = (url, patch) => setState((p) => ({ ...p, [url]: { ...p[url], ...patch } }));
|
|
17427
|
+
const optimize = async (o) => {
|
|
17428
|
+
if (!o.doc) return;
|
|
17429
|
+
setRow(o.url, { busy: true, error: void 0 });
|
|
17430
|
+
try {
|
|
17431
|
+
const res = await fetch("/api/seo-plugin/ai-optimize", {
|
|
17432
|
+
method: "POST",
|
|
17433
|
+
credentials: "include",
|
|
17434
|
+
headers: { "Content-Type": "application/json" },
|
|
17435
|
+
body: JSON.stringify({ collection: o.doc.collection, id: o.doc.id })
|
|
17436
|
+
});
|
|
17437
|
+
const json = await res.json();
|
|
17438
|
+
if (!res.ok) {
|
|
17439
|
+
setRow(o.url, { busy: false, error: json.code === "no_api_key" ? s.noKey : json.error || `Error ${res.status}` });
|
|
17440
|
+
return;
|
|
17441
|
+
}
|
|
17442
|
+
setRow(o.url, { busy: false, suggestion: { ...json.suggestions, current: json.current } });
|
|
17443
|
+
} catch (e) {
|
|
17444
|
+
setRow(o.url, { busy: false, error: e instanceof Error ? e.message : "Network error" });
|
|
17445
|
+
}
|
|
17446
|
+
};
|
|
17447
|
+
const apply = async (o) => {
|
|
17448
|
+
const rs = state[o.url];
|
|
17449
|
+
if (!o.doc || !rs?.suggestion) return;
|
|
17450
|
+
setRow(o.url, { busy: true, error: void 0 });
|
|
17451
|
+
const patch = {};
|
|
17452
|
+
if (rs.suggestion.metaTitle || rs.suggestion.metaDescription) {
|
|
17453
|
+
patch.meta = { title: rs.suggestion.metaTitle, description: rs.suggestion.metaDescription };
|
|
17454
|
+
}
|
|
17455
|
+
if (rs.suggestion.focusKeyword && rs.suggestion.focusKeyword !== rs.suggestion.current?.focusKeyword) {
|
|
17456
|
+
patch.focusKeyword = rs.suggestion.focusKeyword;
|
|
17457
|
+
}
|
|
17458
|
+
try {
|
|
17459
|
+
await fetch(`/api/${o.doc.collection}/${o.doc.id}`, {
|
|
17460
|
+
method: "PATCH",
|
|
17461
|
+
credentials: "include",
|
|
17462
|
+
headers: { "Content-Type": "application/json" },
|
|
17463
|
+
body: JSON.stringify(patch)
|
|
17464
|
+
});
|
|
17465
|
+
setRow(o.url, { busy: false, applied: true });
|
|
17466
|
+
} catch (e) {
|
|
17467
|
+
setRow(o.url, { busy: false, error: e instanceof Error ? e.message : "Network error" });
|
|
17468
|
+
}
|
|
17469
|
+
};
|
|
17470
|
+
const card = { padding: 16, borderRadius: 12, border: `1px solid ${C7.border}`, backgroundColor: C7.card, marginBottom: 20 };
|
|
17471
|
+
const btn = (bg) => ({
|
|
17472
|
+
padding: "5px 10px",
|
|
17473
|
+
borderRadius: 6,
|
|
17474
|
+
border: `1px solid ${bg}`,
|
|
17475
|
+
backgroundColor: bg,
|
|
17476
|
+
color: "#fff",
|
|
17477
|
+
fontSize: 11,
|
|
17478
|
+
fontWeight: 700,
|
|
17479
|
+
cursor: "pointer"
|
|
17480
|
+
});
|
|
17481
|
+
return /* @__PURE__ */ jsxs("div", { style: card, children: [
|
|
17482
|
+
/* @__PURE__ */ jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", gap: 8, flexWrap: "wrap" }, children: [
|
|
17483
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
17484
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C7.text }, children: s.title }),
|
|
17485
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C7.sub, marginTop: 2 }, children: s.subtitle })
|
|
17486
|
+
] }),
|
|
17487
|
+
!notConnected && /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void load(), style: btn(C7.sub), children: s.refresh })
|
|
17488
|
+
] }),
|
|
17489
|
+
error && /* @__PURE__ */ jsx("div", { style: { color: C7.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
|
|
17490
|
+
notConnected && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C7.sub }, children: s.needGsc }),
|
|
17491
|
+
loading && !notConnected && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C7.sub }, children: s.loading }),
|
|
17492
|
+
!loading && !notConnected && opps && opps.length === 0 && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C7.sub }, children: s.none }),
|
|
17493
|
+
!notConnected && opps && opps.length > 0 && /* @__PURE__ */ jsx("div", { style: { overflowX: "auto", marginTop: 12 }, children: /* @__PURE__ */ jsxs("table", { style: { width: "100%", borderCollapse: "collapse", fontSize: 12 }, children: [
|
|
17494
|
+
/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { style: { textAlign: "left", color: C7.sub }, children: [
|
|
17495
|
+
/* @__PURE__ */ jsx("th", { style: { padding: "6px 8px" }, children: s.page }),
|
|
17496
|
+
/* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.pos }),
|
|
17497
|
+
/* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.ctr }),
|
|
17498
|
+
/* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.potential }),
|
|
17499
|
+
/* @__PURE__ */ jsx("th", { style: { padding: "6px 8px" } })
|
|
17500
|
+
] }) }),
|
|
17501
|
+
/* @__PURE__ */ jsx("tbody", { children: opps.slice(0, 50).map((o) => {
|
|
17502
|
+
const rs = state[o.url] || {};
|
|
17503
|
+
const path = (() => {
|
|
17504
|
+
try {
|
|
17505
|
+
return new URL(o.url).pathname;
|
|
17506
|
+
} catch {
|
|
17507
|
+
return o.url;
|
|
17508
|
+
}
|
|
17509
|
+
})();
|
|
17510
|
+
return /* @__PURE__ */ jsxs(React4.Fragment, { children: [
|
|
17511
|
+
/* @__PURE__ */ jsxs("tr", { style: { borderTop: `1px solid ${C7.border}`, color: C7.text }, children: [
|
|
17512
|
+
/* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", maxWidth: 320, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: path }),
|
|
17513
|
+
/* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", textAlign: "right" }, children: o.position.toFixed(1) }),
|
|
17514
|
+
/* @__PURE__ */ jsxs("td", { style: { padding: "6px 8px", textAlign: "right" }, children: [
|
|
17515
|
+
/* @__PURE__ */ jsxs("span", { style: { color: C7.red }, children: [
|
|
17516
|
+
(o.ctr * 100).toFixed(1),
|
|
17517
|
+
"%"
|
|
17518
|
+
] }),
|
|
17519
|
+
/* @__PURE__ */ jsxs("span", { style: { color: C7.sub }, children: [
|
|
17520
|
+
" / ",
|
|
17521
|
+
(o.expectedCtr * 100).toFixed(0),
|
|
17522
|
+
"% ",
|
|
17523
|
+
s.expected
|
|
17524
|
+
] })
|
|
17525
|
+
] }),
|
|
17526
|
+
/* @__PURE__ */ jsxs("td", { style: { padding: "6px 8px", textAlign: "right", fontWeight: 700, color: C7.amber }, children: [
|
|
17527
|
+
"+",
|
|
17528
|
+
o.potentialClicks
|
|
17529
|
+
] }),
|
|
17530
|
+
/* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", textAlign: "right" }, children: rs.applied ? /* @__PURE__ */ jsx("span", { style: { fontSize: 11, fontWeight: 700, color: C7.green }, children: s.applied }) : o.doc ? rs.suggestion ? /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void apply(o), disabled: rs.busy, style: btn(C7.green), children: rs.busy ? s.optimizing : s.apply }) : /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void optimize(o), disabled: rs.busy, style: btn(C7.violet), children: rs.busy ? s.optimizing : `\u2728 ${s.optimize}` }) : /* @__PURE__ */ jsxs("a", { href: o.url, target: "_blank", rel: "noopener noreferrer", style: { fontSize: 11, color: C7.sub }, children: [
|
|
17531
|
+
s.open,
|
|
17532
|
+
" \u2197"
|
|
17533
|
+
] }) })
|
|
17534
|
+
] }),
|
|
17535
|
+
rs.suggestion && !rs.applied && /* @__PURE__ */ jsx("tr", { style: { color: C7.text }, children: /* @__PURE__ */ jsxs("td", { colSpan: 5, style: { padding: "0 8px 8px 8px" }, children: [
|
|
17536
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C7.green, fontWeight: 600 }, children: rs.suggestion.metaTitle }),
|
|
17537
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C7.sub }, children: rs.suggestion.metaDescription })
|
|
17538
|
+
] }) }),
|
|
17539
|
+
rs.error && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: 5, style: { padding: "0 8px 6px 8px", fontSize: 11, color: C7.red }, children: rs.error }) })
|
|
17540
|
+
] }, o.url);
|
|
17541
|
+
}) })
|
|
17542
|
+
] }) })
|
|
17543
|
+
] });
|
|
17544
|
+
}
|
|
17545
|
+
var C8 = {
|
|
17546
|
+
text: "var(--theme-text, #1a1a1a)",
|
|
17547
|
+
sub: "var(--theme-elevation-600, #6b7280)",
|
|
17548
|
+
card: "var(--theme-elevation-50, #f9fafb)",
|
|
17549
|
+
border: "var(--theme-elevation-200, #e5e7eb)",
|
|
17550
|
+
green: "#22c55e",
|
|
17551
|
+
red: "#ef4444",
|
|
17552
|
+
amber: "#f59e0b",
|
|
17553
|
+
blue: "#3b82f6"
|
|
17554
|
+
};
|
|
17555
|
+
var S5 = {
|
|
17355
17556
|
fr: {
|
|
17356
17557
|
title: "Monitoring & alertes",
|
|
17357
17558
|
subtitle: "Digest p\xE9riodique : r\xE9gressions de score, nouveaux 404, chutes de position (webhook / email).",
|
|
@@ -17394,7 +17595,7 @@ var S4 = {
|
|
|
17394
17595
|
}
|
|
17395
17596
|
};
|
|
17396
17597
|
function AlertsPanel({ locale }) {
|
|
17397
|
-
const s =
|
|
17598
|
+
const s = S5[locale] ?? S5.fr;
|
|
17398
17599
|
const [digest, setDigest] = useState(null);
|
|
17399
17600
|
const [config, setConfig] = useState(null);
|
|
17400
17601
|
const [loading, setLoading] = useState(true);
|
|
@@ -17449,15 +17650,15 @@ function AlertsPanel({ locale }) {
|
|
|
17449
17650
|
const card = {
|
|
17450
17651
|
padding: 16,
|
|
17451
17652
|
borderRadius: 12,
|
|
17452
|
-
border: `1px solid ${
|
|
17453
|
-
backgroundColor:
|
|
17653
|
+
border: `1px solid ${C8.border}`,
|
|
17654
|
+
backgroundColor: C8.card,
|
|
17454
17655
|
marginBottom: 20
|
|
17455
17656
|
};
|
|
17456
17657
|
const btn = {
|
|
17457
17658
|
padding: "8px 12px",
|
|
17458
17659
|
borderRadius: 8,
|
|
17459
|
-
border: `1px solid ${
|
|
17460
|
-
backgroundColor:
|
|
17660
|
+
border: `1px solid ${C8.blue}`,
|
|
17661
|
+
backgroundColor: C8.blue,
|
|
17461
17662
|
color: "#fff",
|
|
17462
17663
|
fontSize: 12,
|
|
17463
17664
|
fontWeight: 700,
|
|
@@ -17470,32 +17671,32 @@ function AlertsPanel({ locale }) {
|
|
|
17470
17671
|
padding: "3px 8px",
|
|
17471
17672
|
borderRadius: 999,
|
|
17472
17673
|
color: "#fff",
|
|
17473
|
-
backgroundColor: ok ?
|
|
17674
|
+
backgroundColor: ok ? C8.green : C8.sub,
|
|
17474
17675
|
marginRight: 6
|
|
17475
17676
|
});
|
|
17476
17677
|
const hasChannel = config && (config.webhookConfigured || config.emailConfigured);
|
|
17477
17678
|
const list = (title, rows) => rows.length ? /* @__PURE__ */ jsxs("div", { style: { marginTop: 10 }, children: [
|
|
17478
|
-
/* @__PURE__ */ jsxs("div", { style: { fontSize: 12, fontWeight: 700, color:
|
|
17679
|
+
/* @__PURE__ */ jsxs("div", { style: { fontSize: 12, fontWeight: 700, color: C8.text, marginBottom: 4 }, children: [
|
|
17479
17680
|
title,
|
|
17480
17681
|
" ",
|
|
17481
|
-
/* @__PURE__ */ jsxs("span", { style: { color:
|
|
17682
|
+
/* @__PURE__ */ jsxs("span", { style: { color: C8.amber }, children: [
|
|
17482
17683
|
"(",
|
|
17483
17684
|
rows.length,
|
|
17484
17685
|
")"
|
|
17485
17686
|
] })
|
|
17486
17687
|
] }),
|
|
17487
|
-
/* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 12, color:
|
|
17688
|
+
/* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 12, color: C8.sub, lineHeight: 1.6 }, children: rows.slice(0, 8).map((r, i) => /* @__PURE__ */ jsx("li", { children: r }, i)) })
|
|
17488
17689
|
] }) : null;
|
|
17489
17690
|
return /* @__PURE__ */ jsxs("div", { style: card, children: [
|
|
17490
17691
|
/* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 8, flexWrap: "wrap" }, children: [
|
|
17491
17692
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
17492
|
-
/* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color:
|
|
17493
|
-
/* @__PURE__ */ jsx("div", { style: { fontSize: 12, color:
|
|
17693
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C8.text }, children: s.title }),
|
|
17694
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C8.sub, marginTop: 2 }, children: s.subtitle })
|
|
17494
17695
|
] }),
|
|
17495
17696
|
hasChannel && /* @__PURE__ */ jsx("button", { type: "button", onClick: sendNow, disabled: busy, style: btn, children: busy ? s.sending : s.sendNow })
|
|
17496
17697
|
] }),
|
|
17497
|
-
error && /* @__PURE__ */ jsx("div", { style: { color:
|
|
17498
|
-
notice && /* @__PURE__ */ jsx("div", { style: { color:
|
|
17698
|
+
error && /* @__PURE__ */ jsx("div", { style: { color: C8.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
|
|
17699
|
+
notice && /* @__PURE__ */ jsx("div", { style: { color: C8.green, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: notice }),
|
|
17499
17700
|
config && /* @__PURE__ */ jsxs("div", { style: { marginTop: 12 }, children: [
|
|
17500
17701
|
/* @__PURE__ */ jsxs("span", { style: chip(config.webhookConfigured, s.webhook), children: [
|
|
17501
17702
|
s.webhook,
|
|
@@ -17508,15 +17709,15 @@ function AlertsPanel({ locale }) {
|
|
|
17508
17709
|
config.emailConfigured ? s.configured : s.missing
|
|
17509
17710
|
] })
|
|
17510
17711
|
] }),
|
|
17511
|
-
!loading && !hasChannel && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color:
|
|
17512
|
-
loading && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color:
|
|
17712
|
+
!loading && !hasChannel && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C8.sub }, children: s.notConfigured }),
|
|
17713
|
+
loading && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C8.sub }, children: s.loading }),
|
|
17513
17714
|
digest && /* @__PURE__ */ jsxs("div", { style: { marginTop: 8 }, children: [
|
|
17514
|
-
/* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color:
|
|
17715
|
+
/* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C8.sub, marginTop: 6 }, children: [
|
|
17515
17716
|
digest.totalIssues,
|
|
17516
17717
|
" ",
|
|
17517
17718
|
s.issues
|
|
17518
17719
|
] }),
|
|
17519
|
-
digest.totalIssues === 0 && /* @__PURE__ */ jsx("div", { style: { marginTop: 8, fontSize: 13, color:
|
|
17720
|
+
digest.totalIssues === 0 && /* @__PURE__ */ jsx("div", { style: { marginTop: 8, fontSize: 13, color: C8.sub }, children: s.noIssues }),
|
|
17520
17721
|
list(
|
|
17521
17722
|
s.scoreReg,
|
|
17522
17723
|
digest.scoreRegressions.map((r) => `${r.collection}/${r.documentId} \u2014 ${r.from} \u2192 ${r.to} (\u2212${r.drop})`)
|
|
@@ -17526,7 +17727,7 @@ function AlertsPanel({ locale }) {
|
|
|
17526
17727
|
] })
|
|
17527
17728
|
] });
|
|
17528
17729
|
}
|
|
17529
|
-
var
|
|
17730
|
+
var C9 = {
|
|
17530
17731
|
text: "var(--theme-text, #1a1a1a)",
|
|
17531
17732
|
sub: "var(--theme-elevation-600, #6b7280)",
|
|
17532
17733
|
card: "var(--theme-elevation-50, #f9fafb)",
|
|
@@ -17536,7 +17737,7 @@ var C8 = {
|
|
|
17536
17737
|
red: "#ef4444",
|
|
17537
17738
|
violet: "#7c3aed"
|
|
17538
17739
|
};
|
|
17539
|
-
var
|
|
17740
|
+
var S6 = {
|
|
17540
17741
|
fr: {
|
|
17541
17742
|
title: "Alt-text IA des images",
|
|
17542
17743
|
subtitle: "G\xE9n\xE8re l'attribut alt des images qui n'en ont pas (Claude vision), pour l'accessibilit\xE9 et le SEO.",
|
|
@@ -17569,7 +17770,7 @@ var S5 = {
|
|
|
17569
17770
|
}
|
|
17570
17771
|
};
|
|
17571
17772
|
function AltTextPanel({ locale }) {
|
|
17572
|
-
const s =
|
|
17773
|
+
const s = S6[locale] ?? S6.fr;
|
|
17573
17774
|
const [items, setItems] = useState(null);
|
|
17574
17775
|
const [collection, setCollection] = useState("media");
|
|
17575
17776
|
const [missingCount, setMissingCount] = useState(0);
|
|
@@ -17646,8 +17847,8 @@ function AltTextPanel({ locale }) {
|
|
|
17646
17847
|
const card = {
|
|
17647
17848
|
padding: 16,
|
|
17648
17849
|
borderRadius: 12,
|
|
17649
|
-
border: `1px solid ${
|
|
17650
|
-
backgroundColor:
|
|
17850
|
+
border: `1px solid ${C9.border}`,
|
|
17851
|
+
backgroundColor: C9.card,
|
|
17651
17852
|
marginBottom: 20
|
|
17652
17853
|
};
|
|
17653
17854
|
const btn = (bg) => ({
|
|
@@ -17663,18 +17864,18 @@ function AltTextPanel({ locale }) {
|
|
|
17663
17864
|
return /* @__PURE__ */ jsxs("div", { style: card, children: [
|
|
17664
17865
|
/* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 8, flexWrap: "wrap" }, children: [
|
|
17665
17866
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
17666
|
-
/* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color:
|
|
17667
|
-
/* @__PURE__ */ jsx("div", { style: { fontSize: 12, color:
|
|
17867
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C9.text }, children: s.title }),
|
|
17868
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C9.sub, marginTop: 2 }, children: s.subtitle })
|
|
17668
17869
|
] }),
|
|
17669
|
-
status === "ok" && /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void load(), style: btn(
|
|
17870
|
+
status === "ok" && /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void load(), style: btn(C9.sub), children: s.refresh })
|
|
17670
17871
|
] }),
|
|
17671
|
-
status === "forbidden" && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color:
|
|
17672
|
-
status === "disabled" && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color:
|
|
17872
|
+
status === "forbidden" && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C9.sub }, children: s.forbidden }),
|
|
17873
|
+
status === "disabled" && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C9.sub }, children: s.disabled }),
|
|
17673
17874
|
status === "ok" && /* @__PURE__ */ jsxs("div", { style: { marginTop: 12 }, children: [
|
|
17674
|
-
loading && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color:
|
|
17675
|
-
!loading && items && items.length === 0 && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color:
|
|
17875
|
+
loading && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C9.sub }, children: s.loading }),
|
|
17876
|
+
!loading && items && items.length === 0 && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C9.sub }, children: s.none }),
|
|
17676
17877
|
!loading && items && items.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17677
|
-
/* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color:
|
|
17878
|
+
/* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C9.sub, marginBottom: 10 }, children: [
|
|
17678
17879
|
missingCount,
|
|
17679
17880
|
" ",
|
|
17680
17881
|
s.missing
|
|
@@ -17690,8 +17891,8 @@ function AltTextPanel({ locale }) {
|
|
|
17690
17891
|
alignItems: "center",
|
|
17691
17892
|
padding: 8,
|
|
17692
17893
|
borderRadius: 8,
|
|
17693
|
-
border: `1px solid ${
|
|
17694
|
-
backgroundColor:
|
|
17894
|
+
border: `1px solid ${C9.border}`,
|
|
17895
|
+
backgroundColor: C9.bg
|
|
17695
17896
|
},
|
|
17696
17897
|
children: [
|
|
17697
17898
|
/* @__PURE__ */ jsx(
|
|
@@ -17699,11 +17900,11 @@ function AltTextPanel({ locale }) {
|
|
|
17699
17900
|
{
|
|
17700
17901
|
src: item.url,
|
|
17701
17902
|
alt: "",
|
|
17702
|
-
style: { width: 48, height: 48, objectFit: "cover", borderRadius: 6, flexShrink: 0, border: `1px solid ${
|
|
17903
|
+
style: { width: 48, height: 48, objectFit: "cover", borderRadius: 6, flexShrink: 0, border: `1px solid ${C9.border}` }
|
|
17703
17904
|
}
|
|
17704
17905
|
),
|
|
17705
17906
|
/* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
17706
|
-
/* @__PURE__ */ jsx("div", { style: { fontSize: 11, color:
|
|
17907
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C9.sub, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: item.filename }),
|
|
17707
17908
|
rs.alt !== void 0 ? /* @__PURE__ */ jsx(
|
|
17708
17909
|
"input",
|
|
17709
17910
|
{
|
|
@@ -17717,15 +17918,15 @@ function AltTextPanel({ locale }) {
|
|
|
17717
17918
|
padding: "4px 8px",
|
|
17718
17919
|
fontSize: 12,
|
|
17719
17920
|
borderRadius: 6,
|
|
17720
|
-
border: `1px solid ${
|
|
17721
|
-
backgroundColor:
|
|
17722
|
-
color:
|
|
17921
|
+
border: `1px solid ${C9.border}`,
|
|
17922
|
+
backgroundColor: C9.bg,
|
|
17923
|
+
color: C9.text
|
|
17723
17924
|
}
|
|
17724
17925
|
}
|
|
17725
|
-
) : /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color:
|
|
17726
|
-
rs.error && /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color:
|
|
17926
|
+
) : /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C9.sub, marginTop: 4, fontStyle: "italic" }, children: "\u2014" }),
|
|
17927
|
+
rs.error && /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C9.red, marginTop: 2 }, children: rs.error })
|
|
17727
17928
|
] }),
|
|
17728
|
-
/* @__PURE__ */ jsx("div", { style: { flexShrink: 0 }, children: rs.applied ? /* @__PURE__ */ jsx("span", { style: { fontSize: 11, fontWeight: 700, color:
|
|
17929
|
+
/* @__PURE__ */ jsx("div", { style: { flexShrink: 0 }, children: rs.applied ? /* @__PURE__ */ jsx("span", { style: { fontSize: 11, fontWeight: 700, color: C9.green }, children: s.applied }) : rs.alt !== void 0 ? /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void apply(item), disabled: rs.busy, style: btn(C9.green), children: rs.busy ? s.generating : s.apply }) : /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void generate(item), disabled: rs.busy, style: btn(C9.violet), children: rs.busy ? s.generating : s.generate }) })
|
|
17729
17930
|
]
|
|
17730
17931
|
},
|
|
17731
17932
|
item.id
|
|
@@ -18150,6 +18351,7 @@ function PerformanceView() {
|
|
|
18150
18351
|
/* @__PURE__ */ jsx(CoreWebVitalsPanel, { locale }),
|
|
18151
18352
|
/* @__PURE__ */ jsx(GscPanel, { locale }),
|
|
18152
18353
|
/* @__PURE__ */ jsx(RankTrackingPanel, { locale }),
|
|
18354
|
+
/* @__PURE__ */ jsx(CtrOpportunitiesPanel, { locale }),
|
|
18153
18355
|
/* @__PURE__ */ jsx(AlertsPanel, { locale }),
|
|
18154
18356
|
/* @__PURE__ */ jsx(AltTextPanel, { locale }),
|
|
18155
18357
|
showImport && /* @__PURE__ */ jsxs(
|
|
@@ -18675,7 +18877,7 @@ function PerformanceView() {
|
|
|
18675
18877
|
}
|
|
18676
18878
|
);
|
|
18677
18879
|
}
|
|
18678
|
-
var
|
|
18880
|
+
var C10 = {
|
|
18679
18881
|
text: "var(--theme-text, #1a1a1a)",
|
|
18680
18882
|
sub: "var(--theme-elevation-600, #6b7280)",
|
|
18681
18883
|
card: "var(--theme-elevation-50, #f9fafb)",
|
|
@@ -18685,7 +18887,7 @@ var C9 = {
|
|
|
18685
18887
|
red: "#ef4444",
|
|
18686
18888
|
blue: "#3b82f6"
|
|
18687
18889
|
};
|
|
18688
|
-
var
|
|
18890
|
+
var S7 = {
|
|
18689
18891
|
fr: {
|
|
18690
18892
|
title: "Brief de contenu IA",
|
|
18691
18893
|
subtitle: "G\xE9n\xE8re un plan r\xE9dactionnel optimis\xE9 pour un mot-cl\xE9 (plan, entit\xE9s, questions, longueur cible).",
|
|
@@ -18720,7 +18922,7 @@ var S6 = {
|
|
|
18720
18922
|
}
|
|
18721
18923
|
};
|
|
18722
18924
|
function ContentBriefPanel({ locale }) {
|
|
18723
|
-
const s =
|
|
18925
|
+
const s = S7[locale] ?? S7.fr;
|
|
18724
18926
|
const [keyword, setKeyword] = useState("");
|
|
18725
18927
|
const [brief, setBrief] = useState(null);
|
|
18726
18928
|
const [busy, setBusy] = useState(false);
|
|
@@ -18756,8 +18958,8 @@ function ContentBriefPanel({ locale }) {
|
|
|
18756
18958
|
const card = {
|
|
18757
18959
|
padding: 16,
|
|
18758
18960
|
borderRadius: 12,
|
|
18759
|
-
border: `1px solid ${
|
|
18760
|
-
backgroundColor:
|
|
18961
|
+
border: `1px solid ${C10.border}`,
|
|
18962
|
+
backgroundColor: C10.card,
|
|
18761
18963
|
marginBottom: 20
|
|
18762
18964
|
};
|
|
18763
18965
|
const chip = {
|
|
@@ -18766,14 +18968,14 @@ function ContentBriefPanel({ locale }) {
|
|
|
18766
18968
|
padding: "3px 8px",
|
|
18767
18969
|
borderRadius: 999,
|
|
18768
18970
|
backgroundColor: "rgba(59,130,246,0.12)",
|
|
18769
|
-
color:
|
|
18770
|
-
border: `1px solid ${
|
|
18971
|
+
color: C10.blue,
|
|
18972
|
+
border: `1px solid ${C10.border}`,
|
|
18771
18973
|
margin: "0 6px 6px 0"
|
|
18772
18974
|
};
|
|
18773
|
-
const h4 = { fontSize: 12, fontWeight: 800, color:
|
|
18975
|
+
const h4 = { fontSize: 12, fontWeight: 800, color: C10.text, margin: "14px 0 6px", textTransform: "uppercase" };
|
|
18774
18976
|
return /* @__PURE__ */ jsxs("div", { style: card, children: [
|
|
18775
|
-
/* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color:
|
|
18776
|
-
/* @__PURE__ */ jsx("div", { style: { fontSize: 12, color:
|
|
18977
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C10.text }, children: s.title }),
|
|
18978
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C10.sub, marginTop: 2, marginBottom: 12 }, children: s.subtitle }),
|
|
18777
18979
|
/* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8, flexWrap: "wrap" }, children: [
|
|
18778
18980
|
/* @__PURE__ */ jsx(
|
|
18779
18981
|
"input",
|
|
@@ -18790,9 +18992,9 @@ function ContentBriefPanel({ locale }) {
|
|
|
18790
18992
|
padding: "8px 12px",
|
|
18791
18993
|
fontSize: 13,
|
|
18792
18994
|
borderRadius: 8,
|
|
18793
|
-
border: `1px solid ${
|
|
18794
|
-
backgroundColor:
|
|
18795
|
-
color:
|
|
18995
|
+
border: `1px solid ${C10.border}`,
|
|
18996
|
+
backgroundColor: C10.bg,
|
|
18997
|
+
color: C10.text
|
|
18796
18998
|
}
|
|
18797
18999
|
}
|
|
18798
19000
|
),
|
|
@@ -18805,8 +19007,8 @@ function ContentBriefPanel({ locale }) {
|
|
|
18805
19007
|
style: {
|
|
18806
19008
|
padding: "8px 14px",
|
|
18807
19009
|
borderRadius: 8,
|
|
18808
|
-
border: `1px solid ${
|
|
18809
|
-
backgroundColor:
|
|
19010
|
+
border: `1px solid ${C10.violet}`,
|
|
19011
|
+
backgroundColor: C10.violet,
|
|
18810
19012
|
color: "#fff",
|
|
18811
19013
|
fontSize: 12,
|
|
18812
19014
|
fontWeight: 700,
|
|
@@ -18817,12 +19019,12 @@ function ContentBriefPanel({ locale }) {
|
|
|
18817
19019
|
}
|
|
18818
19020
|
)
|
|
18819
19021
|
] }),
|
|
18820
|
-
error && /* @__PURE__ */ jsx("div", { style: { color:
|
|
19022
|
+
error && /* @__PURE__ */ jsx("div", { style: { color: C10.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
|
|
18821
19023
|
brief && /* @__PURE__ */ jsxs("div", { style: { marginTop: 8 }, children: [
|
|
18822
|
-
brief.recommendedWordCount > 0 && /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color:
|
|
19024
|
+
brief.recommendedWordCount > 0 && /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C10.sub, marginTop: 10 }, children: [
|
|
18823
19025
|
s.words,
|
|
18824
19026
|
": ",
|
|
18825
|
-
/* @__PURE__ */ jsxs("b", { style: { color:
|
|
19027
|
+
/* @__PURE__ */ jsxs("b", { style: { color: C10.text }, children: [
|
|
18826
19028
|
"~",
|
|
18827
19029
|
brief.recommendedWordCount,
|
|
18828
19030
|
" ",
|
|
@@ -18831,7 +19033,7 @@ function ContentBriefPanel({ locale }) {
|
|
|
18831
19033
|
] }),
|
|
18832
19034
|
brief.outline.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18833
19035
|
/* @__PURE__ */ jsx("div", { style: h4, children: s.outline }),
|
|
18834
|
-
/* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 13, color:
|
|
19036
|
+
/* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 13, color: C10.text, lineHeight: 1.6 }, children: brief.outline.map((o, i) => /* @__PURE__ */ jsx("li", { style: { marginLeft: o.level === "h3" ? 18 : 0, color: o.level === "h3" ? C10.sub : C10.text, fontWeight: o.level === "h2" ? 700 : 400 }, children: o.text }, i)) })
|
|
18835
19037
|
] }),
|
|
18836
19038
|
brief.entities.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18837
19039
|
/* @__PURE__ */ jsx("div", { style: h4, children: s.entities }),
|
|
@@ -18839,7 +19041,7 @@ function ContentBriefPanel({ locale }) {
|
|
|
18839
19041
|
] }),
|
|
18840
19042
|
brief.questions.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18841
19043
|
/* @__PURE__ */ jsx("div", { style: h4, children: s.questions }),
|
|
18842
|
-
/* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 13, color:
|
|
19044
|
+
/* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 13, color: C10.text, lineHeight: 1.6 }, children: brief.questions.map((q, i) => /* @__PURE__ */ jsx("li", { children: q }, i)) })
|
|
18843
19045
|
] }),
|
|
18844
19046
|
brief.internalLinkIdeas.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18845
19047
|
/* @__PURE__ */ jsx("div", { style: h4, children: s.links }),
|
|
@@ -18847,7 +19049,7 @@ function ContentBriefPanel({ locale }) {
|
|
|
18847
19049
|
] }),
|
|
18848
19050
|
brief.notes.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18849
19051
|
/* @__PURE__ */ jsx("div", { style: h4, children: s.notes }),
|
|
18850
|
-
/* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 12, color:
|
|
19052
|
+
/* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 12, color: C10.sub, lineHeight: 1.6 }, children: brief.notes.map((n, i) => /* @__PURE__ */ jsx("li", { children: n }, i)) })
|
|
18851
19053
|
] })
|
|
18852
19054
|
] })
|
|
18853
19055
|
] });
|
|
@@ -19989,7 +20191,7 @@ var controlBtnStyle = {
|
|
|
19989
20191
|
cursor: "pointer",
|
|
19990
20192
|
lineHeight: 1.4
|
|
19991
20193
|
};
|
|
19992
|
-
var
|
|
20194
|
+
var C11 = {
|
|
19993
20195
|
cyan: "#00E5FF",
|
|
19994
20196
|
black: "#000",
|
|
19995
20197
|
green: "#22c55e",
|
|
@@ -20004,10 +20206,10 @@ var C10 = {
|
|
|
20004
20206
|
var TITLE_MIN = 30;
|
|
20005
20207
|
var TITLE_MAX = 60;
|
|
20006
20208
|
function getCharColor(len) {
|
|
20007
|
-
if (len === 0) return
|
|
20008
|
-
if (len >= TITLE_MIN && len <= TITLE_MAX) return
|
|
20009
|
-
if (len > 0 && len < TITLE_MIN) return
|
|
20010
|
-
return
|
|
20209
|
+
if (len === 0) return C11.textSecondary;
|
|
20210
|
+
if (len >= TITLE_MIN && len <= TITLE_MAX) return C11.green;
|
|
20211
|
+
if (len > 0 && len < TITLE_MIN) return C11.orange;
|
|
20212
|
+
return C11.red;
|
|
20011
20213
|
}
|
|
20012
20214
|
function getProgressPercent(len) {
|
|
20013
20215
|
if (len === 0) return 0;
|
|
@@ -20015,9 +20217,9 @@ function getProgressPercent(len) {
|
|
|
20015
20217
|
}
|
|
20016
20218
|
function getProgressColor(len) {
|
|
20017
20219
|
if (len === 0) return "var(--theme-elevation-200, #e5e7eb)";
|
|
20018
|
-
if (len >= TITLE_MIN && len <= TITLE_MAX) return
|
|
20019
|
-
if (len < TITLE_MIN) return
|
|
20020
|
-
return
|
|
20220
|
+
if (len >= TITLE_MIN && len <= TITLE_MAX) return C11.green;
|
|
20221
|
+
if (len < TITLE_MIN) return C11.orange;
|
|
20222
|
+
return C11.red;
|
|
20021
20223
|
}
|
|
20022
20224
|
function MetaTitleField({
|
|
20023
20225
|
path,
|
|
@@ -20088,7 +20290,7 @@ function MetaTitleField({
|
|
|
20088
20290
|
style: {
|
|
20089
20291
|
fontSize: 13,
|
|
20090
20292
|
fontWeight: 700,
|
|
20091
|
-
color:
|
|
20293
|
+
color: C11.textPrimary
|
|
20092
20294
|
},
|
|
20093
20295
|
children: t.metaTitle.label
|
|
20094
20296
|
}
|
|
@@ -20128,9 +20330,9 @@ function MetaTitleField({
|
|
|
20128
20330
|
fontSize: 14,
|
|
20129
20331
|
fontFamily: "inherit",
|
|
20130
20332
|
borderRadius: 8,
|
|
20131
|
-
border: `2px solid ${
|
|
20132
|
-
backgroundColor:
|
|
20133
|
-
color:
|
|
20333
|
+
border: `2px solid ${C11.border}`,
|
|
20334
|
+
backgroundColor: C11.surfaceBg,
|
|
20335
|
+
color: C11.textPrimary,
|
|
20134
20336
|
outline: "none",
|
|
20135
20337
|
boxShadow: "2px 2px 0 0 var(--theme-border-color, rgba(0,0,0,1))"
|
|
20136
20338
|
}
|
|
@@ -20148,9 +20350,9 @@ function MetaTitleField({
|
|
|
20148
20350
|
gap: 5,
|
|
20149
20351
|
padding: "8px 14px",
|
|
20150
20352
|
borderRadius: 8,
|
|
20151
|
-
border: `2px solid ${
|
|
20152
|
-
backgroundColor: loading ?
|
|
20153
|
-
color: loading ?
|
|
20353
|
+
border: `2px solid ${C11.border}`,
|
|
20354
|
+
backgroundColor: loading ? C11.surface50 : C11.cyan,
|
|
20355
|
+
color: loading ? C11.textSecondary : C11.black,
|
|
20154
20356
|
fontWeight: 800,
|
|
20155
20357
|
fontSize: 11,
|
|
20156
20358
|
textTransform: "uppercase",
|
|
@@ -20197,7 +20399,7 @@ function MetaTitleField({
|
|
|
20197
20399
|
justifyContent: "space-between",
|
|
20198
20400
|
marginTop: 4,
|
|
20199
20401
|
fontSize: 10,
|
|
20200
|
-
color:
|
|
20402
|
+
color: C11.textSecondary
|
|
20201
20403
|
},
|
|
20202
20404
|
children: [
|
|
20203
20405
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
@@ -20231,9 +20433,9 @@ function MetaTitleField({
|
|
|
20231
20433
|
borderRadius: 6,
|
|
20232
20434
|
fontSize: 11,
|
|
20233
20435
|
fontWeight: 600,
|
|
20234
|
-
color:
|
|
20436
|
+
color: C11.red,
|
|
20235
20437
|
backgroundColor: "rgba(239,68,68,0.08)",
|
|
20236
|
-
border: `1px solid ${
|
|
20438
|
+
border: `1px solid ${C11.red}`
|
|
20237
20439
|
},
|
|
20238
20440
|
children: error
|
|
20239
20441
|
}
|
|
@@ -20242,7 +20444,7 @@ function MetaTitleField({
|
|
|
20242
20444
|
}
|
|
20243
20445
|
);
|
|
20244
20446
|
}
|
|
20245
|
-
var
|
|
20447
|
+
var C12 = {
|
|
20246
20448
|
cyan: "#00E5FF",
|
|
20247
20449
|
black: "#000",
|
|
20248
20450
|
green: "#22c55e",
|
|
@@ -20257,10 +20459,10 @@ var C11 = {
|
|
|
20257
20459
|
var DESC_MIN = 120;
|
|
20258
20460
|
var DESC_MAX = 160;
|
|
20259
20461
|
function getCharColor2(len) {
|
|
20260
|
-
if (len === 0) return
|
|
20261
|
-
if (len >= DESC_MIN && len <= DESC_MAX) return
|
|
20262
|
-
if (len > 0 && len < DESC_MIN) return
|
|
20263
|
-
return
|
|
20462
|
+
if (len === 0) return C12.textSecondary;
|
|
20463
|
+
if (len >= DESC_MIN && len <= DESC_MAX) return C12.green;
|
|
20464
|
+
if (len > 0 && len < DESC_MIN) return C12.orange;
|
|
20465
|
+
return C12.red;
|
|
20264
20466
|
}
|
|
20265
20467
|
function getProgressPercent2(len) {
|
|
20266
20468
|
if (len === 0) return 0;
|
|
@@ -20268,9 +20470,9 @@ function getProgressPercent2(len) {
|
|
|
20268
20470
|
}
|
|
20269
20471
|
function getProgressColor2(len) {
|
|
20270
20472
|
if (len === 0) return "var(--theme-elevation-200, #e5e7eb)";
|
|
20271
|
-
if (len >= DESC_MIN && len <= DESC_MAX) return
|
|
20272
|
-
if (len < DESC_MIN) return
|
|
20273
|
-
return
|
|
20473
|
+
if (len >= DESC_MIN && len <= DESC_MAX) return C12.green;
|
|
20474
|
+
if (len < DESC_MIN) return C12.orange;
|
|
20475
|
+
return C12.red;
|
|
20274
20476
|
}
|
|
20275
20477
|
function MetaDescriptionField({
|
|
20276
20478
|
path,
|
|
@@ -20341,7 +20543,7 @@ function MetaDescriptionField({
|
|
|
20341
20543
|
style: {
|
|
20342
20544
|
fontSize: 13,
|
|
20343
20545
|
fontWeight: 700,
|
|
20344
|
-
color:
|
|
20546
|
+
color: C12.textPrimary
|
|
20345
20547
|
},
|
|
20346
20548
|
children: t.metaDescription.label
|
|
20347
20549
|
}
|
|
@@ -20381,9 +20583,9 @@ function MetaDescriptionField({
|
|
|
20381
20583
|
fontSize: 14,
|
|
20382
20584
|
fontFamily: "inherit",
|
|
20383
20585
|
borderRadius: 8,
|
|
20384
|
-
border: `2px solid ${
|
|
20385
|
-
backgroundColor:
|
|
20386
|
-
color:
|
|
20586
|
+
border: `2px solid ${C12.border}`,
|
|
20587
|
+
backgroundColor: C12.surfaceBg,
|
|
20588
|
+
color: C12.textPrimary,
|
|
20387
20589
|
outline: "none",
|
|
20388
20590
|
resize: "vertical",
|
|
20389
20591
|
lineHeight: 1.5,
|
|
@@ -20403,9 +20605,9 @@ function MetaDescriptionField({
|
|
|
20403
20605
|
gap: 5,
|
|
20404
20606
|
padding: "8px 14px",
|
|
20405
20607
|
borderRadius: 8,
|
|
20406
|
-
border: `2px solid ${
|
|
20407
|
-
backgroundColor: loading ?
|
|
20408
|
-
color: loading ?
|
|
20608
|
+
border: `2px solid ${C12.border}`,
|
|
20609
|
+
backgroundColor: loading ? C12.surface50 : C12.cyan,
|
|
20610
|
+
color: loading ? C12.textSecondary : C12.black,
|
|
20409
20611
|
fontWeight: 800,
|
|
20410
20612
|
fontSize: 11,
|
|
20411
20613
|
textTransform: "uppercase",
|
|
@@ -20453,7 +20655,7 @@ function MetaDescriptionField({
|
|
|
20453
20655
|
justifyContent: "space-between",
|
|
20454
20656
|
marginTop: 4,
|
|
20455
20657
|
fontSize: 10,
|
|
20456
|
-
color:
|
|
20658
|
+
color: C12.textSecondary
|
|
20457
20659
|
},
|
|
20458
20660
|
children: [
|
|
20459
20661
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
@@ -20487,9 +20689,9 @@ function MetaDescriptionField({
|
|
|
20487
20689
|
borderRadius: 6,
|
|
20488
20690
|
fontSize: 11,
|
|
20489
20691
|
fontWeight: 600,
|
|
20490
|
-
color:
|
|
20692
|
+
color: C12.red,
|
|
20491
20693
|
backgroundColor: "rgba(239,68,68,0.08)",
|
|
20492
|
-
border: `1px solid ${
|
|
20694
|
+
border: `1px solid ${C12.red}`
|
|
20493
20695
|
},
|
|
20494
20696
|
children: error
|
|
20495
20697
|
}
|
|
@@ -20498,7 +20700,7 @@ function MetaDescriptionField({
|
|
|
20498
20700
|
}
|
|
20499
20701
|
);
|
|
20500
20702
|
}
|
|
20501
|
-
var
|
|
20703
|
+
var C13 = {
|
|
20502
20704
|
cyan: "#00E5FF",
|
|
20503
20705
|
black: "#000",
|
|
20504
20706
|
white: "#fff",
|
|
@@ -20575,8 +20777,8 @@ function MetaImageField({
|
|
|
20575
20777
|
gap: 10,
|
|
20576
20778
|
padding: "10px 14px",
|
|
20577
20779
|
borderRadius: 8,
|
|
20578
|
-
border: `2px solid ${
|
|
20579
|
-
backgroundColor:
|
|
20780
|
+
border: `2px solid ${C13.border}`,
|
|
20781
|
+
backgroundColor: C13.surfaceBg,
|
|
20580
20782
|
boxShadow: "2px 2px 0 0 var(--theme-border-color, rgba(0,0,0,1))"
|
|
20581
20783
|
},
|
|
20582
20784
|
children: [
|
|
@@ -20595,7 +20797,7 @@ function MetaImageField({
|
|
|
20595
20797
|
fontWeight: 900,
|
|
20596
20798
|
backgroundColor: hasImage ? "rgba(34,197,94,0.15)" : "rgba(255,138,0,0.15)",
|
|
20597
20799
|
color: hasImage ? "#16a34a" : "#d97706",
|
|
20598
|
-
border: `1px solid ${hasImage ?
|
|
20800
|
+
border: `1px solid ${hasImage ? C13.green : C13.orange}`
|
|
20599
20801
|
},
|
|
20600
20802
|
children: hasImage ? "\u2713" : "!"
|
|
20601
20803
|
}
|
|
@@ -20607,7 +20809,7 @@ function MetaImageField({
|
|
|
20607
20809
|
style: {
|
|
20608
20810
|
fontSize: 12,
|
|
20609
20811
|
fontWeight: 700,
|
|
20610
|
-
color:
|
|
20812
|
+
color: C13.textPrimary
|
|
20611
20813
|
},
|
|
20612
20814
|
children: t.metaImage.label
|
|
20613
20815
|
}
|
|
@@ -20617,7 +20819,7 @@ function MetaImageField({
|
|
|
20617
20819
|
{
|
|
20618
20820
|
style: {
|
|
20619
20821
|
fontSize: 10,
|
|
20620
|
-
color:
|
|
20822
|
+
color: C13.textSecondary,
|
|
20621
20823
|
lineHeight: 1.4
|
|
20622
20824
|
},
|
|
20623
20825
|
children: hasImage ? t.metaImage.imageSet : t.metaImage.noImage
|
|
@@ -20637,9 +20839,9 @@ function MetaImageField({
|
|
|
20637
20839
|
gap: 5,
|
|
20638
20840
|
padding: "8px 14px",
|
|
20639
20841
|
borderRadius: 8,
|
|
20640
|
-
border: `2px solid ${
|
|
20641
|
-
backgroundColor: loading ?
|
|
20642
|
-
color: loading ?
|
|
20842
|
+
border: `2px solid ${C13.border}`,
|
|
20843
|
+
backgroundColor: loading ? C13.surface50 : success ? C13.green : C13.cyan,
|
|
20844
|
+
color: loading ? C13.textSecondary : success ? C13.white : C13.black,
|
|
20643
20845
|
fontWeight: 800,
|
|
20644
20846
|
fontSize: 11,
|
|
20645
20847
|
textTransform: "uppercase",
|
|
@@ -20666,9 +20868,9 @@ function MetaImageField({
|
|
|
20666
20868
|
borderRadius: 6,
|
|
20667
20869
|
fontSize: 11,
|
|
20668
20870
|
fontWeight: 600,
|
|
20669
|
-
color:
|
|
20871
|
+
color: C13.red,
|
|
20670
20872
|
backgroundColor: "rgba(239,68,68,0.08)",
|
|
20671
|
-
border: `1px solid ${
|
|
20873
|
+
border: `1px solid ${C13.red}`
|
|
20672
20874
|
},
|
|
20673
20875
|
children: error
|
|
20674
20876
|
}
|
|
@@ -20677,7 +20879,7 @@ function MetaImageField({
|
|
|
20677
20879
|
}
|
|
20678
20880
|
);
|
|
20679
20881
|
}
|
|
20680
|
-
var
|
|
20882
|
+
var C14 = {
|
|
20681
20883
|
black: "#000",
|
|
20682
20884
|
white: "#fff",
|
|
20683
20885
|
green: "#22c55e",
|
|
@@ -20691,15 +20893,15 @@ var C13 = {
|
|
|
20691
20893
|
function getCompletenessColor(count) {
|
|
20692
20894
|
switch (count) {
|
|
20693
20895
|
case 0:
|
|
20694
|
-
return
|
|
20896
|
+
return C14.red;
|
|
20695
20897
|
case 1:
|
|
20696
|
-
return
|
|
20898
|
+
return C14.orange;
|
|
20697
20899
|
case 2:
|
|
20698
|
-
return
|
|
20900
|
+
return C14.yellow;
|
|
20699
20901
|
case 3:
|
|
20700
|
-
return
|
|
20902
|
+
return C14.green;
|
|
20701
20903
|
default:
|
|
20702
|
-
return
|
|
20904
|
+
return C14.textSecondary;
|
|
20703
20905
|
}
|
|
20704
20906
|
}
|
|
20705
20907
|
function getCompletenessLabel(count, ov) {
|
|
@@ -20757,8 +20959,8 @@ function OverviewField({
|
|
|
20757
20959
|
fontFamily: "var(--font-body, Inter, system-ui, sans-serif)",
|
|
20758
20960
|
padding: "12px 14px",
|
|
20759
20961
|
borderRadius: 10,
|
|
20760
|
-
border: `2px solid ${
|
|
20761
|
-
backgroundColor:
|
|
20962
|
+
border: `2px solid ${C14.border}`,
|
|
20963
|
+
backgroundColor: C14.surfaceBg,
|
|
20762
20964
|
boxShadow: "3px 3px 0 0 var(--theme-border-color, rgba(0,0,0,1))",
|
|
20763
20965
|
marginBottom: 12
|
|
20764
20966
|
},
|
|
@@ -20781,7 +20983,7 @@ function OverviewField({
|
|
|
20781
20983
|
fontWeight: 800,
|
|
20782
20984
|
textTransform: "uppercase",
|
|
20783
20985
|
letterSpacing: "0.04em",
|
|
20784
|
-
color:
|
|
20986
|
+
color: C14.textPrimary
|
|
20785
20987
|
},
|
|
20786
20988
|
children: t.overview.metaCompleteness
|
|
20787
20989
|
}
|
|
@@ -20796,8 +20998,8 @@ function OverviewField({
|
|
|
20796
20998
|
fontSize: 11,
|
|
20797
20999
|
fontWeight: 800,
|
|
20798
21000
|
backgroundColor: completenessColor,
|
|
20799
|
-
color: completenessColor ===
|
|
20800
|
-
border: `2px solid ${
|
|
21001
|
+
color: completenessColor === C14.yellow ? C14.black : C14.white,
|
|
21002
|
+
border: `2px solid ${C14.border}`,
|
|
20801
21003
|
textTransform: "uppercase",
|
|
20802
21004
|
letterSpacing: "0.03em"
|
|
20803
21005
|
},
|
|
@@ -20895,7 +21097,7 @@ function OverviewField({
|
|
|
20895
21097
|
style: {
|
|
20896
21098
|
fontSize: 12,
|
|
20897
21099
|
fontWeight: 600,
|
|
20898
|
-
color: item.filled ?
|
|
21100
|
+
color: item.filled ? C14.textPrimary : C14.textSecondary
|
|
20899
21101
|
},
|
|
20900
21102
|
children: item.label
|
|
20901
21103
|
}
|
|
@@ -20907,7 +21109,7 @@ function OverviewField({
|
|
|
20907
21109
|
marginLeft: "auto",
|
|
20908
21110
|
fontSize: 10,
|
|
20909
21111
|
fontWeight: 700,
|
|
20910
|
-
color: item.filled ?
|
|
21112
|
+
color: item.filled ? C14.green : C14.red,
|
|
20911
21113
|
textTransform: "uppercase",
|
|
20912
21114
|
letterSpacing: "0.03em"
|
|
20913
21115
|
},
|
|
@@ -20924,7 +21126,7 @@ function OverviewField({
|
|
|
20924
21126
|
}
|
|
20925
21127
|
);
|
|
20926
21128
|
}
|
|
20927
|
-
var
|
|
21129
|
+
var C15 = {
|
|
20928
21130
|
cyan: "#00E5FF",
|
|
20929
21131
|
black: "#000",
|
|
20930
21132
|
white: "#fff",
|
|
@@ -20943,10 +21145,10 @@ var G = {
|
|
|
20943
21145
|
descGrey: "#4d5156",
|
|
20944
21146
|
faviconBg: "#e8eaed"};
|
|
20945
21147
|
function charCountColor2(len, min, max) {
|
|
20946
|
-
if (len >= min && len <= max) return
|
|
20947
|
-
if (len > 0 && len < min) return
|
|
20948
|
-
if (len > max) return
|
|
20949
|
-
return
|
|
21148
|
+
if (len >= min && len <= max) return C15.green;
|
|
21149
|
+
if (len > 0 && len < min) return C15.orange;
|
|
21150
|
+
if (len > max) return C15.red;
|
|
21151
|
+
return C15.textSecondary;
|
|
20950
21152
|
}
|
|
20951
21153
|
function truncateText(text, maxChars) {
|
|
20952
21154
|
if (text.length <= maxChars) return text;
|
|
@@ -21001,8 +21203,8 @@ function SerpPreview({
|
|
|
21001
21203
|
padding: "10px 12px",
|
|
21002
21204
|
cursor: "pointer",
|
|
21003
21205
|
borderRadius: 8,
|
|
21004
|
-
border: `2px solid ${
|
|
21005
|
-
backgroundColor:
|
|
21206
|
+
border: `2px solid ${C15.border}`,
|
|
21207
|
+
backgroundColor: C15.surface50,
|
|
21006
21208
|
userSelect: "none"
|
|
21007
21209
|
},
|
|
21008
21210
|
children: [
|
|
@@ -21017,7 +21219,7 @@ function SerpPreview({
|
|
|
21017
21219
|
fontWeight: 800,
|
|
21018
21220
|
textTransform: "uppercase",
|
|
21019
21221
|
letterSpacing: "0.04em",
|
|
21020
|
-
color:
|
|
21222
|
+
color: C15.textPrimary
|
|
21021
21223
|
},
|
|
21022
21224
|
children: [
|
|
21023
21225
|
/* @__PURE__ */ jsxs(
|
|
@@ -21049,7 +21251,7 @@ function SerpPreview({
|
|
|
21049
21251
|
transition: "transform 0.2s",
|
|
21050
21252
|
display: "inline-block",
|
|
21051
21253
|
transform: open ? "rotate(90deg)" : "none",
|
|
21052
|
-
color:
|
|
21254
|
+
color: C15.textSecondary
|
|
21053
21255
|
},
|
|
21054
21256
|
children: "\u25B6"
|
|
21055
21257
|
}
|
|
@@ -21082,10 +21284,10 @@ function SerpPreview({
|
|
|
21082
21284
|
"div",
|
|
21083
21285
|
{
|
|
21084
21286
|
style: {
|
|
21085
|
-
backgroundColor:
|
|
21086
|
-
border: `2px solid ${
|
|
21287
|
+
backgroundColor: C15.white,
|
|
21288
|
+
border: `2px solid ${C15.border}`,
|
|
21087
21289
|
borderRadius: 12,
|
|
21088
|
-
boxShadow: `3px 3px 0 0 ${
|
|
21290
|
+
boxShadow: `3px 3px 0 0 ${C15.border}`,
|
|
21089
21291
|
padding: isDesktop ? 20 : 14,
|
|
21090
21292
|
maxWidth: isDesktop ? 650 : 380,
|
|
21091
21293
|
overflow: "hidden"
|
|
@@ -21148,7 +21350,7 @@ function SerpPreview({
|
|
|
21148
21350
|
style: {
|
|
21149
21351
|
fontSize: 14,
|
|
21150
21352
|
fontWeight: 400,
|
|
21151
|
-
color:
|
|
21353
|
+
color: C15.black,
|
|
21152
21354
|
lineHeight: 1.3,
|
|
21153
21355
|
whiteSpace: "nowrap",
|
|
21154
21356
|
overflow: "hidden",
|
|
@@ -21212,7 +21414,7 @@ function SerpPreview({
|
|
|
21212
21414
|
"span",
|
|
21213
21415
|
{
|
|
21214
21416
|
style: {
|
|
21215
|
-
color:
|
|
21417
|
+
color: C15.textSecondary,
|
|
21216
21418
|
fontStyle: "italic",
|
|
21217
21419
|
fontSize: titleFontSize - 2
|
|
21218
21420
|
},
|
|
@@ -21241,7 +21443,7 @@ function SerpPreview({
|
|
|
21241
21443
|
"span",
|
|
21242
21444
|
{
|
|
21243
21445
|
style: {
|
|
21244
|
-
color:
|
|
21446
|
+
color: C15.textSecondary,
|
|
21245
21447
|
fontStyle: "italic",
|
|
21246
21448
|
fontSize: descFontSize - 1
|
|
21247
21449
|
},
|
|
@@ -21274,7 +21476,7 @@ function SerpPreview({
|
|
|
21274
21476
|
fontSize: 11
|
|
21275
21477
|
},
|
|
21276
21478
|
children: [
|
|
21277
|
-
/* @__PURE__ */ jsx("span", { style: { color:
|
|
21479
|
+
/* @__PURE__ */ jsx("span", { style: { color: C15.textSecondary, fontWeight: 600 }, children: t.serpPreview.previewTitle }),
|
|
21278
21480
|
/* @__PURE__ */ jsxs(
|
|
21279
21481
|
"span",
|
|
21280
21482
|
{
|
|
@@ -21303,7 +21505,7 @@ function SerpPreview({
|
|
|
21303
21505
|
fontSize: 11
|
|
21304
21506
|
},
|
|
21305
21507
|
children: [
|
|
21306
|
-
/* @__PURE__ */ jsx("span", { style: { color:
|
|
21508
|
+
/* @__PURE__ */ jsx("span", { style: { color: C15.textSecondary, fontWeight: 600 }, children: t.serpPreview.previewDescription }),
|
|
21307
21509
|
/* @__PURE__ */ jsxs(
|
|
21308
21510
|
"span",
|
|
21309
21511
|
{
|
|
@@ -21332,14 +21534,14 @@ function SerpPreview({
|
|
|
21332
21534
|
fontSize: 11
|
|
21333
21535
|
},
|
|
21334
21536
|
children: [
|
|
21335
|
-
/* @__PURE__ */ jsx("span", { style: { color:
|
|
21537
|
+
/* @__PURE__ */ jsx("span", { style: { color: C15.textSecondary, fontWeight: 600 }, children: t.serpPreview.url }),
|
|
21336
21538
|
/* @__PURE__ */ jsxs(
|
|
21337
21539
|
"span",
|
|
21338
21540
|
{
|
|
21339
21541
|
style: {
|
|
21340
21542
|
fontWeight: 700,
|
|
21341
21543
|
fontVariantNumeric: "tabular-nums",
|
|
21342
|
-
color: fullUrl.length <= 75 ?
|
|
21544
|
+
color: fullUrl.length <= 75 ? C15.green : C15.red
|
|
21343
21545
|
},
|
|
21344
21546
|
children: [
|
|
21345
21547
|
fullUrl.length,
|
|
@@ -21374,13 +21576,13 @@ function DeviceButton({
|
|
|
21374
21576
|
gap: 5,
|
|
21375
21577
|
padding: "4px 12px",
|
|
21376
21578
|
borderRadius: 6,
|
|
21377
|
-
border: `2px solid ${
|
|
21579
|
+
border: `2px solid ${C15.border}`,
|
|
21378
21580
|
fontSize: 11,
|
|
21379
21581
|
fontWeight: 700,
|
|
21380
21582
|
cursor: "pointer",
|
|
21381
|
-
backgroundColor: active ?
|
|
21382
|
-
color: active ?
|
|
21383
|
-
boxShadow: active ? `2px 2px 0 0 ${
|
|
21583
|
+
backgroundColor: active ? C15.cyan : C15.surfaceBg,
|
|
21584
|
+
color: active ? C15.black : C15.textPrimary,
|
|
21585
|
+
boxShadow: active ? `2px 2px 0 0 ${C15.border}` : "none",
|
|
21384
21586
|
transition: "background-color 0.15s"
|
|
21385
21587
|
},
|
|
21386
21588
|
children: [
|