@consilioweb/payload-seo-analyzer 1.14.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.js CHANGED
@@ -16976,6 +16976,92 @@ function CoreWebVitalsPanel({ locale }) {
16976
16976
  );
16977
16977
  }
16978
16978
  var C5 = {
16979
+ text: "var(--theme-text, #1a1a1a)",
16980
+ sub: "var(--theme-elevation-600, #6b7280)",
16981
+ card: "var(--theme-elevation-50, #f9fafb)",
16982
+ border: "var(--theme-elevation-200, #e5e7eb)",
16983
+ green: "#22c55e",
16984
+ amber: "#f59e0b"
16985
+ };
16986
+ var S2 = {
16987
+ fr: {
16988
+ title: "Sant\xE9 du module SEO",
16989
+ subtitle: "Configuration et \xE9tat des int\xE9grations / jobs (lecture seule).",
16990
+ ok: "Tout est configur\xE9 \u2713",
16991
+ ai: "IA (Claude)",
16992
+ gsc: "Search Console",
16993
+ psi: "PageSpeed",
16994
+ alerts: "Alertes",
16995
+ rank: "Dernier relev\xE9 positions",
16996
+ none: "jamais",
16997
+ warnings: "\xC0 corriger"
16998
+ },
16999
+ en: {
17000
+ title: "SEO module health",
17001
+ subtitle: "Integration & background-job status (read-only).",
17002
+ ok: "All configured \u2713",
17003
+ ai: "AI (Claude)",
17004
+ gsc: "Search Console",
17005
+ psi: "PageSpeed",
17006
+ alerts: "Alerts",
17007
+ rank: "Last rank snapshot",
17008
+ none: "never",
17009
+ warnings: "To fix"
17010
+ }
17011
+ };
17012
+ function HealthPanel({ locale }) {
17013
+ const s = S2[locale] ?? S2.fr;
17014
+ const [h, setH] = useState(null);
17015
+ const load = useCallback(async () => {
17016
+ try {
17017
+ const res = await fetch("/api/seo-plugin/health", { credentials: "include", cache: "no-store" });
17018
+ if (res.ok) setH(await res.json());
17019
+ } catch {
17020
+ }
17021
+ }, []);
17022
+ useEffect(() => {
17023
+ void load();
17024
+ }, [load]);
17025
+ if (!h) return null;
17026
+ const card = { padding: 16, borderRadius: 12, border: `1px solid ${C5.border}`, backgroundColor: C5.card, marginBottom: 20 };
17027
+ const dot = (on) => ({
17028
+ display: "inline-block",
17029
+ width: 8,
17030
+ height: 8,
17031
+ borderRadius: 999,
17032
+ marginRight: 6,
17033
+ backgroundColor: on ? C5.green : C5.sub
17034
+ });
17035
+ const chip = (label, on) => /* @__PURE__ */ jsxs("span", { style: { fontSize: 12, color: C5.text, marginRight: 14, whiteSpace: "nowrap" }, children: [
17036
+ /* @__PURE__ */ jsx("span", { style: dot(on) }),
17037
+ label
17038
+ ] });
17039
+ return /* @__PURE__ */ jsxs("div", { style: card, children: [
17040
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", gap: 8, flexWrap: "wrap" }, children: [
17041
+ /* @__PURE__ */ jsxs("div", { children: [
17042
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C5.text }, children: s.title }),
17043
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C5.sub, marginTop: 2 }, children: s.subtitle })
17044
+ ] }),
17045
+ /* @__PURE__ */ jsx("span", { style: { fontSize: 12, fontWeight: 700, color: h.ok ? C5.green : C5.amber }, children: h.ok ? s.ok : `${h.warnings.length} \u26A0` })
17046
+ ] }),
17047
+ /* @__PURE__ */ jsxs("div", { style: { marginTop: 12, display: "flex", flexWrap: "wrap", rowGap: 6 }, children: [
17048
+ chip(s.ai, h.config.aiKey),
17049
+ chip(s.gsc, h.config.gscConfigured && h.runtime.gscConnected),
17050
+ chip(s.psi, h.config.pageSpeedKey),
17051
+ chip(s.alerts, h.config.alertWebhook || h.config.alertEmail),
17052
+ /* @__PURE__ */ jsxs("span", { style: { fontSize: 12, color: C5.sub, whiteSpace: "nowrap" }, children: [
17053
+ s.rank,
17054
+ ": ",
17055
+ h.runtime.lastRankSnapshot ? new Date(h.runtime.lastRankSnapshot).toLocaleDateString(locale) : s.none
17056
+ ] })
17057
+ ] }),
17058
+ h.warnings.length > 0 && /* @__PURE__ */ jsxs("div", { style: { marginTop: 12 }, children: [
17059
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 11, fontWeight: 700, color: C5.amber, textTransform: "uppercase", marginBottom: 4 }, children: s.warnings }),
17060
+ /* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 12, color: C5.sub, lineHeight: 1.6 }, children: h.warnings.map((w, i) => /* @__PURE__ */ jsx("li", { children: w }, i)) })
17061
+ ] })
17062
+ ] });
17063
+ }
17064
+ var C6 = {
16979
17065
  text: "var(--theme-text, #1a1a1a)",
16980
17066
  sub: "var(--theme-elevation-600, #6b7280)",
16981
17067
  card: "var(--theme-elevation-50, #f9fafb)",
@@ -16985,7 +17071,7 @@ var C5 = {
16985
17071
  red: "#ef4444",
16986
17072
  blue: "#3b82f6"
16987
17073
  };
16988
- var S2 = {
17074
+ var S3 = {
16989
17075
  fr: {
16990
17076
  title: "Google Search Console",
16991
17077
  subtitle: "Connexion OAuth pour importer automatiquement clics, impressions et positions r\xE9elles.",
@@ -17032,7 +17118,7 @@ var S2 = {
17032
17118
  }
17033
17119
  };
17034
17120
  function GscPanel({ locale }) {
17035
- const s = S2[locale] ?? S2.fr;
17121
+ const s = S3[locale] ?? S3.fr;
17036
17122
  const [status, setStatus] = useState(null);
17037
17123
  const [busy, setBusy] = useState(false);
17038
17124
  const [error, setError] = useState(null);
@@ -17099,9 +17185,9 @@ function GscPanel({ locale }) {
17099
17185
  const btn = (primary) => ({
17100
17186
  padding: "8px 12px",
17101
17187
  borderRadius: 8,
17102
- border: `1px solid ${primary ? C5.blue : C5.border}`,
17103
- backgroundColor: primary ? C5.blue : C5.bg,
17104
- color: primary ? "#fff" : C5.text,
17188
+ border: `1px solid ${primary ? C6.blue : C6.border}`,
17189
+ backgroundColor: primary ? C6.blue : C6.bg,
17190
+ color: primary ? "#fff" : C6.text,
17105
17191
  fontSize: 12,
17106
17192
  fontWeight: 700,
17107
17193
  cursor: "pointer",
@@ -17110,21 +17196,21 @@ function GscPanel({ locale }) {
17110
17196
  const card = {
17111
17197
  padding: 16,
17112
17198
  borderRadius: 12,
17113
- border: `1px solid ${C5.border}`,
17114
- backgroundColor: C5.card,
17199
+ border: `1px solid ${C6.border}`,
17200
+ backgroundColor: C6.card,
17115
17201
  marginBottom: 20
17116
17202
  };
17117
17203
  if (!status) {
17118
17204
  return /* @__PURE__ */ jsxs("div", { style: card, children: [
17119
- /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C5.text }, children: s.title }),
17120
- /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C5.sub, marginTop: 6 }, children: "\u2026" })
17205
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C6.text }, children: s.title }),
17206
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C6.sub, marginTop: 6 }, children: "\u2026" })
17121
17207
  ] });
17122
17208
  }
17123
17209
  return /* @__PURE__ */ jsxs("div", { style: card, children: [
17124
17210
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 8, flexWrap: "wrap" }, children: [
17125
17211
  /* @__PURE__ */ jsxs("div", { children: [
17126
- /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C5.text }, children: s.title }),
17127
- /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C5.sub, marginTop: 2 }, children: s.subtitle })
17212
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C6.text }, children: s.title }),
17213
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C6.sub, marginTop: 2 }, children: s.subtitle })
17128
17214
  ] }),
17129
17215
  /* @__PURE__ */ jsx(
17130
17216
  "span",
@@ -17135,14 +17221,14 @@ function GscPanel({ locale }) {
17135
17221
  padding: "4px 10px",
17136
17222
  borderRadius: 999,
17137
17223
  color: "#fff",
17138
- backgroundColor: status.connected ? C5.green : C5.sub
17224
+ backgroundColor: status.connected ? C6.green : C6.sub
17139
17225
  },
17140
17226
  children: status.connected ? "\u25CF " + s.connectedAs : "\u25CB"
17141
17227
  }
17142
17228
  )
17143
17229
  ] }),
