sanity-plugin-workspace-home 2.0.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,7 +22,7 @@ export default defineConfig([
22
22
  workspaceHomeConfig({
23
23
  // projectId and dataset are required, but not used by the plugin
24
24
  projectId: 'replace-with-your-project-id',
25
- dataset: 'replace-with-your-dataset-name',
25
+ dataset: 'replace-with-your-dataset-name',
26
26
  }),
27
27
  // ...all other workspaces
28
28
  ])
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { DatabaseIcon, HomeIcon } from "@sanity/icons";
2
2
  import { useActiveWorkspace, useWorkspaces, definePlugin } from "sanity";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
- import { c } from "react-compiler-runtime";
4
+ import { c } from "react/compiler-runtime";
5
5
  import { Card, Text, Box, Stack, Flex, Button, Hotkeys, Grid, Container, Heading, TextInput } from "@sanity/ui";
6
6
  import { isValidElement, useState, useRef, useEffect } from "react";
7
7
  import { styled } from "styled-components";
@@ -31,15 +31,15 @@ function WorkspacePreview(props) {
31
31
  $[0] !== icon ? (t0 = createIcon(icon), $[0] = icon, $[1] = t0) : t0 = $[1];
32
32
  const iconComponent = t0, hotKeyIndex = index + 1 === 10 ? 0 : index + 1, t1 = !!index;
33
33
  let t2;
34
- $[2] === Symbol.for("react.memo_cache_sentinel") ? (t2 = [2, 3, 4, 4], $[2] = t2) : t2 = $[2];
34
+ $[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t2 = [2, 3, 4, 4], $[2] = t2) : t2 = $[2];
35
35
  let t3;
36
36
  $[3] !== name || $[4] !== setActiveWorkspace ? (t3 = () => setActiveWorkspace(name), $[3] = name, $[4] = setActiveWorkspace, $[5] = t3) : t3 = $[5];
37
37
  let t4;
38
- $[6] === Symbol.for("react.memo_cache_sentinel") ? (t4 = [2, 3, 4, 4], $[6] = t4) : t4 = $[6];
38
+ $[6] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t4 = [2, 3, 4, 4], $[6] = t4) : t4 = $[6];
39
39
  let t5;
40
40
  $[7] !== iconComponent ? (t5 = iconComponent ? /* @__PURE__ */ jsx(MediaCard, { children: createIcon(iconComponent) }) : null, $[7] = iconComponent, $[8] = t5) : t5 = $[8];
41
41
  let t6;
42
- $[9] === Symbol.for("react.memo_cache_sentinel") ? (t6 = [1, 2, 3, 3], $[9] = t6) : t6 = $[9];
42
+ $[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t6 = [1, 2, 3, 3], $[9] = t6) : t6 = $[9];
43
43
  const t7 = title || name;
44
44
  let t8;
45
45
  $[10] !== t7 ? (t8 = /* @__PURE__ */ jsx(Text, { size: 3, weight: "semibold", textOverflow: "ellipsis", children: t7 }), $[10] = t7, $[11] = t8) : t8 = $[11];
@@ -58,14 +58,14 @@ function WorkspacePreview(props) {
58
58
  let t12;
59
59
  $[20] !== t11 || $[21] !== t3 ? (t12 = /* @__PURE__ */ jsx(Card, { columnStart: 1, columnEnd: 4, children: /* @__PURE__ */ jsx(Stack, { children: /* @__PURE__ */ jsx(Button, { mode: "bleed", tone: "default", onClick: t3, children: t11 }) }) }), $[20] = t11, $[21] = t3, $[22] = t12) : t12 = $[22];
60
60
  let t13;
61
- $[23] === Symbol.for("react.memo_cache_sentinel") ? (t13 = /* @__PURE__ */ jsx(Text, { size: 1, weight: "semibold", children: /* @__PURE__ */ jsx(DatabaseIcon, {}) }), $[23] = t13) : t13 = $[23];
61
+ $[23] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t13 = /* @__PURE__ */ jsx(Text, { size: 1, weight: "semibold", children: /* @__PURE__ */ jsx(DatabaseIcon, {}) }), $[23] = t13) : t13 = $[23];
62
62
  let t14;
63
63
  $[24] !== dataset ? (t14 = /* @__PURE__ */ jsx(Card, { columnStart: 4, columnEnd: 5, children: /* @__PURE__ */ jsxs(Flex, { height: "fill", align: "center", gap: 2, children: [
64
64
  t13,
65
65
  /* @__PURE__ */ jsx(Text, { size: 1, weight: "semibold", textOverflow: "ellipsis", children: dataset })
66
66
  ] }) }), $[24] = dataset, $[25] = t14) : t14 = $[25];
67
67
  let t15;
68
- $[26] === Symbol.for("react.memo_cache_sentinel") ? (t15 = [2, 3, 3, 3], $[26] = t15) : t15 = $[26];
68
+ $[26] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t15 = [2, 3, 3, 3], $[26] = t15) : t15 = $[26];
69
69
  let t16;
70
70
  $[27] !== hotKeyIndex || $[28] !== query ? (t16 = !query && hotKeyIndex < 10 ? /* @__PURE__ */ jsx(Hotkeys, { keys: [String(hotKeyIndex)], padding: 2 }) : null, $[27] = hotKeyIndex, $[28] = query, $[29] = t16) : t16 = $[29];
71
71
  let t17;
