sanity-plugin-seofields 1.8.0 → 1.9.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 (113) hide show
  1. package/README.md +437 -26
  2. package/dist/SeoHealthTool-2COI27KI.cjs +8 -0
  3. package/dist/SeoHealthTool-2COI27KI.cjs.map +1 -0
  4. package/dist/SeoHealthTool-CWI3KB2V.js +8 -0
  5. package/dist/SeoHealthTool-CWI3KB2V.js.map +1 -0
  6. package/dist/{SeoPreview-3EXR6FD4.cjs → SeoPreview-LMZAWWOE.cjs} +35 -38
  7. package/dist/SeoPreview-LMZAWWOE.cjs.map +1 -0
  8. package/dist/{SeoPreview-4PPAF4NO.js → SeoPreview-UNQBKTQO.js} +14 -11
  9. package/dist/SeoPreview-UNQBKTQO.js.map +1 -0
  10. package/dist/chunk-3OK3S2F7.cjs +673 -0
  11. package/dist/chunk-3OK3S2F7.cjs.map +1 -0
  12. package/dist/{chunk-B5IVI5LP.cjs → chunk-5XTQRILL.cjs} +286 -236
  13. package/dist/chunk-5XTQRILL.cjs.map +1 -0
  14. package/dist/{chunk-254YHUN3.cjs → chunk-7N4MLTMR.js} +8 -6
  15. package/dist/chunk-7N4MLTMR.js.map +1 -0
  16. package/dist/{chunk-DDAAVRWG.js → chunk-A57XNQC7.cjs} +9 -4
  17. package/dist/chunk-A57XNQC7.cjs.map +1 -0
  18. package/dist/chunk-BWLJDK5J.js +624 -0
  19. package/dist/chunk-BWLJDK5J.js.map +1 -0
  20. package/dist/chunk-FUUWBQE2.cjs +195 -0
  21. package/dist/chunk-FUUWBQE2.cjs.map +1 -0
  22. package/dist/{chunk-ZBHLMQTS.cjs → chunk-HHO2AKAP.js} +44 -17
  23. package/dist/chunk-HHO2AKAP.js.map +1 -0
  24. package/dist/chunk-KIEO6QG3.js +195 -0
  25. package/dist/chunk-KIEO6QG3.js.map +1 -0
  26. package/dist/chunk-R2U7JF7U.cjs +624 -0
  27. package/dist/chunk-R2U7JF7U.cjs.map +1 -0
  28. package/dist/{chunk-VR44E62I.js → chunk-XZKQWV2H.js} +204 -33
  29. package/dist/chunk-XZKQWV2H.js.map +1 -0
  30. package/dist/{chunk-HDZZQCH7.js → chunk-Y46ACXM4.cjs} +45 -5
  31. package/dist/chunk-Y46ACXM4.cjs.map +1 -0
  32. package/dist/chunk-Z5AOUU4H.js +673 -0
  33. package/dist/chunk-Z5AOUU4H.js.map +1 -0
  34. package/dist/cli.js +27 -27
  35. package/dist/{component-DEXwtemT.d.ts → component-CjT1hvxh.d.ts} +2 -2
  36. package/dist/{component-BzI-LHPw.d.cts → component-WYh0z8as.d.cts} +2 -2
  37. package/dist/define-cli.cjs +2 -4
  38. package/dist/define-cli.cjs.map +1 -1
  39. package/dist/define-cli.js +4 -4
  40. package/dist/define-cli.js.map +1 -1
  41. package/dist/head.cjs +14 -0
  42. package/dist/head.cjs.map +1 -0
  43. package/dist/head.d.cts +254 -0
  44. package/dist/head.d.ts +254 -0
  45. package/dist/head.js +14 -0
  46. package/dist/head.js.map +1 -0
  47. package/dist/index.cjs +978 -367
  48. package/dist/index.cjs.map +1 -1
  49. package/dist/index.d.cts +6 -374
  50. package/dist/index.d.ts +6 -374
  51. package/dist/index.js +920 -286
  52. package/dist/index.js.map +1 -1
  53. package/dist/next.cjs +204 -455
  54. package/dist/next.cjs.map +1 -1
  55. package/dist/next.d.cts +8 -206
  56. package/dist/next.d.ts +8 -206
  57. package/dist/next.js +181 -111
  58. package/dist/next.js.map +1 -1
  59. package/dist/plugin-DQdThyxG.d.ts +449 -0
  60. package/dist/plugin-DoGeZP79.d.cts +449 -0
  61. package/dist/schema/next.cjs +173 -327
  62. package/dist/schema/next.cjs.map +1 -1
  63. package/dist/schema/next.d.cts +4 -4
  64. package/dist/schema/next.d.ts +4 -4
  65. package/dist/schema/next.js +172 -8
  66. package/dist/schema/next.js.map +1 -1
  67. package/dist/schema.cjs +376 -517
  68. package/dist/schema.cjs.map +1 -1
  69. package/dist/schema.d.cts +5 -5
  70. package/dist/schema.d.ts +5 -5
  71. package/dist/schema.js +216 -11
  72. package/dist/schema.js.map +1 -1
  73. package/dist/server.cjs +149 -0
  74. package/dist/server.cjs.map +1 -0
  75. package/dist/server.d.cts +102 -0
  76. package/dist/server.d.ts +102 -0
  77. package/dist/server.js +149 -0
  78. package/dist/server.js.map +1 -0
  79. package/dist/{types-CW8qFdAn.d.ts → types-BAdN1RMu.d.ts} +2 -2
  80. package/dist/{types-B_vjMPtM.d.cts → types-C5i3KMgs.d.cts} +2 -2
  81. package/dist/{types-BXSCbl6p.d.cts → types-DP-DiW6f.d.cts} +2 -2
  82. package/dist/{types-C19cQx5D.d.ts → types-DRLUGLtX.d.ts} +2 -2
  83. package/dist/{types-yVmQfby9.d.cts → types-DxlPXihz.d.cts} +1 -1
  84. package/dist/{types-yVmQfby9.d.ts → types-DxlPXihz.d.ts} +1 -1
  85. package/package.json +25 -4
  86. package/dist/SeoHealthDashboard-AEKVVMUR-7NWV3C3Y.js +0 -4
  87. package/dist/SeoHealthDashboard-AEKVVMUR-7NWV3C3Y.js.map +0 -1
  88. package/dist/SeoHealthDashboard-AEKVVMUR-XWKJUH24.cjs +0 -10
  89. package/dist/SeoHealthDashboard-AEKVVMUR-XWKJUH24.cjs.map +0 -1
  90. package/dist/SeoHealthTool-2KKQJLJL.cjs +0 -11
  91. package/dist/SeoHealthTool-2KKQJLJL.cjs.map +0 -1
  92. package/dist/SeoHealthTool-3CUKGADZ.js +0 -5
  93. package/dist/SeoHealthTool-3CUKGADZ.js.map +0 -1
  94. package/dist/SeoPreview-3EXR6FD4.cjs.map +0 -1
  95. package/dist/SeoPreview-4PPAF4NO.js.map +0 -1
  96. package/dist/chunk-254YHUN3.cjs.map +0 -1
  97. package/dist/chunk-27XSYENH.js +0 -2215
  98. package/dist/chunk-27XSYENH.js.map +0 -1
  99. package/dist/chunk-B5IVI5LP.cjs.map +0 -1
  100. package/dist/chunk-BNXMFD3T.cjs +0 -431
  101. package/dist/chunk-BNXMFD3T.cjs.map +0 -1
  102. package/dist/chunk-DDAAVRWG.js.map +0 -1
  103. package/dist/chunk-HDZZQCH7.js.map +0 -1
  104. package/dist/chunk-P6IOWIO2.cjs +0 -480
  105. package/dist/chunk-P6IOWIO2.cjs.map +0 -1
  106. package/dist/chunk-UOCZFYYP.js +0 -407
  107. package/dist/chunk-UOCZFYYP.js.map +0 -1
  108. package/dist/chunk-VR44E62I.js.map +0 -1
  109. package/dist/chunk-WKXHX3GO.js +0 -424
  110. package/dist/chunk-WKXHX3GO.js.map +0 -1
  111. package/dist/chunk-XZDLJ2N6.cjs +0 -2224
  112. package/dist/chunk-XZDLJ2N6.cjs.map +0 -1
  113. package/dist/chunk-ZBHLMQTS.cjs.map +0 -1
