sanity-plugin-seofields 1.6.5 → 1.7.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.
Files changed (61) hide show
  1. package/README.md +355 -79
  2. package/dist/SeoHealthDashboard-IP5BJ322.cjs +10 -0
  3. package/dist/{SeoHealthDashboard-D3XU3CUB.cjs.map → SeoHealthDashboard-IP5BJ322.cjs.map} +1 -1
  4. package/dist/SeoHealthDashboard-PTUEVYZL.js +4 -0
  5. package/dist/{SeoHealthDashboard-BEZVLLFG.js.map → SeoHealthDashboard-PTUEVYZL.js.map} +1 -1
  6. package/dist/{SeoHealthTool-4VZMD4TR.cjs → SeoHealthTool-CZZRMWQK.cjs} +4 -4
  7. package/dist/SeoHealthTool-CZZRMWQK.cjs.map +1 -0
  8. package/dist/{SeoHealthTool-BSTYAKQS.js → SeoHealthTool-IULT4G25.js} +3 -3
  9. package/dist/SeoHealthTool-IULT4G25.js.map +1 -0
  10. package/dist/{chunk-BHIZQLY7.cjs → chunk-5YRH47VQ.cjs} +23 -26
  11. package/dist/chunk-5YRH47VQ.cjs.map +1 -0
  12. package/dist/{chunk-BCTPOWXA.cjs → chunk-ARELX3GK.cjs} +131 -111
  13. package/dist/chunk-ARELX3GK.cjs.map +1 -0
  14. package/dist/{chunk-HQTYQMP5.js → chunk-AW7OKBQQ.js} +23 -26
  15. package/dist/chunk-AW7OKBQQ.js.map +1 -0
  16. package/dist/{chunk-XXA6WCWS.js → chunk-FONJYVF2.js} +22 -4
  17. package/dist/chunk-FONJYVF2.js.map +1 -0
  18. package/dist/{chunk-YHXUWGNA.cjs → chunk-GWPOJSGW.cjs} +99 -3
  19. package/dist/chunk-GWPOJSGW.cjs.map +1 -0
  20. package/dist/{chunk-KTL6NYNG.js → chunk-HRKRV2X7.js} +98 -4
  21. package/dist/chunk-HRKRV2X7.js.map +1 -0
  22. package/dist/cli.js +1 -1
  23. package/dist/{component-H52blyfc.d.ts → component-D1sBm6ts.d.cts} +9 -3
  24. package/dist/{component-CIE6Sy4F.d.cts → component-DQ4KuQQD.d.ts} +9 -3
  25. package/dist/index.cjs +2 -2
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +96 -4
  28. package/dist/index.d.ts +96 -4
  29. package/dist/index.js +2 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/next.cjs +85 -77
  32. package/dist/next.d.cts +3 -3
  33. package/dist/next.d.ts +3 -3
  34. package/dist/next.js +2 -2
  35. package/dist/schema/next.cjs +88 -80
  36. package/dist/schema/next.d.cts +4 -4
  37. package/dist/schema/next.d.ts +4 -4
  38. package/dist/schema/next.js +3 -3
  39. package/dist/schema.cjs +173 -153
  40. package/dist/schema.cjs.map +1 -1
  41. package/dist/schema.d.cts +10 -6
  42. package/dist/schema.d.ts +10 -6
  43. package/dist/schema.js +18 -3
  44. package/dist/schema.js.map +1 -1
  45. package/dist/{types-BxcJinOf.d.cts → types-9_wbCIi9.d.ts} +20 -2
  46. package/dist/{types-BtSRRG6C.d.cts → types-B91ena4g.d.cts} +1 -16
  47. package/dist/{types-BtSRRG6C.d.ts → types-B91ena4g.d.ts} +1 -16
  48. package/dist/{types-Dp9Pfnt9.d.ts → types-Bb49oRBV.d.cts} +20 -2
  49. package/dist/{types-CbYb4MsN.d.ts → types-CeBULNFF.d.ts} +1 -1
  50. package/dist/{types-CyRdIF-3.d.cts → types-_wBLg6RV.d.cts} +1 -1
  51. package/package.json +1 -1
  52. package/dist/SeoHealthDashboard-BEZVLLFG.js +0 -4
  53. package/dist/SeoHealthDashboard-D3XU3CUB.cjs +0 -10
  54. package/dist/SeoHealthTool-4VZMD4TR.cjs.map +0 -1
  55. package/dist/SeoHealthTool-BSTYAKQS.js.map +0 -1
  56. package/dist/chunk-BCTPOWXA.cjs.map +0 -1
  57. package/dist/chunk-BHIZQLY7.cjs.map +0 -1
  58. package/dist/chunk-HQTYQMP5.js.map +0 -1
  59. package/dist/chunk-KTL6NYNG.js.map +0 -1
  60. package/dist/chunk-XXA6WCWS.js.map +0 -1
  61. package/dist/chunk-YHXUWGNA.cjs.map +0 -1
