diff --git a/.changeset/media-vanilla-extract.md b/.changeset/media-vanilla-extract.md new file mode 100644 index 0000000000..24f90f31ea --- /dev/null +++ b/.changeset/media-vanilla-extract.md @@ -0,0 +1,5 @@ +--- +"sanity-plugin-media": patch +--- + +Migrate styling from styled-components to vanilla-extract (zero-runtime CSS) diff --git a/dev/e2e-studio/package.json b/dev/e2e-studio/package.json index 2ca25f489a..21fd5a4cfd 100644 --- a/dev/e2e-studio/package.json +++ b/dev/e2e-studio/package.json @@ -19,6 +19,7 @@ "styled-components": "catalog:" }, "devDependencies": { + "@sanity/vanilla-extract-vite-plugin": "catalog:", "@tsconfig/vite-react": "^8.1.1", "@types/react": "catalog:", "typescript": "catalog:" diff --git a/dev/e2e-studio/sanity.cli.ts b/dev/e2e-studio/sanity.cli.ts index 9697a8f210..5e03ce7e72 100644 --- a/dev/e2e-studio/sanity.cli.ts +++ b/dev/e2e-studio/sanity.cli.ts @@ -1,4 +1,6 @@ +import {vanillaExtractPlugin} from '@sanity/vanilla-extract-vite-plugin' import {defineCliConfig} from 'sanity/cli' +import {mergeConfig, type UserConfig} from 'vite' const projectId = process.env.SANITY_E2E_PROJECT_ID || 'a1psl692' const dataset = process.env.SANITY_E2E_DATASET || 'plugins' @@ -7,16 +9,22 @@ const firefoxDataset = process.env.SANITY_E2E_DATASET_FIREFOX || dataset export default defineCliConfig({ api: {projectId, dataset}, - vite: { - // SANITY_E2E_* vars are not auto-exposed like SANITY_STUDIO_*; inline them - // so sanity.config.ts can read them in the browser bundle. - // Always stringify concrete fallbacks — `JSON.stringify(undefined)` is not a - // valid Vite `define` value and leaves the studio without a project id. - define: { - 'process.env.SANITY_E2E_PROJECT_ID': JSON.stringify(projectId), - 'process.env.SANITY_E2E_DATASET': JSON.stringify(dataset), - 'process.env.SANITY_E2E_DATASET_CHROMIUM': JSON.stringify(chromiumDataset), - 'process.env.SANITY_E2E_DATASET_FIREFOX': JSON.stringify(firefoxDataset), - }, + vite(viteConfig): UserConfig { + return mergeConfig(viteConfig, { + // Required so plugins styled with vanilla-extract (e.g. sanity-plugin-media) + // have their `.css.ts` files compiled to real CSS instead of failing at + // runtime with "Styles were unable to be assigned to a file". + plugins: [vanillaExtractPlugin()], + // SANITY_E2E_* vars are not auto-exposed like SANITY_STUDIO_*; inline them + // so sanity.config.ts can read them in the browser bundle. + // Always stringify concrete fallbacks — `JSON.stringify(undefined)` is not a + // valid Vite `define` value and leaves the studio without a project id. + define: { + 'process.env.SANITY_E2E_PROJECT_ID': JSON.stringify(projectId), + 'process.env.SANITY_E2E_DATASET': JSON.stringify(dataset), + 'process.env.SANITY_E2E_DATASET_CHROMIUM': JSON.stringify(chromiumDataset), + 'process.env.SANITY_E2E_DATASET_FIREFOX': JSON.stringify(firefoxDataset), + }, + } satisfies UserConfig) }, }) diff --git a/plugins/sanity-plugin-media/package.json b/plugins/sanity-plugin-media/package.json index 1053dcbcee..548e983be4 100644 --- a/plugins/sanity-plugin-media/package.json +++ b/plugins/sanity-plugin-media/package.json @@ -30,11 +30,25 @@ "types": "./dist/index.d.ts", "exports": { ".": "./src/index.ts", + "./bundle.css": { + "types": "./dist/bundle-css.d.ts", + "browser": "./dist/bundle.css", + "style": "./dist/bundle.css", + "node": "./dist/bundle-css.js", + "default": "./dist/bundle-css.js" + }, "./package.json": "./package.json" }, "publishConfig": { "exports": { ".": "./dist/index.js", + "./bundle.css": { + "types": "./dist/bundle-css.d.ts", + "browser": "./dist/bundle.css", + "style": "./dist/bundle.css", + "node": "./dist/bundle-css.js", + "default": "./dist/bundle-css.js" + }, "./package.json": "./package.json" } }, @@ -51,6 +65,8 @@ "@sanity/ui": "catalog:", "@sanity/uuid": "catalog:", "@tanem/react-nprogress": "^5.0.63", + "@vanilla-extract/dynamic": "catalog:", + "clsx": "catalog:", "copy-to-clipboard": "^3.3.3", "date-fns": "catalog:", "filesize": "^9.0.11", @@ -72,6 +88,7 @@ "devDependencies": { "@sanity/tsconfig": "catalog:", "@sanity/tsdown-config": "catalog:", + "@sanity/vanilla-extract-vite-plugin": "catalog:", "@testing-library/jest-dom": "catalog:", "@testing-library/react": "catalog:", "@testing-library/user-event": "^14.6.1", @@ -79,19 +96,18 @@ "@types/react": "catalog:", "@types/react-dom": "catalog:", "@types/react-file-icon": "^1.0.5", + "@vanilla-extract/css": "catalog:", "babel-plugin-react-compiler": "catalog:", "jsdom": "catalog:", "react": "catalog:", "react-dom": "catalog:", "sanity": "catalog:", - "styled-components": "catalog:", "tsdown": "catalog:" }, "peerDependencies": { "react": "catalog:peer", "react-dom": "catalog:peer", - "sanity": "catalog:peer", - "styled-components": "catalog:peer" + "sanity": "catalog:peer" }, "engines": { "node": ">=20.19 <22 || >=22.12" diff --git a/plugins/sanity-plugin-media/src/components/AssetGridVirtualized/AssetGridVirtualized.css.ts b/plugins/sanity-plugin-media/src/components/AssetGridVirtualized/AssetGridVirtualized.css.ts new file mode 100644 index 0000000000..5f4c8760b9 --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/AssetGridVirtualized/AssetGridVirtualized.css.ts @@ -0,0 +1,17 @@ +import {style} from '@vanilla-extract/css' + +const CARD_HEIGHT = 220 +const CARD_WIDTH = 240 + +export const itemContainer = style({ + height: CARD_HEIGHT, + width: CARD_WIDTH, +}) + +export const listContainer = style({ + display: 'grid', + gridTemplateColumns: `repeat(auto-fill, ${CARD_WIDTH}px)`, + gridTemplateRows: `repeat(auto-fill, ${CARD_HEIGHT}px)`, + justifyContent: 'center', + margin: '0 auto', +}) diff --git a/plugins/sanity-plugin-media/src/components/AssetGridVirtualized/index.tsx b/plugins/sanity-plugin-media/src/components/AssetGridVirtualized/index.tsx index d5c50c84fb..03b1ed11d2 100644 --- a/plugins/sanity-plugin-media/src/components/AssetGridVirtualized/index.tsx +++ b/plugins/sanity-plugin-media/src/components/AssetGridVirtualized/index.tsx @@ -1,6 +1,6 @@ +import {clsx} from 'clsx/lite' import {memo} from 'react' import {VirtuosoGrid} from 'react-virtuoso' -import {styled} from 'styled-components' import useTypedSelector from '../../hooks/useTypedSelector' import type {CardAssetData, CardFolderData, CardUploadData} from '../../types' @@ -8,15 +8,14 @@ import CardAsset from '../CardAsset' import CardFolder from '../CardFolder' import CardUpload from '../CardUpload' +import {itemContainer, listContainer} from './AssetGridVirtualized.css' + type Props = { items: (CardAssetData | CardFolderData | CardUploadData)[] onLoadMore?: () => void source?: string } -const CARD_HEIGHT = 220 -const CARD_WIDTH = 240 - const VirtualCell = memo( ({ item, @@ -43,29 +42,16 @@ const VirtualCell = memo( }, ) -const StyledItemContainer = styled.div` - height: ${CARD_HEIGHT}px; - width: ${CARD_WIDTH}px; -` - const ItemContainer = (props: any) => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid sc warnings about `context` passed as an attribute - const {context, ref, ...rest} = props - return + // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid warnings about `context` passed as an attribute + const {className, context, ref, ...rest} = props + return
} -const StyledListContainer = styled.div` - display: grid; - grid-template-columns: repeat(auto-fill, ${CARD_WIDTH}px); - grid-template-rows: repeat(auto-fill, ${CARD_HEIGHT}px); - justify-content: center; - margin: 0 auto; -` - const ListContainer = (props: any) => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid sc warnings about `context` passed as an attribute - const {context, ref, ...rest} = props - return + // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid warnings about `context` passed as an attribute + const {className, context, ref, ...rest} = props + return
} const AssetGridVirtualized = (props: Props) => { diff --git a/plugins/sanity-plugin-media/src/components/CardAsset/CardAsset.css.ts b/plugins/sanity-plugin-media/src/components/CardAsset/CardAsset.css.ts new file mode 100644 index 0000000000..5617af1911 --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/CardAsset/CardAsset.css.ts @@ -0,0 +1,69 @@ +import {createVar, style} from '@vanilla-extract/css' + +import {PANEL_HEIGHT} from '../../constants' + +export const cardWrapper = style({ + boxSizing: 'border-box', + height: '100%', + overflow: 'hidden', + position: 'relative', + width: '100%', +}) + +export const cardContainerBase = style({ + height: '100%', + position: 'relative', + transition: 'all 300ms', + userSelect: 'none', + width: '100%', +}) + +export const pickedBorderColorVar = createVar() + +export const cardContainerPicked = style({ + border: `1px solid ${pickedBorderColorVar} !important`, +}) + +export const cardContainerNotPicked = style({ + border: '1px solid inherit', +}) + +export const cardContainerUpdating = style({ + pointerEvents: 'none', +}) + +export const cardContainerNotUpdating = style({ + 'pointerEvents': 'auto', + '@media': { + '(hover: hover) and (pointer: fine)': { + selectors: { + '&:hover': { + border: '1px solid var(--card-border-color)', + }, + }, + }, + }, +}) + +export const contextActionHoverBgVar = createVar() + +export const contextActionContainer = style({ + 'cursor': 'pointer', + 'height': `${PANEL_HEIGHT}px`, + 'transition': 'all 300ms', + '@media': { + '(hover: hover) and (pointer: fine)': { + selectors: { + '&:hover': { + background: contextActionHoverBgVar, + }, + }, + }, + }, +}) + +export const warningOutlineIconColorVar = createVar() + +export const warningOutlineIcon = style({ + color: warningOutlineIconColorVar, +}) diff --git a/plugins/sanity-plugin-media/src/components/CardAsset/index.tsx b/plugins/sanity-plugin-media/src/components/CardAsset/index.tsx index b19846f2ce..ccf843650e 100644 --- a/plugins/sanity-plugin-media/src/components/CardAsset/index.tsx +++ b/plugins/sanity-plugin-media/src/components/CardAsset/index.tsx @@ -8,17 +8,17 @@ import { Flex, Spinner, Text, - type Theme, type ThemeColorSchemeKey, Tooltip, + useTheme_v2 as useThemeV2, useToast, } from '@sanity/ui' -import {memo, type MouseEvent, type RefObject} from 'react' +import {assignInlineVars} from '@vanilla-extract/dynamic' +import {clsx} from 'clsx/lite' +import {type ComponentProps, memo, type MouseEvent, type RefObject} from 'react' import {useDispatch} from 'react-redux' import {useColorSchemeValue} from 'sanity' -import {styled, css} from 'styled-components' -import {PANEL_HEIGHT} from '../../constants' import {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext' import useKeyPress from '../../hooks/useKeyPress' import useTypedSelector from '../../hooks/useTypedSelector' @@ -30,71 +30,86 @@ import {isFileAsset, isImageAsset} from '../../utils/typeGuards' import FileIcon from '../FileIcon' import Image from '../Image' +import { + cardContainerBase, + cardContainerNotPicked, + cardContainerNotUpdating, + cardContainerPicked, + cardContainerUpdating, + cardWrapper, + contextActionContainer, + contextActionHoverBgVar, + pickedBorderColorVar, + warningOutlineIcon, + warningOutlineIconColorVar, +} from './CardAsset.css' + type Props = { id: string selected: boolean source?: string } -const CardWrapper = styled(Flex)` - box-sizing: border-box; - height: 100%; - overflow: hidden; - position: relative; - width: 100%; -` - -const CardContainer = styled(Flex)<{$picked?: boolean; theme: Theme; $updating?: boolean}>(({ - $picked, - theme, - $updating, -}) => { - return css` - border: 1px solid transparent; - height: 100%; - pointer-events: ${$updating ? 'none' : 'auto'}; - position: relative; - transition: all 300ms; - user-select: none; - width: 100%; - - border: ${ - $picked ? `1px solid ${theme.sanity.color.spot.orange} !important` : '1px solid inherit' - }; - - ${ - !$updating && - css` - @media (hover: hover) and (pointer: fine) { - &:hover { - border: 1px solid var(--card-border-color); - } - } - ` - } - ` -}) - -const ContextActionContainer = styled(Flex)(({ - $scheme, -}) => { - return css` - cursor: pointer; - height: ${PANEL_HEIGHT}px; - transition: all 300ms; - @media (hover: hover) and (pointer: fine) { - &:hover { - background: ${getSchemeColor($scheme, 'bg')}; - } - } - ` -}) +function CardWrapper({className, ...props}: ComponentProps) { + return +} -const StyledWarningOutlineIcon = styled(WarningFilledIcon)(({theme}) => { - return { - color: theme.sanity.color.spot.red, - } -}) +function CardContainer({ + className, + picked, + style, + updating, + ...props +}: ComponentProps & {picked?: boolean; updating?: boolean}) { + const {color} = useThemeV2() + + return ( + + ) +} + +function ContextActionContainer({ + className, + scheme, + style, + ...props +}: ComponentProps & {scheme: ThemeColorSchemeKey}) { + return ( + + ) +} + +function StyledWarningOutlineIcon({ + className, + style, + ...props +}: ComponentProps) { + const {color} = useThemeV2() + + return ( + + ) +} const CardAsset = (props: Props) => { const {id, selected, source} = props @@ -220,7 +235,7 @@ const CardAsset = (props: Props) => { return ( - + {/* Image */} { {isImageAsset(asset) && ( @@ -295,7 +309,7 @@ const CardAsset = (props: Props) => { align="center" onClick={handleContextActionClick} paddingX={1} - $scheme={scheme} + scheme={scheme} style={{opacity: opacityContainer}} > {onSelect && !isMultiSelect ? ( diff --git a/plugins/sanity-plugin-media/src/components/CardFolder/CardFolder.css.ts b/plugins/sanity-plugin-media/src/components/CardFolder/CardFolder.css.ts new file mode 100644 index 0000000000..edd14e390a --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/CardFolder/CardFolder.css.ts @@ -0,0 +1,49 @@ +import {createVar, style} from '@vanilla-extract/css' + +export const cardWrapper = style({ + boxSizing: 'border-box', + height: '100%', + overflow: 'hidden', + position: 'relative', + width: '100%', +}) + +export const folderCard = style({ + 'cursor': 'pointer', + 'height': '100%', + 'transition': 'border-color 200ms ease', + 'width': '100%', + '@media': { + '(hover: hover) and (pointer: fine)': { + selectors: { + '&:hover': { + borderColor: 'var(--card-border-color)', + }, + }, + }, + }, +}) + +export const spotYellowVar = createVar() + +export const folderGlyph = style({ + alignItems: 'flex-end', + background: `linear-gradient(180deg, ${spotYellowVar} 0%, ${spotYellowVar} 100%)`, + borderRadius: 8, + display: 'flex', + height: 72, + position: 'relative', + width: 96, + selectors: { + '&::before': { + background: spotYellowVar, + borderRadius: '8px 8px 0 0', + content: '', + height: 18, + left: 0, + position: 'absolute', + top: -8, + width: 38, + }, + }, +}) diff --git a/plugins/sanity-plugin-media/src/components/CardFolder/index.tsx b/plugins/sanity-plugin-media/src/components/CardFolder/index.tsx index 4056ad15a7..ed26bccb60 100644 --- a/plugins/sanity-plugin-media/src/components/CardFolder/index.tsx +++ b/plugins/sanity-plugin-media/src/components/CardFolder/index.tsx @@ -1,64 +1,40 @@ -import {Box, Card, Flex, Stack, Text} from '@sanity/ui' +import {Box, Card, Flex, Stack, Text, useTheme_v2 as useThemeV2} from '@sanity/ui' +import {assignInlineVars} from '@vanilla-extract/dynamic' +import {clsx} from 'clsx/lite' +import {type ComponentProps} from 'react' import {useDispatch} from 'react-redux' import {useColorSchemeValue} from 'sanity' -import {css, styled} from 'styled-components' import {foldersActions} from '../../modules/folders' import {getSchemeColor} from '../../utils/getSchemeColor' +import {cardWrapper, folderCard, folderGlyph, spotYellowVar} from './CardFolder.css' + type Props = { folderId: string name: string totalCount: number } -const CardWrapper = styled(Flex)` - box-sizing: border-box; - height: 100%; - overflow: hidden; - position: relative; - width: 100%; -` - -const FolderCard = styled(Card)` - cursor: pointer; - height: 100%; - transition: border-color 200ms ease; - width: 100%; +function CardWrapper({className, ...props}: ComponentProps) { + return +} - @media (hover: hover) and (pointer: fine) { - &:hover { - border-color: var(--card-border-color); - } - } -` +function FolderCard({className, ...props}: ComponentProps) { + return +} -const FolderGlyph = styled(Box)( - ({theme}) => css` - align-items: flex-end; - background: linear-gradient( - 180deg, - ${theme.sanity.color.spot.yellow} 0%, - ${theme.sanity.color.spot.yellow} 100% - ); - border-radius: 8px; - display: flex; - height: 72px; - position: relative; - width: 96px; +function FolderGlyph({className, style, ...props}: ComponentProps) { + const {color} = useThemeV2() - &::before { - background: ${theme.sanity.color.spot.yellow}; - border-radius: 8px 8px 0 0; - content: ''; - height: 18px; - left: 0; - position: absolute; - top: -8px; - width: 38px; - } - `, -) + return ( + + ) +} const CardFolder = ({folderId, name, totalCount}: Props) => { const dispatch = useDispatch() diff --git a/plugins/sanity-plugin-media/src/components/CardUpload/CardUpload.css.ts b/plugins/sanity-plugin-media/src/components/CardUpload/CardUpload.css.ts new file mode 100644 index 0000000000..28ec7c68cc --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/CardUpload/CardUpload.css.ts @@ -0,0 +1,9 @@ +import {style} from '@vanilla-extract/css' + +export const cardWrapper = style({ + boxSizing: 'border-box', + height: '100%', + overflow: 'hidden', + position: 'relative', + width: '100%', +}) diff --git a/plugins/sanity-plugin-media/src/components/CardUpload/index.tsx b/plugins/sanity-plugin-media/src/components/CardUpload/index.tsx index c4994a8b6c..e2c60e6501 100644 --- a/plugins/sanity-plugin-media/src/components/CardUpload/index.tsx +++ b/plugins/sanity-plugin-media/src/components/CardUpload/index.tsx @@ -1,9 +1,10 @@ import {CloseIcon} from '@sanity/icons/Close' import {Box, Button, Flex, Text} from '@sanity/ui' +import {clsx} from 'clsx/lite' import filesize from 'filesize' +import {type ComponentProps} from 'react' import {useDispatch} from 'react-redux' import {useColorSchemeValue} from 'sanity' -import {styled} from 'styled-components' import {PANEL_HEIGHT} from '../../constants' import useTypedSelector from '../../hooks/useTypedSelector' @@ -12,17 +13,15 @@ import {getSchemeColor} from '../../utils/getSchemeColor' import FileIcon from '../FileIcon' import Image from '../Image' +import {cardWrapper} from './CardUpload.css' + type Props = { id: string } -const CardWrapper = styled(Flex)` - box-sizing: border-box; - height: 100%; - overflow: hidden; - position: relative; - width: 100%; -` +function CardWrapper({className, ...props}: ComponentProps) { + return +} const CardUpload = (props: Props) => { const {id} = props @@ -91,7 +90,7 @@ const CardUpload = (props: Props) => { {item.assetType === 'image' && item?.objectUrl && ( { {isImageAsset(currentAsset) && ( )} diff --git a/plugins/sanity-plugin-media/src/components/FileIcon/FileIcon.css.ts b/plugins/sanity-plugin-media/src/components/FileIcon/FileIcon.css.ts new file mode 100644 index 0000000000..b717c336ef --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/FileIcon/FileIcon.css.ts @@ -0,0 +1,12 @@ +import {createVar, globalStyle, style} from '@vanilla-extract/css' + +export const fontFamilyVar = createVar() + +// Force react-file-icon styles +export const container = style({}) + +globalStyle(`${container} text`, { + fontFamily: `${fontFamilyVar} !important`, + fontSize: '8px !important', + fontWeight: '500 !important', +}) diff --git a/plugins/sanity-plugin-media/src/components/FileIcon/index.tsx b/plugins/sanity-plugin-media/src/components/FileIcon/index.tsx index cd4723889e..a03cb9d072 100644 --- a/plugins/sanity-plugin-media/src/components/FileIcon/index.tsx +++ b/plugins/sanity-plugin-media/src/components/FileIcon/index.tsx @@ -1,8 +1,11 @@ -import {Box, Flex, type Theme} from '@sanity/ui' -import {type MouseEvent} from 'react' +import {Box, Flex, useTheme_v2 as useThemeV2} from '@sanity/ui' +import {assignInlineVars} from '@vanilla-extract/dynamic' +import {clsx} from 'clsx/lite' +import {type ComponentProps, type MouseEvent} from 'react' import {defaultStyles, FileIcon as ReactFileIcon} from 'react-file-icon' import type {DefaultExtensionType} from 'react-file-icon' -import {styled, css} from 'styled-components' + +import {container, fontFamilyVar} from './FileIcon.css' type Props = { extension?: string @@ -10,16 +13,17 @@ type Props = { width: string } -// Force react-file-icon styles -const Container = styled(Box)(({theme}: {theme: Theme}) => { - return css` - text { - font-family: ${theme.sanity.fonts.text.family} !important; - font-size: 8px !important; - font-weight: 500 !important; - } - ` -}) +function Container({className, style, ...props}: ComponentProps) { + const {font} = useThemeV2() + + return ( + + ) +} const FileIcon = (props: Props) => { const {extension, onClick, width} = props diff --git a/plugins/sanity-plugin-media/src/components/FormFieldInputLabel/FormFieldInputLabel.css.ts b/plugins/sanity-plugin-media/src/components/FormFieldInputLabel/FormFieldInputLabel.css.ts new file mode 100644 index 0000000000..b59f9d6989 --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/FormFieldInputLabel/FormFieldInputLabel.css.ts @@ -0,0 +1,7 @@ +import {createVar, style} from '@vanilla-extract/css' + +export const errorIconColorVar = createVar() + +export const errorOutlineIcon = style({ + color: errorIconColorVar, +}) diff --git a/plugins/sanity-plugin-media/src/components/FormFieldInputLabel/index.tsx b/plugins/sanity-plugin-media/src/components/FormFieldInputLabel/index.tsx index 0e1f01f2a4..ea796f84a3 100644 --- a/plugins/sanity-plugin-media/src/components/FormFieldInputLabel/index.tsx +++ b/plugins/sanity-plugin-media/src/components/FormFieldInputLabel/index.tsx @@ -1,6 +1,10 @@ import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline' -import {Box, Inline, Text, Tooltip} from '@sanity/ui' -import {styled} from 'styled-components' +import {Box, Inline, Text, Tooltip, useTheme_v2 as useThemeV2} from '@sanity/ui' +import {assignInlineVars} from '@vanilla-extract/dynamic' +import {clsx} from 'clsx/lite' +import {type ComponentProps} from 'react' + +import {errorIconColorVar, errorOutlineIcon} from './FormFieldInputLabel.css' type Props = { description?: string @@ -9,11 +13,21 @@ type Props = { name: string } -const StyledErrorOutlineIcon = styled(ErrorOutlineIcon)(({theme}) => { - return { - color: theme.sanity.color.spot.red, - } -}) +function StyledErrorOutlineIcon({ + className, + style, + ...props +}: ComponentProps) { + const {color} = useThemeV2() + + return ( + + ) +} const FormFieldInputLabel = (props: Props) => { const {description, error, label, name} = props diff --git a/plugins/sanity-plugin-media/src/components/Image/Image.css.ts b/plugins/sanity-plugin-media/src/components/Image/Image.css.ts new file mode 100644 index 0000000000..a863f8f1f1 --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/Image/Image.css.ts @@ -0,0 +1,27 @@ +import {createVar, style} from '@vanilla-extract/css' + +export const checkerboardColorVar = createVar() + +export const image = style({ + vars: { + [checkerboardColorVar]: 'inherit', + }, + display: 'block', + width: '100%', + height: '100%', + objectFit: 'contain', +}) + +export const imageCheckerboard = style([ + image, + { + backgroundImage: [ + `linear-gradient(45deg, ${checkerboardColorVar} 25%, transparent 25%)`, + `linear-gradient(-45deg, ${checkerboardColorVar} 25%, transparent 25%)`, + `linear-gradient(45deg, transparent 75%, ${checkerboardColorVar} 75%)`, + `linear-gradient(-45deg, transparent 75%, ${checkerboardColorVar} 75%)`, + ].join(', '), + backgroundSize: '20px 20px', + backgroundPosition: '0 0, 0 10px, 10px -10px, -10px 0', + }, +]) diff --git a/plugins/sanity-plugin-media/src/components/Image/index.tsx b/plugins/sanity-plugin-media/src/components/Image/index.tsx index 2b1ed2fb89..8c6fed77ec 100644 --- a/plugins/sanity-plugin-media/src/components/Image/index.tsx +++ b/plugins/sanity-plugin-media/src/components/Image/index.tsx @@ -1,41 +1,30 @@ import type {ThemeColorSchemeKey} from '@sanity/ui' -import type {MouseEvent} from 'react' -import {styled, css} from 'styled-components' +import {assignInlineVars} from '@vanilla-extract/dynamic' +import {clsx} from 'clsx/lite' +import {type ComponentProps} from 'react' import {getSchemeColor} from '../../utils/getSchemeColor' -type Props = { - onClick?: (e: MouseEvent) => void - $showCheckerboard?: boolean - $scheme?: ThemeColorSchemeKey - src: string - style?: any -} - -const Image = styled.img.attrs({crossOrigin: 'anonymous' as const})` - --checkerboard-color: ${(props) => - props.$scheme ? getSchemeColor(props.$scheme, 'bg2') : 'inherit'}; +import {checkerboardColorVar, image, imageCheckerboard} from './Image.css' - display: block; - width: 100%; - height: 100%; - object-fit: contain; +type Props = Omit, 'crossOrigin'> & { + scheme?: ThemeColorSchemeKey + showCheckerboard?: boolean +} - ${(props) => - props.$showCheckerboard && - css` - background-image: - linear-gradient(45deg, var(--checkerboard-color) 25%, transparent 25%), - linear-gradient(-45deg, var(--checkerboard-color) 25%, transparent 25%), - linear-gradient(45deg, transparent 75%, var(--checkerboard-color) 75%), - linear-gradient(-45deg, transparent 75%, var(--checkerboard-color) 75%); - background-size: 20px 20px; - background-position: - 0 0, - 0 10px, - 10px -10px, - -10px 0; - `} -` +function Image({alt = '', className, scheme, showCheckerboard, style, ...props}: Props) { + return ( + {alt} + ) +} export default Image diff --git a/plugins/sanity-plugin-media/src/components/SearchFacet/SearchFacet.css.ts b/plugins/sanity-plugin-media/src/components/SearchFacet/SearchFacet.css.ts new file mode 100644 index 0000000000..068955a0d8 --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/SearchFacet/SearchFacet.css.ts @@ -0,0 +1,9 @@ +import {createVar, style} from '@vanilla-extract/css' + +export const bgVar = createVar() +export const borderRadiusVar = createVar() + +export const container = style({ + background: bgVar, + borderRadius: borderRadiusVar, +}) diff --git a/plugins/sanity-plugin-media/src/components/SearchFacet/index.tsx b/plugins/sanity-plugin-media/src/components/SearchFacet/index.tsx index 7667dc6ebc..e92a096617 100644 --- a/plugins/sanity-plugin-media/src/components/SearchFacet/index.tsx +++ b/plugins/sanity-plugin-media/src/components/SearchFacet/index.tsx @@ -1,25 +1,52 @@ import {CloseIcon} from '@sanity/icons/Close' -import {Box, Flex, Label, rem, Text, type ThemeColorSchemeKey} from '@sanity/ui' -import {type ReactNode} from 'react' +import { + Box, + Flex, + Label, + rem, + Text, + type ThemeColorSchemeKey, + useTheme_v2 as useThemeV2, +} from '@sanity/ui' +import {assignInlineVars} from '@vanilla-extract/dynamic' +import {clsx} from 'clsx/lite' +import {type ComponentProps, type ReactNode} from 'react' import {useDispatch} from 'react-redux' import {useColorSchemeValue} from 'sanity' -import {styled, css} from 'styled-components' import {searchActions} from '../../modules/search' import type {SearchFacetInputProps, WithId} from '../../types' import {getSchemeColor} from '../../utils/getSchemeColor' +import {bgVar, borderRadiusVar, container} from './SearchFacet.css' + type Props = { children: ReactNode facet: WithId } -const Container = styled(Box)(({$scheme, theme}) => { - return css` - background: ${getSchemeColor($scheme, 'bg')}; - border-radius: ${rem(theme.sanity.radius[2]!)}; - ` -}) +function Container({ + className, + scheme, + style, + ...props +}: ComponentProps & {scheme: ThemeColorSchemeKey}) { + const {radius} = useThemeV2() + + return ( + + ) +} const SearchFacet = (props: Props) => { const {children, facet} = props @@ -34,7 +61,7 @@ const SearchFacet = (props: Props) => { } return ( - + {/* Title */} diff --git a/plugins/sanity-plugin-media/src/components/SearchFacets/SearchFacets.css.ts b/plugins/sanity-plugin-media/src/components/SearchFacets/SearchFacets.css.ts new file mode 100644 index 0000000000..63fc00e8e3 --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/SearchFacets/SearchFacets.css.ts @@ -0,0 +1,9 @@ +import {createVar, globalStyle, style} from '@vanilla-extract/css' + +export const marginBottomVar = createVar() + +export const stackContainer = style({}) + +globalStyle(`${stackContainer} > *`, { + marginBottom: marginBottomVar, +}) diff --git a/plugins/sanity-plugin-media/src/components/SearchFacets/index.tsx b/plugins/sanity-plugin-media/src/components/SearchFacets/index.tsx index 41f86db1db..899581ea95 100644 --- a/plugins/sanity-plugin-media/src/components/SearchFacets/index.tsx +++ b/plugins/sanity-plugin-media/src/components/SearchFacets/index.tsx @@ -1,5 +1,7 @@ -import {Box, Flex, Inline, rem, type Theme} from '@sanity/ui' -import {styled, css} from 'styled-components' +import {Box, Flex, Inline, rem, useTheme_v2 as useThemeV2} from '@sanity/ui' +import {assignInlineVars} from '@vanilla-extract/dynamic' +import {clsx} from 'clsx/lite' +import {type ComponentProps} from 'react' import useTypedSelector from '../../hooks/useTypedSelector' import SearchFacetNumber from '../SearchFacetNumber' @@ -7,17 +9,23 @@ import SearchFacetSelect from '../SearchFacetSelect' import SearchFacetString from '../SearchFacetString' import SearchFacetTags from '../SearchFacetTags' +import {marginBottomVar, stackContainer} from './SearchFacets.css' + type Props = { layout?: 'inline' | 'stack' } -const StackContainer = styled(Flex)(({theme}: {theme: Theme}) => { - return css` - > * { - margin-bottom: ${rem(theme.sanity.space[2]!)}; - } - ` -}) +function StackContainer({className, style, ...props}: ComponentProps) { + const {space} = useThemeV2() + + return ( + + ) +} const SearchFacets = (props: Props) => { const {layout = 'inline'} = props diff --git a/plugins/sanity-plugin-media/src/components/TableHeader/TableHeader.css.ts b/plugins/sanity-plugin-media/src/components/TableHeader/TableHeader.css.ts new file mode 100644 index 0000000000..f229a72cc5 --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/TableHeader/TableHeader.css.ts @@ -0,0 +1,16 @@ +import {createVar, style} from '@vanilla-extract/css' + +export const hoverBgVar = createVar() + +export const contextActionContainer = style({ + 'cursor': 'pointer', + '@media': { + '(hover: hover) and (pointer: fine)': { + selectors: { + '&:hover': { + background: hoverBgVar, + }, + }, + }, + }, +}) diff --git a/plugins/sanity-plugin-media/src/components/TableHeader/index.tsx b/plugins/sanity-plugin-media/src/components/TableHeader/index.tsx index 612dad8190..586408fad6 100644 --- a/plugins/sanity-plugin-media/src/components/TableHeader/index.tsx +++ b/plugins/sanity-plugin-media/src/components/TableHeader/index.tsx @@ -1,8 +1,9 @@ import {Checkbox, Flex, Grid, type ThemeColorSchemeKey, useMediaIndex} from '@sanity/ui' -import {type MouseEvent} from 'react' +import {assignInlineVars} from '@vanilla-extract/dynamic' +import {clsx} from 'clsx/lite' +import {type ComponentProps, type MouseEvent} from 'react' import {useDispatch} from 'react-redux' import {useColorSchemeValue} from 'sanity' -import {styled, css} from 'styled-components' import {GRID_TEMPLATE_COLUMNS, PANEL_HEIGHT} from '../../constants' import {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext' @@ -11,19 +12,23 @@ import {assetsActions, selectAssetsLength, selectAssetsPickedLength} from '../.. import {getSchemeColor} from '../../utils/getSchemeColor' import TableHeaderItem from '../TableHeaderItem' +import {contextActionContainer, hoverBgVar} from './TableHeader.css' + // TODO: DRY -const ContextActionContainer = styled(Flex)(({ - $scheme, -}) => { - return css` - cursor: pointer; - @media (hover: hover) and (pointer: fine) { - &:hover { - background: ${getSchemeColor($scheme, 'bg')}; - } - } - ` -}) +function ContextActionContainer({ + className, + scheme, + style, + ...props +}: ComponentProps & {scheme: ThemeColorSchemeKey}) { + return ( + + ) +} const TableHeader = () => { const scheme = useColorSchemeValue() @@ -78,7 +83,7 @@ const TableHeader = () => { align="center" justify="center" onClick={handleContextActionClick} - $scheme={scheme} + scheme={scheme} style={{ height: '100%', position: 'relative', diff --git a/plugins/sanity-plugin-media/src/components/TableRowAsset/TableRowAsset.css.ts b/plugins/sanity-plugin-media/src/components/TableRowAsset/TableRowAsset.css.ts new file mode 100644 index 0000000000..206358d4ed --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/TableRowAsset/TableRowAsset.css.ts @@ -0,0 +1,48 @@ +import {createVar, style} from '@vanilla-extract/css' + +export const containerGridBase = style({ + alignItems: 'center', + height: '100%', + userSelect: 'none', + whiteSpace: 'nowrap', +}) + +export const containerGridSelected = style({cursor: 'default'}) +export const containerGridNotSelected = style({cursor: 'pointer'}) + +export const hoverBgVar = createVar() + +export const containerGridUpdating = style({pointerEvents: 'none'}) +export const containerGridNotUpdating = style({ + 'pointerEvents': 'auto', + '@media': { + '(hover: hover) and (pointer: fine)': { + selectors: { + '&:hover': { + background: hoverBgVar, + }, + }, + }, + }, +}) + +export const contextActionHoverBgVar = createVar() + +export const contextActionContainer = style({ + 'cursor': 'pointer', + '@media': { + '(hover: hover) and (pointer: fine)': { + selectors: { + '&:hover': { + background: contextActionHoverBgVar, + }, + }, + }, + }, +}) + +export const warningIconColorVar = createVar() + +export const warningIcon = style({ + color: warningIconColorVar, +}) diff --git a/plugins/sanity-plugin-media/src/components/TableRowAsset/index.tsx b/plugins/sanity-plugin-media/src/components/TableRowAsset/index.tsx index ce5164d256..b739619fcd 100644 --- a/plugins/sanity-plugin-media/src/components/TableRowAsset/index.tsx +++ b/plugins/sanity-plugin-media/src/components/TableRowAsset/index.tsx @@ -12,10 +12,14 @@ import { type ThemeColorSchemeKey, Tooltip, useMediaIndex, + useTheme_v2 as useThemeV2, } from '@sanity/ui' +import {assignInlineVars} from '@vanilla-extract/dynamic' +import {clsx} from 'clsx/lite' import {formatRelative} from 'date-fns/formatRelative' import filesize from 'filesize' import { + type ComponentProps, memo, type MouseEvent, type RefObject, @@ -26,7 +30,6 @@ import { } from 'react' import {useDispatch} from 'react-redux' import {WithReferringDocuments, useColorSchemeValue} from 'sanity' -import {styled, css} from 'styled-components' import {GRID_TEMPLATE_COLUMNS} from '../../constants' import {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext' @@ -42,6 +45,19 @@ import {isFileAsset, isImageAsset} from '../../utils/typeGuards' import FileIcon from '../FileIcon' import Image from '../Image' +import { + containerGridBase, + containerGridNotSelected, + containerGridNotUpdating, + containerGridSelected, + containerGridUpdating, + contextActionContainer, + contextActionHoverBgVar, + hoverBgVar, + warningIcon, + warningIconColorVar, +} from './TableRowAsset.css' + // Duration (ms) to wait before reference counts (and associated listeners) are rendered const REFERENCE_COUNT_VISIBILITY_DELAY = 750 @@ -50,49 +66,61 @@ type Props = { selected: boolean } -const ContainerGrid = styled< - typeof Grid, - {$selected?: boolean; $scheme: ThemeColorSchemeKey; $updating?: boolean} ->(Grid)(({$scheme, $selected, $updating}) => { - return css` - align-items: center; - cursor: ${$selected ? 'default' : 'pointer'}; - height: 100%; - pointer-events: ${$updating ? 'none' : 'auto'}; - user-select: none; - white-space: nowrap; - - ${ - !$updating && - css` - @media (hover: hover) and (pointer: fine) { - &:hover { - background: ${getSchemeColor($scheme, 'bg')}; - } - } - ` - } - ` -}) - -const ContextActionContainer = styled(Flex)(({ - $scheme, -}) => { - return css` - cursor: pointer; - @media (hover: hover) and (pointer: fine) { - &:hover { - background: ${getSchemeColor($scheme, 'bg2')}; - } - } - ` -}) +function ContainerGrid({ + className, + scheme, + selected, + style, + updating, + ...props +}: ComponentProps & { + scheme: ThemeColorSchemeKey + selected?: boolean + updating?: boolean +}) { + return ( + + ) +} -const StyledWarningIcon = styled(WarningFilledIcon)(({theme}) => { - return { - color: theme.sanity.color.spot.red, - } -}) +function ContextActionContainer({ + className, + scheme, + style, + ...props +}: ComponentProps & {scheme: ThemeColorSchemeKey}) { + return ( + + ) +} + +function StyledWarningIcon({className, style, ...props}: ComponentProps) { + const {color} = useThemeV2() + + return ( + + ) +} const TableRowAsset = (props: Props) => { const {id, selected} = props @@ -186,8 +214,8 @@ const TableRowAsset = (props: Props) => { return ( { mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE, gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr', }} - $updating={item.updating} + updating={item.updating} > {/* Picked checkbox */} { {isImageAsset(asset) && ( )} diff --git a/plugins/sanity-plugin-media/src/components/TableRowFolder/TableRowFolder.css.ts b/plugins/sanity-plugin-media/src/components/TableRowFolder/TableRowFolder.css.ts new file mode 100644 index 0000000000..4e0699011e --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/TableRowFolder/TableRowFolder.css.ts @@ -0,0 +1,42 @@ +import {createVar, style} from '@vanilla-extract/css' + +export const hoverBgVar = createVar() + +export const containerGrid = style({ + 'alignItems': 'center', + 'cursor': 'pointer', + 'height': '100%', + 'userSelect': 'none', + 'whiteSpace': 'nowrap', + '@media': { + '(hover: hover) and (pointer: fine)': { + selectors: { + '&:hover': { + background: hoverBgVar, + }, + }, + }, + }, +}) + +export const spotYellowVar = createVar() + +export const folderBadge = style({ + background: spotYellowVar, + borderRadius: 6, + height: 42, + position: 'relative', + width: 52, + selectors: { + '&::before': { + background: spotYellowVar, + borderRadius: '6px 6px 0 0', + content: '', + height: 12, + left: 0, + position: 'absolute', + top: -6, + width: 18, + }, + }, +}) diff --git a/plugins/sanity-plugin-media/src/components/TableRowFolder/index.tsx b/plugins/sanity-plugin-media/src/components/TableRowFolder/index.tsx index 5547ad7e03..58a613bbc0 100644 --- a/plugins/sanity-plugin-media/src/components/TableRowFolder/index.tsx +++ b/plugins/sanity-plugin-media/src/components/TableRowFolder/index.tsx @@ -1,54 +1,45 @@ -import {Box, Flex, Grid, Stack, Text, useMediaIndex} from '@sanity/ui' +import {Box, Flex, Grid, Stack, Text, useMediaIndex, useTheme_v2 as useThemeV2} from '@sanity/ui' +import {assignInlineVars} from '@vanilla-extract/dynamic' +import {clsx} from 'clsx/lite' +import {type ComponentProps} from 'react' import {useDispatch} from 'react-redux' import {useColorSchemeValue} from 'sanity' -import {css, styled} from 'styled-components' import {GRID_TEMPLATE_COLUMNS} from '../../constants' import {foldersActions} from '../../modules/folders' import {getSchemeColor} from '../../utils/getSchemeColor' +import {containerGrid, folderBadge, hoverBgVar, spotYellowVar} from './TableRowFolder.css' + type Props = { folderId: string name: string totalCount: number } -const ContainerGrid = styled(Grid)( - ({theme}) => css` - align-items: center; - cursor: pointer; - height: 100%; - user-select: none; - white-space: nowrap; +function ContainerGrid({className, style, ...props}: ComponentProps) { + const {color} = useThemeV2() - @media (hover: hover) and (pointer: fine) { - &:hover { - background: ${theme.sanity.color.card.enabled.bg}; - } - } - `, -) + return ( + + ) +} -const FolderBadge = styled(Box)( - ({theme}) => css` - background: ${theme.sanity.color.spot.yellow}; - border-radius: 6px; - height: 42px; - position: relative; - width: 52px; +function FolderBadge({className, style, ...props}: ComponentProps) { + const {color} = useThemeV2() - &::before { - background: ${theme.sanity.color.spot.yellow}; - border-radius: 6px 6px 0 0; - content: ''; - height: 12px; - left: 0; - position: absolute; - top: -6px; - width: 18px; - } - `, -) + return ( + + ) +} const TableRowFolder = ({folderId, name, totalCount}: Props) => { const dispatch = useDispatch() diff --git a/plugins/sanity-plugin-media/src/components/TableRowUpload/index.tsx b/plugins/sanity-plugin-media/src/components/TableRowUpload/index.tsx index 5e9b6dbf21..ebf3fbd45b 100644 --- a/plugins/sanity-plugin-media/src/components/TableRowUpload/index.tsx +++ b/plugins/sanity-plugin-media/src/components/TableRowUpload/index.tsx @@ -94,12 +94,7 @@ const TableRowUpload = (props: Props) => { > {item.assetType === 'image' && item?.objectUrl && ( - + )} {item.assetType === 'file' && ( diff --git a/plugins/sanity-plugin-media/src/components/Tag/Tag.css.ts b/plugins/sanity-plugin-media/src/components/Tag/Tag.css.ts new file mode 100644 index 0000000000..977944b35a --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/Tag/Tag.css.ts @@ -0,0 +1,22 @@ +import {style} from '@vanilla-extract/css' + +import {PANEL_HEIGHT} from '../../constants' + +export const tagContainer = style({ + height: `${PANEL_HEIGHT}px`, +}) + +export const buttonContainer = style({ + '@media': { + '(pointer: fine)': { + visibility: 'hidden', + }, + '(hover: hover) and (pointer: fine)': { + selectors: { + [`${tagContainer}:hover &`]: { + visibility: 'visible', + }, + }, + }, + }, +}) diff --git a/plugins/sanity-plugin-media/src/components/Tag/index.tsx b/plugins/sanity-plugin-media/src/components/Tag/index.tsx index d6c239566a..a95d7a45cc 100644 --- a/plugins/sanity-plugin-media/src/components/Tag/index.tsx +++ b/plugins/sanity-plugin-media/src/components/Tag/index.tsx @@ -5,12 +5,11 @@ import {EditIcon} from '@sanity/icons/Edit' import {SearchIcon} from '@sanity/icons/Search' import {TrashIcon} from '@sanity/icons/Trash' import {Box, Button, Container, Flex, Text, Tooltip} from '@sanity/ui' -import {type ReactNode} from 'react' +import {clsx} from 'clsx/lite' +import {type ComponentProps, type ReactNode} from 'react' import {useDispatch} from 'react-redux' -import {styled} from 'styled-components' import {inputs} from '../../config/searchFacets' -import {PANEL_HEIGHT} from '../../constants' import useTypedSelector from '../../hooks/useTypedSelector' import {selectAssetsPicked} from '../../modules/assets' import {dialogActions} from '../../modules/dialog' @@ -18,26 +17,20 @@ import {DIALOG_ACTIONS} from '../../modules/dialog/actions' import {searchActions, selectIsSearchFacetTag} from '../../modules/search' import type {SearchFacetInputSearchableProps, TagActions, TagItem} from '../../types' +import {buttonContainer, tagContainer} from './Tag.css' + type Props = { actions?: TagActions[] tag: TagItem } -const TagContainer = styled(Flex)` - height: ${PANEL_HEIGHT}px; -` - -const ButtonContainer = styled(Flex)` - @media (pointer: fine) { - visibility: hidden; - } +function TagContainer({className, ...props}: ComponentProps) { + return +} - @media (hover: hover) and (pointer: fine) { - ${TagContainer}:hover & { - visibility: visible; - } - } -` +function ButtonContainer({className, ...props}: ComponentProps) { + return +} type TagButtonProps = { disabled?: boolean diff --git a/plugins/sanity-plugin-media/src/components/UploadDropzone/UploadDropzone.css.ts b/plugins/sanity-plugin-media/src/components/UploadDropzone/UploadDropzone.css.ts new file mode 100644 index 0000000000..b703121ebc --- /dev/null +++ b/plugins/sanity-plugin-media/src/components/UploadDropzone/UploadDropzone.css.ts @@ -0,0 +1,28 @@ +import {style} from '@vanilla-extract/css' + +export const uploadContainer = style({ + color: 'white', + height: '100%', + minHeight: '100%', + right: 0, + top: 0, + width: '100%', + selectors: { + '&:focus': { + outline: 'none', + }, + }, +}) + +export const dragActiveContainer = style({ + alignItems: 'center', + background: 'rgba(0, 0, 0, 0.75)', + display: 'flex', + height: '100%', + justifyContent: 'center', + position: 'absolute', + right: 0, + top: 0, + width: '100%', + zIndex: 3, +}) diff --git a/plugins/sanity-plugin-media/src/components/UploadDropzone/index.tsx b/plugins/sanity-plugin-media/src/components/UploadDropzone/index.tsx index 76cd208c0b..1aa67b96a0 100644 --- a/plugins/sanity-plugin-media/src/components/UploadDropzone/index.tsx +++ b/plugins/sanity-plugin-media/src/components/UploadDropzone/index.tsx @@ -3,7 +3,6 @@ import {Flex, Text} from '@sanity/ui' import {type ReactNode} from 'react' import {type DropEvent, type DropzoneOptions, useDropzone} from 'react-dropzone' import {useDispatch} from 'react-redux' -import {styled} from 'styled-components' import {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext' import {DropzoneDispatchProvider} from '../../contexts/DropzoneDispatchContext' @@ -12,36 +11,12 @@ import useTypedSelector from '../../hooks/useTypedSelector' import {notificationsActions} from '../../modules/notifications' import {uploadsActions} from '../../modules/uploads' +import {dragActiveContainer, uploadContainer} from './UploadDropzone.css' + type Props = { children: ReactNode } -const UploadContainer = styled.div` - color: white; - height: 100%; - min-height: 100%; - right: 0; - top: 0; - width: 100%; - - &:focus { - outline: none; - } -` - -const DragActiveContainer = styled.div` - align-items: center; - background: rgba(0, 0, 0, 0.75); - display: flex; - height: 100%; - justify-content: center; - position: absolute; - right: 0; - top: 0; - width: 100%; - z-index: 3; -` - // Iterate through all files and only return non-folders / packages. // We check for files by reading the first byte of the file async function filterFiles(fileList: FileList) { @@ -151,21 +126,21 @@ const UploadDropzone = (props: Props) => { return ( - +
{isDragActive && ( - +
Drop files to upload - +
)} {children} - +
) } diff --git a/plugins/sanity-plugin-media/src/styled/GlobalStyles/GlobalStyles.css.ts b/plugins/sanity-plugin-media/src/styled/GlobalStyles/GlobalStyles.css.ts new file mode 100644 index 0000000000..90040678be --- /dev/null +++ b/plugins/sanity-plugin-media/src/styled/GlobalStyles/GlobalStyles.css.ts @@ -0,0 +1,37 @@ +import {globalStyle, style} from '@vanilla-extract/css' + +// Toggled on `document.body` for as long as the media Browser or Edit Media tool is +// mounted (see index.tsx), scoping the rules below to just that time window — matching +// the old `` (styled-components `createGlobalStyle`) mount/unmount +// lifecycle so they don't leak into the rest of the Studio. +export const globalStylesActive = style({}) + +function customScrollbar(selector: string) { + globalStyle(`.${globalStylesActive} ${selector}::-webkit-scrollbar`, { + width: 14, + }) + + globalStyle(`.${globalStylesActive} ${selector}::-webkit-scrollbar-thumb`, { + borderRadius: 10, + border: '4px solid rgba(0, 0, 0, 0)', + background: 'var(--card-border-color)', + backgroundClip: 'padding-box', + }) + + globalStyle(`.${globalStylesActive} ${selector}::-webkit-scrollbar-thumb:hover`, { + background: 'var(--card-muted-fg-color)', + backgroundClip: 'padding-box', + }) +} + +customScrollbar('.media__custom-scrollbar') + +// @sanity/ui overrides + +// Custom scrollbar on Box (used in Dialogs) +customScrollbar('div[data-ui="Box"]') + +// Dialog background color +globalStyle(`.${globalStylesActive} div[data-ui="Dialog"]`, { + backgroundColor: 'rgba(15, 17, 18, 0.9)', +}) diff --git a/plugins/sanity-plugin-media/src/styled/GlobalStyles/index.tsx b/plugins/sanity-plugin-media/src/styled/GlobalStyles/index.tsx index 6f7035be8b..6d86c6067c 100644 --- a/plugins/sanity-plugin-media/src/styled/GlobalStyles/index.tsx +++ b/plugins/sanity-plugin-media/src/styled/GlobalStyles/index.tsx @@ -1,40 +1,26 @@ -import {createGlobalStyle, css} from 'styled-components' +import {useEffect} from 'react' -const customScrollbar = css` - ::-webkit-scrollbar { - width: 14px; - } +import {globalStylesActive} from './GlobalStyles.css' - ::-webkit-scrollbar-thumb { - border-radius: 10px; - border: 4px solid rgba(0, 0, 0, 0); - background: var(--card-border-color); - background-clip: padding-box; +// Reference-counted so overlapping instances (e.g. the Browse tool and an Edit Media +// asset source mounted at the same time) don't have one unmounting turn the rules off +// for the other. +let activeCount = 0 - &:hover { - background: var(--card-muted-fg-color); - background-clip: padding-box; - } - } -` - -const GlobalStyle = createGlobalStyle` - .media__custom-scrollbar { - ${customScrollbar} - } - - // @sanity/ui overrides +const GlobalStyle = () => { + useEffect(() => { + activeCount += 1 + document.body.classList.add(globalStylesActive) - // Custom scrollbar on Box (used in Dialogs) - div[data-ui="Box"] { - ${customScrollbar} - } - - // Dialog background color - div[data-ui="Dialog"] { - background-color: rgba(15, 17, 18, 0.9); - } + return () => { + activeCount -= 1 + if (activeCount === 0) { + document.body.classList.remove(globalStylesActive) + } + } + }, []) -` + return null +} export default GlobalStyle diff --git a/plugins/sanity-plugin-media/src/types/sanity-ui.d.ts b/plugins/sanity-plugin-media/src/types/sanity-ui.d.ts deleted file mode 100644 index d996a05983..0000000000 --- a/plugins/sanity-plugin-media/src/types/sanity-ui.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import {type Theme} from '@sanity/ui' - -declare module 'styled-components' { - interface DefaultTheme extends Theme {} -} diff --git a/plugins/sanity-plugin-media/tsdown.config.ts b/plugins/sanity-plugin-media/tsdown.config.ts index 757ef5c8f1..95e821b63c 100644 --- a/plugins/sanity-plugin-media/tsdown.config.ts +++ b/plugins/sanity-plugin-media/tsdown.config.ts @@ -2,6 +2,6 @@ import {defineConfig} from '@sanity/tsdown-config' import type {UserConfig} from 'tsdown' export default defineConfig({ - styledComponents: true, reactCompiler: true, + vanillaExtract: true, }) satisfies Promise diff --git a/plugins/sanity-plugin-media/vitest.config.ts b/plugins/sanity-plugin-media/vitest.config.ts index 3c37558a37..12811974c4 100644 --- a/plugins/sanity-plugin-media/vitest.config.ts +++ b/plugins/sanity-plugin-media/vitest.config.ts @@ -1,14 +1,16 @@ +import {vanillaExtractPlugin} from '@sanity/vanilla-extract-vite-plugin' import {defineConfig} from 'vitest/config' export default defineConfig({ oxc: { jsx: {runtime: 'automatic'}, }, + plugins: [vanillaExtractPlugin()], test: { environment: 'jsdom', globals: false, include: ['src/**/*.test.{ts,tsx}'], - setupFiles: ['./vitest.setup.ts'], + setupFiles: ['./vitest.setup.ts', '@vanilla-extract/css/disableRuntimeStyles'], passWithNoTests: false, css: true, }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df0da1262a..b018fc3c17 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -97,6 +97,9 @@ catalogs: babel-plugin-react-compiler: specifier: ^1.0.0 version: 1.0.0 + clsx: + specifier: ^2.1.1 + version: 2.1.1 date-fns: specifier: ^4.4.0 version: 4.4.0 @@ -258,7 +261,7 @@ importers: version: 19.2.8(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(supports-color@8.1.1)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(supports-color@8.1.1)(terser@5.49.0)(typescript@7.0.2) sanity-plugin-internationalized-array: specifier: workspace:* version: link:../../plugins/sanity-plugin-internationalized-array @@ -269,6 +272,9 @@ importers: specifier: 'catalog:' version: 6.4.4(react-dom@19.2.8)(react@19.2.8) devDependencies: + '@sanity/vanilla-extract-vite-plugin': + specifier: 'catalog:' + version: 0.2.8(babel-plugin-macros@3.1.0)(vite@8.2.0) '@tsconfig/vite-react': specifier: ^8.1.1 version: 8.1.1 @@ -352,7 +358,7 @@ importers: version: link:../../plugins/@sanity/table '@sanity/themer': specifier: ^0.2.0 - version: 0.2.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(sanity@6.9.1-next.6)(styled-components@6.4.4) + version: 0.2.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(sanity@6.9.1-next.9)(styled-components@6.4.4) '@sanity/ui': specifier: 'catalog:' version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) @@ -364,7 +370,7 @@ importers: version: link:../../plugins/@sanity/vercel-protection-bypass '@sanity/vision': specifier: next - version: 6.9.1-next.6(@babel/runtime@7.29.7)(@codemirror/theme-one-dark@6.1.3)(@emotion/is-prop-valid@1.4.0)(codemirror@6.0.2)(react-dom@19.2.8)(react@19.2.8)(sanity@6.9.1-next.6)(styled-components@6.4.4) + version: 6.9.1-next.9(@babel/runtime@7.29.7)(@codemirror/theme-one-dark@6.1.3)(@emotion/is-prop-valid@1.4.0)(codemirror@6.0.2)(react-dom@19.2.8)(react@19.2.8)(sanity@6.9.1-next.9)(styled-components@6.4.4) '@vanilla-extract/css': specifier: 'catalog:' version: 1.21.2(babel-plugin-macros@3.1.0) @@ -376,7 +382,7 @@ importers: version: 19.2.8(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) sanity-naive-html-serializer: specifier: workspace:* version: link:../../plugins/sanity-naive-html-serializer @@ -573,7 +579,7 @@ importers: version: 19.2.8(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) styled-components: specifier: 'catalog:' version: 6.4.4(react-dom@19.2.8)(react@19.2.8) @@ -600,7 +606,7 @@ importers: version: 5.2.1(react@19.2.8) '@sanity/mutator': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) '@sanity/ui': specifier: 'catalog:' version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) @@ -621,11 +627,11 @@ importers: version: 2.1.1(rxjs@7.8.2) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/schema': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) '@sanity/tsconfig': specifier: 'catalog:' version: 2.2.1 @@ -673,7 +679,7 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@portabletext/editor': specifier: ^7.10.13 @@ -770,7 +776,7 @@ importers: version: 4.25.11(@babel/runtime@7.29.7)(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/lint@6.9.7)(@codemirror/search@6.7.1)(@codemirror/state@6.7.1)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.43.7)(codemirror@6.0.2)(react-dom@19.2.8)(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -813,7 +819,7 @@ importers: version: 4.18.1 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) tinycolor2: specifier: ^1.6.0 version: 1.6.0 @@ -862,7 +868,7 @@ importers: version: 5.2.1(react@19.2.8) '@sanity/mutator': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) '@sanity/studio-secrets': specifier: workspace:^ version: link:../studio-secrets @@ -874,7 +880,7 @@ importers: version: 3.1.4 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/client': specifier: ^7.26.0 @@ -923,7 +929,7 @@ importers: version: 7.8.2 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -963,7 +969,7 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1009,7 +1015,7 @@ importers: version: 19.2.8 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1034,13 +1040,13 @@ importers: version: 5.2.1(react@19.2.8) '@sanity/mutator': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) '@sanity/ui': specifier: 'catalog:' version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) '@sanity/util': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) '@sanity/uuid': specifier: 'catalog:' version: 3.0.3 @@ -1049,7 +1055,7 @@ importers: version: 7.8.2 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) sanity-plugin-utils: specifier: workspace:^ version: link:../../sanity-plugin-utils @@ -1110,7 +1116,7 @@ importers: version: 4.2.5(react@19.2.8)(rxjs@7.8.2) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1165,7 +1171,7 @@ importers: version: 5.7.0(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1217,7 +1223,7 @@ importers: version: 1.9.0(react-dom@19.2.8)(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1269,13 +1275,13 @@ importers: version: 5.2.1(react@19.2.8) '@sanity/mutator': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) '@sanity/ui': specifier: 'catalog:' version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) '@sanity/util': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) react-dnd: specifier: ^16.0.1 version: 16.0.1(@types/node@24.13.3)(@types/react@19.2.18)(react@19.2.8) @@ -1284,7 +1290,7 @@ importers: version: 16.0.1 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1330,7 +1336,7 @@ importers: version: 7.8.2 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1391,7 +1397,7 @@ importers: version: 1.0.5 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) sanity-plugin-utils: specifier: workspace:^ version: link:../../sanity-plugin-utils @@ -1446,7 +1452,7 @@ importers: version: 5.7.0(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) suspend-react: specifier: 'catalog:' version: 0.1.3(react@19.2.8) @@ -1489,7 +1495,7 @@ importers: version: 3.0.3 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1547,7 +1553,7 @@ importers: version: 4.4.0 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1596,7 +1602,7 @@ importers: version: 4.18.1 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1639,7 +1645,7 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) sanity-plugin-internationalized-array: specifier: ^4.0.0 || ^5.0.0 version: link:../../sanity-plugin-internationalized-array @@ -1688,7 +1694,7 @@ importers: version: 7.8.2 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1743,7 +1749,7 @@ importers: version: 3.0.3 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1789,7 +1795,7 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/client': specifier: ^7.26.0 @@ -1829,16 +1835,16 @@ importers: version: 5.0.2 '@sanity/mutator': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) '@sanity/schema': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) '@sanity/util': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@portabletext/types': specifier: 'catalog:' @@ -1884,7 +1890,7 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1927,7 +1933,7 @@ importers: version: 3.6.1(@types/react@19.2.18)(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -1967,7 +1973,7 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) video.js: specifier: 'catalog:' version: 7.21.7 @@ -2028,7 +2034,7 @@ importers: version: 6.0.0 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -2071,7 +2077,7 @@ importers: version: 7.8.2 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/dashboard': specifier: workspace:* @@ -2111,7 +2117,7 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/dashboard': specifier: workspace:* @@ -2178,7 +2184,7 @@ importers: version: 7.4.4(react-dom@19.2.8)(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.2.8) @@ -2233,7 +2239,7 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) '@sanity/util': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) '@sanity/uuid': specifier: 'catalog:' version: 3.0.3 @@ -2245,7 +2251,7 @@ importers: version: 7.8.2 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) sanity-plugin-utils: specifier: workspace:^ version: link:../sanity-plugin-utils @@ -2288,7 +2294,7 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -2340,7 +2346,7 @@ importers: version: 1.29.1(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) uuid: specifier: ^14.0.1 version: 14.0.1 @@ -2386,7 +2392,7 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) '@sanity/util': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) lodash-es: specifier: 'catalog:' version: 4.18.1 @@ -2395,7 +2401,7 @@ importers: version: 12.43.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -2447,7 +2453,7 @@ importers: version: 12.43.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) suspend-react: specifier: 'catalog:' version: 0.1.3(react@19.2.8) @@ -2496,13 +2502,13 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) '@sanity/util': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) lodash-es: specifier: 'catalog:' version: 4.18.1 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/language-filter': specifier: workspace:* @@ -2557,7 +2563,7 @@ importers: version: 0.17.0 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -2597,7 +2603,7 @@ importers: version: 5.2.0(easymde@2.21.0)(react-dom@19.2.8)(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -2653,6 +2659,12 @@ importers: '@tanem/react-nprogress': specifier: ^5.0.63 version: 5.0.63(react-dom@19.2.8)(react@19.2.8) + '@vanilla-extract/dynamic': + specifier: 'catalog:' + version: 2.1.5 + clsx: + specifier: 'catalog:' + version: 2.1.1 copy-to-clipboard: specifier: ^3.3.3 version: 3.3.3 @@ -2664,7 +2676,7 @@ importers: version: 9.0.11 groq: specifier: next - version: 6.9.1-next.6 + version: 6.9.1-next.9 is-hotkey-esm: specifier: ^1.0.0 version: 1.0.0 @@ -2703,7 +2715,7 @@ importers: version: 7.8.2 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) zod: specifier: ^3.25.76 version: 3.25.76 @@ -2714,6 +2726,9 @@ importers: '@sanity/tsdown-config': specifier: 'catalog:' version: 0.21.3(@babel/runtime@7.29.7)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(rolldown@1.2.1)(tsdown@0.22.14)(typescript@7.0.2)(vite@8.2.0) + '@sanity/vanilla-extract-vite-plugin': + specifier: 'catalog:' + version: 0.2.8(babel-plugin-macros@3.1.0)(vite@8.2.0) '@testing-library/jest-dom': specifier: 'catalog:' version: 7.0.0(@testing-library/dom@10.4.1) @@ -2735,6 +2750,9 @@ importers: '@types/react-file-icon': specifier: ^1.0.5 version: 1.0.5 + '@vanilla-extract/css': + specifier: 'catalog:' + version: 1.21.2(babel-plugin-macros@3.1.0) babel-plugin-react-compiler: specifier: 'catalog:' version: 1.0.0 @@ -2747,9 +2765,6 @@ importers: react-dom: specifier: 'catalog:' version: 19.2.8(react@19.2.8) - styled-components: - specifier: 'catalog:' - version: 6.4.4(react-dom@19.2.8)(react@19.2.8) tsdown: specifier: 'catalog:' version: 0.22.14(@vitejs/devtools@0.4.12)(oxc-resolver@11.24.2)(publint@0.3.23)(tsx@4.23.5)(typescript@7.0.2) @@ -2794,7 +2809,7 @@ importers: version: 7.8.2 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) scroll-into-view-if-needed: specifier: ^3.1.0 version: 3.1.0 @@ -2879,7 +2894,7 @@ importers: version: 7.8.2 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) video.js: specifier: 'catalog:' version: 7.21.7 @@ -2919,7 +2934,7 @@ importers: dependencies: sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) sanity-translations-tab: specifier: workspace:^ version: link:../sanity-translations-tab @@ -2956,7 +2971,7 @@ importers: dependencies: sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) sanity-translations-tab: specifier: workspace:^ version: link:../sanity-translations-tab @@ -3011,7 +3026,7 @@ importers: version: 7.8.2 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -3063,7 +3078,7 @@ importers: version: 12.43.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) sanity-plugin-utils: specifier: workspace:^ version: link:../sanity-plugin-utils @@ -3112,7 +3127,7 @@ importers: version: 19.2.8 sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) devDependencies: '@sanity/tsconfig': specifier: 'catalog:' @@ -3158,10 +3173,10 @@ importers: version: 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) '@sanity/util': specifier: next - version: 6.9.1-next.6(@types/react@19.2.18) + version: 6.9.1-next.9(@types/react@19.2.18) sanity: specifier: next - version: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + version: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) sanity-naive-html-serializer: specifier: workspace:^ version: link:../sanity-naive-html-serializer @@ -6439,8 +6454,8 @@ packages: resolution: {integrity: sha512-oJ5kZQV6C/DAlcpRLEU7AcVWXrSPuJb3Z1TQ9tm/qZOVWJENwWln45jtepQEYolTIuGx9jUlhYUi3hGIkOt8RA==} engines: {node: '>=18.2'} - '@sanity/diff@6.9.1-next.6': - resolution: {integrity: sha512-fG5iTIJ4USHa/zENQmgRrDIRVgcLckkXjZZ4kSpT3v5cO76bJL40ULLa/6lOhCRMkGmaTox1d/ADPtSp0HQz9A==} + '@sanity/diff@6.9.1-next.9': + resolution: {integrity: sha512-oJy5/ETwxpbCBZAyetEbwO3lZF8qkY9mmBelGJCOBYSGgxCJ/LMkJhbF4zU6gK6CG7uI1L+B841yLhqnGQWTig==} engines: {node: '>=22.12'} '@sanity/eventsource@5.0.4': @@ -6516,8 +6531,8 @@ packages: xstate: optional: true - '@sanity/mutator@6.9.1-next.6': - resolution: {integrity: sha512-kJ8SXLYd2I8WccJnXyC+0oxCr2rlm5d2MalkNnn33qlH8T+RoQA6xuA7e2fGuNU0e2r180PbQov275pagJKjuw==} + '@sanity/mutator@6.9.1-next.9': + resolution: {integrity: sha512-oxbOcBwQE4xlo5FnglQMHfauHgwPPl6VY+kZEBUSYlXqlTbP88AcP7YV3/B2q4m+Wq1cIBio+qCe9TBcAH+Lng==} '@sanity/parse-package-json@2.2.11': resolution: {integrity: sha512-bGtg6GgNOAb4IbpfIODIMow9P6M/9ado+h/s5WDih/ibSwL7rGp9gvsSaUf4PSegtAFSBp8mHj9epg+E1nMj5Q==} @@ -6557,8 +6572,8 @@ packages: engines: {node: '>=22.12'} hasBin: true - '@sanity/schema@6.9.1-next.6': - resolution: {integrity: sha512-cNYRajZyaWiHv4sGF2Tid9P1k08lov6ZdjejYWknm8a1MWMo4r+8M2Pox6aHNopWkosMlB062aWQ6xRz1m8Glw==} + '@sanity/schema@6.9.1-next.9': + resolution: {integrity: sha512-2sPcmF+6BNeXPOhF6t4BkAmfQKfsJh8J4/beCuwWb34ww5scDQntydjlwBUG2fNpZtFp7n+IBKqX8KQtoc65dg==} '@sanity/sdk@2.19.0': resolution: {integrity: sha512-UOrxOmISioW22b0IyGgkRJCk1VnzmevH7jY8WZpANStmwa/4lsujRNlWOYeW3IguhIz0HptgtVfRXXyZwr9UXQ==} @@ -6607,8 +6622,8 @@ packages: babel-plugin-react-compiler: optional: true - '@sanity/types@6.9.1-next.6': - resolution: {integrity: sha512-qYHkRh+OLvfnaQ42mkPb7Hx1CkZTgRPuHA9JhxnAFHpSqSaXL2QHYYwK1zS0kxmBzzQMvQrltbDeYFMs1Rcz8w==} + '@sanity/types@6.9.1-next.9': + resolution: {integrity: sha512-uXl65E2tlven4mLf573Iz7mSDvrxcTOKMikOX8c+5n0s0uDUI27WX83iIDo6h6UIFWnxVjdwFVLFnu1fJVLXLw==} peerDependencies: '@types/react': '*' @@ -6620,8 +6635,8 @@ packages: react-dom: ^18 || >=19.0.0-0 styled-components: ^5.2 || ^6 - '@sanity/util@6.9.1-next.6': - resolution: {integrity: sha512-7pwfRDkricY+LeuzI2gwZmytLZrPXE90/SwpeXiYa/uECCiAGSYHPvHVyfy6HTuQAq42mHtPUnkwUsGB8M9F4w==} + '@sanity/util@6.9.1-next.9': + resolution: {integrity: sha512-zfhaQXn1IQueyhIkEW6+b0n/oxVEH1gSAfgjusb/40x9PntE9v0EuhTD1w3qJ8uywcKPaqMZN1mKPgZ4qQ+XNA==} engines: {node: '>=22.12'} '@sanity/uuid@3.0.3': @@ -6652,8 +6667,8 @@ packages: peerDependencies: vite: ^8.0.0 - '@sanity/vision@6.9.1-next.6': - resolution: {integrity: sha512-KHT3y74dEISnWEzPN4djLFBaKStUXx3bfJntB0O9/nPkc3zWaIepnLQbOTIweQGYlP9mfDSUU4HMp07MLlgEJQ==} + '@sanity/vision@6.9.1-next.9': + resolution: {integrity: sha512-2n6UGjPhZH024WBiqwh3m6pN859NuCEwCfYpp0sW92PfJQW4hh3M/rfDrYRzFnpxILT+cBnnXkosWGvxYhJtYQ==} peerDependencies: react: ^19.2.2 sanity: ^6.0.0-0 @@ -8874,8 +8889,8 @@ packages: resolution: {integrity: sha512-kj56ZjnOFbgDt91zYwQ10jsVUtVGJqAKfRbAir0EvTK84O5ZsSyc0rDEm2P3jmAJkxs4X1DOG8vtaYJQIA/XCA==} engines: {node: '>=22.12'} - groq@6.9.1-next.6: - resolution: {integrity: sha512-lIjkr5yVCy75qEjF9YlkyfbrK6jzJGArNbW3XbNm0eqvpGaZyc84e8oa1zlSX79kojgKbLOvwaxdxWlZHOJBtg==} + groq@6.9.1-next.9: + resolution: {integrity: sha512-DUPbMwWJ5IXURmJIpF2NOJL3Pj6RxW+Yh115De56slttbDBotmdNkTCbJl/su4fyYxVYBsrJuKVfM7w7Bo8dwA==} engines: {node: '>=22.12'} gunzip-maybe@1.4.2: @@ -10838,8 +10853,8 @@ packages: resolution: {integrity: sha512-JPdADikobt6zFuuCRhl6whNrCJlLPxpUmT/hNxLij70mkpeejHKDN+HeVlrdHI8snDTzRIiF3Ye8KyMIyVWA+A==} hasBin: true - sanity@6.9.1-next.6: - resolution: {integrity: sha512-Of0h5Jf768At4tiAjGn621laGHvVY098yjT3eqGSS9Yiz6IwByYkVGsE3yvEIrpiQnr5sMIeC+DcKKKV86H2Qw==} + sanity@6.9.1-next.9: + resolution: {integrity: sha512-nl/9eAtB6P29zO4menEoFRUzOm2QxrEbu/60zDCU0aa+Sr5I0gmx74avHzPjiHQn3GPG9Mr5vglXAOhYh+4Cwg==} engines: {node: '>=22.12'} hasBin: true peerDependencies: @@ -14652,7 +14667,7 @@ snapshots: '@portabletext/html': 1.1.1 '@portabletext/sanity-bridge': 3.2.3(@types/react@19.2.18) '@portabletext/schema': 2.2.3 - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) transitivePeerDependencies: - '@types/react' @@ -14762,8 +14777,8 @@ snapshots: '@portabletext/sanity-bridge@3.2.3(@types/react@19.2.18)': dependencies: '@portabletext/schema': 2.2.3 - '@sanity/schema': 6.9.1-next.6(@types/react@19.2.18) - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/schema': 6.9.1-next.9(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) transitivePeerDependencies: - '@types/react' @@ -15145,9 +15160,9 @@ snapshots: '@rolldown/plugin-babel': 0.2.3(@babel/core@7.29.7)(@babel/runtime@7.29.7)(rolldown@1.2.1)(vite@8.2.0) '@sanity/cli-core': 2.8.0(@noble/hashes@2.2.0)(@types/node@24.13.3)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(supports-color@8.1.1)(terser@5.49.0)(yaml@2.9.0) '@sanity/generate-help-url': 4.0.0 - '@sanity/schema': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/schema': 6.9.1-next.9(@types/react@19.2.18) '@sanity/telemetry': 1.1.0(react@19.2.8) - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) '@sanity/workbench-cli': 1.9.0(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@types/node@24.13.3)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.49.0)(tsx@4.23.5)(typescript@7.0.2)(yaml@2.9.0) '@vitejs/plugin-react': 6.0.5(@rolldown/plugin-babel@0.2.3)(babel-plugin-react-compiler@1.0.0)(vite@8.2.0) chokidar: 5.0.0 @@ -15249,10 +15264,10 @@ snapshots: '@sanity/import': 6.0.3(@sanity/client@7.26.0)(@types/react@19.2.18)(supports-color@8.1.1) '@sanity/migrate': 8.0.1(@types/react@19.2.18)(xstate@5.32.5) '@sanity/runtime-cli': 17.4.0(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@noble/hashes@2.2.0)(@types/node@24.13.3)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(rolldown@1.2.1)(terser@5.49.0)(tsx@4.23.5)(typescript@7.0.2)(yaml@2.9.0) - '@sanity/schema': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/schema': 6.9.1-next.9(@types/react@19.2.18) '@sanity/telemetry': 1.1.0(react@19.2.8) '@sanity/template-validator': 3.1.0 - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) '@sanity/workbench-cli': 1.9.0(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@types/node@24.13.3)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.49.0)(tsx@4.23.5)(typescript@7.0.2)(yaml@2.9.0) '@sanity/worker-channels': 2.0.0 '@vercel/frameworks': 3.29.0 @@ -15358,7 +15373,7 @@ snapshots: chokidar: 3.6.0 debug: 4.4.3(supports-color@8.1.1) globby: 11.1.0 - groq: 6.9.1-next.6 + groq: 6.9.1-next.9 groq-js: 1.30.3(supports-color@8.1.1) json5: 2.2.3 lodash-es: 4.18.1 @@ -15394,7 +15409,7 @@ snapshots: dependencies: '@sanity/diff-match-patch': 3.2.0 - '@sanity/diff@6.9.1-next.6': + '@sanity/diff@6.9.1-next.9': dependencies: '@sanity/diff-match-patch': 3.2.0 @@ -15444,7 +15459,7 @@ snapshots: '@sanity/asset-utils': 2.3.0 '@sanity/client': 7.26.0 '@sanity/generate-help-url': 4.0.0 - '@sanity/mutator': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/mutator': 6.9.1-next.9(@types/react@19.2.18) debug: 4.4.3(supports-color@8.1.1) get-it: 8.8.3 gunzip-maybe: 1.4.2 @@ -15486,8 +15501,8 @@ snapshots: dependencies: '@sanity/client': 7.26.0 '@sanity/mutate': 0.18.1(xstate@5.32.5) - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) - '@sanity/util': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) + '@sanity/util': 6.9.1-next.9(@types/react@19.2.18) arrify: 3.0.0 debug: 4.4.3(supports-color@8.1.1) fast-fifo: 1.3.2 @@ -15512,10 +15527,10 @@ snapshots: optionalDependencies: xstate: 5.32.5 - '@sanity/mutator@6.9.1-next.6(@types/react@19.2.18)': + '@sanity/mutator@6.9.1-next.9(@types/react@19.2.18)': dependencies: '@sanity/diff-match-patch': 3.2.0 - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) '@sanity/uuid': 3.0.3 debug: 4.4.3(supports-color@8.1.1) lodash-es: 4.18.1 @@ -15584,10 +15599,10 @@ snapshots: - supports-color - vue-tsc - '@sanity/presentation-comlink@2.2.0(@sanity/client@7.26.0)(@sanity/types@6.9.1-next.6)': + '@sanity/presentation-comlink@2.2.0(@sanity/client@7.26.0)(@sanity/types@6.9.1-next.9)': dependencies: '@sanity/comlink': 4.0.1 - '@sanity/visual-editing-types': 1.1.8(@sanity/client@7.26.0)(@sanity/types@6.9.1-next.6) + '@sanity/visual-editing-types': 1.1.8(@sanity/client@7.26.0)(@sanity/types@6.9.1-next.9) transitivePeerDependencies: - '@sanity/client' - '@sanity/types' @@ -15657,11 +15672,11 @@ snapshots: - vue-tsc - yaml - '@sanity/schema@6.9.1-next.6(@types/react@19.2.18)': + '@sanity/schema@6.9.1-next.9(@types/react@19.2.18)': dependencies: '@sanity/descriptors': 1.3.0 '@sanity/generate-help-url': 4.0.0 - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) arrify: 3.0.0 get-it: 8.8.3 groq-js: 2.0.0 @@ -15685,8 +15700,8 @@ snapshots: '@sanity/message-protocol': 0.23.0 '@sanity/mutate': 0.18.1(xstate@5.32.5) '@sanity/telemetry': 1.1.0(react@19.2.8) - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) - groq: 6.9.1-next.6 + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) + groq: 6.9.1-next.9 groq-js: 2.0.0 reselect: 5.2.0 rxjs: 7.8.2 @@ -15716,7 +15731,7 @@ snapshots: '@actions/github': 9.1.1 yaml: 2.9.0 - '@sanity/themer@0.2.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(sanity@6.9.1-next.6)(styled-components@6.4.4)': + '@sanity/themer@0.2.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(sanity@6.9.1-next.9)(styled-components@6.4.4)': dependencies: '@sanity/color': 3.0.8 '@sanity/icons': 5.2.1(react@19.2.8) @@ -15726,7 +15741,7 @@ snapshots: react-refractor: 4.0.0(react@19.2.8) refractor: 5.0.0 optionalDependencies: - sanity: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + sanity: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) styled-components: 6.4.4(react-dom@19.2.8)(react@19.2.8) transitivePeerDependencies: - '@emotion/is-prop-valid' @@ -15757,7 +15772,7 @@ snapshots: - supports-color - vite - '@sanity/types@6.9.1-next.6(@types/react@19.2.18)': + '@sanity/types@6.9.1-next.9(@types/react@19.2.18)': dependencies: '@sanity/client': 7.26.0 '@sanity/media-library-types': 1.6.0 @@ -15781,12 +15796,12 @@ snapshots: transitivePeerDependencies: - '@emotion/is-prop-valid' - '@sanity/util@6.9.1-next.6(@types/react@19.2.18)': + '@sanity/util@6.9.1-next.9(@types/react@19.2.18)': dependencies: '@date-fns/tz': 1.5.0 '@date-fns/utc': 2.1.1 '@sanity/client': 7.26.0 - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) date-fns: 4.4.0 rxjs: 7.8.2 transitivePeerDependencies: @@ -15830,7 +15845,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - '@sanity/vision@6.9.1-next.6(@babel/runtime@7.29.7)(@codemirror/theme-one-dark@6.1.3)(@emotion/is-prop-valid@1.4.0)(codemirror@6.0.2)(react-dom@19.2.8)(react@19.2.8)(sanity@6.9.1-next.6)(styled-components@6.4.4)': + '@sanity/vision@6.9.1-next.9(@babel/runtime@7.29.7)(@codemirror/theme-one-dark@6.1.3)(@emotion/is-prop-valid@1.4.0)(codemirror@6.0.2)(react-dom@19.2.8)(react@19.2.8)(sanity@6.9.1-next.9)(styled-components@6.4.4)': dependencies: '@codemirror/autocomplete': 6.20.3 '@codemirror/commands': 6.10.4 @@ -15858,7 +15873,7 @@ snapshots: react: 19.2.8 react-rx: 5.1.1(react@19.2.8)(rxjs@7.8.2) rxjs: 7.8.2 - sanity: 6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) + sanity: 6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2) use-effect-event: 2.0.3(react@19.2.8) transitivePeerDependencies: - '@babel/runtime' @@ -15869,17 +15884,17 @@ snapshots: - react-dom - styled-components - '@sanity/visual-editing-types@1.1.8(@sanity/client@7.26.0)(@sanity/types@6.9.1-next.6)': + '@sanity/visual-editing-types@1.1.8(@sanity/client@7.26.0)(@sanity/types@6.9.1-next.9)': dependencies: '@sanity/client': 7.26.0 optionalDependencies: - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) '@sanity/workbench-cli@1.9.0(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@types/node@24.13.3)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.49.0)(tsx@4.23.5)(typescript@7.0.2)(yaml@2.9.0)': dependencies: '@module-federation/vite': 1.20.1(typescript@7.0.2)(vite@8.2.0) '@sanity/cli-core': 2.8.0(@noble/hashes@2.2.0)(@types/node@24.13.3)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(supports-color@8.1.1)(terser@5.49.0)(yaml@2.9.0) - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) '@vitejs/plugin-react': 6.0.5(@rolldown/plugin-babel@0.2.3)(babel-plugin-react-compiler@1.0.0)(vite@8.2.0) form-data: 4.0.6 tar-fs: 3.1.3 @@ -18198,7 +18213,7 @@ snapshots: dependencies: obug: 2.1.4 - groq@6.9.1-next.6: {} + groq@6.9.1-next.9: {} gunzip-maybe@1.4.2: dependencies: @@ -20172,7 +20187,7 @@ snapshots: - supports-color - utf-8-validate - sanity@6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2): + sanity@6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react-dom@19.2.4)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(terser@5.49.0)(typescript@7.0.2): dependencies: '@algorithm.ts/lcs': 4.0.6 '@date-fns/tz': 1.5.0 @@ -20204,7 +20219,7 @@ snapshots: '@sanity/client': 7.26.0 '@sanity/color': 3.0.8 '@sanity/comlink': 4.0.1 - '@sanity/diff': 6.9.1-next.6 + '@sanity/diff': 6.9.1-next.9 '@sanity/diff-match-patch': 3.2.0 '@sanity/diff-patch': 5.0.0 '@sanity/eventsource': 5.0.4 @@ -20217,15 +20232,15 @@ snapshots: '@sanity/message-protocol': 0.24.0 '@sanity/migrate': 8.0.1(@types/react@19.2.18)(xstate@5.32.5) '@sanity/mutate': 0.18.1(xstate@5.32.5) - '@sanity/mutator': 6.9.1-next.6(@types/react@19.2.18) - '@sanity/presentation-comlink': 2.2.0(@sanity/client@7.26.0)(@sanity/types@6.9.1-next.6) + '@sanity/mutator': 6.9.1-next.9(@types/react@19.2.18) + '@sanity/presentation-comlink': 2.2.0(@sanity/client@7.26.0)(@sanity/types@6.9.1-next.9) '@sanity/preview-url-secret': 4.1.2(@sanity/client@7.26.0) '@sanity/prism-groq': 1.1.2 - '@sanity/schema': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/schema': 6.9.1-next.9(@types/react@19.2.18) '@sanity/telemetry': 1.1.0(react@19.2.8) - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) '@sanity/ui': 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) - '@sanity/util': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/util': 6.9.1-next.9(@types/react@19.2.18) '@sanity/uuid': 3.0.3 '@sanity/workbench': 0.1.0-alpha.36(@sanity/sdk@2.19.0)(react@19.2.8)(xstate@5.32.5) '@sentry/react': 10.69.0(react@19.2.8) @@ -20320,7 +20335,7 @@ snapshots: - utf-8-validate - vue-tsc - sanity@6.9.1-next.6(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(supports-color@8.1.1)(terser@5.49.0)(typescript@7.0.2): + sanity@6.9.1-next.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(@emotion/is-prop-valid@1.4.0)(@noble/hashes@2.2.0)(@rolldown/plugin-babel@0.2.3)(@sanity/sdk@2.19.0)(@types/node@24.13.3)(@types/react@19.2.18)(@vitejs/devtools@0.4.12)(babel-plugin-react-compiler@1.0.0)(esbuild@0.28.1)(jiti@2.7.0)(oxfmt@0.61.0)(react-dom@19.2.8)(react@19.2.8)(rolldown@1.2.1)(styled-components@6.4.4)(supports-color@8.1.1)(terser@5.49.0)(typescript@7.0.2): dependencies: '@algorithm.ts/lcs': 4.0.6 '@date-fns/tz': 1.5.0 @@ -20352,7 +20367,7 @@ snapshots: '@sanity/client': 7.26.0 '@sanity/color': 3.0.8 '@sanity/comlink': 4.0.1 - '@sanity/diff': 6.9.1-next.6 + '@sanity/diff': 6.9.1-next.9 '@sanity/diff-match-patch': 3.2.0 '@sanity/diff-patch': 5.0.0 '@sanity/eventsource': 5.0.4 @@ -20365,15 +20380,15 @@ snapshots: '@sanity/message-protocol': 0.24.0 '@sanity/migrate': 8.0.1(@types/react@19.2.18)(xstate@5.32.5) '@sanity/mutate': 0.18.1(xstate@5.32.5) - '@sanity/mutator': 6.9.1-next.6(@types/react@19.2.18) - '@sanity/presentation-comlink': 2.2.0(@sanity/client@7.26.0)(@sanity/types@6.9.1-next.6) + '@sanity/mutator': 6.9.1-next.9(@types/react@19.2.18) + '@sanity/presentation-comlink': 2.2.0(@sanity/client@7.26.0)(@sanity/types@6.9.1-next.9) '@sanity/preview-url-secret': 4.1.2(@sanity/client@7.26.0) '@sanity/prism-groq': 1.1.2 - '@sanity/schema': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/schema': 6.9.1-next.9(@types/react@19.2.18) '@sanity/telemetry': 1.1.0(react@19.2.8) - '@sanity/types': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/types': 6.9.1-next.9(@types/react@19.2.18) '@sanity/ui': 3.5.1(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8)(react@19.2.8)(styled-components@6.4.4) - '@sanity/util': 6.9.1-next.6(@types/react@19.2.18) + '@sanity/util': 6.9.1-next.9(@types/react@19.2.18) '@sanity/uuid': 3.0.3 '@sanity/workbench': 0.1.0-alpha.36(@sanity/sdk@2.19.0)(react@19.2.8)(xstate@5.32.5) '@sentry/react': 10.69.0(react@19.2.8) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6516aa75b8..b22ba96cc7 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -49,6 +49,7 @@ catalog: '@vis.gl/react-google-maps': ^1.9.0 '@vitest/coverage-v8': ^4.1.10 babel-plugin-react-compiler: ^1.0.0 + clsx: ^2.1.1 date-fns: ^4.4.0 groq: ^6.9.0 jsdom: ^29.1.1