@@ -91,7 +91,7 @@ function WorkspaceHome() {
91
91
  setActiveWorkspace
92
92
  } = useActiveWorkspace(), [query, setQuery] = useState(""), searchInput = useRef(null);
93
93
  let t1;
94
- $[2] === Symbol.for("react.memo_cache_sentinel") ? (t1 = (e) => {
94
+ $[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t1 = (e) => {
95
95
  setQuery(e.target.value);
96
96
  }, $[2] = t1) : t1 = $[2];
97
97
  const handleQuery = t1;
@@ -115,13 +115,13 @@ function WorkspaceHome() {
115
115
  };
116
116
  }, t4 = [query, workspaces, setActiveWorkspace], $[8] = query, $[9] = setActiveWorkspace, $[10] = workspaces, $[11] = t3, $[12] = t4) : (t3 = $[11], t4 = $[12]), useEffect(t3, t4);
117
117
  let t5;
118
- $[13] === Symbol.for("react.memo_cache_sentinel") ? (t5 = [4, 5, 6, 6], $[13] = t5) : t5 = $[13];
118
+ $[13] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t5 = [4, 5, 6, 6], $[13] = t5) : t5 = $[13];
119
119
  let t6;
120
- $[14] === Symbol.for("react.memo_cache_sentinel") ? (t6 = /* @__PURE__ */ jsx(Heading, { children: "Workspaces" }), $[14] = t6) : t6 = $[14];
120
+ $[14] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t6 = /* @__PURE__ */ jsx(Heading, { children: "Workspaces" }), $[14] = t6) : t6 = $[14];
121
121
  let t7;
122
- $[15] === Symbol.for("react.memo_cache_sentinel") ? (t7 = [2, 3, 4, 4], $[15] = t7) : t7 = $[15];
122
+ $[15] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t7 = [2, 3, 4, 4], $[15] = t7) : t7 = $[15];
123
123
  let t8;
124
- $[16] === Symbol.for("react.memo_cache_sentinel") ? (t8 = /* @__PURE__ */ jsx(Text, { size: 1, weight: "semibold", children: "Search" }), $[16] = t8) : t8 = $[16];
124
+ $[16] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t8 = /* @__PURE__ */ jsx(Text, { size: 1, weight: "semibold", children: "Search" }), $[16] = t8) : t8 = $[16];
125
125
  let t9;
