41019c2314
This PR updates the `cms-sanity` example to use: - App Router - TypeScript - Sanity Studio v3 instead of v2 - Embeds the Studio inside the next app on the `/studio` route. - ISR / Data Cache (revalidations through `revalidatePath` while in Live Visual Editing, time-based to match the Sanity API CDN in production). - Support Vercel Visual Editing out of the box. - The new `next-sanity/image` component. - Vercel Speed Insights. - The Sanity Presentation Tool for live content previews. - Sanity Portable Text setup to fully support `@tailwindcss/typography`. - [AI Assist](https://www.sanity.io/docs/ai-assist) - Auto fill in `alt` text on images. - Preset prompts for content creation
50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
"use client";
|
|
/**
|
|
* This config is used to set up Sanity Studio that's mounted on the `app/(sanity)/studio/[[...tool]]/page.tsx` route
|
|
*/
|
|
import { visionTool } from "@sanity/vision";
|
|
import { PluginOptions, defineConfig } from "sanity";
|
|
import { unsplashImageAsset } from "sanity-plugin-asset-source-unsplash";
|
|
import { presentationTool } from "sanity/presentation";
|
|
import { structureTool } from "sanity/structure";
|
|
|
|
import { apiVersion, dataset, projectId, studioUrl } from "@/sanity/lib/api";
|
|
import { locate } from "@/sanity/plugins/locate";
|
|
import { pageStructure, singletonPlugin } from "@/sanity/plugins/settings";
|
|
import { assistWithPresets } from "@/sanity/plugins/assist";
|
|
import author from "@/sanity/schemas/documents/author";
|
|
import post from "@/sanity/schemas/documents/post";
|
|
import settings from "@/sanity/schemas/singletons/settings";
|
|
|
|
export default defineConfig({
|
|
basePath: studioUrl,
|
|
projectId,
|
|
dataset,
|
|
schema: {
|
|
types: [
|
|
// Singletons
|
|
settings,
|
|
// Documents
|
|
post,
|
|
author,
|
|
],
|
|
},
|
|
plugins: [
|
|
presentationTool({
|
|
locate,
|
|
previewUrl: { previewMode: { enable: "/api/draft" } },
|
|
}),
|
|
structureTool({ structure: pageStructure([settings]) }),
|
|
// Configures the global "new document" button, and document actions, to suit the Settings document singleton
|
|
singletonPlugin([settings.name]),
|
|
// Add an image asset source for Unsplash
|
|
unsplashImageAsset(),
|
|
// Sets up AI Assist with preset prompts
|
|
// https://www.sanity.io/docs/ai-assist
|
|
assistWithPresets(),
|
|
// Vision lets you query your content with GROQ in the studio
|
|
// https://www.sanity.io/docs/the-vision-plugin
|
|
process.env.NODE_ENV === "development" &&
|
|
visionTool({ defaultApiVersion: apiVersion }),
|
|
].filter(Boolean) as PluginOptions[],
|
|
});
|