17144
- error && /* @__PURE__ */ jsx("div", { style: { color: C5.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
17145
- !status.configured && /* @__PURE__ */ jsxs("div", { style: { marginTop: 12, fontSize: 13, color: C5.sub, lineHeight: 1.5 }, children: [
17230
+ error && /* @__PURE__ */ jsx("div", { style: { color: C6.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
17231
+ !status.configured && /* @__PURE__ */ jsxs("div", { style: { marginTop: 12, fontSize: 13, color: C6.sub, lineHeight: 1.5 }, children: [
17146
17232
  s.notConfigured,
17147
17233
  status.redirectUri && /* @__PURE__ */ jsxs("div", { style: { marginTop: 8 }, children: [
17148
17234
  /* @__PURE__ */ jsx("span", { style: { fontWeight: 700 }, children: s.redirectHint }),
@@ -17153,10 +17239,10 @@ function GscPanel({ locale }) {
17153
17239
  status.configured && !status.connected && /* @__PURE__ */ jsxs("div", { style: { marginTop: 12 }, children: [
17154
17240
  /* @__PURE__ */ jsx("button", { type: "button", onClick: connect, disabled: busy, style: btn(true), children: s.connect }),
17155
17241
  /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void loadStatus(), disabled: busy, style: { ...btn(false), marginLeft: 8 }, children: s.refreshStatus }),
17156
- /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C5.sub, marginTop: 8 }, children: s.connectHint })
17242
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C6.sub, marginTop: 8 }, children: s.connectHint })
17157
17243
  ] }),
17158
17244
  status.configured && status.connected && /* @__PURE__ */ jsxs("div", { style: { marginTop: 12 }, children: [
17159
- /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C5.sub, marginBottom: 10 }, children: [
17245
+ /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C6.sub, marginBottom: 10 }, children: [
17160
17246
  s.connectedAs,
17161
17247
  status.connectedEmail ? ` \xB7 ${status.connectedEmail}` : "",
17162
17248
  status.propertyUrl ? ` \xB7 ${status.propertyUrl}` : ""
@@ -17166,17 +17252,17 @@ function GscPanel({ locale }) {
17166
17252
  /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void fetchData("page"), disabled: dataLoading, style: btn(dimension === "page"), children: s.byPage }),
17167
17253
  /* @__PURE__ */ jsx("button", { type: "button", onClick: disconnect, disabled: busy, style: btn(false), children: s.disconnect })
17168
17254
  ] }),
17169
- dataLoading && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C5.sub }, children: s.fetching }),
17170
- rows && rows.length === 0 && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C5.sub }, children: s.noData }),
17255
+ dataLoading && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C6.sub }, children: s.fetching }),
17256
+ rows && rows.length === 0 && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C6.sub }, children: s.noData }),
17171
17257
  rows && rows.length > 0 && /* @__PURE__ */ jsx("div", { style: { overflowX: "auto" }, children: /* @__PURE__ */ jsxs("table", { style: { width: "100%", borderCollapse: "collapse", fontSize: 12 }, children: [
17172
- /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { style: { textAlign: "left", color: C5.sub }, children: [
17258
+ /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { style: { textAlign: "left", color: C6.sub }, children: [
17173
17259
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px" }, children: dimension === "query" ? s.query : s.page }),
17174
17260
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.clicks }),
17175
17261
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.impressions }),
17176
17262
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.ctr }),
17177
17263
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.position })
17178
17264
  ] }) }),
17179
- /* @__PURE__ */ jsx("tbody", { children: rows.map((r, i) => /* @__PURE__ */ jsxs("tr", { style: { borderTop: `1px solid ${C5.border}`, color: C5.text }, children: [
17265
+ /* @__PURE__ */ jsx("tbody", { children: rows.map((r, i) => /* @__PURE__ */ jsxs("tr", { style: { borderTop: `1px solid ${C6.border}`, color: C6.text }, children: [
17180
17266
  /* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", maxWidth: 320, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: r.keys?.[0] || "\u2014" }),
17181
17267
  /* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", textAlign: "right", fontWeight: 700 }, children: r.clicks }),
17182
17268
  /* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", textAlign: "right" }, children: r.impressions }),
@@ -17190,7 +17276,7 @@ function GscPanel({ locale }) {
17190
17276
  ] })
17191
17277
  ] });
17192
17278
  }
17193
- var C6 = {
17279
+ var C7 = {
17194
17280
  text: "var(--theme-text, #1a1a1a)",
17195
17281
  sub: "var(--theme-elevation-600, #6b7280)",
17196
17282
  card: "var(--theme-elevation-50, #f9fafb)",
@@ -17199,7 +17285,7 @@ var C6 = {
17199
17285
  red: "#ef4444",
17200
17286
  blue: "#3b82f6"
17201
17287
  };
17202
- var S3 = {
17288
+ var S4 = {
17203
17289
  fr: {
17204
17290
  title: "Suivi de positions (rank tracking)",
17205
17291
  subtitle: "Historique quotidien des positions Google (via Search Console) et mouvements dans le temps.",
@@ -17236,7 +17322,7 @@ var S3 = {
17236
17322
  }
17237
17323
  };
17238
17324
  function RankTrackingPanel({ locale }) {
17239
- const s = S3[locale] ?? S3.fr;
17325
+ const s = S4[locale] ?? S4.fr;
17240
17326
  const [movers, setMovers] = useState(null);
17241
17327
  const [lastSnapshot, setLastSnapshot] = useState(null);
17242
17328
  const [loading, setLoading] = useState(true);
@@ -17293,15 +17379,15 @@ function RankTrackingPanel({ locale }) {
17293
17379
  const card = {
17294
17380
  padding: 16,
17295
17381
  borderRadius: 12,
17296
- border: `1px solid ${C6.border}`,
17297
- backgroundColor: C6.card,
17382
+ border: `1px solid ${C7.border}`,
17383
+ backgroundColor: C7.card,
17298
17384
  marginBottom: 20
17299
17385
  };
17300
17386
  const btn = {
17301
17387
  padding: "8px 12px",
17302
17388
  borderRadius: 8,
17303
- border: `1px solid ${C6.blue}`,
17304
- backgroundColor: C6.blue,
17389
+ border: `1px solid ${C7.blue}`,
17390
+ backgroundColor: C7.blue,
17305
17391
  color: "#fff",
17306
17392
  fontSize: 12,
17307
17393
  fontWeight: 700,
@@ -17310,16 +17396,16 @@ function RankTrackingPanel({ locale }) {
17310
17396
  };
17311
17397
  const renderDelta = (m) => {
17312
17398
  if (m.previousPosition === null) {
17313
- return /* @__PURE__ */ jsx("span", { style: { color: C6.sub, fontSize: 11 }, children: s.newQ });
17399
+ return /* @__PURE__ */ jsx("span", { style: { color: C7.sub, fontSize: 11 }, children: s.newQ });
17314
17400
  }
17315
17401
  if (Math.abs(m.delta) < 0.1) {
17316
- return /* @__PURE__ */ jsxs("span", { style: { color: C6.sub, fontSize: 11 }, children: [
17402
+ return /* @__PURE__ */ jsxs("span", { style: { color: C7.sub, fontSize: 11 }, children: [
17317
17403
  "\u2014 ",
17318
17404
  s.stable
17319
17405
  ] });
17320
17406
  }
17321
17407
  const up = m.delta > 0;
17322
- return /* @__PURE__ */ jsxs("span", { style: { color: up ? C6.green : C6.red, fontWeight: 700, fontSize: 12 }, children: [
17408
+ return /* @__PURE__ */ jsxs("span", { style: { color: up ? C7.green : C7.red, fontWeight: 700, fontSize: 12 }, children: [
17323
17409
  up ? "\u25B2" : "\u25BC",
17324
17410
  " ",
17325
17411
  Math.abs(m.delta).toFixed(1)
@@ -17328,31 +17414,31 @@ function RankTrackingPanel({ locale }) {
17328
17414
  return /* @__PURE__ */ jsxs("div", { style: card, children: [
17329
17415
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 8, flexWrap: "wrap" }, children: [
17330
17416
  /* @__PURE__ */ jsxs("div", { children: [
17331
- /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C6.text }, children: s.title }),
17332
- /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C6.sub, marginTop: 2 }, children: s.subtitle })
17417
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C7.text }, children: s.title }),
17418
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C7.sub, marginTop: 2 }, children: s.subtitle })
17333
17419
  ] }),
17334
17420
  !notConnected && /* @__PURE__ */ jsx("button", { type: "button", onClick: snapshotNow, disabled: busy, style: btn, children: busy ? s.snapshotting : s.snapshot })
17335
17421
  ] }),
17336
- error && /* @__PURE__ */ jsx("div", { style: { color: C6.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
17337
- notConnected && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C6.sub }, children: s.needGsc }),
17422
+ error && /* @__PURE__ */ jsx("div", { style: { color: C7.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
17423
+ notConnected && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C7.sub }, children: s.needGsc }),
17338
17424
  !notConnected && /* @__PURE__ */ jsxs("div", { style: { marginTop: 12 }, children: [
17339
- lastSnapshot && /* @__PURE__ */ jsxs("div", { style: { fontSize: 11, color: C6.sub, marginBottom: 8 }, children: [
17425
+ lastSnapshot && /* @__PURE__ */ jsxs("div", { style: { fontSize: 11, color: C7.sub, marginBottom: 8 }, children: [
17340
17426
  s.lastSnapshot,
17341
17427
  ": ",
17342
17428
  new Date(lastSnapshot).toLocaleString(locale),
17343
17429
  movers ? ` \xB7 ${movers.length} ${s.countLabel}` : ""
17344
17430
  ] }),
17345
- loading && !movers && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C6.sub }, children: "\u2026" }),
17346
- movers && movers.length === 0 && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C6.sub }, children: s.noData }),
17431
+ loading && !movers && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C7.sub }, children: "\u2026" }),
17432
+ movers && movers.length === 0 && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C7.sub }, children: s.noData }),
17347
17433
  movers && movers.length > 0 && /* @__PURE__ */ jsx("div", { style: { overflowX: "auto" }, children: /* @__PURE__ */ jsxs("table", { style: { width: "100%", borderCollapse: "collapse", fontSize: 12 }, children: [
17348
- /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { style: { textAlign: "left", color: C6.sub }, children: [
17434
+ /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { style: { textAlign: "left", color: C7.sub }, children: [
17349
17435
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px" }, children: s.query }),
17350
17436
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.position }),
17351
17437
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.change }),
17352
17438
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.clicks }),
17353
17439
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.impressions })
17354
17440
  ] }) }),