126
126
  $[17] !== query ? (t9 = /* @__PURE__ */ jsxs(Stack, { space: 2, children: [
127
127
  t8,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/WorkspacePreview.tsx","../src/components/WorkspaceHome.tsx","../src/index.ts"],"sourcesContent":["import {DatabaseIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Grid, Hotkeys, Stack, Text} from '@sanity/ui'\nimport {isValidElement, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useActiveWorkspace, type WorkspaceSummary} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst createIcon = (Icon: React.ComponentType | React.ReactNode) => {\n if (isValidElementType(Icon)) return <Icon />\n if (isValidElement(Icon)) return Icon\n return undefined\n}\n\nconst MediaCard = styled(Card)`\n width: 35px;\n height: 35px;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`\n\nexport type WorkspacePreviewProps = {\n workspace: WorkspaceSummary\n index: number\n query: string\n}\n\nexport default function WorkspacePreview(props: WorkspacePreviewProps): React.JSX.Element {\n const {workspace, index, query} = props\n const {icon, title, name, subtitle, dataset} = workspace\n\n const {setActiveWorkspace} = useActiveWorkspace()\n const iconComponent = useMemo(() => createIcon(icon), [icon])\n\n // TODO: Favorites feature\n // get favorite workspace name from localStorage\n // const favoriteWorkspace = localStorage.getItem('favoriteWorkspace')\n // save local state to force re-render\n // const [isFavourite, setIsFavourite] = React.useState(favoriteWorkspace === name)\n\n // set favorite workspace name to localStorage\n // const setFavoriteWorkspace = useCallback(() => {\n // localStorage.setItem('favoriteWorkspace', name)\n // }, [name])\n\n const hotKeyIndex = index + 1 === 10 ? 0 : index + 1\n\n return (\n <Card borderTop={Boolean(index)} tone=\"default\">\n <Grid columns={5} gap={[2, 3, 4, 4]} paddingY={1}>\n <Card columnStart={1} columnEnd={4}>\n <Stack>\n <Button mode=\"bleed\" tone=\"default\" onClick={() => setActiveWorkspace(name)}>\n <Flex align=\"center\" gap={[2, 3, 4, 4]}>\n {iconComponent ? <MediaCard>{createIcon(iconComponent)}</MediaCard> : null}\n <Box flex={1}>\n <Stack space={[1, 2, 3, 3]}>\n <Text size={3} weight=\"semibold\" textOverflow=\"ellipsis\">\n {title || name}\n </Text>\n {subtitle ? <Text muted>{subtitle}</Text> : null}\n </Stack>\n </Box>\n </Flex>\n </Button>\n </Stack>\n </Card>\n <Card columnStart={4} columnEnd={5}>\n <Flex height=\"fill\" align=\"center\" gap={2}>\n <Text size={1} weight=\"semibold\">\n <DatabaseIcon />\n </Text>\n <Text size={1} weight=\"semibold\" textOverflow=\"ellipsis\">\n {dataset}\n </Text>\n </Flex>\n </Card>\n <Card paddingRight={[2, 3, 3, 3]}>\n <Flex height=\"fill\" align=\"center\" justify=\"flex-end\">\n {!query && hotKeyIndex < 10 ? (\n <Hotkeys keys={[String(hotKeyIndex)]} padding={2} />\n ) : null}\n </Flex>\n </Card>\n {/* <Button\n mode={isFavourite ? 'default' : 'bleed'}\n tone={isFavourite ? 'primary' : 'default'}\n icon={StarIcon}\n title=\"Favorite\"\n onClick={() => {\n setIsFavourite(!isFavourite)\n setFavoriteWorkspace()\n }}\n /> */}\n </Grid>\n </Card>\n )\n}\n","import {Box, Card, Container, Flex, Heading, Stack, Text, TextInput} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {useActiveWorkspace, useWorkspaces} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport WorkspacePreview from './WorkspacePreview'\n\nconst TallCard = styled(Card)`\n min-height: 100%;\n`\n\nexport default function WorkspaceHome(): React.JSX.Element {\n const [, ...workspaces] = useWorkspaces()\n const {setActiveWorkspace} = useActiveWorkspace()\n\n // Handle search query\n const [query, setQuery] = useState('')\n const searchInput = useRef(null)\n const handleQuery = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQuery(e.target.value)\n },\n [setQuery],\n )\n\n // filter workspaces if name, dataset or title matches query\n const filteredWorkspaces = useMemo(() => {\n return workspaces.filter((workspace) => {\n return (\n workspace.name.toLowerCase().includes(query.toLowerCase()) ||\n workspace.dataset.toLowerCase().includes(query.toLowerCase()) ||\n workspace.title.toLowerCase().includes(query.toLowerCase())\n )\n })\n }, [workspaces, query])\n\n // Listen to keypress of workspace index\n useEffect(() => {\n const handleKeypress = (event: KeyboardEvent) => {\n // Ignore if search query exists or search input is focused\n if (query || searchInput.current === document.activeElement) {\n return\n }\n\n const index = parseInt(event.key, 10) - 1\n if (index >= 0 && index < workspaces.length) {\n setActiveWorkspace(workspaces[index]!.name)\n }\n }\n\n window.addEventListener('keypress', handleKeypress)\n\n return () => {\n window.removeEventListener('keypress', handleKeypress)\n }\n }, [query, workspaces, setActiveWorkspace])\n\n return (\n <TallCard tone=\"transparent\">\n <Flex direction=\"column\" padding={[4, 5, 6, 6]}>\n <Container>\n <Stack space={4}>\n <Heading>Workspaces</Heading>\n <Card padding={[2, 3, 4, 4]} radius={3} shadow={2}>\n <Stack space={3}>\n <Stack space={2}>\n <Text size={1} weight=\"semibold\">\n Search\n </Text>\n <TextInput ref={searchInput} value={query} onChange={handleQuery} />\n </Stack>\n <Box>\n {filteredWorkspaces.map((workspace, index) => (\n <WorkspacePreview\n key={workspace.name}\n workspace={workspace}\n index={index}\n query={query}\n />\n ))}\n </Box>\n </Stack>\n </Card>\n </Stack>\n </Container>\n </Flex>\n </TallCard>\n )\n}\n","import {HomeIcon} from '@sanity/icons'\nimport {definePlugin, type WorkspaceOptions} from 'sanity'\n\nimport WorkspaceHome from './components/WorkspaceHome'\n\nexport const workspaceHome = definePlugin(() => {\n return {\n name: 'sanity-plugin-workspace-home',\n tools: [\n {\n title: 'Workspace Home',\n name: 'workspace-home',\n icon: HomeIcon,\n component: WorkspaceHome,\n },\n ],\n }\n})\n\ntype WorkspaceHomeConfigProps = {\n projectId: string\n dataset: string\n}\n\nexport const workspaceHomeConfig = ({\n projectId = ``,\n dataset = ``,\n}: WorkspaceHomeConfigProps): WorkspaceOptions => ({\n name: 'home',\n title: 'Home',\n basePath: '/home',\n projectId,\n dataset,\n icon: HomeIcon,\n plugins: [workspaceHome()],\n})\n"],"names":["createIcon","Icon","isValidElementType","isValidElement","MediaCard","styled","Card","withConfig","displayName","componentId","WorkspacePreview","props","$","_c","workspace","index","query","icon","title","name","subtitle","dataset","setActiveWorkspace","useActiveWorkspace","t0","iconComponent","hotKeyIndex","t1","Boolean","t2","Symbol","for","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","String","t17","t18","t19","TallCard","WorkspaceHome","useWorkspaces","workspaces","setQuery","useState","searchInput","useRef","e","target","value","handleQuery","toLowerCase","includes","filter","filteredWorkspaces","handleKeypress","event","current","document","activeElement","parseInt","key","length","window","addEventListener","removeEventListener","useEffect","workspace_0","index_0","map","workspaceHome","definePlugin","tools","HomeIcon","component","workspaceHomeConfig","projectId","basePath","plugins"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/WorkspacePreview.tsx","../src/components/WorkspaceHome.tsx","../src/index.ts"],"sourcesContent":["import {DatabaseIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Grid, Hotkeys, Stack, Text} from '@sanity/ui'\nimport {isValidElement, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useActiveWorkspace, type WorkspaceSummary} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst createIcon = (Icon: React.ComponentType | React.ReactNode) => {\n if (isValidElementType(Icon)) return <Icon />\n if (isValidElement(Icon)) return Icon\n return undefined\n}\n\nconst MediaCard = styled(Card)`\n width: 35px;\n height: 35px;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`\n\nexport type WorkspacePreviewProps = {\n workspace: WorkspaceSummary\n index: number\n query: string\n}\n\nexport default function WorkspacePreview(props: WorkspacePreviewProps): React.JSX.Element {\n const {workspace, index, query} = props\n const {icon, title, name, subtitle, dataset} = workspace\n\n const {setActiveWorkspace} = useActiveWorkspace()\n const iconComponent = useMemo(() => createIcon(icon), [icon])\n\n // TODO: Favorites feature\n // get favorite workspace name from localStorage\n // const favoriteWorkspace = localStorage.getItem('favoriteWorkspace')\n // save local state to force re-render\n // const [isFavourite, setIsFavourite] = React.useState(favoriteWorkspace === name)\n\n // set favorite workspace name to localStorage\n // const setFavoriteWorkspace = useCallback(() => {\n // localStorage.setItem('favoriteWorkspace', name)\n // }, [name])\n\n const hotKeyIndex = index + 1 === 10 ? 0 : index + 1\n\n return (\n <Card borderTop={Boolean(index)} tone=\"default\">\n <Grid columns={5} gap={[2, 3, 4, 4]} paddingY={1}>\n <Card columnStart={1} columnEnd={4}>\n <Stack>\n <Button mode=\"bleed\" tone=\"default\" onClick={() => setActiveWorkspace(name)}>\n <Flex align=\"center\" gap={[2, 3, 4, 4]}>\n {iconComponent ? <MediaCard>{createIcon(iconComponent)}</MediaCard> : null}\n <Box flex={1}>\n <Stack space={[1, 2, 3, 3]}>\n <Text size={3} weight=\"semibold\" textOverflow=\"ellipsis\">\n {title || name}\n </Text>\n {subtitle ? <Text muted>{subtitle}</Text> : null}\n </Stack>\n </Box>\n </Flex>\n </Button>\n </Stack>\n </Card>\n <Card columnStart={4} columnEnd={5}>\n <Flex height=\"fill\" align=\"center\" gap={2}>\n <Text size={1} weight=\"semibold\">\n <DatabaseIcon />\n </Text>\n <Text size={1} weight=\"semibold\" textOverflow=\"ellipsis\">\n {dataset}\n </Text>\n </Flex>\n </Card>\n <Card paddingRight={[2, 3, 3, 3]}>\n <Flex height=\"fill\" align=\"center\" justify=\"flex-end\">\n {!query && hotKeyIndex < 10 ? (\n <Hotkeys keys={[String(hotKeyIndex)]} padding={2} />\n ) : null}\n </Flex>\n </Card>\n {/* <Button\n mode={isFavourite ? 'default' : 'bleed'}\n tone={isFavourite ? 'primary' : 'default'}\n icon={StarIcon}\n title=\"Favorite\"\n onClick={() => {\n setIsFavourite(!isFavourite)\n setFavoriteWorkspace()\n }}\n /> */}\n </Grid>\n </Card>\n )\n}\n","import {Box, Card, Container, Flex, Heading, Stack, Text, TextInput} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {useActiveWorkspace, useWorkspaces} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport WorkspacePreview from './WorkspacePreview'\n\nconst TallCard = styled(Card)`\n min-height: 100%;\n`\n\nexport default function WorkspaceHome(): React.JSX.Element {\n const [, ...workspaces] = useWorkspaces()\n const {setActiveWorkspace} = useActiveWorkspace()\n\n // Handle search query\n const [query, setQuery] = useState('')\n const searchInput = useRef(null)\n const handleQuery = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQuery(e.target.value)\n },\n [setQuery],\n )\n\n // filter workspaces if name, dataset or title matches query\n const filteredWorkspaces = useMemo(() => {\n return workspaces.filter((workspace) => {\n return (\n workspace.name.toLowerCase().includes(query.toLowerCase()) ||\n workspace.dataset.toLowerCase().includes(query.toLowerCase()) ||\n workspace.title.toLowerCase().includes(query.toLowerCase())\n )\n })\n }, [workspaces, query])\n\n // Listen to keypress of workspace index\n useEffect(() => {\n const handleKeypress = (event: KeyboardEvent) => {\n // Ignore if search query exists or search input is focused\n if (query || searchInput.current === document.activeElement) {\n return\n }\n\n const index = parseInt(event.key, 10) - 1\n if (index >= 0 && index < workspaces.length) {\n setActiveWorkspace(workspaces[index]!.name)\n }\n }\n\n window.addEventListener('keypress', handleKeypress)\n\n return () => {\n window.removeEventListener('keypress', handleKeypress)\n }\n }, [query, workspaces, setActiveWorkspace])\n\n return (\n <TallCard tone=\"transparent\">\n <Flex direction=\"column\" padding={[4, 5, 6, 6]}>\n <Container>\n <Stack space={4}>\n <Heading>Workspaces</Heading>\n <Card padding={[2, 3, 4, 4]} radius={3} shadow={2}>\n <Stack space={3}>\n <Stack space={2}>\n <Text size={1} weight=\"semibold\">\n Search\n </Text>\n <TextInput ref={searchInput} value={query} onChange={handleQuery} />\n </Stack>\n <Box>\n {filteredWorkspaces.map((workspace, index) => (\n <WorkspacePreview\n key={workspace.name}\n workspace={workspace}\n index={index}\n query={query}\n />\n ))}\n </Box>\n </Stack>\n </Card>\n </Stack>\n </Container>\n </Flex>\n </TallCard>\n )\n}\n","import {HomeIcon} from '@sanity/icons'\nimport {definePlugin, type WorkspaceOptions} from 'sanity'\n\nimport WorkspaceHome from './components/WorkspaceHome'\n\nexport const workspaceHome = definePlugin(() => {\n return {\n name: 'sanity-plugin-workspace-home',\n tools: [\n {\n title: 'Workspace Home',\n name: 'workspace-home',\n icon: HomeIcon,\n component: WorkspaceHome,\n },\n ],\n }\n})\n\ntype WorkspaceHomeConfigProps = {\n projectId: string\n dataset: string\n}\n\nexport const workspaceHomeConfig = ({\n projectId = ``,\n dataset = ``,\n}: WorkspaceHomeConfigProps): WorkspaceOptions => ({\n name: 'home',\n title: 'Home',\n basePath: '/home',\n projectId,\n dataset,\n icon: HomeIcon,\n plugins: [workspaceHome()],\n})\n"],"names":["createIcon","Icon","isValidElementType","isValidElement","MediaCard","styled","Card","withConfig","displayName","componentId","WorkspacePreview","props","$","_c","workspace","index","query","icon","title","name","subtitle","dataset","setActiveWorkspace","useActiveWorkspace","t0","iconComponent","hotKeyIndex","t1","Boolean","t2","Symbol","for","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","String","t17","t18","t19","TallCard","WorkspaceHome","useWorkspaces","workspaces","setQuery","useState","searchInput","useRef","e","target","value","handleQuery","toLowerCase","includes","filter","filteredWorkspaces","handleKeypress","event","current","document","activeElement","parseInt","key","length","window","addEventListener","removeEventListener","useEffect","workspace_0","index_0","map","workspaceHome","definePlugin","tools","HomeIcon","component","workspaceHomeConfig","projectId","basePath","plugins"],"mappings":";;;;;;;;AAOA,MAAMA,aAAcC,CAAAA,SAAgD;AAClE,MAAIC,mBAAmBD,IAAI,EAAG,4BAAQ,MAAA,CAAA,CAAI;AAC1C,MAAIE,eAAeF,IAAI,EAAG,QAAOA;AAEnC,GAEMG,YAAYC,OAAOC,IAAI,EAACC,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA;AAgB9B,SAAeC,iBAAAC,OAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACb;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAkCL,OAClC;AAAA,IAAAM;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAA+CP,WAE/C;AAAA,IAAAQ;AAAAA,EAAAA,IAA6BC,mBAAAA;AAAoB,MAAAC;AAAAZ,WAAAK,QACbO,KAAAxB,WAAWiB,IAAI,GAACL,OAAAK,MAAAL,OAAAY,MAAAA,KAAAZ,EAAA,CAAA;AAApD,QAAAa,gBAAoCD,IAapCE,cAAoBX,QAAQ,MAAM,KAAd,IAAuBA,QAAQ,GAGhCY,KAAAC,CAAAA,CAAQb;AAAM,MAAAc;AAAAjB,IAAA,CAAA,MAAAkB,uBAAAC,IAAA,2BAAA,KACNF,KAAA,CAAC,GAAG,GAAG,GAAG,CAAC,GAACjB,OAAAiB,MAAAA,KAAAjB,EAAA,CAAA;AAAA,MAAAoB;AAAApB,IAAA,CAAA,MAAAO,QAAAP,SAAAU,sBAGgBU,KAAAA,MAAMV,mBAAmBH,IAAI,GAACP,OAAAO,MAAAP,OAAAU,oBAAAV,OAAAoB,MAAAA,KAAApB,EAAA,CAAA;AAAA,MAAAqB;AAAArB,IAAA,CAAA,MAAAkB,uBAAAC,IAAA,2BAAA,KAC/CE,KAAA,CAAC,GAAG,GAAG,GAAG,CAAC,GAACrB,OAAAqB,MAAAA,KAAArB,EAAA,CAAA;AAAA,MAAAsB;AAAAtB,WAAAa,iBACnCS,KAAAT,gBAAgB,oBAAC,WAAA,EAAWzB,UAAAA,WAAWyB,aAAa,EAAA,CAAE,IAAtD,MAAyEb,OAAAa,eAAAb,OAAAsB,MAAAA,KAAAtB,EAAA,CAAA;AAAA,MAAAuB;AAAAvB,IAAA,CAAA,MAAAkB,uBAAAC,IAAA,2BAAA,KAE1DI,KAAA,CAAC,GAAG,GAAG,GAAG,CAAC,GAACvB,OAAAuB,MAAAA,KAAAvB,EAAA,CAAA;AAErB,QAAAwB,KAAAlB,SAAAC;AAAa,MAAAkB;AAAAzB,YAAAwB,MADhBC,yBAAC,MAAA,EAAW,MAAA,GAAU,QAAA,YAAwB,cAAA,YAC3CD,UAAAA,GAAAA,CACH,GAAOxB,QAAAwB,IAAAxB,QAAAyB,MAAAA,KAAAzB,EAAA,EAAA;AAAA,MAAA0B;AAAA1B,YAAAQ,YACNkB,KAAAlB,WAAW,oBAAC,MAAA,EAAK,OAAA,IAAOA,UAAAA,UAAS,IAAjC,MAA+CR,QAAAQ,UAAAR,QAAA0B,MAAAA,KAAA1B,EAAA,EAAA;AAAA,MAAA2B;AAAA3B,IAAA,EAAA,MAAAyB,MAAAzB,UAAA0B,MALpDC,MAAA,oBAAC,OAAU,MAAA,GACT,UAAA,qBAAC,OAAA,EAAa,OAAAJ,IACZE,UAAAA;AAAAA,IAAAA;AAAAA,IAGCC;AAAAA,EAAAA,EAAAA,CACH,GACF,GAAM1B,QAAAyB,IAAAzB,QAAA0B,IAAA1B,QAAA2B,OAAAA,MAAA3B,EAAA,EAAA;AAAA,MAAA4B;AAAA5B,IAAA,EAAA,MAAA2B,OAAA3B,UAAAsB,MATRM,MAAA,qBAAC,MAAA,EAAW,OAAA,UAAc,KAAAP,IACvBC,UAAAA;AAAAA,IAAAA;AAAAA,IACDK;AAAAA,EAAAA,EAAAA,CAQF,GAAO3B,QAAA2B,KAAA3B,QAAAsB,IAAAtB,QAAA4B,OAAAA,MAAA5B,EAAA,EAAA;AAAA,MAAA6B;AAAA7B,IAAA,EAAA,MAAA4B,OAAA5B,UAAAoB,MAbbS,0BAAC,MAAA,EAAkB,aAAA,GAAc,cAC/B,8BAAC,OAAA,EACC,UAAA,oBAAC,UAAY,MAAA,SAAa,MAAA,WAAmB,SAAAT,IAC3CQ,UAAAA,IAAAA,CAWF,GACF,GACF,GAAO5B,QAAA4B,KAAA5B,QAAAoB,IAAApB,QAAA6B,OAAAA,MAAA7B,EAAA,EAAA;AAAA,MAAA8B;AAAA9B,IAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,KAGHW,0BAAC,MAAA,EAAW,SAAU,QAAA,YACpB,UAAA,oBAAC,cAAA,CAAA,CAAY,EAAA,CACf,GAAO9B,QAAA8B,OAAAA,MAAA9B,EAAA,EAAA;AAAA,MAAA+B;AAAA/B,YAAAS,WAJXsB,MAAA,oBAAC,QAAkB,gBAAc,WAAA,GAC/B,+BAAC,MAAA,EAAY,QAAA,QAAa,OAAA,UAAc,KAAA,GACtCD,UAAAA;AAAAA,IAAAA;AAAAA,IAGA,oBAAC,QAAW,SAAU,QAAA,YAAwB,cAAA,YAC3CrB,UAAAA,QAAAA,CACH;AAAA,EAAA,EAAA,CACF,EAAA,CACF,GAAOT,QAAAS,SAAAT,QAAA+B,OAAAA,MAAA/B,EAAA,EAAA;AAAA,MAAAgC;AAAAhC,IAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,KACaa,MAAA,CAAC,GAAG,GAAG,GAAG,CAAC,GAAChC,QAAAgC,OAAAA,MAAAhC,EAAA,EAAA;AAAA,MAAAiC;AAAAjC,IAAA,EAAA,MAAAc,eAAAd,UAAAI,SAE3B6B,MAAA,CAAC7B,SAASU,cAAc,yBACtB,SAAA,EAAc,OAACoB,OAAOpB,WAAW,CAAC,GAAY,SAAA,EAAA,CAAC,IADjD,MAEOd,QAAAc,aAAAd,QAAAI,OAAAJ,QAAAiC,OAAAA,MAAAjC,EAAA,EAAA;AAAA,MAAAmC;AAAAnC,YAAAiC,OAJZE,MAAA,oBAAC,MAAA,EAAmB,cAAAH,KAClB,UAAA,oBAAC,MAAA,EAAY,QAAA,QAAa,OAAA,UAAiB,SAAA,YACxCC,UAAAA,IAAAA,CAGH,EAAA,CACF,GAAOjC,QAAAiC,KAAAjC,QAAAmC,OAAAA,MAAAnC,EAAA,EAAA;AAAA,MAAAoC;AAAApC,IAAA,EAAA,MAAA6B,OAAA7B,UAAA+B,OAAA/B,EAAA,EAAA,MAAAmC,OAlCTC,2BAAC,MAAA,EAAc,SAAA,GAAQ,KAAAnB,IAAwB,UAAA,GAC7CY,UAAAA;AAAAA,IAAAA;AAAAA,IAiBAE;AAAAA,IAUAI;AAAAA,EAAAA,GAiBF,GAAOnC,QAAA6B,KAAA7B,QAAA+B,KAAA/B,QAAAmC,KAAAnC,QAAAoC,OAAAA,MAAApC,EAAA,EAAA;AAAA,MAAAqC;AAAA,SAAArC,EAAA,EAAA,MAAAe,MAAAf,UAAAoC,OA9CTC,0BAAC,MAAA,EAAgB,WAAAtB,IAAqB,MAAA,WACpCqB,UAAAA,IAAAA,CA8CF,GAAOpC,QAAAe,IAAAf,QAAAoC,KAAApC,QAAAqC,OAAAA,MAAArC,EAAA,EAAA,GA/CPqC;AA+CO;AC1FX,MAAMC,WAAW7C,OAAOC,IAAI,EAACC,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA;AAI7B,SAAe0C,gBAAA;AAAA,QAAAvC,IAAAC,EAAA,EAAA,GACaW,KAAA4B,cAAAA;AAAe,MAAAC;AAAAzC,WAAAY,MAAzC,CAAA,EAAA,GAAA6B,UAAA,IAA0B7B,IAAeZ,OAAAY,IAAAZ,OAAAyC,cAAAA,aAAAzC,EAAA,CAAA;AACzC,QAAA;AAAA,IAAAU;AAAAA,EAAAA,IAA6BC,mBAAAA,GAG7B,CAAAP,OAAAsC,QAAA,IAA0BC,SAAS,EAAE,GACrCC,cAAoBC,OAAO,IAAI;AAAC,MAAA9B;AAAAf,IAAA,CAAA,MAAAkB,uBAAAC,IAAA,2BAAA,KAE9BJ,KAAA+B,CAAAA,MAAA;AACEJ,aAASI,EAACC,OAAOC,KAAM;AAAA,EAAC,GACzBhD,OAAAe,MAAAA,KAAAf,EAAA,CAAA;AAHH,QAAAiD,cAAoBlC;AAKnB,MAAAE;AAAA,MAAAjB,EAAA,CAAA,MAAAI,SAAAJ,SAAAyC,YAAA;AAAA,QAAArB;AAAApB,aAAAI,SAI0BgB,MAAAlB,CAAAA,cAErBA,UAASK,KAAK2C,YAAAA,EAAcC,SAAU/C,MAAK8C,YAAAA,CACiB,KAA5DhD,UAASO,QAAQyC,cAAcC,SAAU/C,MAAK8C,aAAc,KAC5DhD,UAASI,MAAM4C,YAAAA,EAAcC,SAAU/C,MAAK8C,YAAAA,CAAc,GAE7DlD,OAAAI,OAAAJ,OAAAoB,OAAAA,MAAApB,EAAA,CAAA,GANMiB,KAAAwB,WAAUW,OAAQhC,GAMxB,GAACpB,OAAAI,OAAAJ,OAAAyC,YAAAzC,OAAAiB;AAAAA,EAAA;AAAAA,SAAAjB,EAAA,CAAA;AAPJ,QAAAqD,qBACEpC;AAOqB,MAAAG,IAAAC;AAAArB,IAAA,CAAA,MAAAI,SAAAJ,SAAAU,sBAAAV,EAAA,EAAA,MAAAyC,cAGbrB,KAAAA,MAAA;AACR,UAAAkC,iBAAuBC,CAAAA,UAAA;AAErB,UAAInD,SAASwC,YAAWY,YAAaC,SAAQC;AAAc;AAI3D,YAAAvD,QAAcwD,SAASJ,MAAKK,KAAM,EAAE,IAAI;AACpCzD,eAAS,KAAKA,QAAQsC,WAAUoB,UAClCnD,mBAAmB+B,WAAWtC,KAAK,EAACI,IAAM;AAAA,IAC3C;AAGHuD,WAAAA,OAAMC,iBAAkB,YAAYT,cAAc,GAE3C,MAAA;AACLQ,aAAME,oBAAqB,YAAYV,cAAc;AAAA,IAAC;AAAA,EACvD,GACAjC,MAACjB,OAAOqC,YAAY/B,kBAAkB,GAACV,OAAAI,OAAAJ,OAAAU,oBAAAV,QAAAyC,YAAAzC,QAAAoB,IAAApB,QAAAqB,OAAAD,KAAApB,EAAA,EAAA,GAAAqB,KAAArB,EAAA,EAAA,IAlB1CiE,UAAU7C,IAkBPC,EAAuC;AAAC,MAAAC;AAAAtB,IAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,KAILG,KAAA,CAAC,GAAG,GAAG,GAAG,CAAC,GAACtB,QAAAsB,MAAAA,KAAAtB,EAAA,EAAA;AAAA,MAAAuB;AAAAvB,IAAA,EAAA,6BAAAmB,IAAA,2BAAA,KAGxCI,yBAAC,SAAA,EAAQ,UAAA,aAAA,CAAU,GAAUvB,QAAAuB,MAAAA,KAAAvB,EAAA,EAAA;AAAA,MAAAwB;AAAAxB,IAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,KACdK,KAAA,CAAC,GAAG,GAAG,GAAG,CAAC,GAACxB,QAAAwB,MAAAA,KAAAxB,EAAA,EAAA;AAAA,MAAAyB;AAAAzB,IAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,KAGrBM,KAAA,oBAAC,MAAA,EAAW,MAAA,GAAU,QAAA,YAAW,oBAEjC,GAAOzB,QAAAyB,MAAAA,KAAAzB,EAAA,EAAA;AAAA,MAAA0B;AAAA1B,YAAAI,SAHTsB,KAAA,qBAAC,OAAA,EAAa,OAAA,GACZD,UAAAA;AAAAA,IAAAA;AAAAA,wBAGC,WAAA,EAAemB,KAAAA,aAAoBxC,OAAAA,OAAiB6C,UAAAA,YAAAA,CAAW;AAAA,EAAA,EAAA,CAClE,GAAQjD,QAAAI,OAAAJ,QAAA0B,MAAAA,KAAA1B,EAAA,EAAA;AAAA,MAAA2B;AAAA,MAAA3B,EAAA,EAAA,MAAAqD,sBAAArD,UAAAI,OAAA;AAAA,QAAAwB;AAAA5B,cAAAI,SAEkBwB,OAAAA,CAAAsC,aAAAC,YACtB,oBAAC,kBAAA,EAEYjE,WAAAA,aACJC,OAAAA,SACAC,SAHFF,YAASK,IAGF,GAEfP,QAAAI,OAAAJ,QAAA4B,QAAAA,OAAA5B,EAAA,EAAA,GAPA2B,MAAA0B,mBAAkBe,IAAKxC,IAOvB,GAAC5B,QAAAqD,oBAAArD,QAAAI,OAAAJ,QAAA2B;AAAAA,EAAA;AAAAA,UAAA3B,EAAA,EAAA;AAAA,MAAA4B;AAAA5B,YAAA2B,OARJC,MAAA,oBAAC,OACED,UAAAA,IAAAA,CAQH,GAAM3B,QAAA2B,KAAA3B,QAAA4B,OAAAA,MAAA5B,EAAA,EAAA;AAAA,MAAA6B;AAAA,SAAA7B,EAAA,EAAA,MAAA4B,OAAA5B,UAAA0B,MAtBlBG,0BAAC,UAAA,EAAc,MAAA,eACb,UAAA,oBAAC,MAAA,EAAe,WAAA,UAAkB,SAAAP,IAChC,8BAAC,WAAA,EACC,UAAA,qBAAC,OAAA,EAAa,OAAA,GACZC,UAAAA;AAAAA,IAAAA;AAAAA,IACA,oBAAC,MAAA,EAAc,SAAAC,IAAsB,QAAA,GAAW,QAAA,GAC9C,UAAA,qBAAC,OAAA,EAAa,UACZE,UAAAA;AAAAA,MAAAA;AAAAA,MAMAE;AAAAA,IAAAA,EAAAA,CAUF,EAAA,CACF;AAAA,EAAA,GACF,GACF,EAAA,CACF,EAAA,CACF,GAAW5B,QAAA4B,KAAA5B,QAAA0B,IAAA1B,QAAA6B,OAAAA,MAAA7B,EAAA,EAAA,GA5BX6B;AA4BW;ACjFR,MAAMwC,gBAAgBC,aAAa,OACjC;AAAA,EACL/D,MAAM;AAAA,EACNgE,OAAO,CACL;AAAA,IACEjE,OAAO;AAAA,IACPC,MAAM;AAAA,IACNF,MAAMmE;AAAAA,IACNC,WAAWlC;AAAAA,EAAAA,CACZ;AAEL,EACD,GAOYmC,sBAAsBA,CAAC;AAAA,EAClCC,YAAY;AAAA,EACZlE,UAAU;AACc,OAAyB;AAAA,EACjDF,MAAM;AAAA,EACND,OAAO;AAAA,EACPsE,UAAU;AAAA,EACVD;AAAAA,EACAlE;AAAAA,EACAJ,MAAMmE;AAAAA,EACNK,SAAS,CAACR,cAAAA,CAAe;AAC3B;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity-plugin-workspace-home",
3
- "version": "2.0.2",
3
+ "version": "3.0.0",
4
4
  "description": "A home screen for your multi-workspace Sanity Studio",
5
5
  "keywords": [
6
6
  "sanity",
@@ -15,8 +15,8 @@
15
15
  "url": "git+ssh://git@github.com/sanity-io/plugins.git",
16
16
  "directory": "plugins/sanity-plugin-workspace-home"
17
17
  },
18
- "license": "MIT",
19
18
  "author": "Sanity <hello@sanity.io>",
19
+ "license": "MIT",
20
20
  "type": "module",
21
21
  "exports": {
22
22
  ".": "./dist/index.js",
@@ -30,26 +30,26 @@
30
30
  "@sanity/icons": "^3.7.4",
31
31
  "@sanity/ui": "^3.1.11",
32
32
  "react-compiler-runtime": "^1.0.0",
33
- "react-is": "^19.2.1"
33
+ "react-is": "^19.2.3"
34
34
  },
35
35
  "devDependencies": {
36
- "@sanity/pkg-utils": "^10.1.1",
36
+ "@sanity/pkg-utils": "^10.2.1",
37
37
  "@types/react": "^19.2.7",
38
38
  "@types/react-is": "^19.2.0",
39
- "@typescript/native-preview": "7.0.0-dev.20251202.1",
39
+ "@typescript/native-preview": "7.0.0-dev.20251216.1",
40
40
  "babel-plugin-react-compiler": "^1.0.0",
41
41
  "babel-plugin-styled-components": "^2.1.4",
42
- "eslint": "^9.39.1",
43
- "react": "^19.2.1",
44
- "sanity": "^4.20.3",
42
+ "eslint": "^9.39.2",
43
+ "react": "^19.2.3",
44
+ "sanity": "^5.0.0",
45
45
  "typescript": "5.9.3",
46
- "@repo/eslint-config": "0.0.4",
47
- "@repo/package.config": "0.0.0",
48
- "@repo/tsconfig": "1.0.0"
46
+ "@repo/eslint-config": "0.0.7",
47
+ "@repo/tsconfig": "1.0.0",
48
+ "@repo/package.config": "0.0.0"
49
49
  },
50
50
  "peerDependencies": {
51
- "react": "^18.3 || ^19",
52
- "sanity": "^4",
51
+ "react": "^19.2",
52
+ "sanity": "^5.0.0-0",
53
53
  "styled-components": "^6.1"
54
54
  },
55
55
  "engines": {
@@ -57,7 +57,6 @@
57
57
  },
58
58
  "scripts": {
59
59
  "build": "pkg build --strict --check --clean",
60
- "lint": "eslint .",
61
- "typecheck": "(cd ../.. && tsgo --project plugins/sanity-plugin-workspace-home/tsconfig.json)"
60
+ "lint": "eslint ."
62
61
  }
63
62
  }