Skip to content

Commit 8b6063a

Browse files
committed
Laget en lenke fra studio tilbake til root. Laget også en lenke fra et schema til slug siden
1 parent 19ca213 commit 8b6063a

3 files changed

Lines changed: 161 additions & 101 deletions

File tree

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"use client"
2+
3+
import { type ToolMenuProps } from "sanity"
4+
import { HomeIcon } from "@heroicons/react/24/outline"
5+
import { defaultIconSize } from "@/components/icons/icon"
6+
7+
/**
8+
* En custom toolmenu for sanity studio. Som legger til en lenke tilbake root-nettsiden.
9+
* @param props Props som sendes fra sanity studio.
10+
*/
11+
const SanityToolMenu: Component<ToolMenuProps> = props => (
12+
<div style={{ display: "flex" }}>
13+
<a
14+
href={process.env.NEXT_PUBLIC_BASE_URL}
15+
rel={"noopener"}
16+
target={"_blank"}
17+
title={"Tilbake til Root"}>
18+
<HomeIcon width={defaultIconSize} style={{ color: "white" }} />
19+
</a>
20+
<div style={{ width: "100%" }}>{props.renderDefault(props)}</div>
21+
</div>
22+
)
23+
24+
export default SanityToolMenu

pnpm-lock.yaml

Lines changed: 104 additions & 101 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sanity.config.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import { defineConfig } from "@sanity-typed/types"
99
import { apiVersion, dataset, projectId } from "./sanity/env"
1010
import { schema } from "./sanity/schema"
1111
import { structureTool } from "sanity/structure"
12+
import type { SanityDocuments } from "@/sanity/types"
13+
import SanityToolMenu from "@/app/(sanity)/studio/[[...index]]/navbar"
1214

1315
/**
1416
* Oppretter et config objekt som brukes til å konfigurere sanity studio
@@ -30,4 +32,35 @@ export default defineConfig({
3032
// https://www.sanity.io/docs/the-vision-plugin
3133
visionTool({ defaultApiVersion: apiVersion }),
3234
],
35+
studio: {
36+
components: {
37+
toolMenu: SanityToolMenu,
38+
},
39+
},
40+
document: {
41+
/**
42+
* Definerer en lenke til root-nettsiden fra Sanity Studio.
43+
* Lenken bruker slugen til dokumentet for å generere en lenke. Alle slugs må hete "slug" for at dette skal fungere.
44+
* Lenken finnes i ... menyen i top høyre hjørne av dokumentet. Kalt "Open preview". Eller ved å trykke CTRL + ALT + O.
45+
* @param _
46+
* @param document Dokumentet brukeren er i.
47+
*/
48+
productionUrl: async (_, { document }) => {
49+
if (!(typeof document.slug === "object" && document.slug && "current" in document.slug))
50+
return "/"
51+
let path = ""
52+
switch (document._type as SanityDocuments["_type"]) {
53+
case "event":
54+
path = "/arrangement"
55+
break
56+
case "job_advert":
57+
path = "/stilling"
58+
break
59+
case "image_gallery":
60+
path = "/galleri"
61+
break
62+
}
63+
return `${path}/${document.slug.current ?? "/"}`
64+
},
65+
},
3366
})

0 commit comments

Comments
 (0)