next-sanity 3.0.0 → 3.0.2
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/studio/head.cjs +4 -1
- package/dist/studio/head.cjs.map +1 -1
- package/dist/studio/head.d.ts +4 -0
- package/dist/studio/head.js +4 -1
- package/dist/studio/head.js.map +1 -1
- package/dist/studio/index.cjs +1 -1
- package/dist/studio/index.cjs.map +1 -1
- package/dist/studio/index.js +1 -1
- package/dist/studio/index.js.map +1 -1
- package/dist/webhook.cjs +2 -1
- package/dist/webhook.cjs.map +1 -1
- package/dist/webhook.js +2 -1
- package/dist/webhook.js.map +1 -1
- package/package.json +2 -2
- package/src/studio/NextStudioLayout.tsx +1 -1
- package/src/studio/head/NextStudioHead.tsx +6 -0
- package/src/webhook/parseBody.ts +1 -1
package/dist/studio/head.cjs
CHANGED
|
@@ -10,6 +10,7 @@ var faviconSvg = "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%
|
|
|
10
10
|
function NextStudioHead(props) {
|
|
11
11
|
var _a, _b, _c;
|
|
12
12
|
const {
|
|
13
|
+
charSet = "utf-8",
|
|
13
14
|
viewport = true,
|
|
14
15
|
robots = "noindex",
|
|
15
16
|
referrer = "same-origin",
|
|
@@ -17,7 +18,9 @@ function NextStudioHead(props) {
|
|
|
17
18
|
title = "Sanity"
|
|
18
19
|
} = props;
|
|
19
20
|
return /* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
20
|
-
children: [
|
|
21
|
+
children: [charSet && /* @__PURE__ */jsxRuntime.jsx("meta", {
|
|
22
|
+
charSet
|
|
23
|
+
}, "charset"), viewport && /* @__PURE__ */jsxRuntime.jsx("meta", {
|
|
21
24
|
name: "viewport",
|
|
22
25
|
content: "width=device-width,initial-scale=1,viewport-fit=cover"
|
|
23
26
|
}, "viewport"), robots && /* @__PURE__ */jsxRuntime.jsx("meta", {
|
package/dist/studio/head.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"head.cjs","sources":["../../src/studio/head/apple-touch-icon.png","../../src/studio/head/favicon.ico","../../src/studio/head/favicon.svg","../../src/studio/head/NextStudioHead.tsx"],"sourcesContent":["export default \"data:image/png;base64,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\"","export default \"data:image/vnd.microsoft.icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAlL7VMLz7w6y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPfDrJSy1TC8+8OsvPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/M0Lw/zdF8P8zQvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zNC8P9dafP/ho/2/6Go+P+rsfn/q7H5/6ux+f+dpPj/foj2/05b8v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9MWfL/nKP4/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/4SN9v81Q/D/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/UFzy/6et+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/5Ka9/82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zdF8P+epPj/q7H5/6ux+f+rsfn/q7H5/4aP9v9jbvT/WGTz/2Vw9P+IkPb/q7H5/6ux+f+rsfn/w8j7/4qS9v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Z3L0/6ux+f+rsfn/q7H5/6mv+f9RXvL/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9dafP/q7H5/6ux+f/X2vz/ztL7/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9+iPX/m6L4/5ui+P+bovj/d4D1/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P+Ikfb/t7z6//v7///19v7/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/4WO9v/09f7///////j5/v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/NkTw/2p09P++wvr/////////////////1df8/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/0JQ8f9zffX/pKv4/9LV+//4+f7///////////////////////////+EjPb/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/32G9v/S1fz/////////////////////////////////////////////////xMn7/zJB8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zZE8P/Eyfv/////////////////////////////////////////////////+Pn+/56k+P82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/rrT5///////////////////////////////////////r7f7/u8D6/4SM9v9CUPH/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zxK8f/8/P//////////////////7/D+/7G2+f96hPX/TFny/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/ZnH0////////////+Pn+/5CY9/82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9td/T///////b2/v+1u/r/Tlvy/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/0RS8f9lcfT/ZXH0/2Vx9P9aZvP/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/1Nf8v//////ys77/6ux+f+MlPf/MUDw/y8+8P8vPvD/Lz7w/y8+8P8zQvD/kJj3/6ux+f+rsfn/q7H5/3R/9f8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/9jb/P+ssvn/q7H5/6ux+f+QmPf/VGDy/zlH8P87SfH/VGDy/5Ka9/+rsfn/q7H5/6ux+f+pr/n/QE7x/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Xmr0/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/2959f8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Ymz0/6mv+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f9xe/X/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/RFLy/4CJ9v+nrvn/q7H5/6ux+f+rsfn/q7H5/6eu+f+Ikfb/Slfy/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zNB8P9KV/L/VmLz/1Rg8/9IVfL/NUPw/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w6yUvtUwvPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8OslLLVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"","export default \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3Csvg%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Crect%20width%3D%22512%22%20height%3D%22512%22%20fill%3D%22%23F03E2F%22%20rx%3D%2230%22%20%2F%3E%20%3Cpath%20d%3D%22M161.527%20136.723C161.527%20179.76%20187.738%20205.443%20240.388%20219.095L296%20232.283C345.687%20243.852%20376%20272.775%20376%20319.514C376%20341.727%20369.162%20360.931%20357.538%20375.971C357.538%20329.232%20333.607%20303.78%20276.171%20288.74L221.47%20276.246C177.709%20266.065%20143.977%20242.464%20143.977%20191.56C143.977%20170.505%20150.359%20151.994%20161.527%20136.723Z%22%20fill%3D%22white%22%20%2F%3E%20%3Cpath%20opacity%3D%220.5%22%20d%3D%22M323.35%20308.176C347.054%20323.679%20357.538%20345.197%20357.538%20376.202C337.709%20401.654%20303.293%20416%20262.724%20416C194.575%20416%20146.484%20381.756%20136%20322.753H201.641C210.074%20350.056%20232.41%20362.551%20262.268%20362.551C298.735%20362.32%20322.895%20342.652%20323.35%20308.176Z%22%20fill%3D%22white%22%20%2F%3E%20%3Cpath%20opacity%3D%220.5%22%20d%3D%22M195.715%20200.816C172.923%20186.007%20161.527%20165.183%20161.527%20136.954C180.672%20111.503%20213.493%2096%20253.835%2096C323.35%2096%20363.692%20133.252%20373.721%20185.776H310.359C303.293%20165.183%20285.971%20148.986%20254.291%20148.986C220.33%20148.986%20197.311%20169.116%20195.715%20200.816Z%22%20fill%3D%22white%22%20%2F%3E%3C%2Fsvg%3E\"","import faviconPng from './apple-touch-icon.png'\nimport faviconIco from './favicon.ico'\nimport faviconSvg from './favicon.svg'\n\n/** @public */\nexport interface NextStudioHeadProps {\n /**\n * Sets the viewport to `viewport-fit=cover` to integrate with iOS devices with display cutouts (The Notch, Dynamic Island).\n * Also sets `width=device-width, initial-scale=1` to make the studio page responsive.\n * @defaultValue true\n */\n viewport?: boolean\n /**\n * It's common practice to hide the address to your Sanity Studio from search engines by setting `robots` to `noindex`\n * @defaultValue 'noindex'\n */\n robots?: false | string\n /**\n * @defaultValue 'same-origin'\n */\n referrer?: false | string\n /**\n * Adds the same favicons as the `npx sanity dev` pipeline.\n * @defaultValue true\n */\n favicons?: boolean\n /**\n * @defaultValue 'Sanity'\n */\n title?: false | string\n}\n\n/**\n * In Next 13 appDir mode (`/app/studio/[[...index]]/head.tsx`):\n * ```tsx\n * // If you don't want to change any defaults you can just re-export the head component directly:\n * export {NextStudioHead as default} from 'next-sanity/studio/head'\n *\n * // To customize it, use it as a children component:\n * import {NextStudioHead} from 'next-sanity/studio/head'\n *\n * export default function CustomStudioHead() {\n * return (\n * <>\n * <NextStudioHead favicons={false} />\n * <link\n * rel=\"icon\"\n * type=\"image/png\"\n * sizes=\"32x32\"\n * href=\"https://www.sanity.io/static/images/favicons/favicon-32x32.png\"\n * />\n * </>\n * )\n * }\n * ```\n * If you're using Next 12 or the `pages` folder (`/pages/studio/[[...index]].tsx`):\n * ```tsx\n * import Head from 'next/head'\n * import {NextStudio} from 'next-sanity/studio'\n * import {NextStudioHead} from 'next-sanity/studio/head'\n *\n * export default function StudioPage() {\n * return (\n * <>\n * <Head>\n * <NextStudioHead />\n * </Head>\n * <NextStudio config={config} />\n * </>\n * )\n * }\n * ```\n * @public\n */\nexport function NextStudioHead(props: NextStudioHeadProps) {\n const {\n viewport = true,\n robots = 'noindex',\n referrer = 'same-origin',\n favicons = true,\n title = 'Sanity',\n } = props\n\n return (\n <>\n {viewport && (\n <meta\n key=\"viewport\"\n name=\"viewport\"\n // Studio implements display cutouts CSS (The iPhone Notch ™ ) and needs `viewport-fit=covered` for it to work correctly\n content=\"width=device-width,initial-scale=1,viewport-fit=cover\"\n />\n )}\n {robots && <meta key=\"robots\" name=\"robots\" content={robots} />}\n {referrer && <meta key=\"referrer\" name=\"referrer\" content={referrer} />}\n {title && <title>{title}</title>}\n {favicons && <link rel=\"icon\" href={faviconIco?.default || faviconIco} sizes=\"any\" />}\n {favicons && (\n <link rel=\"icon\" href={faviconSvg?.default || faviconSvg} type=\"image/svg+xml\" />\n )}\n {favicons && <link rel=\"apple-touch-icon\" href={faviconPng?.default || faviconSvg} />}\n </>\n )\n}\n"],"names":["faviconPng","faviconIco","faviconSvg","NextStudioHead","props","_a","_b","_c","viewport","robots","referrer","favicons","title","jsxs","Fragment","children","jsx","name","content","rel","href","default","sizes","type"],"mappings":";;;;;;AAAA,IAAeA,UAAA,GAAA,w0JAAA;ACAf,IAAeC,UAAA,GAAA,2nLAAA;ACAf,IAAeC,UAAA,GAAA,igDAAA;AC0ER,SAASC,eAAeC,KAA4B,EAAA;EA1E3D,IAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA;EA2EQ,MAAA;IACJC,QAAW,GAAA,IAAA;IACXC,MAAS,GAAA,SAAA;IACTC,QAAW,GAAA,aAAA;IACXC,QAAW,GAAA,IAAA;IACXC,KAAQ,GAAA;EACN,CAAA,GAAAR,KAAA;EAGF,OAAAS,eAAAA,UAAAA,CAAAA,IAAA,CAAAC,UAAAA,CAAAA,QAAA,EAAA;IACGC,QAAA,EAAA,CAAAP,QAAA,IAAA,eACEQ,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAECC,IAAK,EAAA,UAAA;MAELC,OAAQ,EAAA;IAAA,CAAA,EAHJ,UAIN,CAAA,EAEDT,yBAAWO,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAkBC,IAAK,EAAA,QAAA;MAASC,OAAS,EAAAT;IAAA,CAAA,EAAhC,QAAwC,CAAA,EAC5DC,2BAAaM,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAoBC,IAAK,EAAA,UAAA;MAAWC,OAAS,EAAAR;IAAA,CAAA,EAApC,UAA8C,CAAA,EACpEE,wBAAUI,UAAA,CAAAA,GAAA,CAAA,OAAA,EAAA;MAAOD,QAAA,EAAAH;IAAA,CAAM,CAAA,EACvBD,2BAAaK,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,MAAA;MAAOC,IAAA,EAAA,CAAA,CAAMf,uCAAYgB,OAAW,KAAApB,UAAA;MAAYqB,KAAM,EAAA;IAAA,CAAM,CAAA,EAClFX,2BACEK,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,MAAA;MAAOC,IAAA,EAAA,CAAA,CAAMd,uCAAYe,OAAW,KAAAnB,UAAA;MAAYqB,IAAK,EAAA;IAAA,CAAgB,CAAA,EAEhFZ,2BAAaK,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,kBAAA;MAAmBC,IAAA,EAAA,CAAA,CAAMb,uCAAYc,OAAW,KAAAnB;IAAA,CAAY,CAAA;EAAA,CACrF,CAAA;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"head.cjs","sources":["../../src/studio/head/apple-touch-icon.png","../../src/studio/head/favicon.ico","../../src/studio/head/favicon.svg","../../src/studio/head/NextStudioHead.tsx"],"sourcesContent":["export default \"data:image/png;base64,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\"","export default \"data:image/vnd.microsoft.icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAlL7VMLz7w6y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPfDrJSy1TC8+8OsvPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/M0Lw/zdF8P8zQvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zNC8P9dafP/ho/2/6Go+P+rsfn/q7H5/6ux+f+dpPj/foj2/05b8v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9MWfL/nKP4/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/4SN9v81Q/D/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/UFzy/6et+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/5Ka9/82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zdF8P+epPj/q7H5/6ux+f+rsfn/q7H5/4aP9v9jbvT/WGTz/2Vw9P+IkPb/q7H5/6ux+f+rsfn/w8j7/4qS9v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Z3L0/6ux+f+rsfn/q7H5/6mv+f9RXvL/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9dafP/q7H5/6ux+f/X2vz/ztL7/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9+iPX/m6L4/5ui+P+bovj/d4D1/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P+Ikfb/t7z6//v7///19v7/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/4WO9v/09f7///////j5/v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/NkTw/2p09P++wvr/////////////////1df8/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/0JQ8f9zffX/pKv4/9LV+//4+f7///////////////////////////+EjPb/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/32G9v/S1fz/////////////////////////////////////////////////xMn7/zJB8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zZE8P/Eyfv/////////////////////////////////////////////////+Pn+/56k+P82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/rrT5///////////////////////////////////////r7f7/u8D6/4SM9v9CUPH/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zxK8f/8/P//////////////////7/D+/7G2+f96hPX/TFny/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/ZnH0////////////+Pn+/5CY9/82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9td/T///////b2/v+1u/r/Tlvy/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/0RS8f9lcfT/ZXH0/2Vx9P9aZvP/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/1Nf8v//////ys77/6ux+f+MlPf/MUDw/y8+8P8vPvD/Lz7w/y8+8P8zQvD/kJj3/6ux+f+rsfn/q7H5/3R/9f8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/9jb/P+ssvn/q7H5/6ux+f+QmPf/VGDy/zlH8P87SfH/VGDy/5Ka9/+rsfn/q7H5/6ux+f+pr/n/QE7x/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Xmr0/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/2959f8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Ymz0/6mv+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f9xe/X/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/RFLy/4CJ9v+nrvn/q7H5/6ux+f+rsfn/q7H5/6eu+f+Ikfb/Slfy/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zNB8P9KV/L/VmLz/1Rg8/9IVfL/NUPw/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w6yUvtUwvPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8OslLLVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"","export default \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3Csvg%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Crect%20width%3D%22512%22%20height%3D%22512%22%20fill%3D%22%23F03E2F%22%20rx%3D%2230%22%20%2F%3E%20%3Cpath%20d%3D%22M161.527%20136.723C161.527%20179.76%20187.738%20205.443%20240.388%20219.095L296%20232.283C345.687%20243.852%20376%20272.775%20376%20319.514C376%20341.727%20369.162%20360.931%20357.538%20375.971C357.538%20329.232%20333.607%20303.78%20276.171%20288.74L221.47%20276.246C177.709%20266.065%20143.977%20242.464%20143.977%20191.56C143.977%20170.505%20150.359%20151.994%20161.527%20136.723Z%22%20fill%3D%22white%22%20%2F%3E%20%3Cpath%20opacity%3D%220.5%22%20d%3D%22M323.35%20308.176C347.054%20323.679%20357.538%20345.197%20357.538%20376.202C337.709%20401.654%20303.293%20416%20262.724%20416C194.575%20416%20146.484%20381.756%20136%20322.753H201.641C210.074%20350.056%20232.41%20362.551%20262.268%20362.551C298.735%20362.32%20322.895%20342.652%20323.35%20308.176Z%22%20fill%3D%22white%22%20%2F%3E%20%3Cpath%20opacity%3D%220.5%22%20d%3D%22M195.715%20200.816C172.923%20186.007%20161.527%20165.183%20161.527%20136.954C180.672%20111.503%20213.493%2096%20253.835%2096C323.35%2096%20363.692%20133.252%20373.721%20185.776H310.359C303.293%20165.183%20285.971%20148.986%20254.291%20148.986C220.33%20148.986%20197.311%20169.116%20195.715%20200.816Z%22%20fill%3D%22white%22%20%2F%3E%3C%2Fsvg%3E\"","import faviconPng from './apple-touch-icon.png'\nimport faviconIco from './favicon.ico'\nimport faviconSvg from './favicon.svg'\n\n/** @public */\nexport interface NextStudioHeadProps {\n /**\n * @defaultValue 'utf-8'\n */\n charSet?: false | string\n /**\n * Sets the viewport to `viewport-fit=cover` to integrate with iOS devices with display cutouts (The Notch, Dynamic Island).\n * Also sets `width=device-width, initial-scale=1` to make the studio page responsive.\n * @defaultValue true\n */\n viewport?: boolean\n /**\n * It's common practice to hide the address to your Sanity Studio from search engines by setting `robots` to `noindex`\n * @defaultValue 'noindex'\n */\n robots?: false | string\n /**\n * @defaultValue 'same-origin'\n */\n referrer?: false | string\n /**\n * Adds the same favicons as the `npx sanity dev` pipeline.\n * @defaultValue true\n */\n favicons?: boolean\n /**\n * @defaultValue 'Sanity'\n */\n title?: false | string\n}\n\n/**\n * In Next 13 appDir mode (`/app/studio/[[...index]]/head.tsx`):\n * ```tsx\n * // If you don't want to change any defaults you can just re-export the head component directly:\n * export {NextStudioHead as default} from 'next-sanity/studio/head'\n *\n * // To customize it, use it as a children component:\n * import {NextStudioHead} from 'next-sanity/studio/head'\n *\n * export default function CustomStudioHead() {\n * return (\n * <>\n * <NextStudioHead favicons={false} />\n * <link\n * rel=\"icon\"\n * type=\"image/png\"\n * sizes=\"32x32\"\n * href=\"https://www.sanity.io/static/images/favicons/favicon-32x32.png\"\n * />\n * </>\n * )\n * }\n * ```\n * If you're using Next 12 or the `pages` folder (`/pages/studio/[[...index]].tsx`):\n * ```tsx\n * import Head from 'next/head'\n * import {NextStudio} from 'next-sanity/studio'\n * import {NextStudioHead} from 'next-sanity/studio/head'\n *\n * export default function StudioPage() {\n * return (\n * <>\n * <Head>\n * <NextStudioHead />\n * </Head>\n * <NextStudio config={config} />\n * </>\n * )\n * }\n * ```\n * @public\n */\nexport function NextStudioHead(props: NextStudioHeadProps) {\n const {\n charSet = 'utf-8',\n viewport = true,\n robots = 'noindex',\n referrer = 'same-origin',\n favicons = true,\n title = 'Sanity',\n } = props\n\n return (\n <>\n {charSet && <meta key=\"charset\" charSet={charSet} />}\n {viewport && (\n <meta\n key=\"viewport\"\n name=\"viewport\"\n // Studio implements display cutouts CSS (The iPhone Notch ™ ) and needs `viewport-fit=covered` for it to work correctly\n content=\"width=device-width,initial-scale=1,viewport-fit=cover\"\n />\n )}\n {robots && <meta key=\"robots\" name=\"robots\" content={robots} />}\n {referrer && <meta key=\"referrer\" name=\"referrer\" content={referrer} />}\n {title && <title>{title}</title>}\n {favicons && <link rel=\"icon\" href={faviconIco?.default || faviconIco} sizes=\"any\" />}\n {favicons && (\n <link rel=\"icon\" href={faviconSvg?.default || faviconSvg} type=\"image/svg+xml\" />\n )}\n {favicons && <link rel=\"apple-touch-icon\" href={faviconPng?.default || faviconSvg} />}\n </>\n )\n}\n"],"names":["faviconPng","faviconIco","faviconSvg","NextStudioHead","props","_a","_b","_c","charSet","viewport","robots","referrer","favicons","title","jsxs","Fragment","children","jsx","name","content","rel","href","default","sizes","type"],"mappings":";;;;;;AAAA,IAAeA,UAAA,GAAA,w0JAAA;ACAf,IAAeC,UAAA,GAAA,2nLAAA;ACAf,IAAeC,UAAA,GAAA,igDAAA;AC8ER,SAASC,eAAeC,KAA4B,EAAA;EA9E3D,IAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA;EA+EQ,MAAA;IACJC,OAAU,GAAA,OAAA;IACVC,QAAW,GAAA,IAAA;IACXC,MAAS,GAAA,SAAA;IACTC,QAAW,GAAA,aAAA;IACXC,QAAW,GAAA,IAAA;IACXC,KAAQ,GAAA;EACN,CAAA,GAAAT,KAAA;EAGF,OAAAU,eAAAA,UAAAA,CAAAA,IAAA,CAAAC,UAAAA,CAAAA,QAAA,EAAA;IACGC,QAAA,EAAA,CAAAR,OAAA,IAAA,eAAYS,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAmBT;IAAA,CAAA,EAAV,SAA4B,CAAA,EACjDC,2BACEQ,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAECC,IAAK,EAAA,UAAA;MAELC,OAAQ,EAAA;IAAA,CAAA,EAHJ,UAIN,CAAA,EAEDT,yBAAWO,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAkBC,IAAK,EAAA,QAAA;MAASC,OAAS,EAAAT;IAAA,CAAA,EAAhC,QAAwC,CAAA,EAC5DC,2BAAaM,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAoBC,IAAK,EAAA,UAAA;MAAWC,OAAS,EAAAR;IAAA,CAAA,EAApC,UAA8C,CAAA,EACpEE,wBAAUI,UAAA,CAAAA,GAAA,CAAA,OAAA,EAAA;MAAOD,QAAA,EAAAH;IAAA,CAAM,CAAA,EACvBD,2BAAaK,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,MAAA;MAAOC,IAAA,EAAA,CAAA,CAAMhB,uCAAYiB,OAAW,KAAArB,UAAA;MAAYsB,KAAM,EAAA;IAAA,CAAM,CAAA,EAClFX,2BACEK,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,MAAA;MAAOC,IAAA,EAAA,CAAA,CAAMf,uCAAYgB,OAAW,KAAApB,UAAA;MAAYsB,IAAK,EAAA;IAAA,CAAgB,CAAA,EAEhFZ,2BAAaK,UAAA,CAAAA,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,kBAAA;MAAmBC,IAAA,EAAA,CAAA,CAAMd,uCAAYe,OAAW,KAAApB;IAAA,CAAY,CAAA;EAAA,CACrF,CAAA;AAEJ;"}
|
package/dist/studio/head.d.ts
CHANGED
|
@@ -44,6 +44,10 @@ export declare function NextStudioHead(props: NextStudioHeadProps): JSX.Element
|
|
|
44
44
|
|
|
45
45
|
/** @public */
|
|
46
46
|
export declare interface NextStudioHeadProps {
|
|
47
|
+
/**
|
|
48
|
+
* @defaultValue 'utf-8'
|
|
49
|
+
*/
|
|
50
|
+
charSet?: false | string
|
|
47
51
|
/**
|
|
48
52
|
* Sets the viewport to `viewport-fit=cover` to integrate with iOS devices with display cutouts (The Notch, Dynamic Island).
|
|
49
53
|
* Also sets `width=device-width, initial-scale=1` to make the studio page responsive.
|
package/dist/studio/head.js
CHANGED
|
@@ -5,6 +5,7 @@ var faviconSvg = "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%
|
|
|
5
5
|
function NextStudioHead(props) {
|
|
6
6
|
var _a, _b, _c;
|
|
7
7
|
const {
|
|
8
|
+
charSet = "utf-8",
|
|
8
9
|
viewport = true,
|
|
9
10
|
robots = "noindex",
|
|
10
11
|
referrer = "same-origin",
|
|
@@ -12,7 +13,9 @@ function NextStudioHead(props) {
|
|
|
12
13
|
title = "Sanity"
|
|
13
14
|
} = props;
|
|
14
15
|
return /* @__PURE__ */jsxs(Fragment, {
|
|
15
|
-
children: [
|
|
16
|
+
children: [charSet && /* @__PURE__ */jsx("meta", {
|
|
17
|
+
charSet
|
|
18
|
+
}, "charset"), viewport && /* @__PURE__ */jsx("meta", {
|
|
16
19
|
name: "viewport",
|
|
17
20
|
content: "width=device-width,initial-scale=1,viewport-fit=cover"
|
|
18
21
|
}, "viewport"), robots && /* @__PURE__ */jsx("meta", {
|
package/dist/studio/head.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"head.js","sources":["../../src/studio/head/apple-touch-icon.png","../../src/studio/head/favicon.ico","../../src/studio/head/favicon.svg","../../src/studio/head/NextStudioHead.tsx"],"sourcesContent":["export default \"data:image/png;base64,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\"","export default \"data:image/vnd.microsoft.icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAlL7VMLz7w6y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPfDrJSy1TC8+8OsvPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/M0Lw/zdF8P8zQvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zNC8P9dafP/ho/2/6Go+P+rsfn/q7H5/6ux+f+dpPj/foj2/05b8v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9MWfL/nKP4/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/4SN9v81Q/D/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/UFzy/6et+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/5Ka9/82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zdF8P+epPj/q7H5/6ux+f+rsfn/q7H5/4aP9v9jbvT/WGTz/2Vw9P+IkPb/q7H5/6ux+f+rsfn/w8j7/4qS9v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Z3L0/6ux+f+rsfn/q7H5/6mv+f9RXvL/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9dafP/q7H5/6ux+f/X2vz/ztL7/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9+iPX/m6L4/5ui+P+bovj/d4D1/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P+Ikfb/t7z6//v7///19v7/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/4WO9v/09f7///////j5/v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/NkTw/2p09P++wvr/////////////////1df8/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/0JQ8f9zffX/pKv4/9LV+//4+f7///////////////////////////+EjPb/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/32G9v/S1fz/////////////////////////////////////////////////xMn7/zJB8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zZE8P/Eyfv/////////////////////////////////////////////////+Pn+/56k+P82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/rrT5///////////////////////////////////////r7f7/u8D6/4SM9v9CUPH/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zxK8f/8/P//////////////////7/D+/7G2+f96hPX/TFny/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/ZnH0////////////+Pn+/5CY9/82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9td/T///////b2/v+1u/r/Tlvy/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/0RS8f9lcfT/ZXH0/2Vx9P9aZvP/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/1Nf8v//////ys77/6ux+f+MlPf/MUDw/y8+8P8vPvD/Lz7w/y8+8P8zQvD/kJj3/6ux+f+rsfn/q7H5/3R/9f8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/9jb/P+ssvn/q7H5/6ux+f+QmPf/VGDy/zlH8P87SfH/VGDy/5Ka9/+rsfn/q7H5/6ux+f+pr/n/QE7x/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Xmr0/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/2959f8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Ymz0/6mv+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f9xe/X/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/RFLy/4CJ9v+nrvn/q7H5/6ux+f+rsfn/q7H5/6eu+f+Ikfb/Slfy/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zNB8P9KV/L/VmLz/1Rg8/9IVfL/NUPw/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w6yUvtUwvPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8OslLLVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"","export default \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3Csvg%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Crect%20width%3D%22512%22%20height%3D%22512%22%20fill%3D%22%23F03E2F%22%20rx%3D%2230%22%20%2F%3E%20%3Cpath%20d%3D%22M161.527%20136.723C161.527%20179.76%20187.738%20205.443%20240.388%20219.095L296%20232.283C345.687%20243.852%20376%20272.775%20376%20319.514C376%20341.727%20369.162%20360.931%20357.538%20375.971C357.538%20329.232%20333.607%20303.78%20276.171%20288.74L221.47%20276.246C177.709%20266.065%20143.977%20242.464%20143.977%20191.56C143.977%20170.505%20150.359%20151.994%20161.527%20136.723Z%22%20fill%3D%22white%22%20%2F%3E%20%3Cpath%20opacity%3D%220.5%22%20d%3D%22M323.35%20308.176C347.054%20323.679%20357.538%20345.197%20357.538%20376.202C337.709%20401.654%20303.293%20416%20262.724%20416C194.575%20416%20146.484%20381.756%20136%20322.753H201.641C210.074%20350.056%20232.41%20362.551%20262.268%20362.551C298.735%20362.32%20322.895%20342.652%20323.35%20308.176Z%22%20fill%3D%22white%22%20%2F%3E%20%3Cpath%20opacity%3D%220.5%22%20d%3D%22M195.715%20200.816C172.923%20186.007%20161.527%20165.183%20161.527%20136.954C180.672%20111.503%20213.493%2096%20253.835%2096C323.35%2096%20363.692%20133.252%20373.721%20185.776H310.359C303.293%20165.183%20285.971%20148.986%20254.291%20148.986C220.33%20148.986%20197.311%20169.116%20195.715%20200.816Z%22%20fill%3D%22white%22%20%2F%3E%3C%2Fsvg%3E\"","import faviconPng from './apple-touch-icon.png'\nimport faviconIco from './favicon.ico'\nimport faviconSvg from './favicon.svg'\n\n/** @public */\nexport interface NextStudioHeadProps {\n /**\n * Sets the viewport to `viewport-fit=cover` to integrate with iOS devices with display cutouts (The Notch, Dynamic Island).\n * Also sets `width=device-width, initial-scale=1` to make the studio page responsive.\n * @defaultValue true\n */\n viewport?: boolean\n /**\n * It's common practice to hide the address to your Sanity Studio from search engines by setting `robots` to `noindex`\n * @defaultValue 'noindex'\n */\n robots?: false | string\n /**\n * @defaultValue 'same-origin'\n */\n referrer?: false | string\n /**\n * Adds the same favicons as the `npx sanity dev` pipeline.\n * @defaultValue true\n */\n favicons?: boolean\n /**\n * @defaultValue 'Sanity'\n */\n title?: false | string\n}\n\n/**\n * In Next 13 appDir mode (`/app/studio/[[...index]]/head.tsx`):\n * ```tsx\n * // If you don't want to change any defaults you can just re-export the head component directly:\n * export {NextStudioHead as default} from 'next-sanity/studio/head'\n *\n * // To customize it, use it as a children component:\n * import {NextStudioHead} from 'next-sanity/studio/head'\n *\n * export default function CustomStudioHead() {\n * return (\n * <>\n * <NextStudioHead favicons={false} />\n * <link\n * rel=\"icon\"\n * type=\"image/png\"\n * sizes=\"32x32\"\n * href=\"https://www.sanity.io/static/images/favicons/favicon-32x32.png\"\n * />\n * </>\n * )\n * }\n * ```\n * If you're using Next 12 or the `pages` folder (`/pages/studio/[[...index]].tsx`):\n * ```tsx\n * import Head from 'next/head'\n * import {NextStudio} from 'next-sanity/studio'\n * import {NextStudioHead} from 'next-sanity/studio/head'\n *\n * export default function StudioPage() {\n * return (\n * <>\n * <Head>\n * <NextStudioHead />\n * </Head>\n * <NextStudio config={config} />\n * </>\n * )\n * }\n * ```\n * @public\n */\nexport function NextStudioHead(props: NextStudioHeadProps) {\n const {\n viewport = true,\n robots = 'noindex',\n referrer = 'same-origin',\n favicons = true,\n title = 'Sanity',\n } = props\n\n return (\n <>\n {viewport && (\n <meta\n key=\"viewport\"\n name=\"viewport\"\n // Studio implements display cutouts CSS (The iPhone Notch ™ ) and needs `viewport-fit=covered` for it to work correctly\n content=\"width=device-width,initial-scale=1,viewport-fit=cover\"\n />\n )}\n {robots && <meta key=\"robots\" name=\"robots\" content={robots} />}\n {referrer && <meta key=\"referrer\" name=\"referrer\" content={referrer} />}\n {title && <title>{title}</title>}\n {favicons && <link rel=\"icon\" href={faviconIco?.default || faviconIco} sizes=\"any\" />}\n {favicons && (\n <link rel=\"icon\" href={faviconSvg?.default || faviconSvg} type=\"image/svg+xml\" />\n )}\n {favicons && <link rel=\"apple-touch-icon\" href={faviconPng?.default || faviconSvg} />}\n </>\n )\n}\n"],"names":["faviconPng","faviconIco","faviconSvg","NextStudioHead","props","_a","_b","_c","viewport","robots","referrer","favicons","title","jsxs","Fragment","children","jsx","name","content","rel","href","default","sizes","type"],"mappings":";AAAA,IAAeA,UAAA,GAAA,w0JAAA;ACAf,IAAeC,UAAA,GAAA,2nLAAA;ACAf,IAAeC,UAAA,GAAA,igDAAA;AC0ER,SAASC,eAAeC,KAA4B,EAAA;EA1E3D,IAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA;EA2EQ,MAAA;IACJC,QAAW,GAAA,IAAA;IACXC,MAAS,GAAA,SAAA;IACTC,QAAW,GAAA,aAAA;IACXC,QAAW,GAAA,IAAA;IACXC,KAAQ,GAAA;EACN,CAAA,GAAAR,KAAA;EAGF,OAAA,eAAAS,IAAA,CAAAC,QAAA,EAAA;IACGC,QAAA,EAAA,CAAAP,QAAA,IAAA,eACEQ,GAAA,CAAA,MAAA,EAAA;MAECC,IAAK,EAAA,UAAA;MAELC,OAAQ,EAAA;IAAA,CAAA,EAHJ,UAIN,CAAA,EAEDT,yBAAWO,GAAA,CAAA,MAAA,EAAA;MAAkBC,IAAK,EAAA,QAAA;MAASC,OAAS,EAAAT;IAAA,CAAA,EAAhC,QAAwC,CAAA,EAC5DC,2BAAaM,GAAA,CAAA,MAAA,EAAA;MAAoBC,IAAK,EAAA,UAAA;MAAWC,OAAS,EAAAR;IAAA,CAAA,EAApC,UAA8C,CAAA,EACpEE,wBAAUI,GAAA,CAAA,OAAA,EAAA;MAAOD,QAAA,EAAAH;IAAA,CAAM,CAAA,EACvBD,2BAAaK,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,MAAA;MAAOC,IAAA,EAAA,CAAA,CAAMf,uCAAYgB,OAAW,KAAApB,UAAA;MAAYqB,KAAM,EAAA;IAAA,CAAM,CAAA,EAClFX,2BACEK,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,MAAA;MAAOC,IAAA,EAAA,CAAA,CAAMd,uCAAYe,OAAW,KAAAnB,UAAA;MAAYqB,IAAK,EAAA;IAAA,CAAgB,CAAA,EAEhFZ,2BAAaK,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,kBAAA;MAAmBC,IAAA,EAAA,CAAA,CAAMb,uCAAYc,OAAW,KAAAnB;IAAA,CAAY,CAAA;EAAA,CACrF,CAAA;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"head.js","sources":["../../src/studio/head/apple-touch-icon.png","../../src/studio/head/favicon.ico","../../src/studio/head/favicon.svg","../../src/studio/head/NextStudioHead.tsx"],"sourcesContent":["export default \"data:image/png;base64,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\"","export default \"data:image/vnd.microsoft.icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAlL7VMLz7w6y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPfDrJSy1TC8+8OsvPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/M0Lw/zdF8P8zQvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zNC8P9dafP/ho/2/6Go+P+rsfn/q7H5/6ux+f+dpPj/foj2/05b8v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9MWfL/nKP4/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/4SN9v81Q/D/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/UFzy/6et+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/5Ka9/82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zdF8P+epPj/q7H5/6ux+f+rsfn/q7H5/4aP9v9jbvT/WGTz/2Vw9P+IkPb/q7H5/6ux+f+rsfn/w8j7/4qS9v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Z3L0/6ux+f+rsfn/q7H5/6mv+f9RXvL/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9dafP/q7H5/6ux+f/X2vz/ztL7/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9+iPX/m6L4/5ui+P+bovj/d4D1/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P+Ikfb/t7z6//v7///19v7/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/4WO9v/09f7///////j5/v8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/NkTw/2p09P++wvr/////////////////1df8/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/0JQ8f9zffX/pKv4/9LV+//4+f7///////////////////////////+EjPb/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/32G9v/S1fz/////////////////////////////////////////////////xMn7/zJB8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zZE8P/Eyfv/////////////////////////////////////////////////+Pn+/56k+P82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/rrT5///////////////////////////////////////r7f7/u8D6/4SM9v9CUPH/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zxK8f/8/P//////////////////7/D+/7G2+f96hPX/TFny/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/ZnH0////////////+Pn+/5CY9/82RPD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P9td/T///////b2/v+1u/r/Tlvy/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/0RS8f9lcfT/ZXH0/2Vx9P9aZvP/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/1Nf8v//////ys77/6ux+f+MlPf/MUDw/y8+8P8vPvD/Lz7w/y8+8P8zQvD/kJj3/6ux+f+rsfn/q7H5/3R/9f8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/9jb/P+ssvn/q7H5/6ux+f+QmPf/VGDy/zlH8P87SfH/VGDy/5Ka9/+rsfn/q7H5/6ux+f+pr/n/QE7x/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Xmr0/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/2959f8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Ymz0/6mv+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f+rsfn/q7H5/6ux+f9xe/X/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/RFLy/4CJ9v+nrvn/q7H5/6ux+f+rsfn/q7H5/6eu+f+Ikfb/Slfy/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/zNB8P9KV/L/VmLz/1Rg8/9IVfL/NUPw/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w6yUvtUwvPvDrLz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8P8vPvD/Lz7w/y8+8OslLLVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"","export default \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3Csvg%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Crect%20width%3D%22512%22%20height%3D%22512%22%20fill%3D%22%23F03E2F%22%20rx%3D%2230%22%20%2F%3E%20%3Cpath%20d%3D%22M161.527%20136.723C161.527%20179.76%20187.738%20205.443%20240.388%20219.095L296%20232.283C345.687%20243.852%20376%20272.775%20376%20319.514C376%20341.727%20369.162%20360.931%20357.538%20375.971C357.538%20329.232%20333.607%20303.78%20276.171%20288.74L221.47%20276.246C177.709%20266.065%20143.977%20242.464%20143.977%20191.56C143.977%20170.505%20150.359%20151.994%20161.527%20136.723Z%22%20fill%3D%22white%22%20%2F%3E%20%3Cpath%20opacity%3D%220.5%22%20d%3D%22M323.35%20308.176C347.054%20323.679%20357.538%20345.197%20357.538%20376.202C337.709%20401.654%20303.293%20416%20262.724%20416C194.575%20416%20146.484%20381.756%20136%20322.753H201.641C210.074%20350.056%20232.41%20362.551%20262.268%20362.551C298.735%20362.32%20322.895%20342.652%20323.35%20308.176Z%22%20fill%3D%22white%22%20%2F%3E%20%3Cpath%20opacity%3D%220.5%22%20d%3D%22M195.715%20200.816C172.923%20186.007%20161.527%20165.183%20161.527%20136.954C180.672%20111.503%20213.493%2096%20253.835%2096C323.35%2096%20363.692%20133.252%20373.721%20185.776H310.359C303.293%20165.183%20285.971%20148.986%20254.291%20148.986C220.33%20148.986%20197.311%20169.116%20195.715%20200.816Z%22%20fill%3D%22white%22%20%2F%3E%3C%2Fsvg%3E\"","import faviconPng from './apple-touch-icon.png'\nimport faviconIco from './favicon.ico'\nimport faviconSvg from './favicon.svg'\n\n/** @public */\nexport interface NextStudioHeadProps {\n /**\n * @defaultValue 'utf-8'\n */\n charSet?: false | string\n /**\n * Sets the viewport to `viewport-fit=cover` to integrate with iOS devices with display cutouts (The Notch, Dynamic Island).\n * Also sets `width=device-width, initial-scale=1` to make the studio page responsive.\n * @defaultValue true\n */\n viewport?: boolean\n /**\n * It's common practice to hide the address to your Sanity Studio from search engines by setting `robots` to `noindex`\n * @defaultValue 'noindex'\n */\n robots?: false | string\n /**\n * @defaultValue 'same-origin'\n */\n referrer?: false | string\n /**\n * Adds the same favicons as the `npx sanity dev` pipeline.\n * @defaultValue true\n */\n favicons?: boolean\n /**\n * @defaultValue 'Sanity'\n */\n title?: false | string\n}\n\n/**\n * In Next 13 appDir mode (`/app/studio/[[...index]]/head.tsx`):\n * ```tsx\n * // If you don't want to change any defaults you can just re-export the head component directly:\n * export {NextStudioHead as default} from 'next-sanity/studio/head'\n *\n * // To customize it, use it as a children component:\n * import {NextStudioHead} from 'next-sanity/studio/head'\n *\n * export default function CustomStudioHead() {\n * return (\n * <>\n * <NextStudioHead favicons={false} />\n * <link\n * rel=\"icon\"\n * type=\"image/png\"\n * sizes=\"32x32\"\n * href=\"https://www.sanity.io/static/images/favicons/favicon-32x32.png\"\n * />\n * </>\n * )\n * }\n * ```\n * If you're using Next 12 or the `pages` folder (`/pages/studio/[[...index]].tsx`):\n * ```tsx\n * import Head from 'next/head'\n * import {NextStudio} from 'next-sanity/studio'\n * import {NextStudioHead} from 'next-sanity/studio/head'\n *\n * export default function StudioPage() {\n * return (\n * <>\n * <Head>\n * <NextStudioHead />\n * </Head>\n * <NextStudio config={config} />\n * </>\n * )\n * }\n * ```\n * @public\n */\nexport function NextStudioHead(props: NextStudioHeadProps) {\n const {\n charSet = 'utf-8',\n viewport = true,\n robots = 'noindex',\n referrer = 'same-origin',\n favicons = true,\n title = 'Sanity',\n } = props\n\n return (\n <>\n {charSet && <meta key=\"charset\" charSet={charSet} />}\n {viewport && (\n <meta\n key=\"viewport\"\n name=\"viewport\"\n // Studio implements display cutouts CSS (The iPhone Notch ™ ) and needs `viewport-fit=covered` for it to work correctly\n content=\"width=device-width,initial-scale=1,viewport-fit=cover\"\n />\n )}\n {robots && <meta key=\"robots\" name=\"robots\" content={robots} />}\n {referrer && <meta key=\"referrer\" name=\"referrer\" content={referrer} />}\n {title && <title>{title}</title>}\n {favicons && <link rel=\"icon\" href={faviconIco?.default || faviconIco} sizes=\"any\" />}\n {favicons && (\n <link rel=\"icon\" href={faviconSvg?.default || faviconSvg} type=\"image/svg+xml\" />\n )}\n {favicons && <link rel=\"apple-touch-icon\" href={faviconPng?.default || faviconSvg} />}\n </>\n )\n}\n"],"names":["faviconPng","faviconIco","faviconSvg","NextStudioHead","props","_a","_b","_c","charSet","viewport","robots","referrer","favicons","title","jsxs","Fragment","children","jsx","name","content","rel","href","default","sizes","type"],"mappings":";AAAA,IAAeA,UAAA,GAAA,w0JAAA;ACAf,IAAeC,UAAA,GAAA,2nLAAA;ACAf,IAAeC,UAAA,GAAA,igDAAA;AC8ER,SAASC,eAAeC,KAA4B,EAAA;EA9E3D,IAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA;EA+EQ,MAAA;IACJC,OAAU,GAAA,OAAA;IACVC,QAAW,GAAA,IAAA;IACXC,MAAS,GAAA,SAAA;IACTC,QAAW,GAAA,aAAA;IACXC,QAAW,GAAA,IAAA;IACXC,KAAQ,GAAA;EACN,CAAA,GAAAT,KAAA;EAGF,OAAA,eAAAU,IAAA,CAAAC,QAAA,EAAA;IACGC,QAAA,EAAA,CAAAR,OAAA,IAAA,eAAYS,GAAA,CAAA,MAAA,EAAA;MAAmBT;IAAA,CAAA,EAAV,SAA4B,CAAA,EACjDC,2BACEQ,GAAA,CAAA,MAAA,EAAA;MAECC,IAAK,EAAA,UAAA;MAELC,OAAQ,EAAA;IAAA,CAAA,EAHJ,UAIN,CAAA,EAEDT,yBAAWO,GAAA,CAAA,MAAA,EAAA;MAAkBC,IAAK,EAAA,QAAA;MAASC,OAAS,EAAAT;IAAA,CAAA,EAAhC,QAAwC,CAAA,EAC5DC,2BAAaM,GAAA,CAAA,MAAA,EAAA;MAAoBC,IAAK,EAAA,UAAA;MAAWC,OAAS,EAAAR;IAAA,CAAA,EAApC,UAA8C,CAAA,EACpEE,wBAAUI,GAAA,CAAA,OAAA,EAAA;MAAOD,QAAA,EAAAH;IAAA,CAAM,CAAA,EACvBD,2BAAaK,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,MAAA;MAAOC,IAAA,EAAA,CAAA,CAAMhB,uCAAYiB,OAAW,KAAArB,UAAA;MAAYsB,KAAM,EAAA;IAAA,CAAM,CAAA,EAClFX,2BACEK,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,MAAA;MAAOC,IAAA,EAAA,CAAA,CAAMf,uCAAYgB,OAAW,KAAApB,UAAA;MAAYsB,IAAK,EAAA;IAAA,CAAgB,CAAA,EAEhFZ,2BAAaK,GAAA,CAAA,MAAA,EAAA;MAAKG,GAAI,EAAA,kBAAA;MAAmBC,IAAA,EAAA,CAAA,CAAMd,uCAAYe,OAAW,KAAApB;IAAA,CAAY,CAAA;EAAA,CACrF,CAAA;AAEJ;"}
|
package/dist/studio/index.cjs
CHANGED
|
@@ -130,7 +130,7 @@ const NextStudioLayoutComponent = _ref4 => {
|
|
|
130
130
|
const theme = useTheme(config);
|
|
131
131
|
return /* @__PURE__ */jsxRuntime.jsx(Layout, {
|
|
132
132
|
"data-ui": "NextStudioLayout",
|
|
133
|
-
$unstable__tailwindSvgFix:
|
|
133
|
+
$unstable__tailwindSvgFix: unstable__tailwindSvgFix,
|
|
134
134
|
$fontFamily: theme.fonts.text.family,
|
|
135
135
|
$bg: theme.color[scheme].default.base.bg,
|
|
136
136
|
children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/studio/useTheme.ts","../../src/studio/NextStudioFallback.tsx","../../src/studio/NextStudioLayout.tsx","../../src/studio/NextStudioNoScript.tsx","../../src/studio/NextStudioSuspense.tsx","../../src/studio/NextStudio.tsx","../../src/studio/usePrefersColorScheme.ts"],"sourcesContent":["import {useMemo} from 'react'\nimport {\n type Config,\n type SingleWorkspace,\n type StudioTheme,\n type WorkspaceOptions,\n defaultTheme,\n} from 'sanity'\n\ntype WithTheme = {\n theme: StudioTheme\n}\ntype SingleWorkspaceWithTheme = Omit<SingleWorkspace, 'theme'> & WithTheme\ntype WorkspaceOptionsWithTheme = Omit<WorkspaceOptions, 'theme'> & WithTheme\n\nfunction isWorkspaces(config: Config): config is WorkspaceOptions[] {\n return Array.isArray(config)\n}\n\nfunction isWorkspaceWithTheme(\n workspace: SingleWorkspace | WorkspaceOptions\n): workspace is SingleWorkspaceWithTheme | WorkspaceOptionsWithTheme {\n return Boolean(workspace.theme)\n}\n\n/** @alpha */\nexport function useTheme(config: Config): StudioTheme {\n const workspace = useMemo<SingleWorkspace | WorkspaceOptions>(\n () => (isWorkspaces(config) ? config[0] : config),\n [config]\n )\n return useMemo<StudioTheme>(\n () => (isWorkspaceWithTheme(workspace) ? workspace.theme : defaultTheme),\n [workspace]\n )\n}\n","// Intentionally not using `styled-components` to ensure it works in any `next` setup.\n// Wether 'styled-components' SSR is setup or not.\n\nimport {SpinnerIcon} from '@sanity/icons'\nimport {_responsive, rem} from '@sanity/ui'\nimport {memo} from 'react'\nimport type {StudioProps} from 'sanity'\n\nimport {useTheme} from './useTheme'\n\n/** @alpha */\nexport type NextStudioFallbackProps = Pick<StudioProps, 'config' | 'scheme'>\n\nconst keyframes = `\nfrom {\n transform: rotate(0deg);\n}\n\nto {\n transform: rotate(360deg);\n}\n`\n\nfunction NextStudioFallbackComponent(props: NextStudioFallbackProps) {\n const {config, scheme = 'light'} = props\n const id = 'next-sanity-spinner'\n const theme = useTheme(config)\n const {fonts, media} = theme\n\n const styles: any = _responsive(media, [2], (size: number) => {\n const {ascenderHeight, descenderHeight, lineHeight, iconSize} = fonts.text.sizes[size]\n const capHeight = lineHeight - ascenderHeight - descenderHeight\n\n return {\n wrapper: {\n animation: `${id} 500ms linear infinite`,\n color: theme.color[scheme].default.muted.default.enabled.muted.fg,\n width: rem(capHeight),\n height: rem(capHeight),\n },\n svg: {\n display: 'block',\n width: rem(iconSize),\n height: rem(iconSize),\n margin: (capHeight - iconSize) / 2,\n },\n }\n })[0]\n\n return (\n <div\n style={{\n fontFamily: fonts.text.family,\n backgroundColor: theme.color[scheme].default.base.bg,\n height: '100vh',\n maxHeight: '100dvh',\n overscrollBehavior: 'none',\n WebkitFontSmoothing: 'antialiased',\n overflow: 'auto',\n }}\n >\n <div\n data-ui=\"Flex\"\n style={{\n display: 'flex',\n minWidth: 0,\n minHeight: 0,\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n height: '100%',\n margin: 0,\n padding: 0,\n }}\n >\n <style key={scheme}>{`@keyframes ${id} {${keyframes}}`}</style>\n <div data-ui=\"Spinner\" style={styles.wrapper}>\n <SpinnerIcon style={styles.svg} />\n </div>\n </div>\n </div>\n )\n}\n\n/** @alpha */\nexport const NextStudioFallback = memo(NextStudioFallbackComponent)\n","/* eslint-disable camelcase */\nimport {memo} from 'react'\nimport type {StudioProps} from 'sanity'\nimport styled, {css} from 'styled-components'\n\nimport {useTheme} from './useTheme'\n\n/** @alpha */\nexport interface NextStudioLayoutProps extends Pick<StudioProps, 'config' | 'scheme'> {\n children: React.ReactNode\n /**\n * Apply fix with SVG icon centering that happens if TailwindCSS is loaded\n * @defaultValue true\n */\n unstable__tailwindSvgFix?: boolean\n}\n\ntype LayoutProps = {\n $unstable__tailwindSvgFix: NextStudioLayoutProps['unstable__tailwindSvgFix']\n $bg: string\n $fontFamily: string\n}\nconst Layout = styled.div<LayoutProps>`\n font-family: ${({$fontFamily}) => $fontFamily};\n background-color: ${({$bg}: any) => $bg};\n height: 100vh;\n max-height: 100dvh;\n overscroll-behavior: none;\n -webkit-font-smoothing: antialiased;\n overflow: auto;\n\n ${({$unstable__tailwindSvgFix}: any) =>\n $unstable__tailwindSvgFix\n ? css`\n /* override tailwind reset */\n *:not([data-ui='Popover__arrow']):not([data-ui='Tooltip__arrow']) > svg {\n display: inline;\n }\n `\n : ''}\n`\n\nconst NextStudioLayoutComponent = ({\n children,\n config,\n scheme = 'light',\n unstable__tailwindSvgFix = true,\n}: NextStudioLayoutProps) => {\n const theme = useTheme(config)\n\n return (\n <Layout\n data-ui=\"NextStudioLayout\"\n $unstable__tailwindSvgFix={!unstable__tailwindSvgFix}\n $fontFamily={theme.fonts.text.family}\n $bg={theme.color[scheme].default.base.bg}\n >\n {children}\n </Layout>\n )\n}\n\n/** @alpha */\nexport const NextStudioLayout = memo(NextStudioLayoutComponent)\n","/* eslint-disable react/no-danger */\n\nconst style = {\n __html: `\n.sanity-app-no-js__root {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: #fff;\n z-index: 1;\n}\n\n.sanity-app-no-js__content {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n font-family: helvetica, arial, sans-serif;\n}\n`,\n} as const\n\n/** @alpha */\nexport const NextStudioNoScript = () => (\n <noscript>\n <div className=\"sanity-app-no-js__root\">\n <div className=\"sanity-app-no-js__content\">\n <style type=\"text/css\" dangerouslySetInnerHTML={style} />\n <h1>JavaScript disabled</h1>\n <p>\n Please <a href=\"https://www.enable-javascript.com/\">enable JavaScript</a> in your\n browser and reload the page to proceed.\n </p>\n </div>\n </div>\n </noscript>\n)\n","import {type ReactNode, Suspense, useEffect, useReducer} from 'react'\n\n/** @alpha */\nexport type NextStudioSuspenseProps = {\n children: ReactNode\n fallback: ReactNode\n}\n\n/** @alpha */\nexport function NextStudioSuspense({children, fallback}: NextStudioSuspenseProps) {\n const [mounted, mount] = useReducer(() => true, false)\n useEffect(mount, [mount])\n\n return <Suspense fallback={fallback}>{mounted ? children : fallback}</Suspense>\n}\n","import {lazy, memo} from 'react'\nimport type {StudioProps} from 'sanity'\n\nimport {NextStudioFallback} from './NextStudioFallback'\nimport {type NextStudioLayoutProps, NextStudioLayout} from './NextStudioLayout'\nimport {NextStudioNoScript} from './NextStudioNoScript'\nimport {NextStudioSuspense} from './NextStudioSuspense'\n\nconst Studio = memo(lazy(() => import('./LazyStudio')))\n\n/** @beta */\nexport interface NextStudioProps extends StudioProps {\n children?: React.ReactNode\n /**\n * Apply fix with SVG icon centering that happens if TailwindCSS is loaded\n * @defaultValue true\n * @alpha\n */\n unstable__tailwindSvgFix?: NextStudioLayoutProps['unstable__tailwindSvgFix']\n /**\n * Render the <noscript> tag\n * @defaultValue true\n * @alpha\n */\n unstable__noScript?: boolean\n}\n/**\n * Intended to render at the root of a page, letting the Studio own that page and render much like it would if you used `npx sanity start` to render\n * It's a drop-in replacement for `import {Studio} from 'sanity'`\n */\nconst NextStudioComponent = ({\n children,\n config,\n unstable__tailwindSvgFix = true,\n unstable__noScript = true,\n scheme,\n ...props\n}: NextStudioProps) => {\n return (\n <>\n {!unstable__noScript && <NextStudioNoScript />}\n <NextStudioSuspense fallback={<NextStudioFallback config={config} scheme={scheme} />}>\n <NextStudioLayout\n config={config}\n scheme={scheme}\n unstable__tailwindSvgFix={unstable__tailwindSvgFix}\n >\n {children || (\n <Studio config={config} scheme={scheme} unstable_globalStyles {...props} />\n )}\n </NextStudioLayout>\n </NextStudioSuspense>\n </>\n )\n}\n\n/**\n * Override how the Studio renders by passing children.\n * This is useful for advanced use cases where you're using StudioProvider and StudioLayout instead of Studio:\n * ```\n * import {StudioProvider, StudioLayout} from 'sanity'\n * import {NextStudio} from 'next-sanity/studio'\n * <NextStudio config={config}>\n * <StudioProvider config={config}>\n * <CustomComponentThatUsesContextFromStudioProvider />\n * <StudioLayout />\n * </StudioProvider>\n * </NextStudio>\n * ```\n * @beta\n */\nexport const NextStudio = memo(NextStudioComponent)\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport type {ThemeColorSchemeKey} from '@sanity/ui'\nimport {useSyncExternalStore} from 'react'\n\nfunction createStore() {\n if (typeof document === 'undefined') {\n return {\n subscribe: () => () => {},\n getSnapshot: () => 'light' as const,\n getServerSnapshot: () => 'light' as const,\n }\n }\n\n const matchMedia = window.matchMedia('(prefers-color-scheme: dark)')\n\n return {\n subscribe: (onStoreChange: () => void) => {\n matchMedia.addEventListener('change', onStoreChange)\n return () => matchMedia.removeEventListener('change', onStoreChange)\n },\n getSnapshot: () => (matchMedia.matches ? 'dark' : 'light'),\n getServerSnapshot: () => 'light' as const,\n }\n}\nconst store = createStore()\n\n/** @alpha */\nexport function usePrefersColorScheme(): ThemeColorSchemeKey {\n return useSyncExternalStore(store.subscribe, store.getSnapshot, store.getServerSnapshot)\n}\n"],"names":["isWorkspaces","config","Array","isArray","isWorkspaceWithTheme","workspace","Boolean","theme","useTheme","useMemo","defaultTheme","keyframes","NextStudioFallbackComponent","props","scheme","id","fonts","media","styles","_responsive","size","ascenderHeight","descenderHeight","lineHeight","iconSize","text","sizes","capHeight","wrapper","animation","color","default","muted","enabled","fg","width","rem","height","svg","display","margin","jsx","style","fontFamily","family","backgroundColor","base","bg","maxHeight","overscrollBehavior","WebkitFontSmoothing","overflow","children","jsxs","minWidth","minHeight","alignItems","justifyContent","flexDirection","padding","SpinnerIcon","NextStudioFallback","memo","Layout","styled","div","$fontFamily","$bg","$unstable__tailwindSvgFix","css","NextStudioLayoutComponent","unstable__tailwindSvgFix","NextStudioLayout","__html","NextStudioNoScript","className","type","dangerouslySetInnerHTML","href","NextStudioSuspense","fallback","mounted","mount","useReducer","useEffect","Suspense","Studio","lazy","Promise","resolve","then","require","NextStudioComponent","unstable__noScript","Fragment","unstable_globalStyles","NextStudio","createStore","document","subscribe","getSnapshot","getServerSnapshot","matchMedia","window","onStoreChange","addEventListener","removeEventListener","matches","store","usePrefersColorScheme","useSyncExternalStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/studio/useTheme.ts","../../src/studio/NextStudioFallback.tsx","../../src/studio/NextStudioLayout.tsx","../../src/studio/NextStudioNoScript.tsx","../../src/studio/NextStudioSuspense.tsx","../../src/studio/NextStudio.tsx","../../src/studio/usePrefersColorScheme.ts"],"sourcesContent":["import {useMemo} from 'react'\nimport {\n type Config,\n type SingleWorkspace,\n type StudioTheme,\n type WorkspaceOptions,\n defaultTheme,\n} from 'sanity'\n\ntype WithTheme = {\n theme: StudioTheme\n}\ntype SingleWorkspaceWithTheme = Omit<SingleWorkspace, 'theme'> & WithTheme\ntype WorkspaceOptionsWithTheme = Omit<WorkspaceOptions, 'theme'> & WithTheme\n\nfunction isWorkspaces(config: Config): config is WorkspaceOptions[] {\n return Array.isArray(config)\n}\n\nfunction isWorkspaceWithTheme(\n workspace: SingleWorkspace | WorkspaceOptions\n): workspace is SingleWorkspaceWithTheme | WorkspaceOptionsWithTheme {\n return Boolean(workspace.theme)\n}\n\n/** @alpha */\nexport function useTheme(config: Config): StudioTheme {\n const workspace = useMemo<SingleWorkspace | WorkspaceOptions>(\n () => (isWorkspaces(config) ? config[0] : config),\n [config]\n )\n return useMemo<StudioTheme>(\n () => (isWorkspaceWithTheme(workspace) ? workspace.theme : defaultTheme),\n [workspace]\n )\n}\n","// Intentionally not using `styled-components` to ensure it works in any `next` setup.\n// Wether 'styled-components' SSR is setup or not.\n\nimport {SpinnerIcon} from '@sanity/icons'\nimport {_responsive, rem} from '@sanity/ui'\nimport {memo} from 'react'\nimport type {StudioProps} from 'sanity'\n\nimport {useTheme} from './useTheme'\n\n/** @alpha */\nexport type NextStudioFallbackProps = Pick<StudioProps, 'config' | 'scheme'>\n\nconst keyframes = `\nfrom {\n transform: rotate(0deg);\n}\n\nto {\n transform: rotate(360deg);\n}\n`\n\nfunction NextStudioFallbackComponent(props: NextStudioFallbackProps) {\n const {config, scheme = 'light'} = props\n const id = 'next-sanity-spinner'\n const theme = useTheme(config)\n const {fonts, media} = theme\n\n const styles: any = _responsive(media, [2], (size: number) => {\n const {ascenderHeight, descenderHeight, lineHeight, iconSize} = fonts.text.sizes[size]\n const capHeight = lineHeight - ascenderHeight - descenderHeight\n\n return {\n wrapper: {\n animation: `${id} 500ms linear infinite`,\n color: theme.color[scheme].default.muted.default.enabled.muted.fg,\n width: rem(capHeight),\n height: rem(capHeight),\n },\n svg: {\n display: 'block',\n width: rem(iconSize),\n height: rem(iconSize),\n margin: (capHeight - iconSize) / 2,\n },\n }\n })[0]\n\n return (\n <div\n style={{\n fontFamily: fonts.text.family,\n backgroundColor: theme.color[scheme].default.base.bg,\n height: '100vh',\n maxHeight: '100dvh',\n overscrollBehavior: 'none',\n WebkitFontSmoothing: 'antialiased',\n overflow: 'auto',\n }}\n >\n <div\n data-ui=\"Flex\"\n style={{\n display: 'flex',\n minWidth: 0,\n minHeight: 0,\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n height: '100%',\n margin: 0,\n padding: 0,\n }}\n >\n <style key={scheme}>{`@keyframes ${id} {${keyframes}}`}</style>\n <div data-ui=\"Spinner\" style={styles.wrapper}>\n <SpinnerIcon style={styles.svg} />\n </div>\n </div>\n </div>\n )\n}\n\n/** @alpha */\nexport const NextStudioFallback = memo(NextStudioFallbackComponent)\n","/* eslint-disable camelcase */\nimport {memo} from 'react'\nimport type {StudioProps} from 'sanity'\nimport styled, {css} from 'styled-components'\n\nimport {useTheme} from './useTheme'\n\n/** @alpha */\nexport interface NextStudioLayoutProps extends Pick<StudioProps, 'config' | 'scheme'> {\n children: React.ReactNode\n /**\n * Apply fix with SVG icon centering that happens if TailwindCSS is loaded\n * @defaultValue true\n */\n unstable__tailwindSvgFix?: boolean\n}\n\ntype LayoutProps = {\n $unstable__tailwindSvgFix: NextStudioLayoutProps['unstable__tailwindSvgFix']\n $bg: string\n $fontFamily: string\n}\nconst Layout = styled.div<LayoutProps>`\n font-family: ${({$fontFamily}) => $fontFamily};\n background-color: ${({$bg}: any) => $bg};\n height: 100vh;\n max-height: 100dvh;\n overscroll-behavior: none;\n -webkit-font-smoothing: antialiased;\n overflow: auto;\n\n ${({$unstable__tailwindSvgFix}: any) =>\n $unstable__tailwindSvgFix\n ? css`\n /* override tailwind reset */\n *:not([data-ui='Popover__arrow']):not([data-ui='Tooltip__arrow']) > svg {\n display: inline;\n }\n `\n : ''}\n`\n\nconst NextStudioLayoutComponent = ({\n children,\n config,\n scheme = 'light',\n unstable__tailwindSvgFix = true,\n}: NextStudioLayoutProps) => {\n const theme = useTheme(config)\n\n return (\n <Layout\n data-ui=\"NextStudioLayout\"\n $unstable__tailwindSvgFix={unstable__tailwindSvgFix}\n $fontFamily={theme.fonts.text.family}\n $bg={theme.color[scheme].default.base.bg}\n >\n {children}\n </Layout>\n )\n}\n\n/** @alpha */\nexport const NextStudioLayout = memo(NextStudioLayoutComponent)\n","/* eslint-disable react/no-danger */\n\nconst style = {\n __html: `\n.sanity-app-no-js__root {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: #fff;\n z-index: 1;\n}\n\n.sanity-app-no-js__content {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n font-family: helvetica, arial, sans-serif;\n}\n`,\n} as const\n\n/** @alpha */\nexport const NextStudioNoScript = () => (\n <noscript>\n <div className=\"sanity-app-no-js__root\">\n <div className=\"sanity-app-no-js__content\">\n <style type=\"text/css\" dangerouslySetInnerHTML={style} />\n <h1>JavaScript disabled</h1>\n <p>\n Please <a href=\"https://www.enable-javascript.com/\">enable JavaScript</a> in your\n browser and reload the page to proceed.\n </p>\n </div>\n </div>\n </noscript>\n)\n","import {type ReactNode, Suspense, useEffect, useReducer} from 'react'\n\n/** @alpha */\nexport type NextStudioSuspenseProps = {\n children: ReactNode\n fallback: ReactNode\n}\n\n/** @alpha */\nexport function NextStudioSuspense({children, fallback}: NextStudioSuspenseProps) {\n const [mounted, mount] = useReducer(() => true, false)\n useEffect(mount, [mount])\n\n return <Suspense fallback={fallback}>{mounted ? children : fallback}</Suspense>\n}\n","import {lazy, memo} from 'react'\nimport type {StudioProps} from 'sanity'\n\nimport {NextStudioFallback} from './NextStudioFallback'\nimport {type NextStudioLayoutProps, NextStudioLayout} from './NextStudioLayout'\nimport {NextStudioNoScript} from './NextStudioNoScript'\nimport {NextStudioSuspense} from './NextStudioSuspense'\n\nconst Studio = memo(lazy(() => import('./LazyStudio')))\n\n/** @beta */\nexport interface NextStudioProps extends StudioProps {\n children?: React.ReactNode\n /**\n * Apply fix with SVG icon centering that happens if TailwindCSS is loaded\n * @defaultValue true\n * @alpha\n */\n unstable__tailwindSvgFix?: NextStudioLayoutProps['unstable__tailwindSvgFix']\n /**\n * Render the <noscript> tag\n * @defaultValue true\n * @alpha\n */\n unstable__noScript?: boolean\n}\n/**\n * Intended to render at the root of a page, letting the Studio own that page and render much like it would if you used `npx sanity start` to render\n * It's a drop-in replacement for `import {Studio} from 'sanity'`\n */\nconst NextStudioComponent = ({\n children,\n config,\n unstable__tailwindSvgFix = true,\n unstable__noScript = true,\n scheme,\n ...props\n}: NextStudioProps) => {\n return (\n <>\n {!unstable__noScript && <NextStudioNoScript />}\n <NextStudioSuspense fallback={<NextStudioFallback config={config} scheme={scheme} />}>\n <NextStudioLayout\n config={config}\n scheme={scheme}\n unstable__tailwindSvgFix={unstable__tailwindSvgFix}\n >\n {children || (\n <Studio config={config} scheme={scheme} unstable_globalStyles {...props} />\n )}\n </NextStudioLayout>\n </NextStudioSuspense>\n </>\n )\n}\n\n/**\n * Override how the Studio renders by passing children.\n * This is useful for advanced use cases where you're using StudioProvider and StudioLayout instead of Studio:\n * ```\n * import {StudioProvider, StudioLayout} from 'sanity'\n * import {NextStudio} from 'next-sanity/studio'\n * <NextStudio config={config}>\n * <StudioProvider config={config}>\n * <CustomComponentThatUsesContextFromStudioProvider />\n * <StudioLayout />\n * </StudioProvider>\n * </NextStudio>\n * ```\n * @beta\n */\nexport const NextStudio = memo(NextStudioComponent)\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport type {ThemeColorSchemeKey} from '@sanity/ui'\nimport {useSyncExternalStore} from 'react'\n\nfunction createStore() {\n if (typeof document === 'undefined') {\n return {\n subscribe: () => () => {},\n getSnapshot: () => 'light' as const,\n getServerSnapshot: () => 'light' as const,\n }\n }\n\n const matchMedia = window.matchMedia('(prefers-color-scheme: dark)')\n\n return {\n subscribe: (onStoreChange: () => void) => {\n matchMedia.addEventListener('change', onStoreChange)\n return () => matchMedia.removeEventListener('change', onStoreChange)\n },\n getSnapshot: () => (matchMedia.matches ? 'dark' : 'light'),\n getServerSnapshot: () => 'light' as const,\n }\n}\nconst store = createStore()\n\n/** @alpha */\nexport function usePrefersColorScheme(): ThemeColorSchemeKey {\n return useSyncExternalStore(store.subscribe, store.getSnapshot, store.getServerSnapshot)\n}\n"],"names":["isWorkspaces","config","Array","isArray","isWorkspaceWithTheme","workspace","Boolean","theme","useTheme","useMemo","defaultTheme","keyframes","NextStudioFallbackComponent","props","scheme","id","fonts","media","styles","_responsive","size","ascenderHeight","descenderHeight","lineHeight","iconSize","text","sizes","capHeight","wrapper","animation","color","default","muted","enabled","fg","width","rem","height","svg","display","margin","jsx","style","fontFamily","family","backgroundColor","base","bg","maxHeight","overscrollBehavior","WebkitFontSmoothing","overflow","children","jsxs","minWidth","minHeight","alignItems","justifyContent","flexDirection","padding","SpinnerIcon","NextStudioFallback","memo","Layout","styled","div","$fontFamily","$bg","$unstable__tailwindSvgFix","css","NextStudioLayoutComponent","unstable__tailwindSvgFix","NextStudioLayout","__html","NextStudioNoScript","className","type","dangerouslySetInnerHTML","href","NextStudioSuspense","fallback","mounted","mount","useReducer","useEffect","Suspense","Studio","lazy","Promise","resolve","then","require","NextStudioComponent","unstable__noScript","Fragment","unstable_globalStyles","NextStudio","createStore","document","subscribe","getSnapshot","getServerSnapshot","matchMedia","window","onStoreChange","addEventListener","removeEventListener","matches","store","usePrefersColorScheme","useSyncExternalStore"],"mappings":"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"}
|
package/dist/studio/index.js
CHANGED
|
@@ -119,7 +119,7 @@ const NextStudioLayoutComponent = _ref4 => {
|
|
|
119
119
|
const theme = useTheme(config);
|
|
120
120
|
return /* @__PURE__ */jsx(Layout, {
|
|
121
121
|
"data-ui": "NextStudioLayout",
|
|
122
|
-
$unstable__tailwindSvgFix:
|
|
122
|
+
$unstable__tailwindSvgFix: unstable__tailwindSvgFix,
|
|
123
123
|
$fontFamily: theme.fonts.text.family,
|
|
124
124
|
$bg: theme.color[scheme].default.base.bg,
|
|
125
125
|
children
|
package/dist/studio/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/studio/useTheme.ts","../../src/studio/NextStudioFallback.tsx","../../src/studio/NextStudioLayout.tsx","../../src/studio/NextStudioNoScript.tsx","../../src/studio/NextStudioSuspense.tsx","../../src/studio/NextStudio.tsx","../../src/studio/usePrefersColorScheme.ts"],"sourcesContent":["import {useMemo} from 'react'\nimport {\n type Config,\n type SingleWorkspace,\n type StudioTheme,\n type WorkspaceOptions,\n defaultTheme,\n} from 'sanity'\n\ntype WithTheme = {\n theme: StudioTheme\n}\ntype SingleWorkspaceWithTheme = Omit<SingleWorkspace, 'theme'> & WithTheme\ntype WorkspaceOptionsWithTheme = Omit<WorkspaceOptions, 'theme'> & WithTheme\n\nfunction isWorkspaces(config: Config): config is WorkspaceOptions[] {\n return Array.isArray(config)\n}\n\nfunction isWorkspaceWithTheme(\n workspace: SingleWorkspace | WorkspaceOptions\n): workspace is SingleWorkspaceWithTheme | WorkspaceOptionsWithTheme {\n return Boolean(workspace.theme)\n}\n\n/** @alpha */\nexport function useTheme(config: Config): StudioTheme {\n const workspace = useMemo<SingleWorkspace | WorkspaceOptions>(\n () => (isWorkspaces(config) ? config[0] : config),\n [config]\n )\n return useMemo<StudioTheme>(\n () => (isWorkspaceWithTheme(workspace) ? workspace.theme : defaultTheme),\n [workspace]\n )\n}\n","// Intentionally not using `styled-components` to ensure it works in any `next` setup.\n// Wether 'styled-components' SSR is setup or not.\n\nimport {SpinnerIcon} from '@sanity/icons'\nimport {_responsive, rem} from '@sanity/ui'\nimport {memo} from 'react'\nimport type {StudioProps} from 'sanity'\n\nimport {useTheme} from './useTheme'\n\n/** @alpha */\nexport type NextStudioFallbackProps = Pick<StudioProps, 'config' | 'scheme'>\n\nconst keyframes = `\nfrom {\n transform: rotate(0deg);\n}\n\nto {\n transform: rotate(360deg);\n}\n`\n\nfunction NextStudioFallbackComponent(props: NextStudioFallbackProps) {\n const {config, scheme = 'light'} = props\n const id = 'next-sanity-spinner'\n const theme = useTheme(config)\n const {fonts, media} = theme\n\n const styles: any = _responsive(media, [2], (size: number) => {\n const {ascenderHeight, descenderHeight, lineHeight, iconSize} = fonts.text.sizes[size]\n const capHeight = lineHeight - ascenderHeight - descenderHeight\n\n return {\n wrapper: {\n animation: `${id} 500ms linear infinite`,\n color: theme.color[scheme].default.muted.default.enabled.muted.fg,\n width: rem(capHeight),\n height: rem(capHeight),\n },\n svg: {\n display: 'block',\n width: rem(iconSize),\n height: rem(iconSize),\n margin: (capHeight - iconSize) / 2,\n },\n }\n })[0]\n\n return (\n <div\n style={{\n fontFamily: fonts.text.family,\n backgroundColor: theme.color[scheme].default.base.bg,\n height: '100vh',\n maxHeight: '100dvh',\n overscrollBehavior: 'none',\n WebkitFontSmoothing: 'antialiased',\n overflow: 'auto',\n }}\n >\n <div\n data-ui=\"Flex\"\n style={{\n display: 'flex',\n minWidth: 0,\n minHeight: 0,\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n height: '100%',\n margin: 0,\n padding: 0,\n }}\n >\n <style key={scheme}>{`@keyframes ${id} {${keyframes}}`}</style>\n <div data-ui=\"Spinner\" style={styles.wrapper}>\n <SpinnerIcon style={styles.svg} />\n </div>\n </div>\n </div>\n )\n}\n\n/** @alpha */\nexport const NextStudioFallback = memo(NextStudioFallbackComponent)\n","/* eslint-disable camelcase */\nimport {memo} from 'react'\nimport type {StudioProps} from 'sanity'\nimport styled, {css} from 'styled-components'\n\nimport {useTheme} from './useTheme'\n\n/** @alpha */\nexport interface NextStudioLayoutProps extends Pick<StudioProps, 'config' | 'scheme'> {\n children: React.ReactNode\n /**\n * Apply fix with SVG icon centering that happens if TailwindCSS is loaded\n * @defaultValue true\n */\n unstable__tailwindSvgFix?: boolean\n}\n\ntype LayoutProps = {\n $unstable__tailwindSvgFix: NextStudioLayoutProps['unstable__tailwindSvgFix']\n $bg: string\n $fontFamily: string\n}\nconst Layout = styled.div<LayoutProps>`\n font-family: ${({$fontFamily}) => $fontFamily};\n background-color: ${({$bg}: any) => $bg};\n height: 100vh;\n max-height: 100dvh;\n overscroll-behavior: none;\n -webkit-font-smoothing: antialiased;\n overflow: auto;\n\n ${({$unstable__tailwindSvgFix}: any) =>\n $unstable__tailwindSvgFix\n ? css`\n /* override tailwind reset */\n *:not([data-ui='Popover__arrow']):not([data-ui='Tooltip__arrow']) > svg {\n display: inline;\n }\n `\n : ''}\n`\n\nconst NextStudioLayoutComponent = ({\n children,\n config,\n scheme = 'light',\n unstable__tailwindSvgFix = true,\n}: NextStudioLayoutProps) => {\n const theme = useTheme(config)\n\n return (\n <Layout\n data-ui=\"NextStudioLayout\"\n $unstable__tailwindSvgFix={!unstable__tailwindSvgFix}\n $fontFamily={theme.fonts.text.family}\n $bg={theme.color[scheme].default.base.bg}\n >\n {children}\n </Layout>\n )\n}\n\n/** @alpha */\nexport const NextStudioLayout = memo(NextStudioLayoutComponent)\n","/* eslint-disable react/no-danger */\n\nconst style = {\n __html: `\n.sanity-app-no-js__root {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: #fff;\n z-index: 1;\n}\n\n.sanity-app-no-js__content {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n font-family: helvetica, arial, sans-serif;\n}\n`,\n} as const\n\n/** @alpha */\nexport const NextStudioNoScript = () => (\n <noscript>\n <div className=\"sanity-app-no-js__root\">\n <div className=\"sanity-app-no-js__content\">\n <style type=\"text/css\" dangerouslySetInnerHTML={style} />\n <h1>JavaScript disabled</h1>\n <p>\n Please <a href=\"https://www.enable-javascript.com/\">enable JavaScript</a> in your\n browser and reload the page to proceed.\n </p>\n </div>\n </div>\n </noscript>\n)\n","import {type ReactNode, Suspense, useEffect, useReducer} from 'react'\n\n/** @alpha */\nexport type NextStudioSuspenseProps = {\n children: ReactNode\n fallback: ReactNode\n}\n\n/** @alpha */\nexport function NextStudioSuspense({children, fallback}: NextStudioSuspenseProps) {\n const [mounted, mount] = useReducer(() => true, false)\n useEffect(mount, [mount])\n\n return <Suspense fallback={fallback}>{mounted ? children : fallback}</Suspense>\n}\n","import {lazy, memo} from 'react'\nimport type {StudioProps} from 'sanity'\n\nimport {NextStudioFallback} from './NextStudioFallback'\nimport {type NextStudioLayoutProps, NextStudioLayout} from './NextStudioLayout'\nimport {NextStudioNoScript} from './NextStudioNoScript'\nimport {NextStudioSuspense} from './NextStudioSuspense'\n\nconst Studio = memo(lazy(() => import('./LazyStudio')))\n\n/** @beta */\nexport interface NextStudioProps extends StudioProps {\n children?: React.ReactNode\n /**\n * Apply fix with SVG icon centering that happens if TailwindCSS is loaded\n * @defaultValue true\n * @alpha\n */\n unstable__tailwindSvgFix?: NextStudioLayoutProps['unstable__tailwindSvgFix']\n /**\n * Render the <noscript> tag\n * @defaultValue true\n * @alpha\n */\n unstable__noScript?: boolean\n}\n/**\n * Intended to render at the root of a page, letting the Studio own that page and render much like it would if you used `npx sanity start` to render\n * It's a drop-in replacement for `import {Studio} from 'sanity'`\n */\nconst NextStudioComponent = ({\n children,\n config,\n unstable__tailwindSvgFix = true,\n unstable__noScript = true,\n scheme,\n ...props\n}: NextStudioProps) => {\n return (\n <>\n {!unstable__noScript && <NextStudioNoScript />}\n <NextStudioSuspense fallback={<NextStudioFallback config={config} scheme={scheme} />}>\n <NextStudioLayout\n config={config}\n scheme={scheme}\n unstable__tailwindSvgFix={unstable__tailwindSvgFix}\n >\n {children || (\n <Studio config={config} scheme={scheme} unstable_globalStyles {...props} />\n )}\n </NextStudioLayout>\n </NextStudioSuspense>\n </>\n )\n}\n\n/**\n * Override how the Studio renders by passing children.\n * This is useful for advanced use cases where you're using StudioProvider and StudioLayout instead of Studio:\n * ```\n * import {StudioProvider, StudioLayout} from 'sanity'\n * import {NextStudio} from 'next-sanity/studio'\n * <NextStudio config={config}>\n * <StudioProvider config={config}>\n * <CustomComponentThatUsesContextFromStudioProvider />\n * <StudioLayout />\n * </StudioProvider>\n * </NextStudio>\n * ```\n * @beta\n */\nexport const NextStudio = memo(NextStudioComponent)\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport type {ThemeColorSchemeKey} from '@sanity/ui'\nimport {useSyncExternalStore} from 'react'\n\nfunction createStore() {\n if (typeof document === 'undefined') {\n return {\n subscribe: () => () => {},\n getSnapshot: () => 'light' as const,\n getServerSnapshot: () => 'light' as const,\n }\n }\n\n const matchMedia = window.matchMedia('(prefers-color-scheme: dark)')\n\n return {\n subscribe: (onStoreChange: () => void) => {\n matchMedia.addEventListener('change', onStoreChange)\n return () => matchMedia.removeEventListener('change', onStoreChange)\n },\n getSnapshot: () => (matchMedia.matches ? 'dark' : 'light'),\n getServerSnapshot: () => 'light' as const,\n }\n}\nconst store = createStore()\n\n/** @alpha */\nexport function usePrefersColorScheme(): ThemeColorSchemeKey {\n return useSyncExternalStore(store.subscribe, store.getSnapshot, store.getServerSnapshot)\n}\n"],"names":["isWorkspaces","config","Array","isArray","isWorkspaceWithTheme","workspace","Boolean","theme","useTheme","useMemo","defaultTheme","keyframes","NextStudioFallbackComponent","props","scheme","id","fonts","media","styles","_responsive","size","ascenderHeight","descenderHeight","lineHeight","iconSize","text","sizes","capHeight","wrapper","animation","color","default","muted","enabled","fg","width","rem","height","svg","display","margin","jsx","style","fontFamily","family","backgroundColor","base","bg","maxHeight","overscrollBehavior","WebkitFontSmoothing","overflow","children","jsxs","minWidth","minHeight","alignItems","justifyContent","flexDirection","padding","SpinnerIcon","NextStudioFallback","memo","Layout","styled","div","$fontFamily","$bg","$unstable__tailwindSvgFix","css","NextStudioLayoutComponent","unstable__tailwindSvgFix","NextStudioLayout","__html","NextStudioNoScript","className","type","dangerouslySetInnerHTML","href","NextStudioSuspense","fallback","mounted","mount","useReducer","useEffect","Suspense","Studio","lazy","NextStudioComponent","unstable__noScript","Fragment","unstable_globalStyles","NextStudio","createStore","document","subscribe","getSnapshot","getServerSnapshot","matchMedia","window","onStoreChange","addEventListener","removeEventListener","matches","store","usePrefersColorScheme","useSyncExternalStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/studio/useTheme.ts","../../src/studio/NextStudioFallback.tsx","../../src/studio/NextStudioLayout.tsx","../../src/studio/NextStudioNoScript.tsx","../../src/studio/NextStudioSuspense.tsx","../../src/studio/NextStudio.tsx","../../src/studio/usePrefersColorScheme.ts"],"sourcesContent":["import {useMemo} from 'react'\nimport {\n type Config,\n type SingleWorkspace,\n type StudioTheme,\n type WorkspaceOptions,\n defaultTheme,\n} from 'sanity'\n\ntype WithTheme = {\n theme: StudioTheme\n}\ntype SingleWorkspaceWithTheme = Omit<SingleWorkspace, 'theme'> & WithTheme\ntype WorkspaceOptionsWithTheme = Omit<WorkspaceOptions, 'theme'> & WithTheme\n\nfunction isWorkspaces(config: Config): config is WorkspaceOptions[] {\n return Array.isArray(config)\n}\n\nfunction isWorkspaceWithTheme(\n workspace: SingleWorkspace | WorkspaceOptions\n): workspace is SingleWorkspaceWithTheme | WorkspaceOptionsWithTheme {\n return Boolean(workspace.theme)\n}\n\n/** @alpha */\nexport function useTheme(config: Config): StudioTheme {\n const workspace = useMemo<SingleWorkspace | WorkspaceOptions>(\n () => (isWorkspaces(config) ? config[0] : config),\n [config]\n )\n return useMemo<StudioTheme>(\n () => (isWorkspaceWithTheme(workspace) ? workspace.theme : defaultTheme),\n [workspace]\n )\n}\n","// Intentionally not using `styled-components` to ensure it works in any `next` setup.\n// Wether 'styled-components' SSR is setup or not.\n\nimport {SpinnerIcon} from '@sanity/icons'\nimport {_responsive, rem} from '@sanity/ui'\nimport {memo} from 'react'\nimport type {StudioProps} from 'sanity'\n\nimport {useTheme} from './useTheme'\n\n/** @alpha */\nexport type NextStudioFallbackProps = Pick<StudioProps, 'config' | 'scheme'>\n\nconst keyframes = `\nfrom {\n transform: rotate(0deg);\n}\n\nto {\n transform: rotate(360deg);\n}\n`\n\nfunction NextStudioFallbackComponent(props: NextStudioFallbackProps) {\n const {config, scheme = 'light'} = props\n const id = 'next-sanity-spinner'\n const theme = useTheme(config)\n const {fonts, media} = theme\n\n const styles: any = _responsive(media, [2], (size: number) => {\n const {ascenderHeight, descenderHeight, lineHeight, iconSize} = fonts.text.sizes[size]\n const capHeight = lineHeight - ascenderHeight - descenderHeight\n\n return {\n wrapper: {\n animation: `${id} 500ms linear infinite`,\n color: theme.color[scheme].default.muted.default.enabled.muted.fg,\n width: rem(capHeight),\n height: rem(capHeight),\n },\n svg: {\n display: 'block',\n width: rem(iconSize),\n height: rem(iconSize),\n margin: (capHeight - iconSize) / 2,\n },\n }\n })[0]\n\n return (\n <div\n style={{\n fontFamily: fonts.text.family,\n backgroundColor: theme.color[scheme].default.base.bg,\n height: '100vh',\n maxHeight: '100dvh',\n overscrollBehavior: 'none',\n WebkitFontSmoothing: 'antialiased',\n overflow: 'auto',\n }}\n >\n <div\n data-ui=\"Flex\"\n style={{\n display: 'flex',\n minWidth: 0,\n minHeight: 0,\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n height: '100%',\n margin: 0,\n padding: 0,\n }}\n >\n <style key={scheme}>{`@keyframes ${id} {${keyframes}}`}</style>\n <div data-ui=\"Spinner\" style={styles.wrapper}>\n <SpinnerIcon style={styles.svg} />\n </div>\n </div>\n </div>\n )\n}\n\n/** @alpha */\nexport const NextStudioFallback = memo(NextStudioFallbackComponent)\n","/* eslint-disable camelcase */\nimport {memo} from 'react'\nimport type {StudioProps} from 'sanity'\nimport styled, {css} from 'styled-components'\n\nimport {useTheme} from './useTheme'\n\n/** @alpha */\nexport interface NextStudioLayoutProps extends Pick<StudioProps, 'config' | 'scheme'> {\n children: React.ReactNode\n /**\n * Apply fix with SVG icon centering that happens if TailwindCSS is loaded\n * @defaultValue true\n */\n unstable__tailwindSvgFix?: boolean\n}\n\ntype LayoutProps = {\n $unstable__tailwindSvgFix: NextStudioLayoutProps['unstable__tailwindSvgFix']\n $bg: string\n $fontFamily: string\n}\nconst Layout = styled.div<LayoutProps>`\n font-family: ${({$fontFamily}) => $fontFamily};\n background-color: ${({$bg}: any) => $bg};\n height: 100vh;\n max-height: 100dvh;\n overscroll-behavior: none;\n -webkit-font-smoothing: antialiased;\n overflow: auto;\n\n ${({$unstable__tailwindSvgFix}: any) =>\n $unstable__tailwindSvgFix\n ? css`\n /* override tailwind reset */\n *:not([data-ui='Popover__arrow']):not([data-ui='Tooltip__arrow']) > svg {\n display: inline;\n }\n `\n : ''}\n`\n\nconst NextStudioLayoutComponent = ({\n children,\n config,\n scheme = 'light',\n unstable__tailwindSvgFix = true,\n}: NextStudioLayoutProps) => {\n const theme = useTheme(config)\n\n return (\n <Layout\n data-ui=\"NextStudioLayout\"\n $unstable__tailwindSvgFix={unstable__tailwindSvgFix}\n $fontFamily={theme.fonts.text.family}\n $bg={theme.color[scheme].default.base.bg}\n >\n {children}\n </Layout>\n )\n}\n\n/** @alpha */\nexport const NextStudioLayout = memo(NextStudioLayoutComponent)\n","/* eslint-disable react/no-danger */\n\nconst style = {\n __html: `\n.sanity-app-no-js__root {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: #fff;\n z-index: 1;\n}\n\n.sanity-app-no-js__content {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n font-family: helvetica, arial, sans-serif;\n}\n`,\n} as const\n\n/** @alpha */\nexport const NextStudioNoScript = () => (\n <noscript>\n <div className=\"sanity-app-no-js__root\">\n <div className=\"sanity-app-no-js__content\">\n <style type=\"text/css\" dangerouslySetInnerHTML={style} />\n <h1>JavaScript disabled</h1>\n <p>\n Please <a href=\"https://www.enable-javascript.com/\">enable JavaScript</a> in your\n browser and reload the page to proceed.\n </p>\n </div>\n </div>\n </noscript>\n)\n","import {type ReactNode, Suspense, useEffect, useReducer} from 'react'\n\n/** @alpha */\nexport type NextStudioSuspenseProps = {\n children: ReactNode\n fallback: ReactNode\n}\n\n/** @alpha */\nexport function NextStudioSuspense({children, fallback}: NextStudioSuspenseProps) {\n const [mounted, mount] = useReducer(() => true, false)\n useEffect(mount, [mount])\n\n return <Suspense fallback={fallback}>{mounted ? children : fallback}</Suspense>\n}\n","import {lazy, memo} from 'react'\nimport type {StudioProps} from 'sanity'\n\nimport {NextStudioFallback} from './NextStudioFallback'\nimport {type NextStudioLayoutProps, NextStudioLayout} from './NextStudioLayout'\nimport {NextStudioNoScript} from './NextStudioNoScript'\nimport {NextStudioSuspense} from './NextStudioSuspense'\n\nconst Studio = memo(lazy(() => import('./LazyStudio')))\n\n/** @beta */\nexport interface NextStudioProps extends StudioProps {\n children?: React.ReactNode\n /**\n * Apply fix with SVG icon centering that happens if TailwindCSS is loaded\n * @defaultValue true\n * @alpha\n */\n unstable__tailwindSvgFix?: NextStudioLayoutProps['unstable__tailwindSvgFix']\n /**\n * Render the <noscript> tag\n * @defaultValue true\n * @alpha\n */\n unstable__noScript?: boolean\n}\n/**\n * Intended to render at the root of a page, letting the Studio own that page and render much like it would if you used `npx sanity start` to render\n * It's a drop-in replacement for `import {Studio} from 'sanity'`\n */\nconst NextStudioComponent = ({\n children,\n config,\n unstable__tailwindSvgFix = true,\n unstable__noScript = true,\n scheme,\n ...props\n}: NextStudioProps) => {\n return (\n <>\n {!unstable__noScript && <NextStudioNoScript />}\n <NextStudioSuspense fallback={<NextStudioFallback config={config} scheme={scheme} />}>\n <NextStudioLayout\n config={config}\n scheme={scheme}\n unstable__tailwindSvgFix={unstable__tailwindSvgFix}\n >\n {children || (\n <Studio config={config} scheme={scheme} unstable_globalStyles {...props} />\n )}\n </NextStudioLayout>\n </NextStudioSuspense>\n </>\n )\n}\n\n/**\n * Override how the Studio renders by passing children.\n * This is useful for advanced use cases where you're using StudioProvider and StudioLayout instead of Studio:\n * ```\n * import {StudioProvider, StudioLayout} from 'sanity'\n * import {NextStudio} from 'next-sanity/studio'\n * <NextStudio config={config}>\n * <StudioProvider config={config}>\n * <CustomComponentThatUsesContextFromStudioProvider />\n * <StudioLayout />\n * </StudioProvider>\n * </NextStudio>\n * ```\n * @beta\n */\nexport const NextStudio = memo(NextStudioComponent)\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport type {ThemeColorSchemeKey} from '@sanity/ui'\nimport {useSyncExternalStore} from 'react'\n\nfunction createStore() {\n if (typeof document === 'undefined') {\n return {\n subscribe: () => () => {},\n getSnapshot: () => 'light' as const,\n getServerSnapshot: () => 'light' as const,\n }\n }\n\n const matchMedia = window.matchMedia('(prefers-color-scheme: dark)')\n\n return {\n subscribe: (onStoreChange: () => void) => {\n matchMedia.addEventListener('change', onStoreChange)\n return () => matchMedia.removeEventListener('change', onStoreChange)\n },\n getSnapshot: () => (matchMedia.matches ? 'dark' : 'light'),\n getServerSnapshot: () => 'light' as const,\n }\n}\nconst store = createStore()\n\n/** @alpha */\nexport function usePrefersColorScheme(): ThemeColorSchemeKey {\n return useSyncExternalStore(store.subscribe, store.getSnapshot, store.getServerSnapshot)\n}\n"],"names":["isWorkspaces","config","Array","isArray","isWorkspaceWithTheme","workspace","Boolean","theme","useTheme","useMemo","defaultTheme","keyframes","NextStudioFallbackComponent","props","scheme","id","fonts","media","styles","_responsive","size","ascenderHeight","descenderHeight","lineHeight","iconSize","text","sizes","capHeight","wrapper","animation","color","default","muted","enabled","fg","width","rem","height","svg","display","margin","jsx","style","fontFamily","family","backgroundColor","base","bg","maxHeight","overscrollBehavior","WebkitFontSmoothing","overflow","children","jsxs","minWidth","minHeight","alignItems","justifyContent","flexDirection","padding","SpinnerIcon","NextStudioFallback","memo","Layout","styled","div","$fontFamily","$bg","$unstable__tailwindSvgFix","css","NextStudioLayoutComponent","unstable__tailwindSvgFix","NextStudioLayout","__html","NextStudioNoScript","className","type","dangerouslySetInnerHTML","href","NextStudioSuspense","fallback","mounted","mount","useReducer","useEffect","Suspense","Studio","lazy","NextStudioComponent","unstable__noScript","Fragment","unstable_globalStyles","NextStudio","createStore","document","subscribe","getSnapshot","getServerSnapshot","matchMedia","window","onStoreChange","addEventListener","removeEventListener","matches","store","usePrefersColorScheme","useSyncExternalStore"],"mappings":"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"}
|
package/dist/webhook.cjs
CHANGED
|
@@ -26,7 +26,8 @@ const {
|
|
|
26
26
|
isValidSignature,
|
|
27
27
|
SIGNATURE_HEADER_NAME
|
|
28
28
|
} = sanityWebhook__default["default"];
|
|
29
|
-
async function parseBody(req, secret
|
|
29
|
+
async function parseBody(req, secret) {
|
|
30
|
+
let waitForContentLakeEventualConsistency = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
30
31
|
let signature = req.headers[SIGNATURE_HEADER_NAME];
|
|
31
32
|
if (Array.isArray(signature)) {
|
|
32
33
|
signature = signature[0];
|
package/dist/webhook.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.cjs","sources":["../src/webhook/config.ts","../src/webhook/readBody.ts","../src/webhook/parseBody.ts"],"sourcesContent":["/**\n * Next.js will by default parse the body, which can lead to invalid signatures\n * @public\n */\nexport const config = {api: {bodyParser: false}}\n","import type {NextApiRequest} from 'next'\n\n/** @internal */\nexport async function _readBody(readable: NextApiRequest): Promise<string> {\n const chunks = []\n for await (const chunk of readable) {\n chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk)\n }\n return Buffer.concat(chunks).toString('utf8')\n}\n","import type {SanityDocument} from '@sanity/types'\nimport sanityWebhook from '@sanity/webhook'\nimport type {NextApiRequest} from 'next'\n\n// As `@sanity/webhook` isn't shipping ESM, extracting from the default export have the best ecosystem support\nconst {isValidSignature, SIGNATURE_HEADER_NAME} = sanityWebhook\n\nimport {_readBody as readBody} from './readBody'\n\n/** @public */\nexport type ParseBody = {\n /**\n * If a secret is given then it returns a boolean. If no secret is provided then no validation is done on the signature, and it'll return `null`\n */\n isValidSignature: boolean | null\n body: SanityDocument\n}\n/**\n * Handles parsing the body JSON, and validating its signature. Also waits for Content Lake eventual consistency so you can run your queries\n * without worrying about getting stale data.\n * @public\n */\nexport async function parseBody(\n req: NextApiRequest,\n secret?: string,\n waitForContentLakeEventualConsistency?: boolean\n): Promise<ParseBody> {\n let signature = req.headers[SIGNATURE_HEADER_NAME]!\n if (Array.isArray(signature)) {\n signature = signature[0]\n }\n\n // Read the body into a string\n const body = await readBody(req)\n // Then we're able to verify the checksum signature\n const validSignature = secret ? isValidSignature(body, signature, secret.trim()) : null\n\n if (validSignature !== false && waitForContentLakeEventualConsistency) {\n // Wait a second to give Elastic Search time to reach eventual consistency\n await new Promise((resolve) => setTimeout(resolve, 1000))\n }\n\n return {\n body: body.trim() && JSON.parse(body),\n isValidSignature: validSignature,\n }\n}\n"],"names":["config","api","bodyParser","_readBody","readable","chunks","chunk","push","Buffer","from","concat","toString","isValidSignature","SIGNATURE_HEADER_NAME","sanityWebhook","parseBody","req","secret","waitForContentLakeEventualConsistency","signature","headers","Array","isArray","body","readBody","validSignature","trim","Promise","resolve","setTimeout","JSON","parse"],"mappings":";;;;;;;;;;;;AAIO,MAAMA,SAAS;EAACC,GAAA,EAAK;IAACC,UAAA,EAAY;EAAM;AAAA,CAAA;ACD/C,eAAsBC,UAAUC,QAA2C,EAAA;EACzE,MAAMC,SAAS,EAAC;EAChB,WAAA,MAAiBC,SAASF,QAAU,EAAA;IAC3BC,MAAA,CAAAE,IAAA,CAAK,OAAOD,KAAU,KAAA,QAAA,GAAWE,OAAOC,IAAK,CAAAH,KAAK,IAAIA,KAAK,CAAA;EACpE;EACA,OAAOE,MAAO,CAAAE,MAAA,CAAOL,MAAM,CAAA,CAAEM,SAAS,MAAM,CAAA;AAC9C;ACJA,MAAM;EAACC,gBAAkB;EAAAC;AAAyB,CAAA,GAAAC,iCAAA;
|
|
1
|
+
{"version":3,"file":"webhook.cjs","sources":["../src/webhook/config.ts","../src/webhook/readBody.ts","../src/webhook/parseBody.ts"],"sourcesContent":["/**\n * Next.js will by default parse the body, which can lead to invalid signatures\n * @public\n */\nexport const config = {api: {bodyParser: false}}\n","import type {NextApiRequest} from 'next'\n\n/** @internal */\nexport async function _readBody(readable: NextApiRequest): Promise<string> {\n const chunks = []\n for await (const chunk of readable) {\n chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk)\n }\n return Buffer.concat(chunks).toString('utf8')\n}\n","import type {SanityDocument} from '@sanity/types'\nimport sanityWebhook from '@sanity/webhook'\nimport type {NextApiRequest} from 'next'\n\n// As `@sanity/webhook` isn't shipping ESM, extracting from the default export have the best ecosystem support\nconst {isValidSignature, SIGNATURE_HEADER_NAME} = sanityWebhook\n\nimport {_readBody as readBody} from './readBody'\n\n/** @public */\nexport type ParseBody = {\n /**\n * If a secret is given then it returns a boolean. If no secret is provided then no validation is done on the signature, and it'll return `null`\n */\n isValidSignature: boolean | null\n body: SanityDocument\n}\n/**\n * Handles parsing the body JSON, and validating its signature. Also waits for Content Lake eventual consistency so you can run your queries\n * without worrying about getting stale data.\n * @public\n */\nexport async function parseBody(\n req: NextApiRequest,\n secret?: string,\n waitForContentLakeEventualConsistency?: boolean = true\n): Promise<ParseBody> {\n let signature = req.headers[SIGNATURE_HEADER_NAME]!\n if (Array.isArray(signature)) {\n signature = signature[0]\n }\n\n // Read the body into a string\n const body = await readBody(req)\n // Then we're able to verify the checksum signature\n const validSignature = secret ? isValidSignature(body, signature, secret.trim()) : null\n\n if (validSignature !== false && waitForContentLakeEventualConsistency) {\n // Wait a second to give Elastic Search time to reach eventual consistency\n await new Promise((resolve) => setTimeout(resolve, 1000))\n }\n\n return {\n body: body.trim() && JSON.parse(body),\n isValidSignature: validSignature,\n }\n}\n"],"names":["config","api","bodyParser","_readBody","readable","chunks","chunk","push","Buffer","from","concat","toString","isValidSignature","SIGNATURE_HEADER_NAME","sanityWebhook","parseBody","req","secret","waitForContentLakeEventualConsistency","signature","headers","Array","isArray","body","readBody","validSignature","trim","Promise","resolve","setTimeout","JSON","parse"],"mappings":";;;;;;;;;;;;AAIO,MAAMA,SAAS;EAACC,GAAA,EAAK;IAACC,UAAA,EAAY;EAAM;AAAA,CAAA;ACD/C,eAAsBC,UAAUC,QAA2C,EAAA;EACzE,MAAMC,SAAS,EAAC;EAChB,WAAA,MAAiBC,SAASF,QAAU,EAAA;IAC3BC,MAAA,CAAAE,IAAA,CAAK,OAAOD,KAAU,KAAA,QAAA,GAAWE,OAAOC,IAAK,CAAAH,KAAK,IAAIA,KAAK,CAAA;EACpE;EACA,OAAOE,MAAO,CAAAE,MAAA,CAAOL,MAAM,CAAA,CAAEM,SAAS,MAAM,CAAA;AAC9C;ACJA,MAAM;EAACC,gBAAkB;EAAAC;AAAyB,CAAA,GAAAC,iCAAA;AAiBlD,eAAsBC,SACpB,CAAAC,GAAA,EACAC,MACA,EACoB;EAAA,IADpBC,qCAAA,uEAAkD,IAC9B;EAChB,IAAAC,SAAA,GAAYH,IAAII,OAAQ,CAAAP,qBAAA,CAAA;EACxB,IAAAQ,KAAA,CAAMC,OAAQ,CAAAH,SAAS,CAAG,EAAA;IAC5BA,SAAA,GAAYA,SAAU,CAAA,CAAA,CAAA;EACxB;EAGM,MAAAI,IAAA,GAAO,MAAMC,SAAA,CAASR,GAAG,CAAA;EAEzB,MAAAS,cAAA,GAAiBR,SAASL,gBAAiB,CAAAW,IAAA,EAAMJ,WAAWF,MAAO,CAAAS,IAAA,EAAM,CAAI,GAAA,IAAA;EAE/E,IAAAD,cAAA,KAAmB,SAASP,qCAAuC,EAAA;IAErE,MAAM,IAAIS,OAAQ,CAACC,WAAYC,UAAW,CAAAD,OAAA,EAAS,GAAI,CAAC,CAAA;EAC1D;EAEO,OAAA;IACLL,MAAMA,IAAK,CAAAG,IAAA,EAAU,IAAAI,IAAA,CAAKC,MAAMR,IAAI,CAAA;IACpCX,gBAAkB,EAAAa;EAAA,CACpB;AACF;;"}
|
package/dist/webhook.js
CHANGED
|
@@ -15,7 +15,8 @@ const {
|
|
|
15
15
|
isValidSignature,
|
|
16
16
|
SIGNATURE_HEADER_NAME
|
|
17
17
|
} = sanityWebhook;
|
|
18
|
-
async function parseBody(req, secret
|
|
18
|
+
async function parseBody(req, secret) {
|
|
19
|
+
let waitForContentLakeEventualConsistency = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
19
20
|
let signature = req.headers[SIGNATURE_HEADER_NAME];
|
|
20
21
|
if (Array.isArray(signature)) {
|
|
21
22
|
signature = signature[0];
|
package/dist/webhook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.js","sources":["../src/webhook/config.ts","../src/webhook/readBody.ts","../src/webhook/parseBody.ts"],"sourcesContent":["/**\n * Next.js will by default parse the body, which can lead to invalid signatures\n * @public\n */\nexport const config = {api: {bodyParser: false}}\n","import type {NextApiRequest} from 'next'\n\n/** @internal */\nexport async function _readBody(readable: NextApiRequest): Promise<string> {\n const chunks = []\n for await (const chunk of readable) {\n chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk)\n }\n return Buffer.concat(chunks).toString('utf8')\n}\n","import type {SanityDocument} from '@sanity/types'\nimport sanityWebhook from '@sanity/webhook'\nimport type {NextApiRequest} from 'next'\n\n// As `@sanity/webhook` isn't shipping ESM, extracting from the default export have the best ecosystem support\nconst {isValidSignature, SIGNATURE_HEADER_NAME} = sanityWebhook\n\nimport {_readBody as readBody} from './readBody'\n\n/** @public */\nexport type ParseBody = {\n /**\n * If a secret is given then it returns a boolean. If no secret is provided then no validation is done on the signature, and it'll return `null`\n */\n isValidSignature: boolean | null\n body: SanityDocument\n}\n/**\n * Handles parsing the body JSON, and validating its signature. Also waits for Content Lake eventual consistency so you can run your queries\n * without worrying about getting stale data.\n * @public\n */\nexport async function parseBody(\n req: NextApiRequest,\n secret?: string,\n waitForContentLakeEventualConsistency?: boolean\n): Promise<ParseBody> {\n let signature = req.headers[SIGNATURE_HEADER_NAME]!\n if (Array.isArray(signature)) {\n signature = signature[0]\n }\n\n // Read the body into a string\n const body = await readBody(req)\n // Then we're able to verify the checksum signature\n const validSignature = secret ? isValidSignature(body, signature, secret.trim()) : null\n\n if (validSignature !== false && waitForContentLakeEventualConsistency) {\n // Wait a second to give Elastic Search time to reach eventual consistency\n await new Promise((resolve) => setTimeout(resolve, 1000))\n }\n\n return {\n body: body.trim() && JSON.parse(body),\n isValidSignature: validSignature,\n }\n}\n"],"names":["config","api","bodyParser","_readBody","readable","chunks","chunk","push","Buffer","from","concat","toString","isValidSignature","SIGNATURE_HEADER_NAME","sanityWebhook","parseBody","req","secret","waitForContentLakeEventualConsistency","signature","headers","Array","isArray","body","readBody","validSignature","trim","Promise","resolve","setTimeout","JSON","parse"],"mappings":";AAIO,MAAMA,SAAS;EAACC,GAAA,EAAK;IAACC,UAAA,EAAY;EAAM;AAAA,CAAA;ACD/C,eAAsBC,UAAUC,QAA2C,EAAA;EACzE,MAAMC,SAAS,EAAC;EAChB,WAAA,MAAiBC,SAASF,QAAU,EAAA;IAC3BC,MAAA,CAAAE,IAAA,CAAK,OAAOD,KAAU,KAAA,QAAA,GAAWE,OAAOC,IAAK,CAAAH,KAAK,IAAIA,KAAK,CAAA;EACpE;EACA,OAAOE,MAAO,CAAAE,MAAA,CAAOL,MAAM,CAAA,CAAEM,SAAS,MAAM,CAAA;AAC9C;ACJA,MAAM;EAACC,gBAAkB;EAAAC;AAAyB,CAAA,GAAAC,aAAA;
|
|
1
|
+
{"version":3,"file":"webhook.js","sources":["../src/webhook/config.ts","../src/webhook/readBody.ts","../src/webhook/parseBody.ts"],"sourcesContent":["/**\n * Next.js will by default parse the body, which can lead to invalid signatures\n * @public\n */\nexport const config = {api: {bodyParser: false}}\n","import type {NextApiRequest} from 'next'\n\n/** @internal */\nexport async function _readBody(readable: NextApiRequest): Promise<string> {\n const chunks = []\n for await (const chunk of readable) {\n chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk)\n }\n return Buffer.concat(chunks).toString('utf8')\n}\n","import type {SanityDocument} from '@sanity/types'\nimport sanityWebhook from '@sanity/webhook'\nimport type {NextApiRequest} from 'next'\n\n// As `@sanity/webhook` isn't shipping ESM, extracting from the default export have the best ecosystem support\nconst {isValidSignature, SIGNATURE_HEADER_NAME} = sanityWebhook\n\nimport {_readBody as readBody} from './readBody'\n\n/** @public */\nexport type ParseBody = {\n /**\n * If a secret is given then it returns a boolean. If no secret is provided then no validation is done on the signature, and it'll return `null`\n */\n isValidSignature: boolean | null\n body: SanityDocument\n}\n/**\n * Handles parsing the body JSON, and validating its signature. Also waits for Content Lake eventual consistency so you can run your queries\n * without worrying about getting stale data.\n * @public\n */\nexport async function parseBody(\n req: NextApiRequest,\n secret?: string,\n waitForContentLakeEventualConsistency?: boolean = true\n): Promise<ParseBody> {\n let signature = req.headers[SIGNATURE_HEADER_NAME]!\n if (Array.isArray(signature)) {\n signature = signature[0]\n }\n\n // Read the body into a string\n const body = await readBody(req)\n // Then we're able to verify the checksum signature\n const validSignature = secret ? isValidSignature(body, signature, secret.trim()) : null\n\n if (validSignature !== false && waitForContentLakeEventualConsistency) {\n // Wait a second to give Elastic Search time to reach eventual consistency\n await new Promise((resolve) => setTimeout(resolve, 1000))\n }\n\n return {\n body: body.trim() && JSON.parse(body),\n isValidSignature: validSignature,\n }\n}\n"],"names":["config","api","bodyParser","_readBody","readable","chunks","chunk","push","Buffer","from","concat","toString","isValidSignature","SIGNATURE_HEADER_NAME","sanityWebhook","parseBody","req","secret","waitForContentLakeEventualConsistency","signature","headers","Array","isArray","body","readBody","validSignature","trim","Promise","resolve","setTimeout","JSON","parse"],"mappings":";AAIO,MAAMA,SAAS;EAACC,GAAA,EAAK;IAACC,UAAA,EAAY;EAAM;AAAA,CAAA;ACD/C,eAAsBC,UAAUC,QAA2C,EAAA;EACzE,MAAMC,SAAS,EAAC;EAChB,WAAA,MAAiBC,SAASF,QAAU,EAAA;IAC3BC,MAAA,CAAAE,IAAA,CAAK,OAAOD,KAAU,KAAA,QAAA,GAAWE,OAAOC,IAAK,CAAAH,KAAK,IAAIA,KAAK,CAAA;EACpE;EACA,OAAOE,MAAO,CAAAE,MAAA,CAAOL,MAAM,CAAA,CAAEM,SAAS,MAAM,CAAA;AAC9C;ACJA,MAAM;EAACC,gBAAkB;EAAAC;AAAyB,CAAA,GAAAC,aAAA;AAiBlD,eAAsBC,SACpB,CAAAC,GAAA,EACAC,MACA,EACoB;EAAA,IADpBC,qCAAA,uEAAkD,IAC9B;EAChB,IAAAC,SAAA,GAAYH,IAAII,OAAQ,CAAAP,qBAAA,CAAA;EACxB,IAAAQ,KAAA,CAAMC,OAAQ,CAAAH,SAAS,CAAG,EAAA;IAC5BA,SAAA,GAAYA,SAAU,CAAA,CAAA,CAAA;EACxB;EAGM,MAAAI,IAAA,GAAO,MAAMC,SAAA,CAASR,GAAG,CAAA;EAEzB,MAAAS,cAAA,GAAiBR,SAASL,gBAAiB,CAAAW,IAAA,EAAMJ,WAAWF,MAAO,CAAAS,IAAA,EAAM,CAAI,GAAA,IAAA;EAE/E,IAAAD,cAAA,KAAmB,SAASP,qCAAuC,EAAA;IAErE,MAAM,IAAIS,OAAQ,CAACC,WAAYC,UAAW,CAAAD,OAAA,EAAS,GAAI,CAAC,CAAA;EAC1D;EAEO,OAAA;IACLL,MAAMA,IAAK,CAAAG,IAAA,EAAU,IAAAI,IAAA,CAAKC,MAAMR,IAAI,CAAA;IACpCX,gBAAkB,EAAAa;EAAA,CACpB;AACF;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "next-sanity",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"description": "Sanity.io toolkit for Next.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sanity",
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
"@types/react": "^18.0.25",
|
|
139
139
|
"@types/react-dom": "^18.0.9",
|
|
140
140
|
"@types/styled-components": "^5.1.26",
|
|
141
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
141
|
+
"@typescript-eslint/eslint-plugin": "^5.44.0",
|
|
142
142
|
"autoprefixer": "^10.4.13",
|
|
143
143
|
"eslint": "^8.28.0",
|
|
144
144
|
"eslint-config-next": "13.0.5-canary.4",
|
|
@@ -51,7 +51,7 @@ const NextStudioLayoutComponent = ({
|
|
|
51
51
|
return (
|
|
52
52
|
<Layout
|
|
53
53
|
data-ui="NextStudioLayout"
|
|
54
|
-
$unstable__tailwindSvgFix={
|
|
54
|
+
$unstable__tailwindSvgFix={unstable__tailwindSvgFix}
|
|
55
55
|
$fontFamily={theme.fonts.text.family}
|
|
56
56
|
$bg={theme.color[scheme].default.base.bg}
|
|
57
57
|
>
|
|
@@ -4,6 +4,10 @@ import faviconSvg from './favicon.svg'
|
|
|
4
4
|
|
|
5
5
|
/** @public */
|
|
6
6
|
export interface NextStudioHeadProps {
|
|
7
|
+
/**
|
|
8
|
+
* @defaultValue 'utf-8'
|
|
9
|
+
*/
|
|
10
|
+
charSet?: false | string
|
|
7
11
|
/**
|
|
8
12
|
* Sets the viewport to `viewport-fit=cover` to integrate with iOS devices with display cutouts (The Notch, Dynamic Island).
|
|
9
13
|
* Also sets `width=device-width, initial-scale=1` to make the studio page responsive.
|
|
@@ -74,6 +78,7 @@ export interface NextStudioHeadProps {
|
|
|
74
78
|
*/
|
|
75
79
|
export function NextStudioHead(props: NextStudioHeadProps) {
|
|
76
80
|
const {
|
|
81
|
+
charSet = 'utf-8',
|
|
77
82
|
viewport = true,
|
|
78
83
|
robots = 'noindex',
|
|
79
84
|
referrer = 'same-origin',
|
|
@@ -83,6 +88,7 @@ export function NextStudioHead(props: NextStudioHeadProps) {
|
|
|
83
88
|
|
|
84
89
|
return (
|
|
85
90
|
<>
|
|
91
|
+
{charSet && <meta key="charset" charSet={charSet} />}
|
|
86
92
|
{viewport && (
|
|
87
93
|
<meta
|
|
88
94
|
key="viewport"
|
package/src/webhook/parseBody.ts
CHANGED
|
@@ -23,7 +23,7 @@ export type ParseBody = {
|
|
|
23
23
|
export async function parseBody(
|
|
24
24
|
req: NextApiRequest,
|
|
25
25
|
secret?: string,
|
|
26
|
-
waitForContentLakeEventualConsistency?: boolean
|
|
26
|
+
waitForContentLakeEventualConsistency?: boolean = true
|
|
27
27
|
): Promise<ParseBody> {
|
|
28
28
|
let signature = req.headers[SIGNATURE_HEADER_NAME]!
|
|
29
29
|
if (Array.isArray(signature)) {
|