17355
- /* @__PURE__ */ jsx("tbody", { children: movers.slice(0, 100).map((m, i) => /* @__PURE__ */ jsxs("tr", { style: { borderTop: `1px solid ${C6.border}`, color: C6.text }, children: [
17441
+ /* @__PURE__ */ jsx("tbody", { children: movers.slice(0, 100).map((m, i) => /* @__PURE__ */ jsxs("tr", { style: { borderTop: `1px solid ${C7.border}`, color: C7.text }, children: [
17356
17442
  /* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", maxWidth: 320, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: m.query }),
17357
17443
  /* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", textAlign: "right", fontWeight: 700 }, children: m.position.toFixed(1) }),
17358
17444
  /* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", textAlign: "right" }, children: renderDelta(m) }),
@@ -17363,7 +17449,7 @@ function RankTrackingPanel({ locale }) {
17363
17449
  ] })
17364
17450
  ] });
17365
17451
  }
17366
- var C7 = {
17452
+ var C8 = {
17367
17453
  text: "var(--theme-text, #1a1a1a)",
17368
17454
  sub: "var(--theme-elevation-600, #6b7280)",
17369
17455
  card: "var(--theme-elevation-50, #f9fafb)",
@@ -17373,7 +17459,7 @@ var C7 = {
17373
17459
  amber: "#f59e0b",
17374
17460
  violet: "#7c3aed"
17375
17461
  };
17376
- var S4 = {
17462
+ var S5 = {
17377
17463
  fr: {
17378
17464
  title: "Opportunit\xE9s CTR (faible clic / bonne position)",
17379
17465
  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.",
@@ -17414,7 +17500,7 @@ var S4 = {
17414
17500
  }
17415
17501
  };
17416
17502
  function CtrOpportunitiesPanel({ locale }) {
17417
- const s = S4[locale] ?? S4.fr;
17503
+ const s = S5[locale] ?? S5.fr;
17418
17504
  const [opps, setOpps] = useState(null);
17419
17505
  const [loading, setLoading] = useState(true);
17420
17506
  const [notConnected, setNotConnected] = useState(false);
@@ -17489,7 +17575,7 @@ function CtrOpportunitiesPanel({ locale }) {
17489
17575
  setRow(o.url, { busy: false, error: e instanceof Error ? e.message : "Network error" });
17490
17576
  }
17491
17577
  };
17492
- const card = { padding: 16, borderRadius: 12, border: `1px solid ${C7.border}`, backgroundColor: C7.card, marginBottom: 20 };
17578
+ const card = { padding: 16, borderRadius: 12, border: `1px solid ${C8.border}`, backgroundColor: C8.card, marginBottom: 20 };
17493
17579
  const btn = (bg) => ({
17494
17580
  padding: "5px 10px",
17495
17581
  borderRadius: 6,
@@ -17503,17 +17589,17 @@ function CtrOpportunitiesPanel({ locale }) {
17503
17589
  return /* @__PURE__ */ jsxs("div", { style: card, children: [
17504
17590
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", gap: 8, flexWrap: "wrap" }, children: [
17505
17591
  /* @__PURE__ */ jsxs("div", { children: [
17506
- /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C7.text }, children: s.title }),
17507
- /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C7.sub, marginTop: 2 }, children: s.subtitle })
17592
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C8.text }, children: s.title }),
17593
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C8.sub, marginTop: 2 }, children: s.subtitle })
17508
17594
  ] }),
17509
- !notConnected && /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void load(), style: btn(C7.sub), children: s.refresh })
17595
+ !notConnected && /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void load(), style: btn(C8.sub), children: s.refresh })
17510
17596
  ] }),
17511
- error && /* @__PURE__ */ jsx("div", { style: { color: C7.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
17512
- notConnected && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C7.sub }, children: s.needGsc }),
17513
- loading && !notConnected && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C7.sub }, children: s.loading }),
17514
- !loading && !notConnected && opps && opps.length === 0 && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C7.sub }, children: s.none }),
17597
+ error && /* @__PURE__ */ jsx("div", { style: { color: C8.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
17598
+ notConnected && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C8.sub }, children: s.needGsc }),
17599
+ loading && !notConnected && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C8.sub }, children: s.loading }),
17600
+ !loading && !notConnected && opps && opps.length === 0 && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C8.sub }, children: s.none }),
17515
17601
  !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: [
17516
- /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { style: { textAlign: "left", color: C7.sub }, children: [
17602
+ /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { style: { textAlign: "left", color: C8.sub }, children: [
17517
17603
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px" }, children: s.page }),
17518
17604
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.pos }),
17519
17605
  /* @__PURE__ */ jsx("th", { style: { padding: "6px 8px", textAlign: "right" }, children: s.ctr }),
@@ -17530,41 +17616,41 @@ function CtrOpportunitiesPanel({ locale }) {
17530
17616
  }
17531
17617
  })();
17532
17618
  return /* @__PURE__ */ jsxs(React4.Fragment, { children: [
17533
- /* @__PURE__ */ jsxs("tr", { style: { borderTop: `1px solid ${C7.border}`, color: C7.text }, children: [
17619
+ /* @__PURE__ */ jsxs("tr", { style: { borderTop: `1px solid ${C8.border}`, color: C8.text }, children: [
17534
17620
  /* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", maxWidth: 320, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: path }),
17535
17621
  /* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", textAlign: "right" }, children: o.position.toFixed(1) }),
17536
17622
  /* @__PURE__ */ jsxs("td", { style: { padding: "6px 8px", textAlign: "right" }, children: [
17537
- /* @__PURE__ */ jsxs("span", { style: { color: C7.red }, children: [
17623
+ /* @__PURE__ */ jsxs("span", { style: { color: C8.red }, children: [
17538
17624
  (o.ctr * 100).toFixed(1),
17539
17625
  "%"
17540
17626
  ] }),
17541
- /* @__PURE__ */ jsxs("span", { style: { color: C7.sub }, children: [
17627
+ /* @__PURE__ */ jsxs("span", { style: { color: C8.sub }, children: [
17542
17628
  " / ",
17543
17629
  (o.expectedCtr * 100).toFixed(0),
17544
17630
  "% ",
17545
17631
  s.expected
17546
17632
  ] })
17547
17633
  ] }),
17548
- /* @__PURE__ */ jsxs("td", { style: { padding: "6px 8px", textAlign: "right", fontWeight: 700, color: C7.amber }, children: [
17634
+ /* @__PURE__ */ jsxs("td", { style: { padding: "6px 8px", textAlign: "right", fontWeight: 700, color: C8.amber }, children: [
17549
17635
  "+",
17550
17636
  o.potentialClicks
17551
17637
  ] }),
17552
- /* @__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: [
17638
+ /* @__PURE__ */ jsx("td", { style: { padding: "6px 8px", textAlign: "right" }, children: rs.applied ? /* @__PURE__ */ jsx("span", { style: { fontSize: 11, fontWeight: 700, color: C8.green }, children: s.applied }) : o.doc ? rs.suggestion ? /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void apply(o), disabled: rs.busy, style: btn(C8.green), children: rs.busy ? s.optimizing : s.apply }) : /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void optimize(o), disabled: rs.busy, style: btn(C8.violet), children: rs.busy ? s.optimizing : `\u2728 ${s.optimize}` }) : /* @__PURE__ */ jsxs("a", { href: o.url, target: "_blank", rel: "noopener noreferrer", style: { fontSize: 11, color: C8.sub }, children: [
17553
17639
  s.open,
17554
17640
  " \u2197"
17555
17641
  ] }) })
17556
17642
  ] }),
17557
- rs.suggestion && !rs.applied && /* @__PURE__ */ jsx("tr", { style: { color: C7.text }, children: /* @__PURE__ */ jsxs("td", { colSpan: 5, style: { padding: "0 8px 8px 8px" }, children: [
17558
- /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C7.green, fontWeight: 600 }, children: rs.suggestion.metaTitle }),
17559
- /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C7.sub }, children: rs.suggestion.metaDescription })
17643
+ rs.suggestion && !rs.applied && /* @__PURE__ */ jsx("tr", { style: { color: C8.text }, children: /* @__PURE__ */ jsxs("td", { colSpan: 5, style: { padding: "0 8px 8px 8px" }, children: [
17644
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C8.green, fontWeight: 600 }, children: rs.suggestion.metaTitle }),
17645
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C8.sub }, children: rs.suggestion.metaDescription })
17560
17646
  ] }) }),
17561
- 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 }) })
17647
+ rs.error && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: 5, style: { padding: "0 8px 6px 8px", fontSize: 11, color: C8.red }, children: rs.error }) })
17562
17648
  ] }, o.url);
