@sanity/dashboard 6.0.6 → 6.0.7
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/index.js +668 -524
- package/dist/index.js.map +1 -1
- package/package.json +5 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/DashboardWidgetContainer.tsx","../src/containers/DashboardContext.tsx","../src/containers/WidgetContainer.tsx","../src/versionedClient.ts","../src/widgets/projectInfo/ProjectInfo.tsx","../src/widgets/projectInfo/index.ts","../src/widgets/projectUsers/ProjectUser.tsx","../src/widgets/projectUsers/ProjectUsers.tsx","../src/widgets/projectUsers/index.ts","../src/widgets/sanityTutorials/dataAdapter.ts","../src/widgets/sanityTutorials/Tutorial.tsx","../src/widgets/sanityTutorials/SanityTutorials.tsx","../src/widgets/sanityTutorials/index.ts","../src/components/DashboardLayout.tsx","../src/components/WidgetGroup.tsx","../src/containers/Dashboard.tsx","../src/plugin.tsx"],"sourcesContent":["import {Card, Box, Heading} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nconst Root = styled(Card)`\n display: flex;\n flex-direction: column;\n justify-content: stretch;\n height: 100%;\n box-sizing: border-box;\n position: relative;\n`\n\nconst Header = styled(Card)`\n position: sticky;\n top: 0;\n z-index: 2;\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n`\n\nconst Footer = styled(Card)`\n position: sticky;\n overflow: hidden;\n bottom: 0;\n z-index: 2;\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n margin-top: auto;\n`\n\nconst Content = styled(Box)`\n position: relative;\n z-index: 1;\n height: stretch;\n min-height: 21.5em;\n\n @media (min-width: ${({theme}) => getTheme_v2(theme).media[0]}px) {\n overflow-y: auto;\n outline: none;\n }\n`\n\ninterface DashboardWidgetProps {\n header?: string\n children: React.ReactNode\n footer?: React.ReactNode\n ref?: React.Ref<HTMLDivElement>\n}\n\nexport function DashboardWidgetContainer(props: DashboardWidgetProps) {\n const {header, children, footer, ref} = props\n\n return (\n <Root radius={3} display=\"flex\" ref={ref}>\n {header && (\n <Header borderBottom paddingX={3} paddingY={4}>\n <Heading size={1} textOverflow=\"ellipsis\">\n {header}\n </Heading>\n </Header>\n )}\n {children && <Content>{children}</Content>}\n {footer && <Footer borderTop>{footer}</Footer>}\n </Root>\n )\n}\n","import {createContext, useContext} from 'react'\n\nimport {type DashboardConfig} from '../types'\n\nexport const DashboardContext = createContext<DashboardConfig>({widgets: []})\n\nexport function useDashboardConfig(): DashboardConfig {\n return useContext(DashboardContext)\n}\n","import {Card} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {type DashboardWidget} from '../types'\nimport {useDashboardConfig} from './DashboardContext'\n\nexport function WidgetContainer(props: DashboardWidget) {\n const config = useDashboardConfig()\n const layout = useMemo(\n () => ({\n ...props.layout,\n ...config.layout,\n }),\n [props.layout, config.layout],\n )\n\n const Widget = props.component\n\n return (\n <Card shadow={1} data-width={layout.width} data-height={layout.height}>\n <Widget />\n </Card>\n )\n}\n","import {useClient} from 'sanity'\n\nexport function useVersionedClient() {\n return useClient({apiVersion: '2024-08-01'})\n}\n","import {Box, Card, Stack, Heading, Grid, Label, Text, Code, Button} from '@sanity/ui'\nimport {useEffect, useMemo, useState} from 'react'\nimport {type Subscription} from 'rxjs'\n\nimport {DashboardWidgetContainer} from '../../components/DashboardWidgetContainer'\nimport {WidgetContainer} from '../../containers/WidgetContainer'\nimport {type DashboardWidget} from '../../types'\nimport {useVersionedClient} from '../../versionedClient'\nimport {type App, type ProjectInfoProps, type ProjectData, type UserApplication} from './types'\n\nfunction isUrl(url?: string) {\n return url && /^https?:\\/\\//.test(url)\n}\n\nfunction getGraphQLUrl(projectId: string, dataset: string) {\n return `https://${projectId}.api.sanity.io/v1/graphql/${dataset}/default`\n}\n\nfunction getGroqUrl(projectId: string, dataset: string) {\n return `https://${projectId}.api.sanity.io/v1/groq/${dataset}`\n}\n\nfunction getManageUrl(projectId: string) {\n return `https://manage.sanity.io/projects/${projectId}`\n}\n\nconst NO_EXPERIMENTAL: DashboardWidget[] = []\nconst NO_DATA: ProjectData[] = []\n\nexport function ProjectInfo(props: ProjectInfoProps) {\n const {__experimental_before = NO_EXPERIMENTAL, data = NO_DATA} = props\n const [studioApps, setStudioApps] = useState<UserApplication[] | {error: string} | undefined>()\n const [graphQLApi, setGraphQLApi] = useState<string | {error: string} | undefined>()\n const versionedClient = useVersionedClient()\n const {projectId = 'unknown', dataset = 'unknown'} = versionedClient.config()\n\n useEffect(() => {\n const subscriptions: Subscription[] = []\n\n subscriptions.push(\n versionedClient.observable\n .request<UserApplication[]>({uri: '/user-applications', tag: 'dashboard.project-info'})\n .subscribe({\n next: (result) => setStudioApps(result.filter((app) => app.type === 'studio')),\n error: (error) => {\n console.error('Error while resolving user applications', error)\n setStudioApps({\n error: 'Something went wrong while resolving user applications. See console.',\n })\n },\n }),\n )\n\n // ping assumed graphql endpoint\n subscriptions.push(\n versionedClient.observable\n .request({\n method: 'HEAD',\n uri: `/graphql/${dataset}/default`,\n tag: 'dashboard.project-info.graphql-api',\n })\n .subscribe({\n next: () => setGraphQLApi(getGraphQLUrl(projectId, dataset)),\n error: (error) => {\n if (error.statusCode === 404) {\n setGraphQLApi(undefined)\n } else {\n console.error('Error while looking for graphQLApi', error)\n setGraphQLApi({\n error: 'Something went wrong while looking up graphQLApi. See console.',\n })\n }\n },\n }),\n )\n\n return () => {\n subscriptions.forEach((s) => s.unsubscribe())\n }\n }, [dataset, projectId, versionedClient, setGraphQLApi])\n\n const assembleTableRows = useMemo(() => {\n let result: App[] = [\n {\n title: 'Sanity project',\n rows: [\n {title: 'Project ID', value: projectId},\n {title: 'Dataset', value: dataset},\n ],\n },\n ]\n\n const apps: App[] = data.filter((item) => item.category === 'apps')\n\n // Handle studios\n ;(Array.isArray(studioApps) ? studioApps : []).forEach((app) => {\n apps.push({\n title: app.title || 'Studio',\n value: app.urlType === 'internal' ? `https://${app.appHost}.sanity.studio` : app.appHost,\n })\n })\n\n if (apps.length > 0) {\n result = result.concat([{title: 'Apps', rows: apps}])\n }\n\n // Handle APIs\n result = result.concat(\n [\n {\n title: 'APIs',\n rows: [\n {title: 'GROQ', value: getGroqUrl(projectId, dataset)},\n {\n title: 'GraphQL',\n value: (typeof graphQLApi === 'object' ? 'Error' : graphQLApi) ?? 'Not deployed',\n },\n ],\n },\n ],\n data.filter((item) => item.category === 'apis'),\n )\n\n // Handle whatever else there might be\n const otherStuff: Record<string, ProjectData[]> = {}\n data.forEach((item) => {\n if (item.category && item.category !== 'apps' && item.category !== 'apis') {\n const group = otherStuff[item.category] ?? []\n group.push(item)\n otherStuff[item.category] = group\n }\n })\n Object.keys(otherStuff).forEach((category) => {\n result.push({title: category, rows: otherStuff[category]})\n })\n\n return result\n }, [graphQLApi, studioApps, projectId, dataset, data])\n\n return (\n <>\n {__experimental_before.map((widgetConfig, idx) => (\n // eslint-disable-next-line react/no-array-index-key -- static widget config never reorders\n <WidgetContainer key={idx} {...widgetConfig} />\n ))}\n <Box height=\"fill\" marginTop={__experimental_before?.length > 0 ? 4 : 0}>\n <DashboardWidgetContainer\n footer={\n <Button\n style={{width: '100%'}}\n paddingX={2}\n paddingY={4}\n mode=\"bleed\"\n tone=\"primary\"\n text=\"Manage project\"\n as=\"a\"\n href={getManageUrl(projectId)}\n />\n }\n >\n <Card paddingY={4} radius={2} aria-label=\"Project info\">\n <Stack gap={4}>\n <Box paddingX={3} as=\"header\">\n <Heading size={1} as=\"h2\" id=\"project_info_table\">\n Project info\n </Heading>\n </Box>\n {assembleTableRows.map((item) => {\n if (!item || !item.rows) {\n return null\n }\n\n return (\n <Stack key={item.title} gap={3}>\n <Card borderBottom padding={3}>\n <Label size={0} muted>\n {item.title}\n </Label>\n </Card>\n <Stack gap={4} paddingX={3}>\n {item.rows.map((row) => {\n const rowValue = typeof row.value === 'object' ? row.value.error : row.value\n return (\n <Grid key={`${rowValue ?? ''}-${row.title}`} gridTemplateColumns={2}>\n <Text weight=\"medium\">{row.title}</Text>\n {typeof row.value === 'object' && (\n <Text size={1}>{row.value?.error}</Text>\n )}\n {typeof row.value === 'string' && (\n <>\n {isUrl(row.value) ? (\n <Text size={1} style={{wordBreak: 'break-word'}}>\n <a href={row.value}>{row.value}</a>\n </Text>\n ) : (\n <Code size={1} style={{wordBreak: 'break-word'}}>\n {row.value}\n </Code>\n )}\n </>\n )}\n </Grid>\n )\n })}\n </Stack>\n </Stack>\n )\n })}\n </Stack>\n </Card>\n </DashboardWidgetContainer>\n </Box>\n </>\n )\n}\n","import {type LayoutConfig, type DashboardWidget} from '../../types'\nimport {ProjectInfo} from './ProjectInfo'\n\nexport function projectInfoWidget(config?: {layout?: LayoutConfig}): DashboardWidget {\n return {\n name: 'project-info',\n component: ProjectInfo,\n layout: config?.layout ?? {width: 'medium'},\n }\n}\n","import {RobotIcon} from '@sanity/icons/Robot'\nimport {Box, Flex, rem, Stack, Text} from '@sanity/ui'\nimport {useListFormat, type User, UserAvatar} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst Root = styled(Flex)`\n height: ${rem(33)}; // 33 = PREVIEW_SIZES.default.media.height\n box-sizing: content-box;\n`\n\nexport interface ProjectUserProps {\n user: User\n isRobot: boolean\n roles: string[]\n}\n\nexport function ProjectUser({user, isRobot, roles}: ProjectUserProps) {\n const listFormat = useListFormat({style: 'narrow'})\n return (\n <Root align=\"center\">\n <Flex align=\"center\" flex={1} gap={2}>\n <Box flex=\"none\">\n {isRobot ? (\n <Text size={2}>\n <RobotIcon />\n </Text>\n ) : (\n <UserAvatar user={user} />\n )}\n </Box>\n\n <Stack flex={1} gap={2}>\n <Text size={1} style={{color: 'inherit'}} textOverflow=\"ellipsis\" weight=\"medium\">\n {user.displayName}\n </Text>\n\n <Text muted size={1} textOverflow=\"ellipsis\">\n {listFormat.format(roles)}\n </Text>\n </Stack>\n </Flex>\n </Root>\n )\n}\n","import {Stack, Spinner, Box, Text, Button} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\nimport {from} from 'rxjs'\nimport {map, switchMap} from 'rxjs/operators'\nimport {type Role, type User, useUserStore} from 'sanity'\n\nimport {DashboardWidgetContainer} from '../../components/DashboardWidgetContainer'\nimport {useVersionedClient} from '../../versionedClient'\nimport {ProjectUser} from './ProjectUser'\n\nfunction getInviteUrl(projectId: string) {\n return `https://manage.sanity.io/projects/${projectId}/members`\n}\n\ninterface Member {\n id: string\n roles: Role[]\n isRobot: boolean\n isCurrentUser: boolean\n createdAt: string\n}\n\ninterface Project {\n id: string\n members: Member[]\n}\n\nexport function ProjectUsers() {\n const [project, setProject] = useState<Project | undefined>()\n const [users, setUsers] = useState<User[] | undefined>()\n const [error, setError] = useState<Error | undefined>()\n\n const userStore = useUserStore()\n const versionedClient = useVersionedClient()\n\n const fetchData = useCallback(() => {\n const {projectId} = versionedClient.config()\n const subscription = versionedClient.observable\n .request<Project>({\n uri: `/projects/${projectId}`,\n tag: 'dashboard.project-users',\n })\n .pipe(\n switchMap((_project) =>\n from(userStore.getUsers(_project.members.map((mem) => mem.id))).pipe(\n map((_users) => ({project: _project, users: _users})),\n ),\n ),\n )\n .subscribe({\n next: ({users: _users, project: _project}) => {\n setProject(_project)\n setUsers(\n (Array.isArray(_users) ? _users : [_users]).sort((userA, userB) =>\n sortUsersByRobotStatus(userA, userB, _project),\n ),\n )\n },\n error: (e: Error) => setError(e),\n })\n\n return () => subscription.unsubscribe()\n }, [userStore, versionedClient])\n\n useEffect(() => fetchData(), [fetchData])\n\n const handleRetryFetch = useCallback(() => fetchData(), [fetchData])\n\n const isLoading = !users || !project\n\n if (error) {\n return (\n <DashboardWidgetContainer header=\"Project users\">\n <Box padding={4}>\n <Stack gap={3}>\n <Text>Something went wrong while fetching data.</Text>\n <Box>\n <Button\n mode=\"ghost\"\n text=\"Retry\"\n title=\"Retry users fetch\"\n onClick={handleRetryFetch}\n />\n </Box>\n </Stack>\n </Box>\n </DashboardWidgetContainer>\n )\n }\n\n return (\n <DashboardWidgetContainer\n header=\"Project users\"\n footer={\n <Button\n style={{width: '100%'}}\n paddingX={2}\n paddingY={4}\n mode=\"bleed\"\n tone=\"primary\"\n text=\"Manage members\"\n as=\"a\"\n loading={isLoading}\n href={isLoading ? undefined : getInviteUrl(project.id)}\n />\n }\n >\n {isLoading && (\n <Box paddingY={5} paddingX={2}>\n <Stack gap={4}>\n <Text align=\"center\" muted size={1}>\n <Spinner />\n </Text>\n <Text align=\"center\" size={1} muted>\n Loading items…\n </Text>\n </Stack>\n </Box>\n )}\n\n {!isLoading && (\n <Stack gap={3} padding={3}>\n {users?.map((user) => {\n const membership = project.members.find((member) => member.id === user.id)\n return (\n <ProjectUser\n key={user.id}\n user={user}\n isRobot={membership?.isRobot ?? false}\n roles={membership?.roles.map((role) => role.title) || []}\n />\n )\n })}\n </Stack>\n )}\n </DashboardWidgetContainer>\n )\n}\n\nfunction sortUsersByRobotStatus(userA: User, userB: User, project: Project) {\n const {members} = project\n const membershipA = members.find((member) => member.id === userA?.id)\n const membershipB = members.find((member) => member.id === userB?.id)\n\n // On ties, sort by when the user was added\n if (membershipA?.isRobot === membershipB?.isRobot) {\n return (membershipA?.createdAt || '') > (membershipB?.createdAt || '') ? 1 : -1\n }\n\n // Robots go to the bottom\n return membershipA?.isRobot ? 1 : -1\n}\n","import {type LayoutConfig, type DashboardWidget} from '../../types'\nimport {ProjectUsers} from './ProjectUsers'\n\nexport function projectUsersWidget(config?: {layout?: LayoutConfig}): DashboardWidget {\n return {\n name: 'project-users',\n component: ProjectUsers,\n layout: config?.layout,\n }\n}\n","import {createImageUrlBuilder} from '@sanity/image-url'\nimport {useMemo} from 'react'\n\nimport {useVersionedClient} from '../../versionedClient'\n\nconst tutorialsProjectConfig = {\n projectId: '3do82whm',\n dataset: 'next',\n}\n\nexport interface Guide {\n _type?: string\n slug?: {current: string}\n presenter?: {\n name?: string\n }\n}\n\nexport interface FeedItem {\n _id: string\n title?: string\n poster?: string\n category?: string\n guideOrTutorial?: Guide\n externalLink?: string\n presenter?: {\n name?: string\n }\n hasVideo?: boolean\n}\n\nexport function useDataAdapter() {\n const versionedClient = useVersionedClient()\n return useMemo(\n () => ({\n getFeed: (templateRepoId: string) => {\n const uri = templateRepoId\n ? `/addons/dashboard?templateRepoId=${templateRepoId}`\n : '/addons/dashboard'\n return versionedClient.observable.request<{items: FeedItem[]}>({\n uri,\n tag: 'dashboard.sanity-tutorials',\n withCredentials: false,\n })\n },\n urlBuilder: createImageUrlBuilder(tutorialsProjectConfig),\n }),\n [versionedClient],\n )\n}\n","import {PlayIcon} from '@sanity/icons/Play'\nimport {Card, Box, Heading, Flex, Text, Stack} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nconst PlayIconBox = styled(Box)`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n &:before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 2.75em;\n height: 2.75em;\n border-radius: 50%;\n background: ${({theme}) => getTheme_v2(theme).color.bg};\n opacity: 0.75;\n }\n`\n\nconst Root = styled(Flex)`\n &:hover {\n ${PlayIconBox} {\n &:before {\n opacity: 1;\n }\n }\n }\n`\n\nconst PosterCard = styled(Card)`\n width: 100%;\n padding-bottom: calc(9 / 16 * 100%);\n position: relative;\n`\n\nconst Poster = styled.img`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n object-fit: cover;\n display: block;\n\n &:not([src]) {\n display: none;\n }\n`\n\nexport interface TutorialProps {\n title: string\n posterURL?: string\n href: string\n showPlayIcon?: boolean\n presenterName?: string\n presenterSubtitle?: string\n}\n\nexport function Tutorial(props: TutorialProps) {\n const {title, posterURL, showPlayIcon, href, presenterName, presenterSubtitle} = props\n\n return (\n <Root flex={1}>\n <Card\n sizing=\"border\"\n flex={1}\n padding={2}\n radius={2}\n as=\"a\"\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{position: 'relative'}}\n >\n <Flex direction=\"column\" style={{height: '100%'}}>\n {posterURL && (\n <PosterCard marginBottom={1}>\n <Poster src={posterURL} />\n {showPlayIcon && (\n <PlayIconBox display=\"flex\">\n <Text align=\"center\">\n <PlayIcon />\n </Text>\n </PlayIconBox>\n )}\n </PosterCard>\n )}\n <Flex direction=\"column\" justify=\"space-between\" paddingY={2} flex={1}>\n <Heading as=\"h3\" size={1}>\n {title}\n </Heading>\n <Box marginTop={4}>\n <Stack gap={2} flex={1}>\n <Text size={1}>{presenterName}</Text>\n <Text size={0} style={{opacity: 0.7}}>\n {presenterSubtitle}\n </Text>\n </Stack>\n </Box>\n </Flex>\n </Flex>\n </Card>\n </Root>\n )\n}\n","import {Flex} from '@sanity/ui'\nimport {useEffect, useState} from 'react'\n\nimport {DashboardWidgetContainer} from '../../components/DashboardWidgetContainer'\nimport {type FeedItem, type Guide, useDataAdapter} from './dataAdapter'\nimport {Tutorial} from './Tutorial'\n\nfunction createUrl(slug: {current: string}, type?: string) {\n if (type === 'tutorial') {\n return `https://www.sanity.io/docs/tutorials/${slug.current}`\n } else if (type === 'guide') {\n return `https://www.sanity.io/docs/guides/${slug.current}`\n }\n return false\n}\n\nexport interface SanityTutorialsProps {\n templateRepoId: string\n}\n\nexport function SanityTutorials(props: SanityTutorialsProps) {\n const {templateRepoId} = props\n const [feedItems, setFeedItems] = useState<FeedItem[]>([])\n\n const {getFeed, urlBuilder} = useDataAdapter()\n\n useEffect(() => {\n const subscription = getFeed(templateRepoId).subscribe((response) => {\n setFeedItems(response.items)\n })\n return () => {\n subscription.unsubscribe()\n }\n }, [setFeedItems, getFeed, templateRepoId])\n\n const title = 'Learn about Sanity'\n\n return (\n <DashboardWidgetContainer header={title}>\n <Flex as=\"ul\" overflow=\"auto\" align=\"stretch\" paddingY={2}>\n {feedItems?.map((feedItem, index) => {\n if (!feedItem.title || (!feedItem.guideOrTutorial && !feedItem.externalLink)) {\n return null\n }\n const presenter = feedItem.presenter || feedItem.guideOrTutorial?.presenter || {}\n const subtitle = feedItem.category\n const {guideOrTutorial = {} as Guide} = feedItem\n const href =\n (guideOrTutorial.slug\n ? createUrl(guideOrTutorial.slug, guideOrTutorial._type)\n : feedItem.externalLink) || feedItem.externalLink\n\n return (\n <Flex\n as=\"li\"\n key={feedItem._id}\n paddingRight={index < feedItems?.length - 1 ? 1 : 3}\n paddingLeft={index === 0 ? 3 : 0}\n align=\"stretch\"\n style={{minWidth: 272, width: '30%'}}\n >\n <Tutorial\n title={feedItem.title}\n href={href ?? ''}\n presenterName={presenter.name}\n presenterSubtitle={subtitle}\n showPlayIcon={feedItem.hasVideo}\n posterURL={\n feedItem.poster ? urlBuilder.image(feedItem.poster).height(360).url() : undefined\n }\n />\n </Flex>\n )\n })}\n </Flex>\n </DashboardWidgetContainer>\n )\n}\n","import {type LayoutConfig, type DashboardWidget} from '../../types'\nimport {SanityTutorials} from './SanityTutorials'\n\nexport function sanityTutorialsWidget(config?: {layout?: LayoutConfig}): DashboardWidget {\n return {\n name: 'sanity-tutorials',\n component: SanityTutorials,\n layout: config?.layout ?? {width: 'full'},\n }\n}\n","import {Container} from '@sanity/ui'\n\nexport function DashboardLayout({children}: {children: React.ReactNode}) {\n return (\n <Container width={4} padding={4} sizing=\"border\" style={{height: '100%', overflowY: 'auto'}}>\n {children}\n </Container>\n )\n}\n","import {Box, Card, Grid, Text} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {styled, css} from 'styled-components'\n\nimport {WidgetContainer} from '../containers/WidgetContainer'\nimport {type DashboardConfig, type LayoutConfig, type DashboardWidget} from '../types'\n\nconst media = {\n small: (...args: Parameters<typeof css>) => css`\n @media (min-width: ${({theme}) => getTheme_v2(theme).media[0]}px) {\n ${css(...args)}\n }\n `,\n medium: (...args: Parameters<typeof css>) => css`\n @media (min-width: ${({theme}) => getTheme_v2(theme).media[2]}px) {\n ${css(...args)}\n }\n `,\n}\n\nconst Root = styled(Grid)`\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n\n & > div {\n overflow: hidden;\n }\n\n & > div[data-width='medium'] {\n ${media.small`\n grid-column: span 2;\n `}\n }\n\n & > div[data-width='large'] {\n ${media.small`\n grid-column: span 2;\n `}\n\n ${media.medium`\n grid-column: span 3;\n `}\n }\n\n & > div[data-width='full'] {\n ${media.small`\n grid-column: 1 / -1;\n `}\n }\n\n & > div[data-height='medium'] {\n ${media.small`\n grid-row: span 2;\n `}\n }\n\n & > div[data-height='large'] {\n ${media.small`\n grid-row: span 2;\n `}\n\n ${media.medium`\n grid-row: span 3;\n `}\n }\n\n & > div[data-height='full'] {\n ${media.medium`\n grid-row: 1 / -1;\n `}\n }\n`\n\nexport interface WidgetGroupProps {\n config: Partial<DashboardConfig>\n}\n\nconst NO_WIDGETS: DashboardWidget[] = []\nconst NO_LAYOUT: LayoutConfig = {}\n\nexport function WidgetGroup(props: WidgetGroupProps) {\n const {\n config: {layout = NO_LAYOUT, widgets = NO_WIDGETS},\n } = props\n return (\n <Root\n autoFlow=\"row dense\"\n data-width={layout.width || 'auto'}\n data-height={layout.height || 'auto'}\n gap={4}\n >\n {widgets.length ? null : (\n <Card padding={4} shadow={1} tone=\"primary\">\n <Text align=\"center\">Add some widgets to populate this space.</Text>\n </Card>\n )}\n {widgets.map((widgetConfig, index) => {\n if (widgetConfig.type === '__experimental_group') {\n // eslint-disable-next-line react/no-array-index-key -- static widget config never reorders\n return <WidgetGroup key={index} config={widgetConfig} />\n }\n if (widgetConfig.component) {\n // eslint-disable-next-line react/no-array-index-key -- static widget config never reorders\n return <WidgetContainer key={index} {...widgetConfig} />\n }\n // eslint-disable-next-line react/no-array-index-key -- static widget config never reorders\n return <Box key={index}>{widgetConfig.name} is missing widget component</Box>\n })}\n </Root>\n )\n}\n","import {DashboardLayout} from '../components/DashboardLayout'\nimport {WidgetGroup} from '../components/WidgetGroup'\nimport {type DashboardConfig} from '../types'\nimport {DashboardContext} from './DashboardContext'\n\nexport function Dashboard({config}: {config: DashboardConfig}) {\n if (!config) {\n return null\n }\n\n return (\n <DashboardContext.Provider value={config}>\n <DashboardLayout>\n <WidgetGroup config={config} />\n </DashboardLayout>\n </DashboardContext.Provider>\n )\n}\n","import {type ComponentType, type CSSProperties} from 'react'\nimport {definePlugin} from 'sanity'\n\nimport {Dashboard} from './containers/Dashboard'\nimport {type DashboardConfig, type DashboardWidget, type LayoutConfig} from './types'\n\nconst strokeStyle: CSSProperties = {\n stroke: 'currentColor',\n strokeWidth: 1.2,\n}\n\nconst DashboardIcon = () => (\n <svg\n data-sanity-icon\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"xMidYMid\"\n width=\"1em\"\n height=\"1em\"\n >\n <path d=\"M19.5 19.5H5.5V5.5H19.5V19.5Z\" style={strokeStyle} />\n <path d=\"M5.5 12.5H19.5\" style={strokeStyle} />\n <path d=\"M14.5 19.5V12.5M10.5 12.5V5.5\" style={strokeStyle} />\n </svg>\n)\n\nexport interface DashboardPluginConfig {\n /**\n * Dashboard tool title\n */\n title?: string\n /**\n * Dashboard tool name (used in url path)\n */\n name?: string\n /**\n * Dashboard tool icon\n */\n icon?: ComponentType\n widgets?: DashboardWidget[]\n\n /**\n * Will be used for widgets that do not define a layout directly.\n */\n defaultLayout?: LayoutConfig\n}\n\nexport const dashboardTool = definePlugin<DashboardPluginConfig>((config = {}) => {\n const pluginConfig: DashboardConfig = {\n layout: config.defaultLayout ?? {},\n widgets: config.widgets ?? [],\n }\n\n const title = config.title ?? 'Dashboard'\n const name = config.name ?? 'dashboard'\n const icon = config.icon ?? DashboardIcon\n\n return {\n name: 'dashboard',\n tools: [\n {\n title,\n name,\n icon,\n component: () => <Dashboard config={pluginConfig} />,\n },\n ],\n }\n})\n"],"names":["Root","styled","Card","withConfig","displayName","componentId","Header","Footer","Content","Box","theme","getTheme_v2","media","DashboardWidgetContainer","props","$","_c","header","children","footer","ref","t0","t1","t2","t3","DashboardContext","createContext","widgets","useDashboardConfig","useContext","WidgetContainer","config","layout","Widget","component","height","width","useVersionedClient","for","apiVersion","useClient","isUrl","url","test","getGraphQLUrl","projectId","dataset","getGroqUrl","getManageUrl","NO_EXPERIMENTAL","NO_DATA","ProjectInfo","__experimental_before","data","undefined","studioApps","setStudioApps","useState","graphQLApi","setGraphQLApi","versionedClient","t4","t5","observable","subscriptions","push","request","uri","tag","subscribe","next","result","filter","_temp","error","console","method","error_0","statusCode","forEach","_temp2","t6","useEffect","result_0","title","rows","value","apps","_temp3","Array","isArray","app_0","app","urlType","appHost","length","concat","_temp4","otherStuff","item_1","item","category","group","Object","keys","assembleTableRows","t7","map","_temp5","t8","t9","t10","t11","t12","Symbol","t13","_temp7","t14","t15","t16","t17","item_2","_temp6","row","rowValue","wordBreak","widgetConfig","idx","item_0","s","unsubscribe","type","projectInfoWidget","name","Flex","rem","ProjectUser","user","isRobot","roles","style","listFormat","useListFormat","color","format","getInviteUrl","ProjectUsers","project","setProject","users","setUsers","setError","userStore","useUserStore","subscription","pipe","switchMap","_project","from","getUsers","members","_users","_users_0","_project_0","sort","userA","userB","sortUsersByRobotStatus","e","fetchData","handleRetryFetch","isLoading","id","membership","find","member","role","mem","membershipA","membershipB","createdAt","projectUsersWidget","tutorialsProjectConfig","useDataAdapter","templateRepoId","withCredentials","createImageUrlBuilder","getFeed","urlBuilder","PlayIconBox","bg","PosterCard","Poster","img","Tutorial","posterURL","showPlayIcon","href","presenterName","presenterSubtitle","position","opacity","createUrl","slug","current","SanityTutorials","feedItems","setFeedItems","response","items","feedItem","index","guideOrTutorial","externalLink","presenter","subtitle","_type","minWidth","hasVideo","poster","image","_id","sanityTutorialsWidget","DashboardLayout","overflowY","small","args","css","medium","Grid","NO_WIDGETS","NO_LAYOUT","WidgetGroup","Dashboard","strokeStyle","stroke","strokeWidth","DashboardIcon","dashboardTool","definePlugin","pluginConfig","defaultLayout","icon","tools"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Card","Box","Heading","getTheme_v2","styled","Root","Header","Footer","Content","theme","media","DashboardWidgetProps","header","children","React","ReactNode","footer","ref","Ref","HTMLDivElement","DashboardWidgetContainer","props","$","_c","t0","t1","t2","t3","createContext","useContext","DashboardConfig","DashboardContext","widgets","useDashboardConfig","Card","useMemo","DashboardWidget","useDashboardConfig","WidgetContainer","props","$","_c","config","t0","layout","Widget","component","t1","t2","height","width","useClient","useVersionedClient","$","_c","t0","Symbol","for","apiVersion","Box","Card","Stack","Heading","Grid","Label","Text","Code","Button","useEffect","useMemo","useState","Subscription","DashboardWidgetContainer","WidgetContainer","DashboardWidget","useVersionedClient","App","ProjectInfoProps","ProjectData","UserApplication","isUrl","url","test","getGraphQLUrl","projectId","dataset","getGroqUrl","getManageUrl","NO_EXPERIMENTAL","NO_DATA","ProjectInfo","props","$","_c","__experimental_before","t0","data","t1","undefined","studioApps","setStudioApps","graphQLApi","setGraphQLApi","versionedClient","t2","config","t3","t4","t5","observable","subscriptions","push","request","uri","tag","subscribe","next","result","filter","_temp","error","console","method","error_0","statusCode","forEach","_temp2","t6","result_0","title","rows","value","apps","_temp3","Array","isArray","app_0","app","urlType","appHost","length","concat","_temp4","otherStuff","item_1","item","category","group","Object","keys","assembleTableRows","t7","map","_temp5","t8","t9","Symbol","for","width","t10","t11","t12","t13","_temp7","t14","t15","t16","t17","item_2","_temp6","row","rowValue","wordBreak","widgetConfig","idx","item_0","s","unsubscribe","type","LayoutConfig","DashboardWidget","ProjectInfo","projectInfoWidget","config","layout","name","component","width","RobotIcon","Box","Flex","rem","Stack","Text","useListFormat","User","UserAvatar","styled","Root","ProjectUserProps","user","isRobot","roles","ProjectUser","t0","$","_c","t1","Symbol","for","style","listFormat","t2","t3","color","t4","displayName","t5","format","t6","t7","t8","Stack","Spinner","Box","Text","Button","useCallback","useEffect","useState","from","map","switchMap","Role","User","useUserStore","DashboardWidgetContainer","useVersionedClient","ProjectUser","getInviteUrl","projectId","Member","id","roles","isRobot","isCurrentUser","createdAt","Project","members","ProjectUsers","$","_c","project","setProject","users","setUsers","error","setError","userStore","versionedClient","t0","config","subscription","observable","request","uri","tag","pipe","_project","getUsers","_temp","_users","subscribe","next","t1","_users_0","_project_0","Array","isArray","sort","userA","userB","sortUsersByRobotStatus","e","unsubscribe","fetchData","t2","t3","handleRetryFetch","isLoading","t4","Symbol","for","t5","width","undefined","t6","t7","t8","user","membership","find","member","_temp2","t9","role","title","mem","membershipA","membershipB","LayoutConfig","DashboardWidget","ProjectUsers","projectUsersWidget","config","layout","name","component","createImageUrlBuilder","useMemo","useVersionedClient","tutorialsProjectConfig","projectId","dataset","Guide","_type","slug","current","presenter","name","FeedItem","_id","title","poster","category","guideOrTutorial","externalLink","hasVideo","useDataAdapter","$","_c","versionedClient","t0","templateRepoId","uri","observable","request","tag","withCredentials","t1","Symbol","for","t2","getFeed","urlBuilder","PlayIcon","Card","Box","Heading","Flex","Text","Stack","getTheme_v2","styled","PlayIconBox","theme","color","bg","Root","PosterCard","Poster","img","TutorialProps","title","posterURL","href","showPlayIcon","presenterName","presenterSubtitle","Tutorial","props","$","_c","t0","Symbol","for","position","t1","height","t2","t3","t4","t5","opacity","t6","t7","t8","t9","t10","Flex","useEffect","useState","DashboardWidgetContainer","FeedItem","Guide","useDataAdapter","Tutorial","createUrl","slug","current","type","SanityTutorialsProps","templateRepoId","SanityTutorials","props","$","_c","t0","Symbol","for","feedItems","setFeedItems","getFeed","urlBuilder","t1","t2","subscription","subscribe","response","items","unsubscribe","t3","map","feedItem","index","title","guideOrTutorial","externalLink","presenter","subtitle","category","t4","undefined","href","_type","_id","length","minWidth","width","name","hasVideo","poster","image","height","url","LayoutConfig","DashboardWidget","SanityTutorials","sanityTutorialsWidget","config","layout","name","component","width","Container","DashboardLayout","t0","$","_c","children","t1","Symbol","for","height","overflowY","t2","Box","Card","Grid","Text","getTheme_v2","styled","css","WidgetContainer","DashboardConfig","LayoutConfig","DashboardWidget","media","small","args","Parameters","theme","medium","Root","WidgetGroupProps","config","Partial","NO_WIDGETS","NO_LAYOUT","WidgetGroup","props","$","_c","t0","layout","t1","widgets","t2","undefined","t3","width","t4","height","t5","length","t6","map","_temp","t7","widgetConfig","index","type","component","name","DashboardLayout","WidgetGroup","DashboardConfig","DashboardContext","Dashboard","t0","$","_c","config","t1","t2","ComponentType","CSSProperties","definePlugin","Dashboard","DashboardConfig","DashboardWidget","LayoutConfig","strokeStyle","stroke","strokeWidth","DashboardIcon","$","_c","t0","Symbol","for","DashboardPluginConfig","title","name","icon","widgets","defaultLayout","dashboardTool","config","pluginConfig","layout","tools","component"],"sources":["../src/components/DashboardWidgetContainer.tsx","../src/containers/DashboardContext.tsx","../src/containers/WidgetContainer.tsx","../src/versionedClient.ts","../src/widgets/projectInfo/ProjectInfo.tsx","../src/widgets/projectInfo/index.ts","../src/widgets/projectUsers/ProjectUser.tsx","../src/widgets/projectUsers/ProjectUsers.tsx","../src/widgets/projectUsers/index.ts","../src/widgets/sanityTutorials/dataAdapter.ts","../src/widgets/sanityTutorials/Tutorial.tsx","../src/widgets/sanityTutorials/SanityTutorials.tsx","../src/widgets/sanityTutorials/index.ts","../src/components/DashboardLayout.tsx","../src/components/WidgetGroup.tsx","../src/containers/Dashboard.tsx","../src/plugin.tsx"],"sourcesContent":["import {Card, Box, Heading} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nconst Root = styled(Card)`\n display: flex;\n flex-direction: column;\n justify-content: stretch;\n height: 100%;\n box-sizing: border-box;\n position: relative;\n`\n\nconst Header = styled(Card)`\n position: sticky;\n top: 0;\n z-index: 2;\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n`\n\nconst Footer = styled(Card)`\n position: sticky;\n overflow: hidden;\n bottom: 0;\n z-index: 2;\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n margin-top: auto;\n`\n\nconst Content = styled(Box)`\n position: relative;\n z-index: 1;\n height: stretch;\n min-height: 21.5em;\n\n @media (min-width: ${({theme}) => getTheme_v2(theme).media[0]}px) {\n overflow-y: auto;\n outline: none;\n }\n`\n\ninterface DashboardWidgetProps {\n header?: string\n children: React.ReactNode\n footer?: React.ReactNode\n ref?: React.Ref<HTMLDivElement>\n}\n\nexport function DashboardWidgetContainer(props: DashboardWidgetProps) {\n const {header, children, footer, ref} = props\n\n return (\n <Root radius={3} display=\"flex\" ref={ref}>\n {header && (\n <Header borderBottom paddingX={3} paddingY={4}>\n <Heading size={1} textOverflow=\"ellipsis\">\n {header}\n </Heading>\n </Header>\n )}\n {children && <Content>{children}</Content>}\n {footer && <Footer borderTop>{footer}</Footer>}\n </Root>\n )\n}\n","import {createContext, useContext} from 'react'\n\nimport {type DashboardConfig} from '../types'\n\nexport const DashboardContext = createContext<DashboardConfig>({widgets: []})\n\nexport function useDashboardConfig(): DashboardConfig {\n return useContext(DashboardContext)\n}\n","import {Card} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {type DashboardWidget} from '../types'\nimport {useDashboardConfig} from './DashboardContext'\n\nexport function WidgetContainer(props: DashboardWidget) {\n const config = useDashboardConfig()\n const layout = useMemo(\n () => ({\n ...props.layout,\n ...config.layout,\n }),\n [props.layout, config.layout],\n )\n\n const Widget = props.component\n\n return (\n <Card shadow={1} data-width={layout.width} data-height={layout.height}>\n <Widget />\n </Card>\n )\n}\n","import {useClient} from 'sanity'\n\nexport function useVersionedClient() {\n return useClient({apiVersion: '2024-08-01'})\n}\n","import {Box, Card, Stack, Heading, Grid, Label, Text, Code, Button} from '@sanity/ui'\nimport {useEffect, useMemo, useState} from 'react'\nimport {type Subscription} from 'rxjs'\n\nimport {DashboardWidgetContainer} from '../../components/DashboardWidgetContainer'\nimport {WidgetContainer} from '../../containers/WidgetContainer'\nimport {type DashboardWidget} from '../../types'\nimport {useVersionedClient} from '../../versionedClient'\nimport {type App, type ProjectInfoProps, type ProjectData, type UserApplication} from './types'\n\nfunction isUrl(url?: string) {\n return url && /^https?:\\/\\//.test(url)\n}\n\nfunction getGraphQLUrl(projectId: string, dataset: string) {\n return `https://${projectId}.api.sanity.io/v1/graphql/${dataset}/default`\n}\n\nfunction getGroqUrl(projectId: string, dataset: string) {\n return `https://${projectId}.api.sanity.io/v1/groq/${dataset}`\n}\n\nfunction getManageUrl(projectId: string) {\n return `https://manage.sanity.io/projects/${projectId}`\n}\n\nconst NO_EXPERIMENTAL: DashboardWidget[] = []\nconst NO_DATA: ProjectData[] = []\n\nexport function ProjectInfo(props: ProjectInfoProps) {\n const {__experimental_before = NO_EXPERIMENTAL, data = NO_DATA} = props\n const [studioApps, setStudioApps] = useState<UserApplication[] | {error: string} | undefined>()\n const [graphQLApi, setGraphQLApi] = useState<string | {error: string} | undefined>()\n const versionedClient = useVersionedClient()\n const {projectId = 'unknown', dataset = 'unknown'} = versionedClient.config()\n\n useEffect(() => {\n const subscriptions: Subscription[] = []\n\n subscriptions.push(\n versionedClient.observable\n .request<UserApplication[]>({uri: '/user-applications', tag: 'dashboard.project-info'})\n .subscribe({\n next: (result) => setStudioApps(result.filter((app) => app.type === 'studio')),\n error: (error) => {\n console.error('Error while resolving user applications', error)\n setStudioApps({\n error: 'Something went wrong while resolving user applications. See console.',\n })\n },\n }),\n )\n\n // ping assumed graphql endpoint\n subscriptions.push(\n versionedClient.observable\n .request({\n method: 'HEAD',\n uri: `/graphql/${dataset}/default`,\n tag: 'dashboard.project-info.graphql-api',\n })\n .subscribe({\n next: () => setGraphQLApi(getGraphQLUrl(projectId, dataset)),\n error: (error) => {\n if (error.statusCode === 404) {\n setGraphQLApi(undefined)\n } else {\n console.error('Error while looking for graphQLApi', error)\n setGraphQLApi({\n error: 'Something went wrong while looking up graphQLApi. See console.',\n })\n }\n },\n }),\n )\n\n return () => {\n subscriptions.forEach((s) => s.unsubscribe())\n }\n }, [dataset, projectId, versionedClient, setGraphQLApi])\n\n const assembleTableRows = useMemo(() => {\n let result: App[] = [\n {\n title: 'Sanity project',\n rows: [\n {title: 'Project ID', value: projectId},\n {title: 'Dataset', value: dataset},\n ],\n },\n ]\n\n const apps: App[] = data.filter((item) => item.category === 'apps')\n\n // Handle studios\n ;(Array.isArray(studioApps) ? studioApps : []).forEach((app) => {\n apps.push({\n title: app.title || 'Studio',\n value: app.urlType === 'internal' ? `https://${app.appHost}.sanity.studio` : app.appHost,\n })\n })\n\n if (apps.length > 0) {\n result = result.concat([{title: 'Apps', rows: apps}])\n }\n\n // Handle APIs\n result = result.concat(\n [\n {\n title: 'APIs',\n rows: [\n {title: 'GROQ', value: getGroqUrl(projectId, dataset)},\n {\n title: 'GraphQL',\n value: (typeof graphQLApi === 'object' ? 'Error' : graphQLApi) ?? 'Not deployed',\n },\n ],\n },\n ],\n data.filter((item) => item.category === 'apis'),\n )\n\n // Handle whatever else there might be\n const otherStuff: Record<string, ProjectData[]> = {}\n data.forEach((item) => {\n if (item.category && item.category !== 'apps' && item.category !== 'apis') {\n const group = otherStuff[item.category] ?? []\n group.push(item)\n otherStuff[item.category] = group\n }\n })\n Object.keys(otherStuff).forEach((category) => {\n result.push({title: category, rows: otherStuff[category]})\n })\n\n return result\n }, [graphQLApi, studioApps, projectId, dataset, data])\n\n return (\n <>\n {__experimental_before.map((widgetConfig, idx) => (\n // eslint-disable-next-line react/no-array-index-key -- static widget config never reorders\n <WidgetContainer key={idx} {...widgetConfig} />\n ))}\n <Box height=\"fill\" marginTop={__experimental_before?.length > 0 ? 4 : 0}>\n <DashboardWidgetContainer\n footer={\n <Button\n style={{width: '100%'}}\n paddingX={2}\n paddingY={4}\n mode=\"bleed\"\n tone=\"primary\"\n text=\"Manage project\"\n as=\"a\"\n href={getManageUrl(projectId)}\n />\n }\n >\n <Card paddingY={4} radius={2} aria-label=\"Project info\">\n <Stack gap={4}>\n <Box paddingX={3} as=\"header\">\n <Heading size={1} as=\"h2\" id=\"project_info_table\">\n Project info\n </Heading>\n </Box>\n {assembleTableRows.map((item) => {\n if (!item || !item.rows) {\n return null\n }\n\n return (\n <Stack key={item.title} gap={3}>\n <Card borderBottom padding={3}>\n <Label size={0} muted>\n {item.title}\n </Label>\n </Card>\n <Stack gap={4} paddingX={3}>\n {item.rows.map((row) => {\n const rowValue = typeof row.value === 'object' ? row.value.error : row.value\n return (\n <Grid key={`${rowValue ?? ''}-${row.title}`} gridTemplateColumns={2}>\n <Text weight=\"medium\">{row.title}</Text>\n {typeof row.value === 'object' && (\n <Text size={1}>{row.value?.error}</Text>\n )}\n {typeof row.value === 'string' && (\n <>\n {isUrl(row.value) ? (\n <Text size={1} style={{wordBreak: 'break-word'}}>\n <a href={row.value}>{row.value}</a>\n </Text>\n ) : (\n <Code size={1} style={{wordBreak: 'break-word'}}>\n {row.value}\n </Code>\n )}\n </>\n )}\n </Grid>\n )\n })}\n </Stack>\n </Stack>\n )\n })}\n </Stack>\n </Card>\n </DashboardWidgetContainer>\n </Box>\n </>\n )\n}\n","import {type LayoutConfig, type DashboardWidget} from '../../types'\nimport {ProjectInfo} from './ProjectInfo'\n\nexport function projectInfoWidget(config?: {layout?: LayoutConfig}): DashboardWidget {\n return {\n name: 'project-info',\n component: ProjectInfo,\n layout: config?.layout ?? {width: 'medium'},\n }\n}\n","import {RobotIcon} from '@sanity/icons/Robot'\nimport {Box, Flex, rem, Stack, Text} from '@sanity/ui'\nimport {useListFormat, type User, UserAvatar} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst Root = styled(Flex)`\n height: ${rem(33)}; // 33 = PREVIEW_SIZES.default.media.height\n box-sizing: content-box;\n`\n\nexport interface ProjectUserProps {\n user: User\n isRobot: boolean\n roles: string[]\n}\n\nexport function ProjectUser({user, isRobot, roles}: ProjectUserProps) {\n const listFormat = useListFormat({style: 'narrow'})\n return (\n <Root align=\"center\">\n <Flex align=\"center\" flex={1} gap={2}>\n <Box flex=\"none\">\n {isRobot ? (\n <Text size={2}>\n <RobotIcon />\n </Text>\n ) : (\n <UserAvatar user={user} />\n )}\n </Box>\n\n <Stack flex={1} gap={2}>\n <Text size={1} style={{color: 'inherit'}} textOverflow=\"ellipsis\" weight=\"medium\">\n {user.displayName}\n </Text>\n\n <Text muted size={1} textOverflow=\"ellipsis\">\n {listFormat.format(roles)}\n </Text>\n </Stack>\n </Flex>\n </Root>\n )\n}\n","import {Stack, Spinner, Box, Text, Button} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\nimport {from} from 'rxjs'\nimport {map, switchMap} from 'rxjs/operators'\nimport {type Role, type User, useUserStore} from 'sanity'\n\nimport {DashboardWidgetContainer} from '../../components/DashboardWidgetContainer'\nimport {useVersionedClient} from '../../versionedClient'\nimport {ProjectUser} from './ProjectUser'\n\nfunction getInviteUrl(projectId: string) {\n return `https://manage.sanity.io/projects/${projectId}/members`\n}\n\ninterface Member {\n id: string\n roles: Role[]\n isRobot: boolean\n isCurrentUser: boolean\n createdAt: string\n}\n\ninterface Project {\n id: string\n members: Member[]\n}\n\nexport function ProjectUsers() {\n const [project, setProject] = useState<Project | undefined>()\n const [users, setUsers] = useState<User[] | undefined>()\n const [error, setError] = useState<Error | undefined>()\n\n const userStore = useUserStore()\n const versionedClient = useVersionedClient()\n\n const fetchData = useCallback(() => {\n const {projectId} = versionedClient.config()\n const subscription = versionedClient.observable\n .request<Project>({\n uri: `/projects/${projectId}`,\n tag: 'dashboard.project-users',\n })\n .pipe(\n switchMap((_project) =>\n from(userStore.getUsers(_project.members.map((mem) => mem.id))).pipe(\n map((_users) => ({project: _project, users: _users})),\n ),\n ),\n )\n .subscribe({\n next: ({users: _users, project: _project}) => {\n setProject(_project)\n setUsers(\n (Array.isArray(_users) ? _users : [_users]).sort((userA, userB) =>\n sortUsersByRobotStatus(userA, userB, _project),\n ),\n )\n },\n error: (e: Error) => setError(e),\n })\n\n return () => subscription.unsubscribe()\n }, [userStore, versionedClient])\n\n useEffect(() => fetchData(), [fetchData])\n\n const handleRetryFetch = useCallback(() => fetchData(), [fetchData])\n\n const isLoading = !users || !project\n\n if (error) {\n return (\n <DashboardWidgetContainer header=\"Project users\">\n <Box padding={4}>\n <Stack gap={3}>\n <Text>Something went wrong while fetching data.</Text>\n <Box>\n <Button\n mode=\"ghost\"\n text=\"Retry\"\n title=\"Retry users fetch\"\n onClick={handleRetryFetch}\n />\n </Box>\n </Stack>\n </Box>\n </DashboardWidgetContainer>\n )\n }\n\n return (\n <DashboardWidgetContainer\n header=\"Project users\"\n footer={\n <Button\n style={{width: '100%'}}\n paddingX={2}\n paddingY={4}\n mode=\"bleed\"\n tone=\"primary\"\n text=\"Manage members\"\n as=\"a\"\n loading={isLoading}\n href={isLoading ? undefined : getInviteUrl(project.id)}\n />\n }\n >\n {isLoading && (\n <Box paddingY={5} paddingX={2}>\n <Stack gap={4}>\n <Text align=\"center\" muted size={1}>\n <Spinner />\n </Text>\n <Text align=\"center\" size={1} muted>\n Loading items…\n </Text>\n </Stack>\n </Box>\n )}\n\n {!isLoading && (\n <Stack gap={3} padding={3}>\n {users?.map((user) => {\n const membership = project.members.find((member) => member.id === user.id)\n return (\n <ProjectUser\n key={user.id}\n user={user}\n isRobot={membership?.isRobot ?? false}\n roles={membership?.roles.map((role) => role.title) || []}\n />\n )\n })}\n </Stack>\n )}\n </DashboardWidgetContainer>\n )\n}\n\nfunction sortUsersByRobotStatus(userA: User, userB: User, project: Project) {\n const {members} = project\n const membershipA = members.find((member) => member.id === userA?.id)\n const membershipB = members.find((member) => member.id === userB?.id)\n\n // On ties, sort by when the user was added\n if (membershipA?.isRobot === membershipB?.isRobot) {\n return (membershipA?.createdAt || '') > (membershipB?.createdAt || '') ? 1 : -1\n }\n\n // Robots go to the bottom\n return membershipA?.isRobot ? 1 : -1\n}\n","import {type LayoutConfig, type DashboardWidget} from '../../types'\nimport {ProjectUsers} from './ProjectUsers'\n\nexport function projectUsersWidget(config?: {layout?: LayoutConfig}): DashboardWidget {\n return {\n name: 'project-users',\n component: ProjectUsers,\n layout: config?.layout,\n }\n}\n","import {createImageUrlBuilder} from '@sanity/image-url'\nimport {useMemo} from 'react'\n\nimport {useVersionedClient} from '../../versionedClient'\n\nconst tutorialsProjectConfig = {\n projectId: '3do82whm',\n dataset: 'next',\n}\n\nexport interface Guide {\n _type?: string\n slug?: {current: string}\n presenter?: {\n name?: string\n }\n}\n\nexport interface FeedItem {\n _id: string\n title?: string\n poster?: string\n category?: string\n guideOrTutorial?: Guide\n externalLink?: string\n presenter?: {\n name?: string\n }\n hasVideo?: boolean\n}\n\nexport function useDataAdapter() {\n const versionedClient = useVersionedClient()\n return useMemo(\n () => ({\n getFeed: (templateRepoId: string) => {\n const uri = templateRepoId\n ? `/addons/dashboard?templateRepoId=${templateRepoId}`\n : '/addons/dashboard'\n return versionedClient.observable.request<{items: FeedItem[]}>({\n uri,\n tag: 'dashboard.sanity-tutorials',\n withCredentials: false,\n })\n },\n urlBuilder: createImageUrlBuilder(tutorialsProjectConfig),\n }),\n [versionedClient],\n )\n}\n","import {PlayIcon} from '@sanity/icons/Play'\nimport {Card, Box, Heading, Flex, Text, Stack} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nconst PlayIconBox = styled(Box)`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n &:before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 2.75em;\n height: 2.75em;\n border-radius: 50%;\n background: ${({theme}) => getTheme_v2(theme).color.bg};\n opacity: 0.75;\n }\n`\n\nconst Root = styled(Flex)`\n &:hover {\n ${PlayIconBox} {\n &:before {\n opacity: 1;\n }\n }\n }\n`\n\nconst PosterCard = styled(Card)`\n width: 100%;\n padding-bottom: calc(9 / 16 * 100%);\n position: relative;\n`\n\nconst Poster = styled.img`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n object-fit: cover;\n display: block;\n\n &:not([src]) {\n display: none;\n }\n`\n\nexport interface TutorialProps {\n title: string\n posterURL?: string\n href: string\n showPlayIcon?: boolean\n presenterName?: string\n presenterSubtitle?: string\n}\n\nexport function Tutorial(props: TutorialProps) {\n const {title, posterURL, showPlayIcon, href, presenterName, presenterSubtitle} = props\n\n return (\n <Root flex={1}>\n <Card\n sizing=\"border\"\n flex={1}\n padding={2}\n radius={2}\n as=\"a\"\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{position: 'relative'}}\n >\n <Flex direction=\"column\" style={{height: '100%'}}>\n {posterURL && (\n <PosterCard marginBottom={1}>\n <Poster src={posterURL} />\n {showPlayIcon && (\n <PlayIconBox display=\"flex\">\n <Text align=\"center\">\n <PlayIcon />\n </Text>\n </PlayIconBox>\n )}\n </PosterCard>\n )}\n <Flex direction=\"column\" justify=\"space-between\" paddingY={2} flex={1}>\n <Heading as=\"h3\" size={1}>\n {title}\n </Heading>\n <Box marginTop={4}>\n <Stack gap={2} flex={1}>\n <Text size={1}>{presenterName}</Text>\n <Text size={0} style={{opacity: 0.7}}>\n {presenterSubtitle}\n </Text>\n </Stack>\n </Box>\n </Flex>\n </Flex>\n </Card>\n </Root>\n )\n}\n","import {Flex} from '@sanity/ui'\nimport {useEffect, useState} from 'react'\n\nimport {DashboardWidgetContainer} from '../../components/DashboardWidgetContainer'\nimport {type FeedItem, type Guide, useDataAdapter} from './dataAdapter'\nimport {Tutorial} from './Tutorial'\n\nfunction createUrl(slug: {current: string}, type?: string) {\n if (type === 'tutorial') {\n return `https://www.sanity.io/docs/tutorials/${slug.current}`\n } else if (type === 'guide') {\n return `https://www.sanity.io/docs/guides/${slug.current}`\n }\n return false\n}\n\nexport interface SanityTutorialsProps {\n templateRepoId: string\n}\n\nexport function SanityTutorials(props: SanityTutorialsProps) {\n const {templateRepoId} = props\n const [feedItems, setFeedItems] = useState<FeedItem[]>([])\n\n const {getFeed, urlBuilder} = useDataAdapter()\n\n useEffect(() => {\n const subscription = getFeed(templateRepoId).subscribe((response) => {\n setFeedItems(response.items)\n })\n return () => {\n subscription.unsubscribe()\n }\n }, [setFeedItems, getFeed, templateRepoId])\n\n const title = 'Learn about Sanity'\n\n return (\n <DashboardWidgetContainer header={title}>\n <Flex as=\"ul\" overflow=\"auto\" align=\"stretch\" paddingY={2}>\n {feedItems?.map((feedItem, index) => {\n if (!feedItem.title || (!feedItem.guideOrTutorial && !feedItem.externalLink)) {\n return null\n }\n const presenter = feedItem.presenter || feedItem.guideOrTutorial?.presenter || {}\n const subtitle = feedItem.category\n const {guideOrTutorial = {} as Guide} = feedItem\n const href =\n (guideOrTutorial.slug\n ? createUrl(guideOrTutorial.slug, guideOrTutorial._type)\n : feedItem.externalLink) || feedItem.externalLink\n\n return (\n <Flex\n as=\"li\"\n key={feedItem._id}\n paddingRight={index < feedItems?.length - 1 ? 1 : 3}\n paddingLeft={index === 0 ? 3 : 0}\n align=\"stretch\"\n style={{minWidth: 272, width: '30%'}}\n >\n <Tutorial\n title={feedItem.title}\n href={href ?? ''}\n presenterName={presenter.name}\n presenterSubtitle={subtitle}\n showPlayIcon={feedItem.hasVideo}\n posterURL={\n feedItem.poster ? urlBuilder.image(feedItem.poster).height(360).url() : undefined\n }\n />\n </Flex>\n )\n })}\n </Flex>\n </DashboardWidgetContainer>\n )\n}\n","import {type LayoutConfig, type DashboardWidget} from '../../types'\nimport {SanityTutorials} from './SanityTutorials'\n\nexport function sanityTutorialsWidget(config?: {layout?: LayoutConfig}): DashboardWidget {\n return {\n name: 'sanity-tutorials',\n component: SanityTutorials,\n layout: config?.layout ?? {width: 'full'},\n }\n}\n","import {Container} from '@sanity/ui'\n\nexport function DashboardLayout({children}: {children: React.ReactNode}) {\n return (\n <Container width={4} padding={4} sizing=\"border\" style={{height: '100%', overflowY: 'auto'}}>\n {children}\n </Container>\n )\n}\n","import {Box, Card, Grid, Text} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {styled, css} from 'styled-components'\n\nimport {WidgetContainer} from '../containers/WidgetContainer'\nimport {type DashboardConfig, type LayoutConfig, type DashboardWidget} from '../types'\n\nconst media = {\n small: (...args: Parameters<typeof css>) => css`\n @media (min-width: ${({theme}) => getTheme_v2(theme).media[0]}px) {\n ${css(...args)}\n }\n `,\n medium: (...args: Parameters<typeof css>) => css`\n @media (min-width: ${({theme}) => getTheme_v2(theme).media[2]}px) {\n ${css(...args)}\n }\n `,\n}\n\nconst Root = styled(Grid)`\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n\n & > div {\n overflow: hidden;\n }\n\n & > div[data-width='medium'] {\n ${media.small`\n grid-column: span 2;\n `}\n }\n\n & > div[data-width='large'] {\n ${media.small`\n grid-column: span 2;\n `}\n\n ${media.medium`\n grid-column: span 3;\n `}\n }\n\n & > div[data-width='full'] {\n ${media.small`\n grid-column: 1 / -1;\n `}\n }\n\n & > div[data-height='medium'] {\n ${media.small`\n grid-row: span 2;\n `}\n }\n\n & > div[data-height='large'] {\n ${media.small`\n grid-row: span 2;\n `}\n\n ${media.medium`\n grid-row: span 3;\n `}\n }\n\n & > div[data-height='full'] {\n ${media.medium`\n grid-row: 1 / -1;\n `}\n }\n`\n\nexport interface WidgetGroupProps {\n config: Partial<DashboardConfig>\n}\n\nconst NO_WIDGETS: DashboardWidget[] = []\nconst NO_LAYOUT: LayoutConfig = {}\n\nexport function WidgetGroup(props: WidgetGroupProps) {\n const {\n config: {layout = NO_LAYOUT, widgets = NO_WIDGETS},\n } = props\n return (\n <Root\n autoFlow=\"row dense\"\n data-width={layout.width || 'auto'}\n data-height={layout.height || 'auto'}\n gap={4}\n >\n {widgets.length ? null : (\n <Card padding={4} shadow={1} tone=\"primary\">\n <Text align=\"center\">Add some widgets to populate this space.</Text>\n </Card>\n )}\n {widgets.map((widgetConfig, index) => {\n if (widgetConfig.type === '__experimental_group') {\n // eslint-disable-next-line react/no-array-index-key -- static widget config never reorders\n return <WidgetGroup key={index} config={widgetConfig} />\n }\n if (widgetConfig.component) {\n // eslint-disable-next-line react/no-array-index-key -- static widget config never reorders\n return <WidgetContainer key={index} {...widgetConfig} />\n }\n // eslint-disable-next-line react/no-array-index-key -- static widget config never reorders\n return <Box key={index}>{widgetConfig.name} is missing widget component</Box>\n })}\n </Root>\n )\n}\n","import {DashboardLayout} from '../components/DashboardLayout'\nimport {WidgetGroup} from '../components/WidgetGroup'\nimport {type DashboardConfig} from '../types'\nimport {DashboardContext} from './DashboardContext'\n\nexport function Dashboard({config}: {config: DashboardConfig}) {\n if (!config) {\n return null\n }\n\n return (\n <DashboardContext.Provider value={config}>\n <DashboardLayout>\n <WidgetGroup config={config} />\n </DashboardLayout>\n </DashboardContext.Provider>\n )\n}\n","import {type ComponentType, type CSSProperties} from 'react'\nimport {definePlugin} from 'sanity'\n\nimport {Dashboard} from './containers/Dashboard'\nimport {type DashboardConfig, type DashboardWidget, type LayoutConfig} from './types'\n\nconst strokeStyle: CSSProperties = {\n stroke: 'currentColor',\n strokeWidth: 1.2,\n}\n\nconst DashboardIcon = () => (\n <svg\n data-sanity-icon\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"xMidYMid\"\n width=\"1em\"\n height=\"1em\"\n >\n <path d=\"M19.5 19.5H5.5V5.5H19.5V19.5Z\" style={strokeStyle} />\n <path d=\"M5.5 12.5H19.5\" style={strokeStyle} />\n <path d=\"M14.5 19.5V12.5M10.5 12.5V5.5\" style={strokeStyle} />\n </svg>\n)\n\nexport interface DashboardPluginConfig {\n /**\n * Dashboard tool title\n */\n title?: string\n /**\n * Dashboard tool name (used in url path)\n */\n name?: string\n /**\n * Dashboard tool icon\n */\n icon?: ComponentType\n widgets?: DashboardWidget[]\n\n /**\n * Will be used for widgets that do not define a layout directly.\n */\n defaultLayout?: LayoutConfig\n}\n\nexport const dashboardTool = definePlugin<DashboardPluginConfig>((config = {}) => {\n const pluginConfig: DashboardConfig = {\n layout: config.defaultLayout ?? {},\n widgets: config.widgets ?? [],\n }\n\n const title = config.title ?? 'Dashboard'\n const name = config.name ?? 'dashboard'\n const icon = config.icon ?? DashboardIcon\n\n return {\n name: 'dashboard',\n tools: [\n {\n title,\n name,\n icon,\n component: () => <Dashboard config={pluginConfig} />,\n },\n ],\n }\n})\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/dashboard",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.7",
|
|
4
4
|
"description": "Tool for rendering dashboard widgets",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cms",
|
|
@@ -39,17 +39,16 @@
|
|
|
39
39
|
"rxjs": "^7.8.2"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@sanity/
|
|
42
|
+
"@sanity/tsconfig": "^2.2.0",
|
|
43
|
+
"@sanity/tsdown-config": "^0.11.0",
|
|
43
44
|
"@types/react": "^19.2.17",
|
|
44
45
|
"@types/react-dom": "^19.2.3",
|
|
45
46
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
46
|
-
"babel-plugin-styled-components": "^2.3.0",
|
|
47
47
|
"react": "^19.2.7",
|
|
48
48
|
"react-dom": "^19.2.7",
|
|
49
49
|
"sanity": "^6.3.0",
|
|
50
50
|
"styled-components": "^6.4.3",
|
|
51
|
-
"
|
|
52
|
-
"@repo/tsconfig": "0.0.0"
|
|
51
|
+
"tsdown": "^0.22.3"
|
|
53
52
|
},
|
|
54
53
|
"peerDependencies": {
|
|
55
54
|
"react": "^19.2",
|
|
@@ -61,6 +60,6 @@
|
|
|
61
60
|
"node": ">=20.19 <22 || >=22.12"
|
|
62
61
|
},
|
|
63
62
|
"scripts": {
|
|
64
|
-
"build": "
|
|
63
|
+
"build": "tsdown"
|
|
65
64
|
}
|
|
66
65
|
}
|