@@ -1,18 +1,15 @@
1
- 'use strict';
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var chunkZBHLMQTS_cjs = require('./chunk-ZBHLMQTS.cjs');
4
- require('./chunk-254YHUN3.cjs');
5
- var ui = require('@sanity/ui');
6
- var react = require('react');
7
- var sanity = require('sanity');
8
- var styled = require('styled-components');
9
- var jsxRuntime = require('react/jsx-runtime');
3
+ var _chunkY46ACXM4cjs = require('./chunk-Y46ACXM4.cjs');
4
+ require('./chunk-A57XNQC7.cjs');
10
5
 
11
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
-
13
- var styled__default = /*#__PURE__*/_interopDefault(styled);
14
-
15
- var PreviewContainer = styled__default.default.div`
6
+ // src/components/SeoPreview.tsx
7
+ var _ui = require('@sanity/ui');
8
+ var _react = require('react');
9
+ var _sanity = require('sanity');
10
+ var _styledcomponents = require('styled-components'); var _styledcomponents2 = _interopRequireDefault(_styledcomponents);
11
+ var _jsxruntime = require('react/jsx-runtime');
12
+ var PreviewContainer = _styledcomponents2.default.div`
16
13
  max-width: 600px;
17
14
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
18
15
  background: #ffffff;