17563
17649
  }) })
17564
17650
  ] }) })
17565
17651
  ] });
17566
17652
  }
17567
- var C8 = {
17653
+ var C9 = {
17568
17654
  text: "var(--theme-text, #1a1a1a)",
17569
17655
  sub: "var(--theme-elevation-600, #6b7280)",
17570
17656
  card: "var(--theme-elevation-50, #f9fafb)",
@@ -17574,7 +17660,7 @@ var C8 = {
17574
17660
  amber: "#f59e0b",
17575
17661
  blue: "#3b82f6"
17576
17662
  };
17577
- var S5 = {
17663
+ var S6 = {
17578
17664
  fr: {
17579
17665
  title: "Monitoring & alertes",
17580
17666
  subtitle: "Digest p\xE9riodique : r\xE9gressions de score, nouveaux 404, chutes de position (webhook / email).",
@@ -17617,7 +17703,7 @@ var S5 = {
17617
17703
  }
17618
17704
  };
17619
17705
  function AlertsPanel({ locale }) {
17620
- const s = S5[locale] ?? S5.fr;
17706
+ const s = S6[locale] ?? S6.fr;
17621
17707
  const [digest, setDigest] = useState(null);
17622
17708
  const [config, setConfig] = useState(null);
17623
17709
  const [loading, setLoading] = useState(true);
@@ -17672,15 +17758,15 @@ function AlertsPanel({ locale }) {
17672
17758
  const card = {
17673
17759
  padding: 16,
17674
17760
  borderRadius: 12,
17675
- border: `1px solid ${C8.border}`,
17676
- backgroundColor: C8.card,
17761
+ border: `1px solid ${C9.border}`,
17762
+ backgroundColor: C9.card,
17677
17763
  marginBottom: 20
17678
17764
  };
17679
17765
  const btn = {
17680
17766
  padding: "8px 12px",
17681
17767
  borderRadius: 8,
17682
- border: `1px solid ${C8.blue}`,
17683
- backgroundColor: C8.blue,
17768
+ border: `1px solid ${C9.blue}`,
17769
+ backgroundColor: C9.blue,
17684
17770
  color: "#fff",
17685
17771
  fontSize: 12,
17686
17772
  fontWeight: 700,
@@ -17693,32 +17779,32 @@ function AlertsPanel({ locale }) {
17693
17779
  padding: "3px 8px",
17694
17780
  borderRadius: 999,
17695
17781
  color: "#fff",
17696
- backgroundColor: ok ? C8.green : C8.sub,
17782
+ backgroundColor: ok ? C9.green : C9.sub,
17697
17783
  marginRight: 6
17698
17784
  });
17699
17785
  const hasChannel = config && (config.webhookConfigured || config.emailConfigured);
17700
17786
  const list = (title, rows) => rows.length ? /* @__PURE__ */ jsxs("div", { style: { marginTop: 10 }, children: [
17701
- /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, fontWeight: 700, color: C8.text, marginBottom: 4 }, children: [
17787
+ /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, fontWeight: 700, color: C9.text, marginBottom: 4 }, children: [
17702
17788
  title,
17703
17789
  " ",
17704
- /* @__PURE__ */ jsxs("span", { style: { color: C8.amber }, children: [
17790
+ /* @__PURE__ */ jsxs("span", { style: { color: C9.amber }, children: [
17705
17791
  "(",
17706
17792
  rows.length,
17707
17793
  ")"
17708
17794
  ] })
17709
17795
  ] }),
17710
- /* @__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)) })
17796
+ /* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 12, color: C9.sub, lineHeight: 1.6 }, children: rows.slice(0, 8).map((r, i) => /* @__PURE__ */ jsx("li", { children: r }, i)) })
17711
17797
  ] }) : null;
17712
17798
  return /* @__PURE__ */ jsxs("div", { style: card, children: [
17713
17799
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 8, flexWrap: "wrap" }, children: [
17714
17800
  /* @__PURE__ */ jsxs("div", { children: [
17715
- /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C8.text }, children: s.title }),
17716
- /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C8.sub, marginTop: 2 }, children: s.subtitle })
17801
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C9.text }, children: s.title }),
17802
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C9.sub, marginTop: 2 }, children: s.subtitle })
17717
17803
  ] }),
17718
17804
  hasChannel && /* @__PURE__ */ jsx("button", { type: "button", onClick: sendNow, disabled: busy, style: btn, children: busy ? s.sending : s.sendNow })
17719
17805
  ] }),
17720
- error && /* @__PURE__ */ jsx("div", { style: { color: C8.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
17721
- notice && /* @__PURE__ */ jsx("div", { style: { color: C8.green, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: notice }),
17806
+ error && /* @__PURE__ */ jsx("div", { style: { color: C9.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
17807
+ notice && /* @__PURE__ */ jsx("div", { style: { color: C9.green, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: notice }),
17722
17808
  config && /* @__PURE__ */ jsxs("div", { style: { marginTop: 12 }, children: [
17723
17809
  /* @__PURE__ */ jsxs("span", { style: chip(config.webhookConfigured, s.webhook), children: [
17724
17810
  s.webhook,
@@ -17731,15 +17817,15 @@ function AlertsPanel({ locale }) {
17731
17817
  config.emailConfigured ? s.configured : s.missing
17732
17818
  ] })
17733
17819
  ] }),
17734
- !loading && !hasChannel && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C8.sub }, children: s.notConfigured }),
17735
- loading && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C8.sub }, children: s.loading }),
17820
+ !loading && !hasChannel && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C9.sub }, children: s.notConfigured }),
17821
+ loading && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C9.sub }, children: s.loading }),
17736
17822
  digest && /* @__PURE__ */ jsxs("div", { style: { marginTop: 8 }, children: [
17737
- /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C8.sub, marginTop: 6 }, children: [
17823
+ /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C9.sub, marginTop: 6 }, children: [
17738
17824
  digest.totalIssues,
17739
17825
  " ",
17740
17826
  s.issues
17741
17827
  ] }),
17742
- digest.totalIssues === 0 && /* @__PURE__ */ jsx("div", { style: { marginTop: 8, fontSize: 13, color: C8.sub }, children: s.noIssues }),
17828
+ digest.totalIssues === 0 && /* @__PURE__ */ jsx("div", { style: { marginTop: 8, fontSize: 13, color: C9.sub }, children: s.noIssues }),
17743
17829
  list(
17744
17830
  s.scoreReg,
17745
17831
  digest.scoreRegressions.map((r) => `${r.collection}/${r.documentId} \u2014 ${r.from} \u2192 ${r.to} (\u2212${r.drop})`)
@@ -17749,7 +17835,7 @@ function AlertsPanel({ locale }) {
17749
17835
  ] })
17750
17836
  ] });
17751
17837
  }
17752
- var C9 = {
17838
+ var C10 = {
17753
17839
  text: "var(--theme-text, #1a1a1a)",
17754
17840
  sub: "var(--theme-elevation-600, #6b7280)",
17755
17841
  card: "var(--theme-elevation-50, #f9fafb)",
@@ -17759,7 +17845,7 @@ var C9 = {
17759
17845
  red: "#ef4444",
17760
17846
  violet: "#7c3aed"
17761
17847
  };
17762
- var S6 = {
17848
+ var S7 = {
17763
17849
  fr: {
17764
17850
  title: "Alt-text IA des images",
17765
17851
  subtitle: "G\xE9n\xE8re l'attribut alt des images qui n'en ont pas (Claude vision), pour l'accessibilit\xE9 et le SEO.",
@@ -17792,7 +17878,7 @@ var S6 = {
17792
17878
  }
17793
17879
  };
17794
17880
  function AltTextPanel({ locale }) {
17795
- const s = S6[locale] ?? S6.fr;
17881
+ const s = S7[locale] ?? S7.fr;
17796
17882
  const [items, setItems] = useState(null);
17797
17883
  const [collection, setCollection] = useState("media");
17798
17884
  const [missingCount, setMissingCount] = useState(0);
@@ -17869,8 +17955,8 @@ function AltTextPanel({ locale }) {
17869
17955
  const card = {
17870
17956
  padding: 16,
17871
17957
  borderRadius: 12,
17872
- border: `1px solid ${C9.border}`,
17873
- backgroundColor: C9.card,
17958
+ border: `1px solid ${C10.border}`,
17959
+ backgroundColor: C10.card,
17874
17960
  marginBottom: 20
17875
17961
  };
17876
17962
  const btn = (bg) => ({
@@ -17886,18 +17972,18 @@ function AltTextPanel({ locale }) {
17886
17972
  return /* @__PURE__ */ jsxs("div", { style: card, children: [
17887
17973
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 8, flexWrap: "wrap" }, children: [
17888
17974
  /* @__PURE__ */ jsxs("div", { children: [
17889
- /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C9.text }, children: s.title }),
17890
- /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C9.sub, marginTop: 2 }, children: s.subtitle })
17975
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C10.text }, children: s.title }),
17976
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C10.sub, marginTop: 2 }, children: s.subtitle })
17891
17977
  ] }),