package/dist/cli.js CHANGED
@@ -61,7 +61,7 @@ ${e}`}function ft(e,t,n,o){a.success(`Updated ${e}`),a.dim(""),a.dim(" What was
61
61
  title,
62
62
  slug,
63
63
  seo
64
- } | order(_updatedAt desc)`;o.text="Fetching documents...";let c;try{c=await s.fetch(d);}catch(g){o.fail(`Failed to fetch: ${g.message}`),process.exit(1);}if(o.succeed(`Analysed ${c.length} document(s)`),c.length===0){a.warn("No documents with SEO fields found."),n&&Se(i);return}let u=c.map(g=>({doc:g,health:K(g)}));await gt(u,c,e),n&&Se(i);}async function gt(e,t,n){let o={excellent:0,good:0,fair:0,poor:0,missing:0},s=0;for(let{health:c}of e)o[c.status]=(o[c.status]||0)+1,s+=c.score;let i=Math.round(s/e.length);if(pt(t,i,o),n.format==="summary")return;n.format!=="table"&&(a.info(""),a.warn(`Unknown format "${n.format}", defaulting to table output.`)),St(e);let r={};for(let{health:c}of e)for(let u of c.issues)r[u]=(r[u]||0)+1;let d=Object.entries(r).sort(([,c],[,u])=>u-c).slice(0,10);d.length>0&&$t(d,t.length),a.info("");}function pt(e,t,n){a.heading("\u{1F4CA} Summary"),a.info(""),a.info(` Total documents: ${l.bold(String(e.length))}`),a.info(` Average score: ${l.bold(we(t))}%`),a.info(""),a.info(` ${A.excellent} Excellent (80+): ${n.excellent}`),a.info(` ${A.good} Good (60-79): ${n.good}`),a.info(` ${A.fair} Fair (40-59): ${n.fair}`),a.info(` ${A.poor} Poor (1-39): ${n.poor}`),a.info(` ${A.missing} Missing (0): ${n.missing}`);}var mt={excellent:"Excellent",good:"Good",fair:"Fair",poor:"Poor",missing:"Missing"},ht={excellent:l.green,good:l.blue,fair:l.yellow,poor:l.red,missing:l.dim};function yt(e,t=11){var s,i;let n=((s=mt[e])!=null?s:e).padEnd(t);return ((i=ht[e])!=null?i:(r=>r))(n)}function St(e){a.heading("\u{1F4CB} Documents"),a.info("");let t=Math.min(44,Math.max(5,...e.map(({doc:r})=>(r.title||r._id).length))),n=11,o=14,s=5,i=l.dim("\u2500".repeat(s+2+n+2+o+2+t));a.info(` ${l.dim("Score".padEnd(s))} ${l.dim("Status".padEnd(n))} ${l.dim("Type".padEnd(o))} ${l.dim("Title")}`),a.info(` ${i}`);for(let{doc:r,health:d}of e){let c=$e(r.title||r._id,t),u=String(d.score).padStart(s),f=yt(d.status,n),g=l.dim($e(r._type,o).padEnd(o));a.info(` ${we(d.score,u)} ${f} ${g} ${c}`);}}function $t(e,t){a.heading("\u{1F50D} Top Issues"),a.info("");for(let[n,o]of e){let s=Math.round(o/t*100);a.info(` ${l.red(String(o).padStart(4))} docs (${s}%) ${n}`);}}function Se(e){a.info(""),a.info(` ${l.dim("\u2500".repeat(52))}`),a.info(` ${l.dim("Connection info")}`),a.info(` ${l.dim("Project ID:")} ${l.white(e.projectId)} ${l.dim(`\u2190 ${e.sources.projectId}`)}`),a.info(` ${l.dim("Dataset: ")} ${l.white(e.dataset)} ${l.dim(`\u2190 ${e.sources.dataset}`)}`),a.info(` ${l.dim("Token: ")} ${l.dim(e.sources.token)}`),a.info("");}function we(e,t){let n=t!=null?t:String(e);return e>=80?l.green(n):e>=60?l.blue(n):e>=40?l.yellow(n):e>0?l.red(n):l.dim(n)}function $e(e,t){return e.length>t?`${e.slice(0,t-1)}\u2026`:e}H();var Z="1.6.5",ve=[l.cyan,e=>l.bold(l.blue(e)),l.blue,l.magenta,l.red,l.yellow],w=ve[Math.floor(Math.random()*ve.length)],Ce=["Run `seofields doctor` first to verify your setup is correct.","Use `seofields report --format summary` for a quick overview.","Export your SEO data before making bulk changes: `seofields export -o backup.json`.","Add `seoFields` type to every document schema to track SEO health.","A meta title between 50\u201360 characters gets the best click-through rate.","Meta descriptions should be 140\u2013160 characters for optimal display.","Open Graph images should be 1200\xD7630px for best social sharing.","Use `seofields config --baseUrl=https://yoursite.com` to enable canonical URLs.","Twitter Card images require a separate `twitterImage` field for best results.","Schema.org markup helps search engines understand your content structure.","Use `seofields report --types post,page` to filter by document type.","The `healthDashboard` tool gives a live view of SEO scores inside Sanity Studio.","Keywords should appear naturally \u2014 avoid keyword stuffing.","Every page needs a unique meta title. Duplicates hurt rankings.","Use `seofields export --format csv` to open SEO data in a spreadsheet.","Set `noIndex: true` on internal or draft pages to prevent indexing.","OG title and meta title can differ \u2014 OG is optimised for social, meta for search.","Run `seofields report` after content migrations to catch regressions.","Use `seofields init --schema-org` to add structured data support.","Structured data (Schema.org) can unlock rich results in Google Search.","A score of 80+ is excellent. Aim to get all key pages there.","The `seoPreview` option shows a live Google-style preview inside the editor.","Use `seofields report` in CI to catch SEO regressions before they ship.","Use `--dataset staging` to run reports against your staging dataset.","Keep your license key private \u2014 never commit it to version control.","Use `seofields config --healthDashboard.showDocumentId=true` for easier debugging.","Use `seofields export --format json --output report.json` to save SEO data to a file.","Alt text on images improves both accessibility and image search ranking.","Canonical URLs prevent duplicate content penalties from search engines.","A missing OG image means social shares show a blank card \u2014 always add one.","Use descriptive slugs: `/blog/seo-tips` ranks better than `/blog/post-123`.","Re-run `seofields report` monthly to track your SEO health over time.","The `types` filter helps you focus reports on high-priority content.","Use `seofields export` to back up SEO data before schema migrations.","Short meta titles (under 30 chars) waste valuable search result space.","Long meta descriptions get truncated \u2014 stay under 160 characters.","Twitter Cards need `twitter:card`, `twitter:title`, and `twitter:image` at minimum.","Use `seofields doctor` after upgrading the plugin to catch breaking changes.","JSON export includes health scores \u2014 pipe it into your analytics pipeline.","Set a `defaultHiddenFields` list to keep the SEO panel focused.","Internal links pass authority \u2014 make sure important pages are well-linked.","Page speed is a ranking factor \u2014 optimise images referenced in SEO fields.","Use consistent brand phrasing in meta titles across your site.","Structured data errors can be tested at schema.org/validator.","Focus first on pages with the most traffic, not just the lowest scores.","Add SEO review to your content publishing checklist.","Use `seofields config --healthDashboard.licenseKey=KEY` to unlock premium features.","The CSV export makes it easy to share SEO audits with non-technical stakeholders.","Every image on your page should have descriptive alt text.","Avoid duplicate meta descriptions \u2014 each page needs its own."];function bt(){return Ce[Math.floor(Math.random()*Ce.length)]}var wt=62,V=wt-2;function vt(e,t){let n=e.split(" "),o=[],s="";for(let i of n)s.length+(s?1:0)+i.length>t?(s&&o.push(s),s=i):s=s?`${s} ${i}`:i;return s&&o.push(s),o}function F(e,t){let n=V-3,o=" ".repeat(Math.max(0,n-t));return ` ${w("\u2502")} ${e}${o} ${w("\u2502")}`}function M(){return F("",0)}function xe(){let e="\u2500".repeat(V),t=bt(),n=V-3-5,o=vt(t,n);console.log(),console.log(` ${w(`\u256D${e}\u256E`)}`),console.log(M()),console.log(F(`${l.bold(l.green("seofields"))}${l.dim(` v${Z}`)}`,`seofields v${Z}`.length)),console.log(F(l.dim("SEO tooling for Sanity CMS \u2014 manage from your terminal"),54)),console.log(M());for(let i=0;i<o.length;i++){let r=i===0?`${l.dim("Tip: ")}${l.white(o[i])}`:` ${l.white(o[i])}`,d=5+o[i].length;console.log(F(r,d));}console.log(M()),console.log(` ${w(`\u2570${e}\u256F`)}`),console.log(),console.log(` ${l.bold("Commands")}`),console.log();let s=[["init ","Add seofields() to sanity.config"],["config ","Update plugin configuration options"],["create-config ","Create seofields.cli.ts / .js interactively"],["report ","SEO health report across all documents"],["export ","Export SEO fields as JSON or CSV"],["doctor ","Check setup, deps & config"]];for(let[i,r]of s)console.log(` ${w(i)} ${l.dim(r)}`);console.log(),console.log(` ${l.dim("Run ")}${l.white("seofields <command> --help")}${l.dim(" for details")}`),console.log();}function P(e,t){let n="\u2500".repeat(V),o=`seofields \u203A ${e}`;return ["",` ${w(`\u256D${n}\u256E`)}`,M(),F(`${l.bold(l.green("seofields"))}${w(" \u203A ")}${l.bold(w(e))}`,o.length),F(l.dim(t),t.length),M(),` ${w(`\u2570${n}\u256F`)}`].join(`
64
+ } | order(_updatedAt desc)`;o.text="Fetching documents...";let c;try{c=await s.fetch(d);}catch(g){o.fail(`Failed to fetch: ${g.message}`),process.exit(1);}if(o.succeed(`Analysed ${c.length} document(s)`),c.length===0){a.warn("No documents with SEO fields found."),n&&Se(i);return}let u=c.map(g=>({doc:g,health:K(g)}));await gt(u,c,e),n&&Se(i);}async function gt(e,t,n){let o={excellent:0,good:0,fair:0,poor:0,missing:0},s=0;for(let{health:c}of e)o[c.status]=(o[c.status]||0)+1,s+=c.score;let i=Math.round(s/e.length);if(pt(t,i,o),n.format==="summary")return;n.format!=="table"&&(a.info(""),a.warn(`Unknown format "${n.format}", defaulting to table output.`)),St(e);let r={};for(let{health:c}of e)for(let u of c.issues)r[u]=(r[u]||0)+1;let d=Object.entries(r).sort(([,c],[,u])=>u-c).slice(0,10);d.length>0&&$t(d,t.length),a.info("");}function pt(e,t,n){a.heading("\u{1F4CA} Summary"),a.info(""),a.info(` Total documents: ${l.bold(String(e.length))}`),a.info(` Average score: ${l.bold(we(t))}%`),a.info(""),a.info(` ${A.excellent} Excellent (80+): ${n.excellent}`),a.info(` ${A.good} Good (60-79): ${n.good}`),a.info(` ${A.fair} Fair (40-59): ${n.fair}`),a.info(` ${A.poor} Poor (1-39): ${n.poor}`),a.info(` ${A.missing} Missing (0): ${n.missing}`);}var mt={excellent:"Excellent",good:"Good",fair:"Fair",poor:"Poor",missing:"Missing"},ht={excellent:l.green,good:l.blue,fair:l.yellow,poor:l.red,missing:l.dim};function yt(e,t=11){var s,i;let n=((s=mt[e])!=null?s:e).padEnd(t);return ((i=ht[e])!=null?i:(r=>r))(n)}function St(e){a.heading("\u{1F4CB} Documents"),a.info("");let t=Math.min(44,Math.max(5,...e.map(({doc:r})=>(r.title||r._id).length))),n=11,o=14,s=5,i=l.dim("\u2500".repeat(s+2+n+2+o+2+t));a.info(` ${l.dim("Score".padEnd(s))} ${l.dim("Status".padEnd(n))} ${l.dim("Type".padEnd(o))} ${l.dim("Title")}`),a.info(` ${i}`);for(let{doc:r,health:d}of e){let c=$e(r.title||r._id,t),u=String(d.score).padStart(s),f=yt(d.status,n),g=l.dim($e(r._type,o).padEnd(o));a.info(` ${we(d.score,u)} ${f} ${g} ${c}`);}}function $t(e,t){a.heading("\u{1F50D} Top Issues"),a.info("");for(let[n,o]of e){let s=Math.round(o/t*100);a.info(` ${l.red(String(o).padStart(4))} docs (${s}%) ${n}`);}}function Se(e){a.info(""),a.info(` ${l.dim("\u2500".repeat(52))}`),a.info(` ${l.dim("Connection info")}`),a.info(` ${l.dim("Project ID:")} ${l.white(e.projectId)} ${l.dim(`\u2190 ${e.sources.projectId}`)}`),a.info(` ${l.dim("Dataset: ")} ${l.white(e.dataset)} ${l.dim(`\u2190 ${e.sources.dataset}`)}`),a.info(` ${l.dim("Token: ")} ${l.dim(e.sources.token)}`),a.info("");}function we(e,t){let n=t!=null?t:String(e);return e>=80?l.green(n):e>=60?l.blue(n):e>=40?l.yellow(n):e>0?l.red(n):l.dim(n)}function $e(e,t){return e.length>t?`${e.slice(0,t-1)}\u2026`:e}H();var Z="1.7.0",ve=[l.cyan,e=>l.bold(l.blue(e)),l.blue,l.magenta,l.red,l.yellow],w=ve[Math.floor(Math.random()*ve.length)],Ce=["Run `seofields doctor` first to verify your setup is correct.","Use `seofields report --format summary` for a quick overview.","Export your SEO data before making bulk changes: `seofields export -o backup.json`.","Add `seoFields` type to every document schema to track SEO health.","A meta title between 50\u201360 characters gets the best click-through rate.","Meta descriptions should be 140\u2013160 characters for optimal display.","Open Graph images should be 1200\xD7630px for best social sharing.","Use `seofields config --baseUrl=https://yoursite.com` to enable canonical URLs.","Twitter Card images require a separate `twitterImage` field for best results.","Schema.org markup helps search engines understand your content structure.","Use `seofields report --types post,page` to filter by document type.","The `healthDashboard` tool gives a live view of SEO scores inside Sanity Studio.","Keywords should appear naturally \u2014 avoid keyword stuffing.","Every page needs a unique meta title. Duplicates hurt rankings.","Use `seofields export --format csv` to open SEO data in a spreadsheet.","Set `noIndex: true` on internal or draft pages to prevent indexing.","OG title and meta title can differ \u2014 OG is optimised for social, meta for search.","Run `seofields report` after content migrations to catch regressions.","Use `seofields init --schema-org` to add structured data support.","Structured data (Schema.org) can unlock rich results in Google Search.","A score of 80+ is excellent. Aim to get all key pages there.","The `seoPreview` option shows a live Google-style preview inside the editor.","Use `seofields report` in CI to catch SEO regressions before they ship.","Use `--dataset staging` to run reports against your staging dataset.","Keep your license key private \u2014 never commit it to version control.","Use `seofields config --healthDashboard.showDocumentId=true` for easier debugging.","Use `seofields export --format json --output report.json` to save SEO data to a file.","Alt text on images improves both accessibility and image search ranking.","Canonical URLs prevent duplicate content penalties from search engines.","A missing OG image means social shares show a blank card \u2014 always add one.","Use descriptive slugs: `/blog/seo-tips` ranks better than `/blog/post-123`.","Re-run `seofields report` monthly to track your SEO health over time.","The `types` filter helps you focus reports on high-priority content.","Use `seofields export` to back up SEO data before schema migrations.","Short meta titles (under 30 chars) waste valuable search result space.","Long meta descriptions get truncated \u2014 stay under 160 characters.","Twitter Cards need `twitter:card`, `twitter:title`, and `twitter:image` at minimum.","Use `seofields doctor` after upgrading the plugin to catch breaking changes.","JSON export includes health scores \u2014 pipe it into your analytics pipeline.","Set a `defaultHiddenFields` list to keep the SEO panel focused.","Internal links pass authority \u2014 make sure important pages are well-linked.","Page speed is a ranking factor \u2014 optimise images referenced in SEO fields.","Use consistent brand phrasing in meta titles across your site.","Structured data errors can be tested at schema.org/validator.","Focus first on pages with the most traffic, not just the lowest scores.","Add SEO review to your content publishing checklist.","Use `seofields config --healthDashboard.licenseKey=KEY` to unlock premium features.","The CSV export makes it easy to share SEO audits with non-technical stakeholders.","Every image on your page should have descriptive alt text.","Avoid duplicate meta descriptions \u2014 each page needs its own."];function bt(){return Ce[Math.floor(Math.random()*Ce.length)]}var wt=62,V=wt-2;function vt(e,t){let n=e.split(" "),o=[],s="";for(let i of n)s.length+(s?1:0)+i.length>t?(s&&o.push(s),s=i):s=s?`${s} ${i}`:i;return s&&o.push(s),o}function F(e,t){let n=V-3,o=" ".repeat(Math.max(0,n-t));return ` ${w("\u2502")} ${e}${o} ${w("\u2502")}`}function M(){return F("",0)}function xe(){let e="\u2500".repeat(V),t=bt(),n=V-3-5,o=vt(t,n);console.log(),console.log(` ${w(`\u256D${e}\u256E`)}`),console.log(M()),console.log(F(`${l.bold(l.green("seofields"))}${l.dim(` v${Z}`)}`,`seofields v${Z}`.length)),console.log(F(l.dim("SEO tooling for Sanity CMS \u2014 manage from your terminal"),54)),console.log(M());for(let i=0;i<o.length;i++){let r=i===0?`${l.dim("Tip: ")}${l.white(o[i])}`:` ${l.white(o[i])}`,d=5+o[i].length;console.log(F(r,d));}console.log(M()),console.log(` ${w(`\u2570${e}\u256F`)}`),console.log(),console.log(` ${l.bold("Commands")}`),console.log();let s=[["init ","Add seofields() to sanity.config"],["config ","Update plugin configuration options"],["create-config ","Create seofields.cli.ts / .js interactively"],["report ","SEO health report across all documents"],["export ","Export SEO fields as JSON or CSV"],["doctor ","Check setup, deps & config"]];for(let[i,r]of s)console.log(` ${w(i)} ${l.dim(r)}`);console.log(),console.log(` ${l.dim("Run ")}${l.white("seofields <command> --help")}${l.dim(" for details")}`),console.log();}function P(e,t){let n="\u2500".repeat(V),o=`seofields \u203A ${e}`;return ["",` ${w(`\u256D${n}\u256E`)}`,M(),F(`${l.bold(l.green("seofields"))}${w(" \u203A ")}${l.bold(w(e))}`,o.length),F(l.dim(t),t.length),M(),` ${w(`\u2570${n}\u256F`)}`].join(`
65
65
  `)}program.name("seofields").description("CLI for sanity-plugin-seofields \u2014 manage SEO from your terminal").version(Z).action(xe);program.command("config",{isDefault:false}).description("Update seofields() configuration in your sanity.config file").addHelpText("before",P("config","Update seofields() configuration in your sanity.config file")).allowUnknownOption().allowExcessArguments().helpOption("-h, --help","Show help and all available options").addHelpText("after",["",` ${l.bold("Usage")}`,` ${l.dim("Pass any option as")} ${l.white("--key=value")}${l.dim(". Nested keys use dot notation.")}`,"",` ${l.bold("Top-level options")}`,` ${w("--baseUrl")}${l.dim("=<url>").padEnd(38)} ${l.dim("Canonical base URL")}`,` ${w("--seoPreview")}${l.dim("=<bool>").padEnd(36)} ${l.dim("Enable live Google-style preview")}`,` ${w("--defaultHiddenFields")}${l.dim("=<f1,f2>").padEnd(28)} ${l.dim("Comma-separated fields to hide")}`,` ${w("--types")}${l.dim("=<t1,t2>").padEnd(40)} ${l.dim("Document types that have SEO fields")}`,"",` ${l.bold("healthDashboard options")} ${l.dim("(prefix: --healthDashboard.<key>)")}`,` ${w("--healthDashboard.licenseKey")}${l.dim("=<key>").padEnd(22)} ${l.dim("License key for premium features")}`,` ${w("--healthDashboard.toolTitle")}${l.dim("=<str>").padEnd(23)} ${l.dim("Custom title shown in Studio")}`,` ${w("--healthDashboard.showDocumentId")}${l.dim("=<bool>").padEnd(17)} ${l.dim("Show document _id in dashboard")}`,` ${w("--healthDashboard.showHealthScore")}${l.dim("=<bool>").padEnd(16)} ${l.dim("Show score badge per document")}`,` ${w("--healthDashboard.query.types")}${l.dim("=<t1,t2>").padEnd(21)} ${l.dim("Filter dashboard by document types")}`,"",` ${l.bold("Examples")}`,` ${l.white("seofields config --baseUrl=https://mysite.com")}`,` ${l.white("seofields config --healthDashboard.licenseKey=SEOF-1234")}`,` ${l.white("seofields config --healthDashboard.showDocumentId=true --seoPreview=true")}`,` ${l.white("seofields config --healthDashboard.query.types=post,page")}`,` ${l.white("seofields config --defaultHiddenFields=metaImage,openGraphUrl")}`,""].join(`
66
66
  `)).action(()=>{let e=process.argv.indexOf("config"),t=e>=0?process.argv.slice(e+1):[];de(t);});program.command("create-config").description("Interactively create a seofields.cli.ts / .js config file").addHelpText("before",P("create-config","Interactively create a seofields.cli.ts / .js config file")).action(ue);program.command("init").description("Add seofields() plugin to your sanity.config file").addHelpText("before",P("init","Add seofields() plugin to your sanity.config file")).option("--preview","Enable SEO preview in the plugin config").option("--dashboard","Explicitly enable the SEO Health Dashboard").option("--no-dashboard","Disable the SEO Health Dashboard").option("--schema-org","Also add schemaOrg() plugin registration").addHelpText("after",["",` ${l.dim("Note: ")}${l.yellow("--preview")}${l.dim(", ")}${l.yellow("--dashboard")}${l.dim(", and ")}${l.yellow("--no-dashboard")}${l.dim(" only apply during initial setup.")}`,` ${l.dim(" If seofields() is already in your config, use:")}`,"",` ${l.dim(" ")}${l.white("seofields config --healthDashboard=true --seoPreview=true")}`,""].join(`
67
67
  `)).action(ye);program.command("export").description("Export all documents with SEO fields as JSON or CSV").addHelpText("before",P("export","Export all documents with SEO fields as JSON or CSV")).option("-p, --project-id <id>","Sanity project ID").option("-d, --dataset <name>","Sanity dataset name").option("-t, --token <token>","Sanity API token").option("--types <types>","Comma-separated document types to export (e.g. post,page)").option("-f, --format <format>","Output format: json or csv","json").option("-o, --output <path>","Output file path (defaults to stdout)").action(me);program.command("report").description("Generate an SEO health report for all documents").addHelpText("before",P("report","Generate an SEO health report for all documents")).option("-p, --project-id <id>","Sanity project ID").option("-d, --dataset <name>","Sanity dataset name").option("-t, --token <token>","Sanity API token").option("--types <types>","Comma-separated document types to include").option("--format <format>",'Output format: table or summary (default: "table")',"table").action(be);program.command("doctor").description("Check plugin configuration, dependencies, and setup").addHelpText("before",P("doctor","Check plugin configuration, dependencies, and setup")).option("--cwd <path>","Working directory to check",process.cwd()).action(ge);var _=process.argv.slice(2);_.length===1&&(_[0]==="--help"||_[0]==="-h")&&(xe(),process.exit(0));if(_.length>=2&&_[_.length-1]==="help"){let e=program.commands.find(t=>t.name()===_[0]);e&&(e.help(),process.exit(0));}program.parse();
@@ -1,6 +1,6 @@
1
1
  import { JSX } from 'react';
2
- import { L as SchemaOrgAggregateRatingData, N as SchemaOrgArticleData, P as SchemaOrgBlogPostingData, Q as SchemaOrgBookData, R as SchemaOrgBrandData, T as SchemaOrgBreadcrumbListData, U as SchemaOrgContactPointData, X as SchemaOrgCountryData, Y as SchemaOrgCourseData, _ as SchemaOrgEventData, $ as SchemaOrgFAQPageData, a0 as SchemaOrgHowToData, a2 as SchemaOrgImageObjectData, a3 as SchemaOrgItemListData, a4 as SchemaOrgJobPostingData, a5 as SchemaOrgLegalServiceData, a6 as SchemaOrgLocalBusinessData, a7 as SchemaOrgMovieData, a8 as SchemaOrgMusicAlbumData, a9 as SchemaOrgMusicRecordingData, aa as SchemaOrgNewsArticleData, ab as SchemaOrgOfferData, ac as SchemaOrgOrganizationData, ae as SchemaOrgPersonData, ag as SchemaOrgPlaceData, ah as SchemaOrgPostalAddressData, ai as SchemaOrgProductData, aj as SchemaOrgProfilePageData, ak as SchemaOrgRecipeData, al as SchemaOrgRestaurantData, am as SchemaOrgReviewData, an as SchemaOrgServiceData, ao as SchemaOrgSoftwareApplicationData, ar as SchemaOrgVideoObjectData, as as SchemaOrgWebApplicationData, at as SchemaOrgWebPageData, au as SchemaOrgWebsiteData } from './types-Dp9Pfnt9.js';
3
- import { c as SanityImage } from './types-BtSRRG6C.js';
2
+ import { M as SchemaOrgAggregateRatingData, P as SchemaOrgArticleData, Q as SchemaOrgBlogPostingData, R as SchemaOrgBookData, T as SchemaOrgBrandData, U as SchemaOrgBreadcrumbListData, V as SchemaOrgContactPointData, Y as SchemaOrgCountryData, Z as SchemaOrgCourseData, $ as SchemaOrgEventData, a0 as SchemaOrgFAQPageData, a1 as SchemaOrgHowToData, a3 as SchemaOrgImageObjectData, a4 as SchemaOrgItemListData, a5 as SchemaOrgJobPostingData, a6 as SchemaOrgLegalServiceData, a7 as SchemaOrgLocalBusinessData, a8 as SchemaOrgMovieData, a9 as SchemaOrgMusicAlbumData, aa as SchemaOrgMusicRecordingData, ab as SchemaOrgNewsArticleData, ac as SchemaOrgOfferData, ad as SchemaOrgOpinionNewsArticleData, ae as SchemaOrgOrganizationData, ag as SchemaOrgPersonData, ai as SchemaOrgPlaceData, aj as SchemaOrgPostalAddressData, ak as SchemaOrgProductData, al as SchemaOrgProfilePageData, am as SchemaOrgRecipeData, an as SchemaOrgRestaurantData, ao as SchemaOrgReviewData, ap as SchemaOrgServiceData, aq as SchemaOrgSoftwareApplicationData, at as SchemaOrgVideoObjectData, au as SchemaOrgWebApplicationData, av as SchemaOrgWebPageData, aw as SchemaOrgWebsiteData } from './types-Bb49oRBV.cjs';
3
+ import { b as SanityImage } from './types-B91ena4g.cjs';
4
4
 
5
5
  /**
6
6
  * <SchemaOrgScripts> — Renders multiple Schema.org JSON-LD script tags
@@ -261,6 +261,12 @@ interface OfferSchemaProps {
261
261
  declare function buildOfferJsonLd(data?: SchemaOrgOfferData | null): Record<string, unknown> | null;
262
262
  declare function OfferSchema({ data }: OfferSchemaProps): JSX.Element | null;
263
263
 
264
+ interface OpinionNewsArticleSchemaProps {
265
+ data?: SchemaOrgOpinionNewsArticleData | null;
266
+ }
267
+ declare function buildOpinionNewsArticleJsonLd(data?: SchemaOrgOpinionNewsArticleData | null): Record<string, unknown> | null;
268
+ declare function OpinionNewsArticleSchema({ data, }: OpinionNewsArticleSchemaProps): JSX.Element | null;
269
+
264
270
  /**
265
271
  * <OrganizationSchema> — Renders Schema.org Organization JSON-LD structured data.
266
272
  *
@@ -531,4 +537,4 @@ declare function buildWebsiteJsonLd(data?: SchemaOrgWebsiteData | null): Record<
531
537
  */
532
538
  declare function WebsiteSchema({ data }: WebsiteSchemaProps): JSX.Element | null;
533
539
 
534
- export { type ProductSchemaProps as $, AggregateRatingSchema as A, BlogPostingSchema as B, ContactPointSchema as C, MusicAlbumSchema as D, EventSchema as E, FAQPageSchema as F, type MusicAlbumSchemaProps as G, HowToSchema as H, ImageObjectSchema as I, JobPostingSchema as J, MusicRecordingSchema as K, LegalServiceSchema as L, MovieSchema as M, type MusicRecordingSchemaProps as N, NewsArticleSchema as O, type NewsArticleSchemaProps as P, OfferSchema as Q, type OfferSchemaProps as R, OrganizationSchema as S, type OrganizationSchemaProps as T, PersonSchema as U, type PersonSchemaProps as V, PlaceSchema as W, type PlaceSchemaProps as X, PostalAddressSchema as Y, type PostalAddressSchemaProps as Z, ProductSchema as _, type AggregateRatingSchemaProps as a, ProfilePageSchema as a0, type ProfilePageSchemaProps as a1, RecipeSchema as a2, type RecipeSchemaProps as a3, RestaurantSchema as a4, type RestaurantSchemaProps as a5, ReviewSchema as a6, type ReviewSchemaProps as a7, SchemaOrgScripts as a8, type SchemaOrgScriptsProps as a9, buildJobPostingJsonLd as aA, buildLegalServiceJsonLd as aB, buildLocalBusinessJsonLd as aC, buildMovieJsonLd as aD, buildMusicAlbumJsonLd as aE, buildMusicRecordingJsonLd as aF, buildNewsArticleJsonLd as aG, buildOfferJsonLd as aH, buildOrganizationJsonLd as aI, buildPersonJsonLd as aJ, buildPlaceJsonLd as aK, buildPostalAddressJsonLd as aL, buildProductJsonLd as aM, buildProfilePageJsonLd as aN, buildRecipeJsonLd as aO, buildRestaurantJsonLd as aP, buildReviewJsonLd as aQ, buildServiceJsonLd as aR, buildSoftwareApplicationJsonLd as aS, buildVideoObjectJsonLd as aT, buildWebApplicationJsonLd as aU, buildWebPageJsonLd as aV, buildWebsiteJsonLd as aW, ServiceSchema as aa, type ServiceSchemaProps as ab, SoftwareApplicationSchema as ac, type SoftwareApplicationSchemaProps as ad, VideoObjectSchema as ae, type VideoObjectSchemaProps as af, WebApplicationSchema as ag, type WebApplicationSchemaProps as ah, WebPageSchema as ai, type WebPageSchemaProps as aj, WebsiteSchema as ak, type WebsiteSchemaProps as al, buildAggregateRatingJsonLd as am, buildArticleJsonLd as an, buildBlogPostingJsonLd as ao, buildBookJsonLd as ap, buildBrandJsonLd as aq, buildBreadcrumbListJsonLd as ar, buildContactPointJsonLd as as, buildCountryJsonLd as at, buildCourseJsonLd as au, buildEventJsonLd as av, buildFAQPageJsonLd as aw, buildHowToJsonLd as ax, buildImageObjectJsonLd as ay, buildItemListJsonLd as az, ArticleSchema as b, type ArticleSchemaProps as c, type BlogPostingSchemaProps as d, BookSchema as e, type BookSchemaProps as f, BrandSchema as g, type BrandSchemaProps as h, BreadcrumbListSchema as i, type BreadcrumbListSchemaProps as j, type ContactPointSchemaProps as k, CountrySchema as l, type CountrySchemaProps as m, CourseSchema as n, type CourseSchemaProps as o, type EventSchemaProps as p, type FAQPageSchemaProps as q, type HowToSchemaProps as r, type ImageObjectSchemaProps as s, ItemListSchema as t, type ItemListSchemaProps as u, type JobPostingSchemaProps as v, type LegalServiceSchemaProps as w, LocalBusinessSchema as x, type LocalBusinessSchemaProps as y, type MovieSchemaProps as z };
540
+ export { type PostalAddressSchemaProps as $, AggregateRatingSchema as A, BlogPostingSchema as B, ContactPointSchema as C, MusicAlbumSchema as D, EventSchema as E, FAQPageSchema as F, type MusicAlbumSchemaProps as G, HowToSchema as H, ImageObjectSchema as I, JobPostingSchema as J, MusicRecordingSchema as K, LegalServiceSchema as L, MovieSchema as M, type MusicRecordingSchemaProps as N, NewsArticleSchema as O, type NewsArticleSchemaProps as P, OfferSchema as Q, type OfferSchemaProps as R, OpinionNewsArticleSchema as S, type OpinionNewsArticleSchemaProps as T, OrganizationSchema as U, type OrganizationSchemaProps as V, PersonSchema as W, type PersonSchemaProps as X, PlaceSchema as Y, type PlaceSchemaProps as Z, PostalAddressSchema as _, type AggregateRatingSchemaProps as a, ProductSchema as a0, type ProductSchemaProps as a1, ProfilePageSchema as a2, type ProfilePageSchemaProps as a3, RecipeSchema as a4, type RecipeSchemaProps as a5, RestaurantSchema as a6, type RestaurantSchemaProps as a7, ReviewSchema as a8, type ReviewSchemaProps as a9, buildImageObjectJsonLd as aA, buildItemListJsonLd as aB, buildJobPostingJsonLd as aC, buildLegalServiceJsonLd as aD, buildLocalBusinessJsonLd as aE, buildMovieJsonLd as aF, buildMusicAlbumJsonLd as aG, buildMusicRecordingJsonLd as aH, buildNewsArticleJsonLd as aI, buildOfferJsonLd as aJ, buildOpinionNewsArticleJsonLd as aK, buildOrganizationJsonLd as aL, buildPersonJsonLd as aM, buildPlaceJsonLd as aN, buildPostalAddressJsonLd as aO, buildProductJsonLd as aP, buildProfilePageJsonLd as aQ, buildRecipeJsonLd as aR, buildRestaurantJsonLd as aS, buildReviewJsonLd as aT, buildServiceJsonLd as aU, buildSoftwareApplicationJsonLd as aV, buildVideoObjectJsonLd as aW, buildWebApplicationJsonLd as aX, buildWebPageJsonLd as aY, buildWebsiteJsonLd as aZ, SchemaOrgScripts as aa, type SchemaOrgScriptsProps as ab, ServiceSchema as ac, type ServiceSchemaProps as ad, SoftwareApplicationSchema as ae, type SoftwareApplicationSchemaProps as af, VideoObjectSchema as ag, type VideoObjectSchemaProps as ah, WebApplicationSchema as ai, type WebApplicationSchemaProps as aj, WebPageSchema as ak, type WebPageSchemaProps as al, WebsiteSchema as am, type WebsiteSchemaProps as an, buildAggregateRatingJsonLd as ao, buildArticleJsonLd as ap, buildBlogPostingJsonLd as aq, buildBookJsonLd as ar, buildBrandJsonLd as as, buildBreadcrumbListJsonLd as at, buildContactPointJsonLd as au, buildCountryJsonLd as av, buildCourseJsonLd as aw, buildEventJsonLd as ax, buildFAQPageJsonLd as ay, buildHowToJsonLd as az, ArticleSchema as b, type ArticleSchemaProps as c, type BlogPostingSchemaProps as d, BookSchema as e, type BookSchemaProps as f, BrandSchema as g, type BrandSchemaProps as h, BreadcrumbListSchema as i, type BreadcrumbListSchemaProps as j, type ContactPointSchemaProps as k, CountrySchema as l, type CountrySchemaProps as m, CourseSchema as n, type CourseSchemaProps as o, type EventSchemaProps as p, type FAQPageSchemaProps as q, type HowToSchemaProps as r, type ImageObjectSchemaProps as s, ItemListSchema as t, type ItemListSchemaProps as u, type JobPostingSchemaProps as v, type LegalServiceSchemaProps as w, LocalBusinessSchema as x, type LocalBusinessSchemaProps as y, type MovieSchemaProps as z };
@@ -1,6 +1,6 @@
1
1
  import { JSX } from 'react';
2
- import { L as SchemaOrgAggregateRatingData, N as SchemaOrgArticleData, P as SchemaOrgBlogPostingData, Q as SchemaOrgBookData, R as SchemaOrgBrandData, T as SchemaOrgBreadcrumbListData, U as SchemaOrgContactPointData, X as SchemaOrgCountryData, Y as SchemaOrgCourseData, _ as SchemaOrgEventData, $ as SchemaOrgFAQPageData, a0 as SchemaOrgHowToData, a2 as SchemaOrgImageObjectData, a3 as SchemaOrgItemListData, a4 as SchemaOrgJobPostingData, a5 as SchemaOrgLegalServiceData, a6 as SchemaOrgLocalBusinessData, a7 as SchemaOrgMovieData, a8 as SchemaOrgMusicAlbumData, a9 as SchemaOrgMusicRecordingData, aa as SchemaOrgNewsArticleData, ab as SchemaOrgOfferData, ac as SchemaOrgOrganizationData, ae as SchemaOrgPersonData, ag as SchemaOrgPlaceData, ah as SchemaOrgPostalAddressData, ai as SchemaOrgProductData, aj as SchemaOrgProfilePageData, ak as SchemaOrgRecipeData, al as SchemaOrgRestaurantData, am as SchemaOrgReviewData, an as SchemaOrgServiceData, ao as SchemaOrgSoftwareApplicationData, ar as SchemaOrgVideoObjectData, as as SchemaOrgWebApplicationData, at as SchemaOrgWebPageData, au as SchemaOrgWebsiteData } from './types-BxcJinOf.cjs';
3
- import { c as SanityImage } from './types-BtSRRG6C.cjs';
2
+ import { M as SchemaOrgAggregateRatingData, P as SchemaOrgArticleData, Q as SchemaOrgBlogPostingData, R as SchemaOrgBookData, T as SchemaOrgBrandData, U as SchemaOrgBreadcrumbListData, V as SchemaOrgContactPointData, Y as SchemaOrgCountryData, Z as SchemaOrgCourseData, $ as SchemaOrgEventData, a0 as SchemaOrgFAQPageData, a1 as SchemaOrgHowToData, a3 as SchemaOrgImageObjectData, a4 as SchemaOrgItemListData, a5 as SchemaOrgJobPostingData, a6 as SchemaOrgLegalServiceData, a7 as SchemaOrgLocalBusinessData, a8 as SchemaOrgMovieData, a9 as SchemaOrgMusicAlbumData, aa as SchemaOrgMusicRecordingData, ab as SchemaOrgNewsArticleData, ac as SchemaOrgOfferData, ad as SchemaOrgOpinionNewsArticleData, ae as SchemaOrgOrganizationData, ag as SchemaOrgPersonData, ai as SchemaOrgPlaceData, aj as SchemaOrgPostalAddressData, ak as SchemaOrgProductData, al as SchemaOrgProfilePageData, am as SchemaOrgRecipeData, an as SchemaOrgRestaurantData, ao as SchemaOrgReviewData, ap as SchemaOrgServiceData, aq as SchemaOrgSoftwareApplicationData, at as SchemaOrgVideoObjectData, au as SchemaOrgWebApplicationData, av as SchemaOrgWebPageData, aw as SchemaOrgWebsiteData } from './types-9_wbCIi9.js';
3
+ import { b as SanityImage } from './types-B91ena4g.js';
4
4
 
5
5
  /**
6
6
  * <SchemaOrgScripts> — Renders multiple Schema.org JSON-LD script tags
@@ -261,6 +261,12 @@ interface OfferSchemaProps {
261
261
  declare function buildOfferJsonLd(data?: SchemaOrgOfferData | null): Record<string, unknown> | null;
262
262
  declare function OfferSchema({ data }: OfferSchemaProps): JSX.Element | null;
263
263
 
264
+ interface OpinionNewsArticleSchemaProps {
265
+ data?: SchemaOrgOpinionNewsArticleData | null;
266
+ }
267
+ declare function buildOpinionNewsArticleJsonLd(data?: SchemaOrgOpinionNewsArticleData | null): Record<string, unknown> | null;
268
+ declare function OpinionNewsArticleSchema({ data, }: OpinionNewsArticleSchemaProps): JSX.Element | null;
269
+
264
270
  /**
265
271
  * <OrganizationSchema> — Renders Schema.org Organization JSON-LD structured data.
266
272
  *
@@ -531,4 +537,4 @@ declare function buildWebsiteJsonLd(data?: SchemaOrgWebsiteData | null): Record<
531
537
  */
532
538
  declare function WebsiteSchema({ data }: WebsiteSchemaProps): JSX.Element | null;
533
539
 
534
- export { type ProductSchemaProps as $, AggregateRatingSchema as A, BlogPostingSchema as B, ContactPointSchema as C, MusicAlbumSchema as D, EventSchema as E, FAQPageSchema as F, type MusicAlbumSchemaProps as G, HowToSchema as H, ImageObjectSchema as I, JobPostingSchema as J, MusicRecordingSchema as K, LegalServiceSchema as L, MovieSchema as M, type MusicRecordingSchemaProps as N, NewsArticleSchema as O, type NewsArticleSchemaProps as P, OfferSchema as Q, type OfferSchemaProps as R, OrganizationSchema as S, type OrganizationSchemaProps as T, PersonSchema as U, type PersonSchemaProps as V, PlaceSchema as W, type PlaceSchemaProps as X, PostalAddressSchema as Y, type PostalAddressSchemaProps as Z, ProductSchema as _, type AggregateRatingSchemaProps as a, ProfilePageSchema as a0, type ProfilePageSchemaProps as a1, RecipeSchema as a2, type RecipeSchemaProps as a3, RestaurantSchema as a4, type RestaurantSchemaProps as a5, ReviewSchema as a6, type ReviewSchemaProps as a7, SchemaOrgScripts as a8, type SchemaOrgScriptsProps as a9, buildJobPostingJsonLd as aA, buildLegalServiceJsonLd as aB, buildLocalBusinessJsonLd as aC, buildMovieJsonLd as aD, buildMusicAlbumJsonLd as aE, buildMusicRecordingJsonLd as aF, buildNewsArticleJsonLd as aG, buildOfferJsonLd as aH, buildOrganizationJsonLd as aI, buildPersonJsonLd as aJ, buildPlaceJsonLd as aK, buildPostalAddressJsonLd as aL, buildProductJsonLd as aM, buildProfilePageJsonLd as aN, buildRecipeJsonLd as aO, buildRestaurantJsonLd as aP, buildReviewJsonLd as aQ, buildServiceJsonLd as aR, buildSoftwareApplicationJsonLd as aS, buildVideoObjectJsonLd as aT, buildWebApplicationJsonLd as aU, buildWebPageJsonLd as aV, buildWebsiteJsonLd as aW, ServiceSchema as aa, type ServiceSchemaProps as ab, SoftwareApplicationSchema as ac, type SoftwareApplicationSchemaProps as ad, VideoObjectSchema as ae, type VideoObjectSchemaProps as af, WebApplicationSchema as ag, type WebApplicationSchemaProps as ah, WebPageSchema as ai, type WebPageSchemaProps as aj, WebsiteSchema as ak, type WebsiteSchemaProps as al, buildAggregateRatingJsonLd as am, buildArticleJsonLd as an, buildBlogPostingJsonLd as ao, buildBookJsonLd as ap, buildBrandJsonLd as aq, buildBreadcrumbListJsonLd as ar, buildContactPointJsonLd as as, buildCountryJsonLd as at, buildCourseJsonLd as au, buildEventJsonLd as av, buildFAQPageJsonLd as aw, buildHowToJsonLd as ax, buildImageObjectJsonLd as ay, buildItemListJsonLd as az, ArticleSchema as b, type ArticleSchemaProps as c, type BlogPostingSchemaProps as d, BookSchema as e, type BookSchemaProps as f, BrandSchema as g, type BrandSchemaProps as h, BreadcrumbListSchema as i, type BreadcrumbListSchemaProps as j, type ContactPointSchemaProps as k, CountrySchema as l, type CountrySchemaProps as m, CourseSchema as n, type CourseSchemaProps as o, type EventSchemaProps as p, type FAQPageSchemaProps as q, type HowToSchemaProps as r, type ImageObjectSchemaProps as s, ItemListSchema as t, type ItemListSchemaProps as u, type JobPostingSchemaProps as v, type LegalServiceSchemaProps as w, LocalBusinessSchema as x, type LocalBusinessSchemaProps as y, type MovieSchemaProps as z };
540
+ export { type PostalAddressSchemaProps as $, AggregateRatingSchema as A, BlogPostingSchema as B, ContactPointSchema as C, MusicAlbumSchema as D, EventSchema as E, FAQPageSchema as F, type MusicAlbumSchemaProps as G, HowToSchema as H, ImageObjectSchema as I, JobPostingSchema as J, MusicRecordingSchema as K, LegalServiceSchema as L, MovieSchema as M, type MusicRecordingSchemaProps as N, NewsArticleSchema as O, type NewsArticleSchemaProps as P, OfferSchema as Q, type OfferSchemaProps as R, OpinionNewsArticleSchema as S, type OpinionNewsArticleSchemaProps as T, OrganizationSchema as U, type OrganizationSchemaProps as V, PersonSchema as W, type PersonSchemaProps as X, PlaceSchema as Y, type PlaceSchemaProps as Z, PostalAddressSchema as _, type AggregateRatingSchemaProps as a, ProductSchema as a0, type ProductSchemaProps as a1, ProfilePageSchema as a2, type ProfilePageSchemaProps as a3, RecipeSchema as a4, type RecipeSchemaProps as a5, RestaurantSchema as a6, type RestaurantSchemaProps as a7, ReviewSchema as a8, type ReviewSchemaProps as a9, buildImageObjectJsonLd as aA, buildItemListJsonLd as aB, buildJobPostingJsonLd as aC, buildLegalServiceJsonLd as aD, buildLocalBusinessJsonLd as aE, buildMovieJsonLd as aF, buildMusicAlbumJsonLd as aG, buildMusicRecordingJsonLd as aH, buildNewsArticleJsonLd as aI, buildOfferJsonLd as aJ, buildOpinionNewsArticleJsonLd as aK, buildOrganizationJsonLd as aL, buildPersonJsonLd as aM, buildPlaceJsonLd as aN, buildPostalAddressJsonLd as aO, buildProductJsonLd as aP, buildProfilePageJsonLd as aQ, buildRecipeJsonLd as aR, buildRestaurantJsonLd as aS, buildReviewJsonLd as aT, buildServiceJsonLd as aU, buildSoftwareApplicationJsonLd as aV, buildVideoObjectJsonLd as aW, buildWebApplicationJsonLd as aX, buildWebPageJsonLd as aY, buildWebsiteJsonLd as aZ, SchemaOrgScripts as aa, type SchemaOrgScriptsProps as ab, ServiceSchema as ac, type ServiceSchemaProps as ad, SoftwareApplicationSchema as ae, type SoftwareApplicationSchemaProps as af, VideoObjectSchema as ag, type VideoObjectSchemaProps as ah, WebApplicationSchema as ai, type WebApplicationSchemaProps as aj, WebPageSchema as ak, type WebPageSchemaProps as al, WebsiteSchema as am, type WebsiteSchemaProps as an, buildAggregateRatingJsonLd as ao, buildArticleJsonLd as ap, buildBlogPostingJsonLd as aq, buildBookJsonLd as ar, buildBrandJsonLd as as, buildBreadcrumbListJsonLd as at, buildContactPointJsonLd as au, buildCountryJsonLd as av, buildCourseJsonLd as aw, buildEventJsonLd as ax, buildFAQPageJsonLd as ay, buildHowToJsonLd as az, ArticleSchema as b, type ArticleSchemaProps as c, type BlogPostingSchemaProps as d, BookSchema as e, type BookSchemaProps as f, BrandSchema as g, type BrandSchemaProps as h, BreadcrumbListSchema as i, type BreadcrumbListSchemaProps as j, type ContactPointSchemaProps as k, CountrySchema as l, type CountrySchemaProps as m, CourseSchema as n, type CourseSchemaProps as o, type EventSchemaProps as p, type FAQPageSchemaProps as q, type HowToSchemaProps as r, type ImageObjectSchemaProps as s, ItemListSchema as t, type ItemListSchemaProps as u, type JobPostingSchemaProps as v, type LegalServiceSchemaProps as w, LocalBusinessSchema as x, type LocalBusinessSchemaProps as y, type MovieSchemaProps as z };
package/dist/index.cjs CHANGED
@@ -1064,7 +1064,7 @@ var resolveDashboardConfig = (healthDashboard, rootApiVersion) => {
1064
1064
  var seofields = sanity.definePlugin((config = {}) => {
1065
1065
  const { healthDashboard = true } = config;
1066
1066
  const dash = resolveDashboardConfig(healthDashboard, config.apiVersion);
1067
- const LazySeoHealthTool = react.lazy(() => import('./SeoHealthTool-4VZMD4TR.cjs'));
1067
+ const LazySeoHealthTool = react.lazy(() => import('./SeoHealthTool-CZZRMWQK.cjs'));
1068
1068
  const BoundSeoHealthTool = () => react.createElement(
1069
1069
  react.Suspense,
1070
1070
  { fallback: null },
@@ -1111,7 +1111,7 @@ var seofields = sanity.definePlugin((config = {}) => {
1111
1111
  });
1112
1112
  });
1113
1113
  var plugin_default = seofields;
1114
- var LazySeoHealthDashboard = react.lazy(() => import('./SeoHealthDashboard-D3XU3CUB.cjs'));
1114
+ var LazySeoHealthDashboard = react.lazy(() => import('./SeoHealthDashboard-IP5BJ322.cjs'));
1115
1115
  function createSeoHealthPane(optionsOrS, optionsWhenS) {
1116
1116
  const S = optionsOrS;
1117
1117
  const _a = optionsWhenS != null ? optionsWhenS : {}, { query, openInPane = true, title: paneTitle } = _a, rest = chunkS367Y35J_cjs.__objRest(_a, ["query", "openInPane", "title"]);