@@ -20,7 +17,7 @@ var PreviewContainer = styled__default.default.div`
20
17
  border-radius: 8px;
21
18
  overflow: hidden;
22
19
  `;
23
- var PreviewHeader = styled__default.default.div`
20
+ var PreviewHeader = _styledcomponents2.default.div`
24
21
  background: #f8f9fa;
25
22
  padding: 12px 16px;
26
23
  border-bottom: 1px solid #dadce0;
@@ -29,17 +26,17 @@ var PreviewHeader = styled__default.default.div`
29
26
  justify-content: space-between;
30
27
  gap: 8px;
31
28
  `;
32
- var PreviewBody = styled__default.default.div`
29
+ var PreviewBody = _styledcomponents2.default.div`
33
30
  padding: 16px;
34
31
  `;
35
- var SerpUrl = styled__default.default.p`
32
+ var SerpUrl = _styledcomponents2.default.p`
36
33
  margin: 0 0 4px;
37
34
  color: #006621;
38
35
  font-size: 13px;
39
36
  line-height: 1.4;
40
37
  word-break: break-word;
41
38
  `;
42
- var SerpTitle = styled__default.default.h3`
39
+ var SerpTitle = _styledcomponents2.default.h3`
43
40
  margin: 0 0 8px;
44
41
  color: #1a0dab;
45
42
  font-size: 18px;
@@ -51,7 +48,7 @@ var SerpTitle = styled__default.default.h3`
51
48
  text-decoration: underline;
52
49
  }
53
50
  `;
54
- var SerpDescription = styled__default.default.p`
51
+ var SerpDescription = _styledcomponents2.default.p`
55
52
  margin: 0;
56
53
  color: #545454;
57
54
  font-size: 14px;
@@ -62,7 +59,7 @@ var SerpDescription = styled__default.default.p`
62
59
  -webkit-box-orient: vertical;
63
60
  overflow: hidden;
64
61
  `;
65
- var LiveIndicator = styled__default.default.span`
62
+ var LiveIndicator = _styledcomponents2.default.span`
66
63
  display: inline-flex;