17892
- status === "ok" && /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void load(), style: btn(C9.sub), children: s.refresh })
17978
+ status === "ok" && /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void load(), style: btn(C10.sub), children: s.refresh })
17893
17979
  ] }),
17894
- status === "forbidden" && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C9.sub }, children: s.forbidden }),
17895
- status === "disabled" && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C9.sub }, children: s.disabled }),
17980
+ status === "forbidden" && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C10.sub }, children: s.forbidden }),
17981
+ status === "disabled" && /* @__PURE__ */ jsx("div", { style: { marginTop: 12, fontSize: 13, color: C10.sub }, children: s.disabled }),
17896
17982
  status === "ok" && /* @__PURE__ */ jsxs("div", { style: { marginTop: 12 }, children: [
17897
- loading && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C9.sub }, children: s.loading }),
17898
- !loading && items && items.length === 0 && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C9.sub }, children: s.none }),
17983
+ loading && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C10.sub }, children: s.loading }),
17984
+ !loading && items && items.length === 0 && /* @__PURE__ */ jsx("div", { style: { fontSize: 13, color: C10.sub }, children: s.none }),
17899
17985
  !loading && items && items.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
17900
- /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C9.sub, marginBottom: 10 }, children: [
17986
+ /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C10.sub, marginBottom: 10 }, children: [
17901
17987
  missingCount,
17902
17988
  " ",
17903
17989
  s.missing
@@ -17913,8 +17999,8 @@ function AltTextPanel({ locale }) {
17913
17999
  alignItems: "center",
17914
18000
  padding: 8,
17915
18001
  borderRadius: 8,
17916
- border: `1px solid ${C9.border}`,
17917
- backgroundColor: C9.bg
18002
+ border: `1px solid ${C10.border}`,
18003
+ backgroundColor: C10.bg
17918
18004
  },
17919
18005
  children: [
17920
18006
  /* @__PURE__ */ jsx(
@@ -17922,11 +18008,11 @@ function AltTextPanel({ locale }) {
17922
18008
  {
17923
18009
  src: item.url,
17924
18010
  alt: "",
17925
- style: { width: 48, height: 48, objectFit: "cover", borderRadius: 6, flexShrink: 0, border: `1px solid ${C9.border}` }
18011
+ style: { width: 48, height: 48, objectFit: "cover", borderRadius: 6, flexShrink: 0, border: `1px solid ${C10.border}` }
17926
18012
  }
17927
18013
  ),
17928
18014
  /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
17929
- /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C9.sub, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: item.filename }),
18015
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C10.sub, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: item.filename }),
17930
18016
  rs.alt !== void 0 ? /* @__PURE__ */ jsx(
17931
18017
  "input",
17932
18018
  {
@@ -17940,15 +18026,15 @@ function AltTextPanel({ locale }) {
17940
18026
  padding: "4px 8px",
17941
18027
  fontSize: 12,
17942
18028
  borderRadius: 6,
17943
- border: `1px solid ${C9.border}`,
17944
- backgroundColor: C9.bg,
17945
- color: C9.text
18029
+ border: `1px solid ${C10.border}`,
18030
+ backgroundColor: C10.bg,
18031
+ color: C10.text
17946
18032
  }
17947
18033
  }
17948
- ) : /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C9.sub, marginTop: 4, fontStyle: "italic" }, children: "\u2014" }),
17949
- rs.error && /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C9.red, marginTop: 2 }, children: rs.error })
18034
+ ) : /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C10.sub, marginTop: 4, fontStyle: "italic" }, children: "\u2014" }),
18035
+ rs.error && /* @__PURE__ */ jsx("div", { style: { fontSize: 11, color: C10.red, marginTop: 2 }, children: rs.error })
17950
18036
  ] }),
17951
- /* @__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 }) })
18037
+ /* @__PURE__ */ jsx("div", { style: { flexShrink: 0 }, children: rs.applied ? /* @__PURE__ */ jsx("span", { style: { fontSize: 11, fontWeight: 700, color: C10.green }, children: s.applied }) : rs.alt !== void 0 ? /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void apply(item), disabled: rs.busy, style: btn(C10.green), children: rs.busy ? s.generating : s.apply }) : /* @__PURE__ */ jsx("button", { type: "button", onClick: () => void generate(item), disabled: rs.busy, style: btn(C10.violet), children: rs.busy ? s.generating : s.generate }) })
17952
18038
  ]
17953
18039
  },
17954
18040
  item.id
@@ -18370,6 +18456,7 @@ function PerformanceView() {
18370
18456
  ]
18371
18457
  }
18372
18458
  ),
18459
+ /* @__PURE__ */ jsx(HealthPanel, { locale }),
18373
18460
  /* @__PURE__ */ jsx(CoreWebVitalsPanel, { locale }),
18374
18461
  /* @__PURE__ */ jsx(GscPanel, { locale }),
18375
18462
  /* @__PURE__ */ jsx(RankTrackingPanel, { locale }),
@@ -18899,7 +18986,7 @@ function PerformanceView() {
18899
18986
  }
18900
18987
  );
18901
18988
  }
18902
- var C10 = {
18989
+ var C11 = {
18903
18990
  text: "var(--theme-text, #1a1a1a)",
18904
18991
  sub: "var(--theme-elevation-600, #6b7280)",
18905
18992
  card: "var(--theme-elevation-50, #f9fafb)",
@@ -18909,7 +18996,7 @@ var C10 = {
18909
18996
  red: "#ef4444",
18910
18997
  blue: "#3b82f6"
18911
18998
  };
18912
- var S7 = {
18999
+ var S8 = {
18913
19000
  fr: {
18914
19001
  title: "Brief de contenu IA",
18915
19002
  subtitle: "G\xE9n\xE8re un plan r\xE9dactionnel optimis\xE9 pour un mot-cl\xE9 (plan, entit\xE9s, questions, longueur cible).",
@@ -18944,7 +19031,7 @@ var S7 = {
18944
19031
  }
18945
19032
  };
18946
19033
  function ContentBriefPanel({ locale }) {
18947
- const s = S7[locale] ?? S7.fr;
19034
+ const s = S8[locale] ?? S8.fr;
18948
19035
  const [keyword, setKeyword] = useState("");
18949
19036
  const [brief, setBrief] = useState(null);
18950
19037
  const [busy, setBusy] = useState(false);
@@ -18980,8 +19067,8 @@ function ContentBriefPanel({ locale }) {
18980
19067
  const card = {
18981
19068
  padding: 16,
18982
19069
  borderRadius: 12,
18983
- border: `1px solid ${C10.border}`,
18984
- backgroundColor: C10.card,
19070
+ border: `1px solid ${C11.border}`,
19071
+ backgroundColor: C11.card,
18985
19072
  marginBottom: 20
18986
19073
  };
18987
19074
  const chip = {
@@ -18990,14 +19077,14 @@ function ContentBriefPanel({ locale }) {
18990
19077
  padding: "3px 8px",
18991
19078
  borderRadius: 999,
18992
19079
  backgroundColor: "rgba(59,130,246,0.12)",
18993
- color: C10.blue,
18994
- border: `1px solid ${C10.border}`,
19080
+ color: C11.blue,
19081
+ border: `1px solid ${C11.border}`,
18995
19082
  margin: "0 6px 6px 0"
18996
19083
  };
18997
- const h4 = { fontSize: 12, fontWeight: 800, color: C10.text, margin: "14px 0 6px", textTransform: "uppercase" };
19084
+ const h4 = { fontSize: 12, fontWeight: 800, color: C11.text, margin: "14px 0 6px", textTransform: "uppercase" };
18998
19085
  return /* @__PURE__ */ jsxs("div", { style: card, children: [
18999
- /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C10.text }, children: s.title }),
19000
- /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C10.sub, marginTop: 2, marginBottom: 12 }, children: s.subtitle }),
19086
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 16, fontWeight: 800, color: C11.text }, children: s.title }),
19087
+ /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: C11.sub, marginTop: 2, marginBottom: 12 }, children: s.subtitle }),
19001
19088
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8, flexWrap: "wrap" }, children: [
19002
19089
  /* @__PURE__ */ jsx(
19003
19090
  "input",
@@ -19014,9 +19101,9 @@ function ContentBriefPanel({ locale }) {
19014
19101
  padding: "8px 12px",
19015
19102
  fontSize: 13,
19016
19103
  borderRadius: 8,
19017
- border: `1px solid ${C10.border}`,
19018
- backgroundColor: C10.bg,
19019
- color: C10.text
19104
+ border: `1px solid ${C11.border}`,
19105
+ backgroundColor: C11.bg,
19106
+ color: C11.text
19020
19107
  }
19021
19108
  }
19022
19109
  ),
@@ -19029,8 +19116,8 @@ function ContentBriefPanel({ locale }) {
19029
19116
  style: {
19030
19117
  padding: "8px 14px",
19031
19118
  borderRadius: 8,
19032
- border: `1px solid ${C10.violet}`,
19033
- backgroundColor: C10.violet,
19119
+ border: `1px solid ${C11.violet}`,
19120
+ backgroundColor: C11.violet,
19034
19121
  color: "#fff",
19035
19122
  fontSize: 12,
19036
19123
  fontWeight: 700,
@@ -19041,12 +19128,12 @@ function ContentBriefPanel({ locale }) {
19041
19128
  }
19042
19129
  )
19043
19130
  ] }),
19044
- error && /* @__PURE__ */ jsx("div", { style: { color: C10.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
19131
+ error && /* @__PURE__ */ jsx("div", { style: { color: C11.red, fontSize: 13, fontWeight: 600, marginTop: 10 }, children: error }),
19045
19132
  brief && /* @__PURE__ */ jsxs("div", { style: { marginTop: 8 }, children: [
19046
- brief.recommendedWordCount > 0 && /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C10.sub, marginTop: 10 }, children: [
19133
+ brief.recommendedWordCount > 0 && /* @__PURE__ */ jsxs("div", { style: { fontSize: 12, color: C11.sub, marginTop: 10 }, children: [
19047
19134
  s.words,
19048
19135
  ": ",
19049
- /* @__PURE__ */ jsxs("b", { style: { color: C10.text }, children: [
19136
+ /* @__PURE__ */ jsxs("b", { style: { color: C11.text }, children: [
19050
19137
  "~",
19051
19138
  brief.recommendedWordCount,
19052
19139
  " ",
@@ -19055,7 +19142,7 @@ function ContentBriefPanel({ locale }) {
19055
19142
  ] }),
19056
19143
  brief.outline.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
19057
19144
  /* @__PURE__ */ jsx("div", { style: h4, children: s.outline }),
19058
- /* @__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)) })
19145
+ /* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 13, color: C11.text, lineHeight: 1.6 }, children: brief.outline.map((o, i) => /* @__PURE__ */ jsx("li", { style: { marginLeft: o.level === "h3" ? 18 : 0, color: o.level === "h3" ? C11.sub : C11.text, fontWeight: o.level === "h2" ? 700 : 400 }, children: o.text }, i)) })
19059
19146
  ] }),
19060
19147
  brief.entities.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
19061
19148
  /* @__PURE__ */ jsx("div", { style: h4, children: s.entities }),
@@ -19063,7 +19150,7 @@ function ContentBriefPanel({ locale }) {
19063
19150
  ] }),
19064
19151
  brief.questions.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
19065
19152
  /* @__PURE__ */ jsx("div", { style: h4, children: s.questions }),
19066
- /* @__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)) })
19153
+ /* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 13, color: C11.text, lineHeight: 1.6 }, children: brief.questions.map((q, i) => /* @__PURE__ */ jsx("li", { children: q }, i)) })
19067
19154
  ] }),
19068
19155
  brief.internalLinkIdeas.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
19069
19156
  /* @__PURE__ */ jsx("div", { style: h4, children: s.links }),
@@ -19071,7 +19158,7 @@ function ContentBriefPanel({ locale }) {
19071
19158
  ] }),
19072
19159
  brief.notes.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
19073
19160
  /* @__PURE__ */ jsx("div", { style: h4, children: s.notes }),
19074
- /* @__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)) })
19161
+ /* @__PURE__ */ jsx("ul", { style: { margin: 0, paddingLeft: 18, fontSize: 12, color: C11.sub, lineHeight: 1.6 }, children: brief.notes.map((n, i) => /* @__PURE__ */ jsx("li", { children: n }, i)) })
19075
19162
  ] })
19076
19163
  ] })
19077
19164
  ] });
@@ -20213,7 +20300,7 @@ var controlBtnStyle = {
20213
20300
  cursor: "pointer",
20214
20301
  lineHeight: 1.4
20215
20302
  };