67
64
  align-items: center;
68
65
  gap: 4px;
@@ -84,9 +81,9 @@ var SeoPreview = (props) => {
84
81
  const titleSuffixOption = options == null ? void 0 : options.titleSuffix;
85
82
  const titleSuffixInheritColor = (_a = options == null ? void 0 : options.titleSuffixInheritColor) != null ? _a : false;
86
83
  const titleSuffixQuery = options == null ? void 0 : options.titleSuffixQuery;
87
- const client = sanity.useClient({ apiVersion: (_b = options == null ? void 0 : options.apiVersion) != null ? _b : "2024-01-01" });
88
- const [groqTitleSuffix, setGroqTitleSuffix] = react.useState("");
89
- react.useEffect(() => {
84
+ const client = _sanity.useClient.call(void 0, { apiVersion: (_b = options == null ? void 0 : options.apiVersion) != null ? _b : "2024-01-01" });
85
+ const [groqTitleSuffix, setGroqTitleSuffix] = _react.useState.call(void 0, "");
86
+ _react.useEffect.call(void 0, () => {
90
87
  if (!titleSuffixQuery) return;
91
88
  client.fetch(titleSuffixQuery).then((result) => {
92
89
  setGroqTitleSuffix(result === null || result === void 0 ? "" : String(result));
@@ -94,12 +91,12 @@ var SeoPreview = (props) => {
94
91
  setGroqTitleSuffix("");
95
92
  });
96
93
  }, [titleSuffixQuery, client]);
97
- const parent = sanity.useFormValue([path[0]]) || {
94
+ const parent = _sanity.useFormValue.call(void 0, [path[0]]) || {
98
95
  title: "",
99
96
  description: "",
100
97
  canonicalUrl: ""
101
98
  };
102
- const rootDoc = sanity.useFormValue([]) || {
99
+ const rootDoc = _sanity.useFormValue.call(void 0, []) || {
103
100
  slug: { current: "" }
104
101
  };
105
102
  const slug = ((_c = rootDoc == null ? void 0 : rootDoc.slug) == null ? void 0 : _c.current) || "";
@@ -133,9 +130,9 @@ var SeoPreview = (props) => {
133
130
  }
134
131
  })();
135
132
  const urlDisplay = `${domain}${urlPath ? ` \u203A ${urlPath.split("/").slice(-1)[0]}` : ""}`;
136
- return /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { padding: 3, children: /* @__PURE__ */ jsxRuntime.jsxs(PreviewContainer, { children: [
137
- /* @__PURE__ */ jsxRuntime.jsxs(PreviewHeader, { children: [
138
- /* @__PURE__ */ jsxRuntime.jsx(
133
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ui.Box, { padding: 3, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, PreviewContainer, { children: [
134
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, PreviewHeader, { children: [
135
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
139
136
  "span",
140
137
  {
141
138
  style: {
@@ -147,8 +144,8 @@ var SeoPreview = (props) => {
147
144
  children: "Search Preview"
148
145
  }
149
146
  ),
150
- /* @__PURE__ */ jsxRuntime.jsxs(LiveIndicator, { children: [
151
- /* @__PURE__ */ jsxRuntime.jsx(
147
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, LiveIndicator, { children: [
148
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
152
149
  "span",
153
150
  {
154
151
  style: {
@@ -163,11 +160,11 @@ var SeoPreview = (props) => {
163
160
  "Live"
164
161
  ] })
165
162
  ] }),
166
- /* @__PURE__ */ jsxRuntime.jsxs(PreviewBody, { children: [
167
- /* @__PURE__ */ jsxRuntime.jsx(SerpUrl, { children: finalUrl ? urlDisplay : "example.com \u203A page-url" }),
168
- /* @__PURE__ */ jsxRuntime.jsx(SerpTitle, { children: title && title.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
169
- chunkZBHLMQTS_cjs.truncate(title, Math.max(1, 60 - (titleSuffix ? titleSuffix.length + 3 : 0))),
170
- titleSuffix && /* @__PURE__ */ jsxRuntime.jsxs(
163
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, PreviewBody, { children: [
164
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SerpUrl, { children: finalUrl ? urlDisplay : "example.com \u203A page-url" }),
165
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SerpTitle, { children: title && title.length > 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
166
+ _chunkY46ACXM4cjs.truncate.call(void 0, title, Math.max(1, 60 - (titleSuffix ? titleSuffix.length + 3 : 0))),
167
+ titleSuffix && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
171
168
  "span",
172
169
  {
173
170
  style: titleSuffixInheritColor ? void 0 : { color: "#70757a", fontWeight: 400 },
@@ -179,12 +176,12 @@ var SeoPreview = (props) => {
179
176
  }
180
177
  )
181
178
  ] }) : "Your SEO Title will appear here" }),
182
- /* @__PURE__ */ jsxRuntime.jsx(SerpDescription, { children: description && description.length > 0 ? chunkZBHLMQTS_cjs.truncate(description, 160) : "Your meta description will show up here. Make it compelling!" })
179
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SerpDescription, { children: description && description.length > 0 ? _chunkY46ACXM4cjs.truncate.call(void 0, description, 160) : "Your meta description will show up here. Make it compelling!" })
183
180
  ] })
184
181
  ] }) });
185
182
  };
186
183
  var SeoPreview_default = SeoPreview;
187
184
 
188
- module.exports = SeoPreview_default;
189
- //# sourceMappingURL=SeoPreview-3EXR6FD4.cjs.map
190
- //# sourceMappingURL=SeoPreview-3EXR6FD4.cjs.map
185
+
186
+ exports.default = SeoPreview_default;
187
+ //# sourceMappingURL=SeoPreview-LMZAWWOE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/hardik/GITHUB/sanity-plugin-seofields/npm/dist/SeoPreview-LMZAWWOE.cjs","../src/components/SeoPreview.tsx"],"names":[],"mappings":"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","file":"/Users/hardik/GITHUB/sanity-plugin-seofields/npm/dist/SeoPreview-LMZAWWOE.cjs","sourcesContent":[null,"import {Box} from '@sanity/ui'\nimport {type ReactElement, useEffect, useState} from 'react'\nimport {StringInputProps, useClient, useFormValue} from 'sanity'\nimport styled from 'styled-components'\n\nimport {truncate} from '../utils/seoUtils'\n\nconst PreviewContainer = styled.div`\n max-width: 600px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n background: #ffffff;\n border: 1px solid #dadce0;\n border-radius: 8px;\n overflow: hidden;\n`\n\nconst PreviewHeader = styled.div`\n background: #f8f9fa;\n padding: 12px 16px;\n border-bottom: 1px solid #dadce0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n`\n\nconst PreviewBody = styled.div`\n padding: 16px;\n`\n\nconst SerpUrl = styled.p`\n margin: 0 0 4px;\n color: #006621;\n font-size: 13px;\n line-height: 1.4;\n word-break: break-word;\n`\n\nconst SerpTitle = styled.h3`\n margin: 0 0 8px;\n color: #1a0dab;\n font-size: 18px;\n font-weight: 500;\n line-height: 1.4;\n word-break: break-word;\n\n &:hover {\n text-decoration: underline;\n }\n`\n\nconst SerpDescription = styled.p`\n margin: 0;\n color: #545454;\n font-size: 14px;\n line-height: 1.6;\n word-break: break-word;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n`\n\nconst LiveIndicator = styled.span`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: #4f46e5;\n background: #f0f4ff;\n padding: 4px 8px;\n border-radius: 4px;\n`\n\nconst SeoPreview = (props: StringInputProps): ReactElement => {\n const {path, schemaType} = props\n const {options} = schemaType as {\n options?: {\n baseUrl?: string\n apiVersion?: string\n prefix?: ((doc: {_type?: string} & Record<string, unknown>) => string) | string\n titleSuffix?: ((doc: {_type?: string} & Record<string, unknown>) => string) | string\n titleSuffixInheritColor?: boolean\n titleSuffixQuery?: string\n }\n }\n const baseUrl = options?.baseUrl || 'https://www.example.com'\n const prefixFunction = options?.prefix as\n | ((doc: {_type?: string} & Record<string, unknown>) => string)\n | undefined\n const titleSuffixOption = options?.titleSuffix\n const titleSuffixInheritColor = options?.titleSuffixInheritColor ?? false\n const titleSuffixQuery = options?.titleSuffixQuery\n\n const client = useClient({apiVersion: options?.apiVersion ?? '2024-01-01'})\n const [groqTitleSuffix, setGroqTitleSuffix] = useState<string>('')\n\n useEffect(() => {\n if (!titleSuffixQuery) return\n client\n .fetch<string>(titleSuffixQuery)\n .then((result) => {\n setGroqTitleSuffix(result === null || result === undefined ? '' : String(result))\n })\n .catch(() => {\n setGroqTitleSuffix('')\n })\n }, [titleSuffixQuery, client])\n const parent = useFormValue([path[0]]) || {\n title: '',\n description: '',\n canonicalUrl: '',\n }\n const rootDoc: {\n slug?: {current: string}\n } = useFormValue([]) || {\n slug: {current: ''},\n }\n const slug: string = rootDoc?.slug?.current || ''\n\n const {\n title,\n description,\n canonicalUrl: url,\n } = parent as {\n title?: string\n description?: string\n canonicalUrl?: string\n }\n\n const getTitleSuffix = (): string => {\n if (titleSuffixQuery) return groqTitleSuffix\n if (!titleSuffixOption) return ''\n if (typeof titleSuffixOption === 'function') {\n return titleSuffixOption(rootDoc as {_type?: string} & Record<string, unknown>)\n }\n return titleSuffixOption\n }\n const titleSuffix: string = getTitleSuffix()\n\n // Build full URL\n const base = (url || baseUrl)?.replace(/\\/+$/, '')\n const slugStr = String(slug || '').replace(/^\\/+/, '')\n const pref = String(\n prefixFunction ? prefixFunction(rootDoc as {slug?: {current: string}}) : '',\n ).replace(/^\\/+|\\/+$/g, '')\n const urlPath = [pref, slugStr].filter(Boolean).join('/')\n const finalUrl = urlPath ? `${base}/${urlPath}` : base\n\n // Extract domain for display\n const domain = (() => {\n try {\n const u = new URL(finalUrl || base)\n return u.hostname\n } catch {\n return 'example.com'\n }\n })()\n\n // Format URL display with › separator\n const urlDisplay = `${domain}${urlPath ? ` › ${urlPath.split('/').slice(-1)[0]}` : ''}`\n\n return (\n <Box padding={3}>\n <PreviewContainer>\n <PreviewHeader>\n <span\n style={{\n fontSize: '11px',\n color: '#5f6368',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n }}\n >\n Search Preview\n </span>\n <LiveIndicator>\n <span\n style={{\n width: '4px',\n height: '4px',\n borderRadius: '50%',\n backgroundColor: '#4f46e5',\n display: 'inline-block',\n }}\n />\n Live\n </LiveIndicator>\n </PreviewHeader>\n\n <PreviewBody>\n <SerpUrl>{finalUrl ? urlDisplay : 'example.com › page-url'}</SerpUrl>\n <SerpTitle>\n {title && title.length > 0 ? (\n <>\n {truncate(title, Math.max(1, 60 - (titleSuffix ? titleSuffix.length + 3 : 0)))}\n {titleSuffix && (\n <span\n style={\n titleSuffixInheritColor ? undefined : {color: '#70757a', fontWeight: 400}\n }\n >\n {' '}\n | {titleSuffix}\n </span>\n )}\n </>\n ) : (\n 'Your SEO Title will appear here'\n )}\n </SerpTitle>\n <SerpDescription>\n {description && description.length > 0\n ? truncate(description, 160)\n : 'Your meta description will show up here. Make it compelling!'}\n </SerpDescription>\n </PreviewBody>\n </PreviewContainer>\n </Box>\n )\n}\n\nexport default SeoPreview\n"]}
@@ -1,11 +1,14 @@
1
- import { truncate } from './chunk-HDZZQCH7.js';
2
- import './chunk-DDAAVRWG.js';
3
- import { Box } from '@sanity/ui';
4
- import { useState, useEffect } from 'react';
5
- import { useClient, useFormValue } from 'sanity';
6
- import styled from 'styled-components';
7
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
1
+ import {
2
+ truncate
3
+ } from "./chunk-HHO2AKAP.js";
4
+ import "./chunk-7N4MLTMR.js";
8
5
 
6
+ // src/components/SeoPreview.tsx
7
+ import { Box } from "@sanity/ui";
8
+ import { useEffect, useState } from "react";
9
+ import { useClient, useFormValue } from "sanity";
10
+ import styled from "styled-components";
11
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
12
  var PreviewContainer = styled.div`
10
13
  max-width: 600px;
11
14
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
@@ -178,7 +181,7 @@ var SeoPreview = (props) => {
178
181
  ] }) });
179
182
  };
180
183
  var SeoPreview_default = SeoPreview;
181
-
182
- export { SeoPreview_default as default };
183
- //# sourceMappingURL=SeoPreview-4PPAF4NO.js.map
184
- //# sourceMappingURL=SeoPreview-4PPAF4NO.js.map
184
+ export {
185
+ SeoPreview_default as default
186
+ };
187
+ //# sourceMappingURL=SeoPreview-UNQBKTQO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/SeoPreview.tsx"],"sourcesContent":["import {Box} from '@sanity/ui'\nimport {type ReactElement, useEffect, useState} from 'react'\nimport {StringInputProps, useClient, useFormValue} from 'sanity'\nimport styled from 'styled-components'\n\nimport {truncate} from '../utils/seoUtils'\n\nconst PreviewContainer = styled.div`\n max-width: 600px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n background: #ffffff;\n border: 1px solid #dadce0;\n border-radius: 8px;\n overflow: hidden;\n`\n\nconst PreviewHeader = styled.div`\n background: #f8f9fa;\n padding: 12px 16px;\n border-bottom: 1px solid #dadce0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n`\n\nconst PreviewBody = styled.div`\n padding: 16px;\n`\n\nconst SerpUrl = styled.p`\n margin: 0 0 4px;\n color: #006621;\n font-size: 13px;\n line-height: 1.4;\n word-break: break-word;\n`\n\nconst SerpTitle = styled.h3`\n margin: 0 0 8px;\n color: #1a0dab;\n font-size: 18px;\n font-weight: 500;\n line-height: 1.4;\n word-break: break-word;\n\n &:hover {\n text-decoration: underline;\n }\n`\n\nconst SerpDescription = styled.p`\n margin: 0;\n color: #545454;\n font-size: 14px;\n line-height: 1.6;\n word-break: break-word;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n`\n\nconst LiveIndicator = styled.span`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: #4f46e5;\n background: #f0f4ff;\n padding: 4px 8px;\n border-radius: 4px;\n`\n\nconst SeoPreview = (props: StringInputProps): ReactElement => {\n const {path, schemaType} = props\n const {options} = schemaType as {\n options?: {\n baseUrl?: string\n apiVersion?: string\n prefix?: ((doc: {_type?: string} & Record<string, unknown>) => string) | string\n titleSuffix?: ((doc: {_type?: string} & Record<string, unknown>) => string) | string\n titleSuffixInheritColor?: boolean\n titleSuffixQuery?: string\n }\n }\n const baseUrl = options?.baseUrl || 'https://www.example.com'\n const prefixFunction = options?.prefix as\n | ((doc: {_type?: string} & Record<string, unknown>) => string)\n | undefined\n const titleSuffixOption = options?.titleSuffix\n const titleSuffixInheritColor = options?.titleSuffixInheritColor ?? false\n const titleSuffixQuery = options?.titleSuffixQuery\n\n const client = useClient({apiVersion: options?.apiVersion ?? '2024-01-01'})\n const [groqTitleSuffix, setGroqTitleSuffix] = useState<string>('')\n\n useEffect(() => {\n if (!titleSuffixQuery) return\n client\n .fetch<string>(titleSuffixQuery)\n .then((result) => {\n setGroqTitleSuffix(result === null || result === undefined ? '' : String(result))\n })\n .catch(() => {\n setGroqTitleSuffix('')\n })\n }, [titleSuffixQuery, client])\n const parent = useFormValue([path[0]]) || {\n title: '',\n description: '',\n canonicalUrl: '',\n }\n const rootDoc: {\n slug?: {current: string}\n } = useFormValue([]) || {\n slug: {current: ''},\n }\n const slug: string = rootDoc?.slug?.current || ''\n\n const {\n title,\n description,\n canonicalUrl: url,\n } = parent as {\n title?: string\n description?: string\n canonicalUrl?: string\n }\n\n const getTitleSuffix = (): string => {\n if (titleSuffixQuery) return groqTitleSuffix\n if (!titleSuffixOption) return ''\n if (typeof titleSuffixOption === 'function') {\n return titleSuffixOption(rootDoc as {_type?: string} & Record<string, unknown>)\n }\n return titleSuffixOption\n }\n const titleSuffix: string = getTitleSuffix()\n\n // Build full URL\n const base = (url || baseUrl)?.replace(/\\/+$/, '')\n const slugStr = String(slug || '').replace(/^\\/+/, '')\n const pref = String(\n prefixFunction ? prefixFunction(rootDoc as {slug?: {current: string}}) : '',\n ).replace(/^\\/+|\\/+$/g, '')\n const urlPath = [pref, slugStr].filter(Boolean).join('/')\n const finalUrl = urlPath ? `${base}/${urlPath}` : base\n\n // Extract domain for display\n const domain = (() => {\n try {\n const u = new URL(finalUrl || base)\n return u.hostname\n } catch {\n return 'example.com'\n }\n })()\n\n // Format URL display with › separator\n const urlDisplay = `${domain}${urlPath ? ` › ${urlPath.split('/').slice(-1)[0]}` : ''}`\n\n return (\n <Box padding={3}>\n <PreviewContainer>\n <PreviewHeader>\n <span\n style={{\n fontSize: '11px',\n color: '#5f6368',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n }}\n >\n Search Preview\n </span>\n <LiveIndicator>\n <span\n style={{\n width: '4px',\n height: '4px',\n borderRadius: '50%',\n backgroundColor: '#4f46e5',\n display: 'inline-block',\n }}\n />\n Live\n </LiveIndicator>\n </PreviewHeader>\n\n <PreviewBody>\n <SerpUrl>{finalUrl ? urlDisplay : 'example.com › page-url'}</SerpUrl>\n <SerpTitle>\n {title && title.length > 0 ? (\n <>\n {truncate(title, Math.max(1, 60 - (titleSuffix ? titleSuffix.length + 3 : 0)))}\n {titleSuffix && (\n <span\n style={\n titleSuffixInheritColor ? undefined : {color: '#70757a', fontWeight: 400}\n }\n >\n {' '}\n | {titleSuffix}\n </span>\n )}\n </>\n ) : (\n 'Your SEO Title will appear here'\n )}\n </SerpTitle>\n <SerpDescription>\n {description && description.length > 0\n ? truncate(description, 160)\n : 'Your meta description will show up here. Make it compelling!'}\n </SerpDescription>\n </PreviewBody>\n </PreviewContainer>\n </Box>\n )\n}\n\nexport default SeoPreview\n"],"mappings":"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","names":[]}