20216
- var C11 = {
20303
+ var C12 = {
20217
20304
  cyan: "#00E5FF",
20218
20305
  black: "#000",
20219
20306
  green: "#22c55e",
@@ -20228,10 +20315,10 @@ var C11 = {
20228
20315
  var TITLE_MIN = 30;
20229
20316
  var TITLE_MAX = 60;
20230
20317
  function getCharColor(len) {
20231
- if (len === 0) return C11.textSecondary;
20232
- if (len >= TITLE_MIN && len <= TITLE_MAX) return C11.green;
20233
- if (len > 0 && len < TITLE_MIN) return C11.orange;
20234
- return C11.red;
20318
+ if (len === 0) return C12.textSecondary;
20319
+ if (len >= TITLE_MIN && len <= TITLE_MAX) return C12.green;
20320
+ if (len > 0 && len < TITLE_MIN) return C12.orange;
20321
+ return C12.red;
20235
20322
  }
20236
20323
  function getProgressPercent(len) {
20237
20324
  if (len === 0) return 0;
@@ -20239,9 +20326,9 @@ function getProgressPercent(len) {
20239
20326
  }
20240
20327
  function getProgressColor(len) {
20241
20328
  if (len === 0) return "var(--theme-elevation-200, #e5e7eb)";
20242
- if (len >= TITLE_MIN && len <= TITLE_MAX) return C11.green;
20243
- if (len < TITLE_MIN) return C11.orange;
20244
- return C11.red;
20329
+ if (len >= TITLE_MIN && len <= TITLE_MAX) return C12.green;
20330
+ if (len < TITLE_MIN) return C12.orange;
20331
+ return C12.red;
20245
20332
  }
20246
20333
  function MetaTitleField({
20247
20334
  path,
@@ -20312,7 +20399,7 @@ function MetaTitleField({
20312
20399
  style: {
20313
20400
  fontSize: 13,
20314
20401
  fontWeight: 700,
20315
- color: C11.textPrimary
20402
+ color: C12.textPrimary
20316
20403
  },
20317
20404
  children: t.metaTitle.label
20318
20405
  }
@@ -20352,9 +20439,9 @@ function MetaTitleField({
20352
20439
  fontSize: 14,
20353
20440
  fontFamily: "inherit",
20354
20441
  borderRadius: 8,
20355
- border: `2px solid ${C11.border}`,
20356
- backgroundColor: C11.surfaceBg,
20357
- color: C11.textPrimary,
20442
+ border: `2px solid ${C12.border}`,
20443
+ backgroundColor: C12.surfaceBg,
20444
+ color: C12.textPrimary,
20358
20445
  outline: "none",
20359
20446
  boxShadow: "2px 2px 0 0 var(--theme-border-color, rgba(0,0,0,1))"
20360
20447
  }
@@ -20372,9 +20459,9 @@ function MetaTitleField({
20372
20459
  gap: 5,
20373
20460
  padding: "8px 14px",
20374
20461
  borderRadius: 8,
20375
- border: `2px solid ${C11.border}`,
20376
- backgroundColor: loading ? C11.surface50 : C11.cyan,
20377
- color: loading ? C11.textSecondary : C11.black,
20462
+ border: `2px solid ${C12.border}`,
20463
+ backgroundColor: loading ? C12.surface50 : C12.cyan,
20464
+ color: loading ? C12.textSecondary : C12.black,
20378
20465
  fontWeight: 800,
20379
20466
  fontSize: 11,
20380
20467
  textTransform: "uppercase",
@@ -20421,7 +20508,7 @@ function MetaTitleField({
20421
20508
  justifyContent: "space-between",
20422
20509
  marginTop: 4,
20423
20510
  fontSize: 10,
20424
- color: C11.textSecondary
20511
+ color: C12.textSecondary
20425
20512
  },
20426
20513
  children: [
20427
20514
  /* @__PURE__ */ jsxs("span", { children: [
@@ -20455,9 +20542,9 @@ function MetaTitleField({
20455
20542
  borderRadius: 6,
20456
20543
  fontSize: 11,
20457
20544
  fontWeight: 600,
20458
- color: C11.red,
20545
+ color: C12.red,
20459
20546
  backgroundColor: "rgba(239,68,68,0.08)",
20460
- border: `1px solid ${C11.red}`
20547
+ border: `1px solid ${C12.red}`
20461
20548
  },
20462
20549
  children: error
20463
20550
  }
@@ -20466,7 +20553,7 @@ function MetaTitleField({
20466
20553
  }
20467
20554
  );
20468
20555
  }
20469
- var C12 = {
20556
+ var C13 = {
20470
20557
  cyan: "#00E5FF",
20471
20558
  black: "#000",
20472
20559
  green: "#22c55e",
@@ -20481,10 +20568,10 @@ var C12 = {
20481
20568
  var DESC_MIN = 120;
20482
20569
  var DESC_MAX = 160;
20483
20570
  function getCharColor2(len) {
20484
- if (len === 0) return C12.textSecondary;
20485
- if (len >= DESC_MIN && len <= DESC_MAX) return C12.green;
20486
- if (len > 0 && len < DESC_MIN) return C12.orange;
20487
- return C12.red;
20571
+ if (len === 0) return C13.textSecondary;
20572
+ if (len >= DESC_MIN && len <= DESC_MAX) return C13.green;
20573
+ if (len > 0 && len < DESC_MIN) return C13.orange;
20574
+ return C13.red;
20488
20575
  }
20489
20576
  function getProgressPercent2(len) {
20490
20577
  if (len === 0) return 0;
@@ -20492,9 +20579,9 @@ function getProgressPercent2(len) {
20492
20579
  }
20493
20580
  function getProgressColor2(len) {
20494
20581
  if (len === 0) return "var(--theme-elevation-200, #e5e7eb)";
20495
- if (len >= DESC_MIN && len <= DESC_MAX) return C12.green;
20496
- if (len < DESC_MIN) return C12.orange;
20497
- return C12.red;
20582
+ if (len >= DESC_MIN && len <= DESC_MAX) return C13.green;
20583
+ if (len < DESC_MIN) return C13.orange;
20584
+ return C13.red;
20498
20585
  }
20499
20586
  function MetaDescriptionField({
20500
20587
  path,
@@ -20565,7 +20652,7 @@ function MetaDescriptionField({
20565
20652
  style: {
20566
20653
  fontSize: 13,
20567
20654
  fontWeight: 700,
20568
- color: C12.textPrimary
20655
+ color: C13.textPrimary
20569
20656
  },
20570
20657
  children: t.metaDescription.label
20571
20658
  }
@@ -20605,9 +20692,9 @@ function MetaDescriptionField({
20605
20692
  fontSize: 14,
20606
20693
  fontFamily: "inherit",
20607
20694
  borderRadius: 8,
20608
- border: `2px solid ${C12.border}`,
20609
- backgroundColor: C12.surfaceBg,
20610
- color: C12.textPrimary,
20695
+ border: `2px solid ${C13.border}`,
20696
+ backgroundColor: C13.surfaceBg,
20697
+ color: C13.textPrimary,
20611
20698
  outline: "none",
20612
20699
  resize: "vertical",
20613
20700
  lineHeight: 1.5,
@@ -20627,9 +20714,9 @@ function MetaDescriptionField({
20627
20714
  gap: 5,
20628
20715
  padding: "8px 14px",
20629
20716
  borderRadius: 8,
20630
- border: `2px solid ${C12.border}`,
20631
- backgroundColor: loading ? C12.surface50 : C12.cyan,
20632
- color: loading ? C12.textSecondary : C12.black,
20717
+ border: `2px solid ${C13.border}`,
20718
+ backgroundColor: loading ? C13.surface50 : C13.cyan,
20719
+ color: loading ? C13.textSecondary : C13.black,
20633
20720
  fontWeight: 800,
20634
20721
  fontSize: 11,
20635
20722
  textTransform: "uppercase",
@@ -20677,7 +20764,7 @@ function MetaDescriptionField({
20677
20764
  justifyContent: "space-between",
20678
20765
  marginTop: 4,
20679
20766
  fontSize: 10,
20680
- color: C12.textSecondary
20767
+ color: C13.textSecondary
20681
20768
  },
20682
20769
  children: [
20683
20770
  /* @__PURE__ */ jsxs("span", { children: [
@@ -20711,9 +20798,9 @@ function MetaDescriptionField({
20711
20798
  borderRadius: 6,
20712
20799
  fontSize: 11,
20713
20800
  fontWeight: 600,
20714
- color: C12.red,
20801
+ color: C13.red,
20715
20802
  backgroundColor: "rgba(239,68,68,0.08)",
20716
- border: `1px solid ${C12.red}`
20803
+ border: `1px solid ${C13.red}`
20717
20804
  },
20718
20805
  children: error
20719
20806
  }
@@ -20722,7 +20809,7 @@ function MetaDescriptionField({
20722
20809
  }
20723
20810
  );
20724
20811
  }
20725
- var C13 = {
20812
+ var C14 = {
20726
20813
  cyan: "#00E5FF",
20727
20814
  black: "#000",
20728
20815
  white: "#fff",
@@ -20799,8 +20886,8 @@ function MetaImageField({
20799
20886
  gap: 10,
20800
20887
  padding: "10px 14px",
20801
20888
  borderRadius: 8,
20802
- border: `2px solid ${C13.border}`,
20803
- backgroundColor: C13.surfaceBg,
20889
+ border: `2px solid ${C14.border}`,
20890
+ backgroundColor: C14.surfaceBg,
20804
20891
  boxShadow: "2px 2px 0 0 var(--theme-border-color, rgba(0,0,0,1))"
20805
20892
  },
20806
20893
  children: [
@@ -20819,7 +20906,7 @@ function MetaImageField({
20819
20906
  fontWeight: 900,
20820
20907
  backgroundColor: hasImage ? "rgba(34,197,94,0.15)" : "rgba(255,138,0,0.15)",
20821
20908
  color: hasImage ? "#16a34a" : "#d97706",
20822
- border: `1px solid ${hasImage ? C13.green : C13.orange}`
20909
+ border: `1px solid ${hasImage ? C14.green : C14.orange}`
20823
20910
  },
20824
20911
  children: hasImage ? "\u2713" : "!"
20825
20912
  }
@@ -20831,7 +20918,7 @@ function MetaImageField({
20831
20918
  style: {
20832
20919
  fontSize: 12,
20833
20920
  fontWeight: 700,
20834
- color: C13.textPrimary
20921
+ color: C14.textPrimary
20835
20922
  },
20836
20923
  children: t.metaImage.label
20837
20924
  }
@@ -20841,7 +20928,7 @@ function MetaImageField({
20841
20928
  {
20842
20929
  style: {
20843
20930
  fontSize: 10,
20844
- color: C13.textSecondary,
20931
+ color: C14.textSecondary,
20845
20932
  lineHeight: 1.4
20846
20933
  },
20847
20934
  children: hasImage ? t.metaImage.imageSet : t.metaImage.noImage
@@ -20861,9 +20948,9 @@ function MetaImageField({
20861
20948
  gap: 5,
20862
20949
  padding: "8px 14px",
20863
20950
  borderRadius: 8,
20864
- border: `2px solid ${C13.border}`,
20865
- backgroundColor: loading ? C13.surface50 : success ? C13.green : C13.cyan,
20866
- color: loading ? C13.textSecondary : success ? C13.white : C13.black,
20951
+ border: `2px solid ${C14.border}`,
20952
+ backgroundColor: loading ? C14.surface50 : success ? C14.green : C14.cyan,
20953
+ color: loading ? C14.textSecondary : success ? C14.white : C14.black,
20867
20954
  fontWeight: 800,
20868
20955
  fontSize: 11,
20869
20956
  textTransform: "uppercase",
@@ -20890,9 +20977,9 @@ function MetaImageField({
20890
20977
  borderRadius: 6,
20891
20978
  fontSize: 11,
20892
20979
  fontWeight: 600,
20893
- color: C13.red,
20980
+ color: C14.red,
20894
20981
  backgroundColor: "rgba(239,68,68,0.08)",
20895
- border: `1px solid ${C13.red}`
20982
+ border: `1px solid ${C14.red}`
20896
20983
  },
20897
20984
  children: error
20898
20985
  }
@@ -20901,7 +20988,7 @@ function MetaImageField({
20901
20988
  }
20902
20989
  );
20903
20990
  }
20904
- var C14 = {
20991
+ var C15 = {
20905
20992
  black: "#000",
20906
20993
  white: "#fff",
20907
20994
  green: "#22c55e",
@@ -20915,15 +21002,15 @@ var C14 = {
20915
21002
  function getCompletenessColor(count) {
20916
21003
  switch (count) {
20917
21004
  case 0:
20918
- return C14.red;
21005
+ return C15.red;
20919
21006
  case 1:
20920
- return C14.orange;
21007
+ return C15.orange;
20921
21008
  case 2:
20922
- return C14.yellow;
21009
+ return C15.yellow;
20923
21010
  case 3:
20924
- return C14.green;
21011
+ return C15.green;
20925
21012
  default:
20926
- return C14.textSecondary;
21013
+ return C15.textSecondary;
20927
21014
  }
20928
21015
  }
20929
21016
  function getCompletenessLabel(count, ov) {
@@ -20981,8 +21068,8 @@ function OverviewField({
20981
21068
  fontFamily: "var(--font-body, Inter, system-ui, sans-serif)",
20982
21069
  padding: "12px 14px",
20983
21070
  borderRadius: 10,
20984
- border: `2px solid ${C14.border}`,
20985
- backgroundColor: C14.surfaceBg,
21071
+ border: `2px solid ${C15.border}`,
21072
+ backgroundColor: C15.surfaceBg,
20986
21073
  boxShadow: "3px 3px 0 0 var(--theme-border-color, rgba(0,0,0,1))",
20987
21074
  marginBottom: 12
20988
21075
  },
@@ -21005,7 +21092,7 @@ function OverviewField({
21005
21092
  fontWeight: 800,
21006
21093
  textTransform: "uppercase",
21007
21094
  letterSpacing: "0.04em",
21008
- color: C14.textPrimary
21095
+ color: C15.textPrimary
21009
21096
  },
21010
21097
  children: t.overview.metaCompleteness
21011
21098
  }
@@ -21020,8 +21107,8 @@ function OverviewField({
21020
21107
  fontSize: 11,
21021
21108
  fontWeight: 800,
21022
21109
  backgroundColor: completenessColor,
21023
- color: completenessColor === C14.yellow ? C14.black : C14.white,
21024
- border: `2px solid ${C14.border}`,
21110
+ color: completenessColor === C15.yellow ? C15.black : C15.white,
21111
+ border: `2px solid ${C15.border}`,
21025
21112
  textTransform: "uppercase",
21026
21113
  letterSpacing: "0.03em"
21027
21114
  },
@@ -21119,7 +21206,7 @@ function OverviewField({
21119
21206
  style: {
21120
21207
  fontSize: 12,
21121
21208
  fontWeight: 600,
21122
- color: item.filled ? C14.textPrimary : C14.textSecondary
21209
+ color: item.filled ? C15.textPrimary : C15.textSecondary
21123
21210
  },
21124
21211
  children: item.label
21125
21212
  }
@@ -21131,7 +21218,7 @@ function OverviewField({
21131
21218
  marginLeft: "auto",
21132
21219
  fontSize: 10,
21133
21220
  fontWeight: 700,
21134
- color: item.filled ? C14.green : C14.red,
21221
+ color: item.filled ? C15.green : C15.red,
21135
21222
  textTransform: "uppercase",
21136
21223
  letterSpacing: "0.03em"
21137
21224
  },
@@ -21148,7 +21235,7 @@ function OverviewField({
21148
21235
  }
21149
21236
  );
21150
21237
  }
21151
- var C15 = {
21238
+ var C16 = {
21152
21239
  cyan: "#00E5FF",
21153
21240
  black: "#000",
21154
21241
  white: "#fff",
@@ -21167,10 +21254,10 @@ var G = {
21167
21254
  descGrey: "#4d5156",
21168
21255
  faviconBg: "#e8eaed"};
21169
21256
  function charCountColor2(len, min, max) {
21170
- if (len >= min && len <= max) return C15.green;
21171
- if (len > 0 && len < min) return C15.orange;
21172
- if (len > max) return C15.red;
21173
- return C15.textSecondary;
21257
+ if (len >= min && len <= max) return C16.green;
21258
+ if (len > 0 && len < min) return C16.orange;
21259
+ if (len > max) return C16.red;
21260
+ return C16.textSecondary;
21174
21261
  }
21175
21262
  function truncateText(text, maxChars) {
21176
21263
  if (text.length <= maxChars) return text;
@@ -21225,8 +21312,8 @@ function SerpPreview({
21225
21312
  padding: "10px 12px",
21226
21313
  cursor: "pointer",
21227
21314
  borderRadius: 8,
21228
- border: `2px solid ${C15.border}`,
21229
- backgroundColor: C15.surface50,
21315
+ border: `2px solid ${C16.border}`,
21316
+ backgroundColor: C16.surface50,
21230
21317
  userSelect: "none"
21231
21318
  },
21232
21319
  children: [
@@ -21241,7 +21328,7 @@ function SerpPreview({
21241
21328
  fontWeight: 800,
21242
21329
  textTransform: "uppercase",
21243
21330
  letterSpacing: "0.04em",
21244
- color: C15.textPrimary
21331
+ color: C16.textPrimary
21245
21332
  },
21246
21333
  children: [
21247
21334
  /* @__PURE__ */ jsxs(
@@ -21273,7 +21360,7 @@ function SerpPreview({
21273
21360
  transition: "transform 0.2s",
21274
21361
  display: "inline-block",
21275
21362
  transform: open ? "rotate(90deg)" : "none",
21276
- color: C15.textSecondary
21363
+ color: C16.textSecondary
21277
21364
  },
21278
21365
  children: "\u25B6"
21279
21366
  }
@@ -21306,10 +21393,10 @@ function SerpPreview({
21306
21393
  "div",
21307
21394
  {
21308
21395
  style: {
21309
- backgroundColor: C15.white,
21310
- border: `2px solid ${C15.border}`,
21396
+ backgroundColor: C16.white,
21397
+ border: `2px solid ${C16.border}`,
21311
21398
  borderRadius: 12,
21312
- boxShadow: `3px 3px 0 0 ${C15.border}`,
21399
+ boxShadow: `3px 3px 0 0 ${C16.border}`,
21313
21400
  padding: isDesktop ? 20 : 14,
21314
21401
  maxWidth: isDesktop ? 650 : 380,
21315
21402
  overflow: "hidden"
@@ -21372,7 +21459,7 @@ function SerpPreview({
21372
21459
  style: {
21373
21460
  fontSize: 14,
21374
21461
  fontWeight: 400,
21375
- color: C15.black,
21462
+ color: C16.black,
21376
21463
  lineHeight: 1.3,
21377
21464
  whiteSpace: "nowrap",
21378
21465
  overflow: "hidden",
@@ -21436,7 +21523,7 @@ function SerpPreview({
21436
21523
  "span",
21437
21524
  {
21438
21525
  style: {
21439
- color: C15.textSecondary,
21526
+ color: C16.textSecondary,
21440
21527
  fontStyle: "italic",
21441
21528
  fontSize: titleFontSize - 2
21442
21529
  },
@@ -21465,7 +21552,7 @@ function SerpPreview({
21465
21552
  "span",
21466
21553
  {
21467
21554
  style: {
21468
- color: C15.textSecondary,
21555
+ color: C16.textSecondary,
21469
21556
  fontStyle: "italic",
21470
21557
  fontSize: descFontSize - 1
21471
21558
  },
@@ -21498,7 +21585,7 @@ function SerpPreview({
21498
21585
  fontSize: 11
21499
21586
  },
21500
21587
  children: [
21501
- /* @__PURE__ */ jsx("span", { style: { color: C15.textSecondary, fontWeight: 600 }, children: t.serpPreview.previewTitle }),
21588
+ /* @__PURE__ */ jsx("span", { style: { color: C16.textSecondary, fontWeight: 600 }, children: t.serpPreview.previewTitle }),
21502
21589
  /* @__PURE__ */ jsxs(
21503
21590
  "span",
21504
21591
  {
@@ -21527,7 +21614,7 @@ function SerpPreview({
21527
21614
  fontSize: 11
21528
21615
  },
21529
21616
  children: [
21530
- /* @__PURE__ */ jsx("span", { style: { color: C15.textSecondary, fontWeight: 600 }, children: t.serpPreview.previewDescription }),
21617
+ /* @__PURE__ */ jsx("span", { style: { color: C16.textSecondary, fontWeight: 600 }, children: t.serpPreview.previewDescription }),
21531
21618
  /* @__PURE__ */ jsxs(
21532
21619
  "span",
21533
21620
  {
@@ -21556,14 +21643,14 @@ function SerpPreview({
21556
21643
  fontSize: 11
21557
21644
  },
21558
21645
  children: [
21559
- /* @__PURE__ */ jsx("span", { style: { color: C15.textSecondary, fontWeight: 600 }, children: t.serpPreview.url }),
21646
+ /* @__PURE__ */ jsx("span", { style: { color: C16.textSecondary, fontWeight: 600 }, children: t.serpPreview.url }),
21560
21647
  /* @__PURE__ */ jsxs(
21561
21648
  "span",
21562
21649
  {
21563
21650
  style: {
21564
21651
  fontWeight: 700,
21565
21652
  fontVariantNumeric: "tabular-nums",
21566
- color: fullUrl.length <= 75 ? C15.green : C15.red
21653
+ color: fullUrl.length <= 75 ? C16.green : C16.red
21567
21654
  },
21568
21655
  children: [
21569
21656
  fullUrl.length,
@@ -21598,13 +21685,13 @@ function DeviceButton({
21598
21685
  gap: 5,
21599
21686
  padding: "4px 12px",
21600
21687
  borderRadius: 6,
21601
- border: `2px solid ${C15.border}`,
21688
+ border: `2px solid ${C16.border}`,
21602
21689
  fontSize: 11,
21603
21690
  fontWeight: 700,
21604
21691
  cursor: "pointer",
21605
- backgroundColor: active ? C15.cyan : C15.surfaceBg,
21606
- color: active ? C15.black : C15.textPrimary,
21607
- boxShadow: active ? `2px 2px 0 0 ${C15.border}` : "none",
21692
+ backgroundColor: active ? C16.cyan : C16.surfaceBg,
21693
+ color: active ? C16.black : C16.textPrimary,
21694
+ boxShadow: active ? `2px 2px 0 0 ${C16.border}` : "none",
21608
21695
  transition: "background-color 0.15s"
21609
21696
  },
21610
21697
  children: [