sanity 6.4.1-next.4 → 6.4.1-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -695,33 +695,35 @@ function toVariantDocumentVersion(document) {
695
695
  } : null;
696
696
  }
697
697
  function useVariantDocuments(variantId) {
698
- const $ = c(13), enabled = !!variantId, t0 = variantId ?? "";
698
+ const $ = c(15), enabled = !!variantId;
699
+ let t0;
700
+ $[0] !== variantId ? (t0 = variantId ? getVariantId(variantId) : "", $[0] = variantId, $[1] = t0) : t0 = $[1];
699
701
  let t1;
700
- $[0] !== t0 ? (t1 = {
702
+ $[2] !== t0 ? (t1 = {
701
703
  variantId: t0
702
- }, $[0] = t0, $[1] = t1) : t1 = $[1];
704
+ }, $[2] = t0, $[3] = t1) : t1 = $[3];
703
705
  const params = t1, t2 = enabled ? `variant-${variantId}` : "variant-disabled";
704
706
  let t3;
705
- $[2] !== enabled || $[3] !== params || $[4] !== t2 ? (t3 = {
707
+ $[4] !== enabled || $[5] !== params || $[6] !== t2 ? (t3 = {
706
708
  groqFilter: "sanity::partOfVariant($variantId)",
707
709
  params,
708
710
  cacheKey: t2,
709
711
  enabled
710
- }, $[2] = enabled, $[3] = params, $[4] = t2, $[5] = t3) : t3 = $[5];
712
+ }, $[4] = enabled, $[5] = params, $[6] = t2, $[7] = t3) : t3 = $[7];
711
713
  const {
712
714
  loading,
713
715
  results,
714
716
  error
715
717
  } = useBundleDocuments(t3);
716
718
  let t4;
717
- $[6] !== enabled || $[7] !== results ? (t4 = enabled ? toDocumentInVariants(results) : [], $[6] = enabled, $[7] = results, $[8] = t4) : t4 = $[8];
719
+ $[8] !== enabled || $[9] !== results ? (t4 = enabled ? toDocumentInVariants(results) : [], $[8] = enabled, $[9] = results, $[10] = t4) : t4 = $[10];
718
720
  const variantResults = t4, t5 = enabled && loading, t6 = enabled ? error : null;
719
721
  let t7;
720
- return $[9] !== t5 || $[10] !== t6 || $[11] !== variantResults ? (t7 = {
722
+ return $[11] !== t5 || $[12] !== t6 || $[13] !== variantResults ? (t7 = {
721
723
  loading: t5,
722
724
  results: variantResults,
723
725
  error: t6
724
- }, $[9] = t5, $[10] = t6, $[11] = variantResults, $[12] = t7) : t7 = $[12], t7;
726
+ }, $[11] = t5, $[12] = t6, $[13] = variantResults, $[14] = t7) : t7 = $[14], t7;
725
727
  }
726
728
  function toDocumentInVariants(results) {
727
729
  return results.flatMap((result) => {
@@ -1 +1 @@
1
- {"version":3,"file":"VariantsTool.js","sources":["../../src/core/variants/store/createVariantOperationsStore.ts","../../src/core/variants/store/useVariantOperations.ts","../../src/core/variants/util/getIsVariantInvalid.ts","../../src/core/variants/util/conditionValidation.ts","../../src/core/variants/util/createVariantId.ts","../../src/core/variants/util/variantDefaults.ts","../../src/core/variants/components/dialog/conditionSuggestions.ts","../../src/core/variants/components/dialog/ConditionAutocompleteInput.tsx","../../src/core/variants/components/dialog/VariantForm.tsx","../../src/core/variants/components/dialog/VariantDialog.tsx","../../src/core/variants/components/dialog/EditVariantDialog.tsx","../../src/core/variants/tool/detail/variantDocumentVersion.ts","../../src/core/variants/hooks/useVariantDocuments.ts","../../src/core/variants/tool/detail/groupVariantDocumentsByGroup.ts","../../src/core/variants/tool/detail/VariantDetailMenuButton.tsx","../../src/core/variants/tool/detail/VariantDetailFooter.tsx","../../src/core/variants/tool/detail/variantDocumentTable/getDocumentPreviewTitle.ts","../../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentBundleChips.tsx","../../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentPreview.tsx","../../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentTableColumnDefs.tsx","../../src/core/variants/tool/detail/VariantDocumentsTable.tsx","../../src/core/variants/tool/detail/VariantDetail.tsx","../../src/core/variants/components/dialog/CreateVariantDialog.tsx","../../src/core/variants/tool/overview/VariantMenuButton.tsx","../../src/core/variants/tool/resources/VariantIllustration.tsx","../../src/core/variants/tool/overview/VariantsEmptyState.tsx","../../src/core/variants/tool/overview/VariantsOverviewColumnDefs.tsx","../../src/core/variants/tool/overview/VariantsOverview.tsx","../../src/core/variants/tool/VariantsTool.tsx"],"sourcesContent":["import {type SanityClient} from '@sanity/client'\n\nimport {getVariantId} from '../tool/util'\nimport {type EditableSystemVariant} from '../types'\nimport {variantsClient, type VariantDefinitionActionResult} from './variantsClient'\n\nexport interface VariantOperationsStore {\n createVariant: (variant: EditableSystemVariant) => Promise<VariantDefinitionActionResult>\n updateVariant: (variant: EditableSystemVariant) => Promise<VariantDefinitionActionResult>\n deleteVariant: (variantId: string) => Promise<VariantDefinitionActionResult>\n}\n\n/**\n * Variant definition writes use the actions API. See ../ACTIONS.md.\n */\nexport function createVariantOperationsStore(options: {\n client: SanityClient\n}): VariantOperationsStore {\n const client = variantsClient(options.client)\n\n const handleCreateVariant = async (variant: EditableSystemVariant) => {\n const variantId = getVariantId(variant._id)\n const action = {\n actionType: 'sanity.action.variant.definition.create' as const,\n variantId,\n conditions: variant.conditions,\n priority: variant.priority,\n ...(variant.metadata ? {metadata: variant.metadata} : {}),\n }\n\n return await client.action(action, {tag: 'variants.create'})\n }\n\n const handleUpdateVariant = async (variant: EditableSystemVariant) => {\n const variantId = getVariantId(variant._id)\n const setPayload: Pick<EditableSystemVariant, 'conditions' | 'priority'> &\n Partial<Pick<EditableSystemVariant, 'metadata'>> = {\n conditions: variant.conditions,\n priority: variant.priority,\n }\n\n if (variant.metadata) {\n setPayload.metadata = variant.metadata\n }\n\n const patch: {\n set: typeof setPayload\n unset?: ['metadata']\n } = {\n set: setPayload,\n }\n\n if (!variant.metadata) {\n patch.unset = ['metadata']\n }\n\n const action = {\n actionType: 'sanity.action.variant.definition.edit' as const,\n variantId,\n patch,\n }\n\n return await client.action(action, {tag: 'variants.edit'})\n }\n\n const handleDeleteVariant = async (variantIdOrDocumentId: string) => {\n const action = {\n actionType: 'sanity.action.variant.definition.delete' as const,\n variantId: getVariantId(variantIdOrDocumentId),\n }\n\n return await client.action(action, {tag: 'variants.delete'})\n }\n\n return {\n createVariant: handleCreateVariant,\n updateVariant: handleUpdateVariant,\n deleteVariant: handleDeleteVariant,\n }\n}\n","import {useMemo} from 'react'\n\nimport {useClient} from '../../hooks'\nimport {VARIANTS_STUDIO_CLIENT_OPTIONS} from './constants'\nimport {createVariantOperationsStore} from './createVariantOperationsStore'\n\n/**\n * @internal\n */\nexport function useVariantOperations() {\n const studioClient = useClient(VARIANTS_STUDIO_CLIENT_OPTIONS)\n\n return useMemo(\n () =>\n createVariantOperationsStore({\n client: studioClient,\n }),\n [studioClient],\n )\n}\n","import {type EditableSystemVariant} from '../types'\n\n/**\n * @internal\n */\nexport function getVariantTitleValue(variant: EditableSystemVariant): string {\n const title = variant.metadata?.title\n\n return typeof title === 'string' ? title.trim() : ''\n}\n\n/**\n * @internal\n */\nexport function getIsVariantInvalid(variant: EditableSystemVariant): boolean {\n return !getVariantTitleValue(variant) || !getHasValidConditions(variant.conditions)\n}\n\nfunction getHasValidConditions(conditions: EditableSystemVariant['conditions']): boolean {\n const entries = Object.entries(conditions)\n\n return entries.length > 0 && entries.every(([key, value]) => Boolean(key.trim() && value.trim()))\n}\n","const CONDITION_KEY_REGEX = /^[a-z][a-z0-9_-]{0,63}$/\nconst CONDITION_SEPARATOR = ':'\nconst RESERVED_KEY_PREFIXES = ['_', '$'] as const\n\nexport type ConditionKeyValidationError = 'invalid' | 'reserved'\nexport type ConditionValueValidationError = 'empty' | 'invalid'\n\nexport function getConditionKeyValidationError(\n key: string,\n): ConditionKeyValidationError | undefined {\n const trimmedKey = key.trim()\n\n if (!trimmedKey) {\n return undefined\n }\n\n for (const prefix of RESERVED_KEY_PREFIXES) {\n if (trimmedKey.startsWith(prefix)) {\n return 'reserved'\n }\n }\n\n if (trimmedKey.includes(CONDITION_SEPARATOR) || !CONDITION_KEY_REGEX.test(trimmedKey)) {\n return 'invalid'\n }\n\n return undefined\n}\n\nexport function getConditionValueValidationError(\n value: string,\n): ConditionValueValidationError | undefined {\n if (!value.trim()) {\n return 'empty'\n }\n\n if (value.includes(CONDITION_SEPARATOR)) {\n return 'invalid'\n }\n\n return undefined\n}\n","// Mimics the implementation from createReleaseId.ts\nimport {customAlphabet} from 'nanoid'\n\nimport {VARIANT_DOCUMENTS_PATH} from '../store/constants'\n\n/**\n * ~24 years (or 7.54e+8 seconds) needed, in order to have a 1% probability of at least one collision if 10 ID's are generated every hour.\n */\nconst createVariantIdSuffix = customAlphabet(\n 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',\n 8,\n)\n\n/**\n * Create a unique system variant document id.\n *\n * @internal\n */\nexport function createVariantId(): `${typeof VARIANT_DOCUMENTS_PATH}.${string}` {\n return `${VARIANT_DOCUMENTS_PATH}.${createVariantIdSuffix()}`\n}\n","import {type PortableTextBlock} from '@sanity/types'\nimport {randomKey} from '@sanity/util/content'\n\nimport {type EditableSystemVariant} from '../types'\nimport {createVariantId} from './createVariantId'\n\n/**\n * @internal\n */\nexport function getVariantDefaults(): EditableSystemVariant {\n return {\n _id: createVariantId(),\n _type: 'system.variant',\n conditions: {},\n priority: 0,\n metadata: {\n title: '',\n description: [],\n },\n }\n}\n\n/**\n * @internal\n */\nexport function createPortableTextDescription(text: string): PortableTextBlock[] {\n const trimmedText = text.trim()\n\n if (!trimmedText) {\n return []\n }\n\n return [\n {\n _key: randomKey(12),\n _type: 'block',\n children: [\n {\n _key: randomKey(12),\n _type: 'span',\n marks: [],\n text,\n },\n ],\n markDefs: [],\n style: 'normal',\n },\n ]\n}\n","import {type SystemVariant} from '../../types'\n\nexport interface ConditionSuggestionOption {\n value: string\n}\n\n/**\n * Precomputed lookup of the condition keys and per-key values used across all\n * existing variants. Building this once (e.g. in a `useMemo` keyed on the\n * variants) keeps per-row option derivation cheap, since it avoids re-scanning\n * every variant on each render/keystroke.\n *\n * @internal\n */\nexport interface ConditionSuggestionIndex {\n /** Unique condition keys, sorted. */\n keys: string[]\n /** Unique values per condition key, sorted. */\n valuesByKey: Map<string, string[]>\n}\n\nfunction sortValues(values: Iterable<string>): string[] {\n return Array.from(values)\n .filter(Boolean)\n .toSorted((a, b) => a.localeCompare(b))\n}\n\n/**\n * @internal\n */\nexport function buildConditionSuggestionIndex(variants: SystemVariant[]): ConditionSuggestionIndex {\n const keys = new Set<string>()\n const valuesByKey = new Map<string, Set<string>>()\n\n variants.forEach((variant) => {\n Object.entries(variant.conditions).forEach(([rawKey, rawValue]) => {\n const key = rawKey.trim()\n\n if (!key) {\n return\n }\n\n keys.add(key)\n\n const value = rawValue?.trim()\n\n if (!value) {\n return\n }\n\n let values = valuesByKey.get(key)\n\n if (!values) {\n values = new Set<string>()\n valuesByKey.set(key, values)\n }\n\n values.add(value)\n })\n })\n\n return {\n keys: sortValues(keys),\n valuesByKey: new Map(Array.from(valuesByKey, ([key, values]) => [key, sortValues(values)])),\n }\n}\n\n/**\n * @internal\n */\nexport function getConditionKeyOptions(\n index: ConditionSuggestionIndex,\n rows: ReadonlyArray<{key: string}>,\n currentRowIndex: number,\n): ConditionSuggestionOption[] {\n const usedKeys = new Set(\n rows\n .filter((_, rowIndex) => rowIndex !== currentRowIndex)\n .map((row) => row.key.trim())\n .filter(Boolean),\n )\n\n return index.keys.filter((key) => !usedKeys.has(key)).map((value) => ({value}))\n}\n\n/**\n * @internal\n */\nexport function getConditionValueOptions(\n index: ConditionSuggestionIndex,\n conditionKey: string,\n): ConditionSuggestionOption[] {\n const key = conditionKey.trim()\n\n if (!key) {\n return []\n }\n\n return index.valuesByKey.get(key)?.map((value) => ({value})) ?? []\n}\n\n/**\n * @internal\n */\nexport function filterConditionOption(query: string, option: ConditionSuggestionOption): boolean {\n return option.value.toLowerCase().includes(query.trim().toLowerCase())\n}\n","import {Autocomplete} from '@sanity/ui'\nimport {useCallback, useId, useState} from 'react'\n\nimport {type ConditionSuggestionOption, filterConditionOption} from './conditionSuggestions'\n\ninterface ConditionAutocompleteInputProps {\n ariaLabel: string\n autoFocus?: boolean\n customValidity?: string\n invalid?: boolean\n onChange: (value: string) => void\n options: ConditionSuggestionOption[]\n placeholder: string\n testId: string\n value: string\n}\n\nexport function ConditionAutocompleteInput(\n props: ConditionAutocompleteInputProps,\n): React.JSX.Element {\n const {\n ariaLabel,\n autoFocus,\n customValidity,\n invalid,\n onChange,\n options,\n placeholder,\n testId,\n value,\n } = props\n const id = useId()\n const [focused, setFocused] = useState(false)\n\n const handleQueryChange = useCallback(\n (nextValue: string | null) => {\n // `onChange` fires when an option is selected. Free-text typing is exposed\n // through `onQueryChange`; `null` means the internal query closed.\n if (nextValue !== null) {\n onChange(nextValue)\n }\n },\n [onChange],\n )\n\n return (\n <Autocomplete\n id={id}\n aria-invalid={invalid ? 'true' : undefined}\n aria-label={ariaLabel}\n autoFocus={autoFocus}\n customValidity={customValidity}\n data-testid={testId}\n filterOption={filterConditionOption}\n fontSize={1}\n onBlur={() => setFocused(false)}\n onChange={onChange}\n onFocus={() => setFocused(true)}\n onQueryChange={handleQueryChange}\n openButton\n options={options}\n placeholder={placeholder}\n value={focused ? undefined : value}\n />\n )\n}\n","import {isPortableTextBlock, toPlainText} from '@portabletext/toolkit'\nimport {AddIcon} from '@sanity/icons/Add'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {type Path} from '@sanity/mutate'\nimport {type PortableTextBlock} from '@sanity/types'\nimport {Box, Flex, Stack, Text, TextArea, TextInput} from '@sanity/ui'\nimport {randomKey} from '@sanity/util/content'\nimport {type ChangeEvent, useCallback, useId, useMemo, useState} from 'react'\n\nimport {Button} from '../../../../ui-components'\nimport {TextWithTone} from '../../../components/textWithTone/TextWithTone'\nimport {useTranslation} from '../../../i18n'\nimport {type VariantsLocaleResourceKeys, variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {type EditableSystemVariant} from '../../types'\nimport {\n getConditionKeyValidationError,\n getConditionValueValidationError,\n} from '../../util/conditionValidation'\nimport {getVariantTitleValue} from '../../util/getIsVariantInvalid'\nimport {createPortableTextDescription} from '../../util/variantDefaults'\nimport {ConditionAutocompleteInput} from './ConditionAutocompleteInput'\nimport {\n buildConditionSuggestionIndex,\n getConditionKeyOptions,\n getConditionValueOptions,\n} from './conditionSuggestions'\n\ninterface ConditionRow {\n id: string\n key: string\n value: string\n}\n\ninterface ConditionRowValidation {\n key: VariantsLocaleResourceKeys | null\n value: VariantsLocaleResourceKeys | null\n}\n\nfunction getConditionRows(conditions: EditableSystemVariant['conditions']): ConditionRow[] {\n const rows = Object.entries(conditions).map(([key, value]) => ({\n id: randomKey(12),\n key,\n value,\n }))\n\n return rows.length ? rows : [{id: randomKey(12), key: '', value: ''}]\n}\n\nfunction getConditionsFromRows(rows: ConditionRow[]): EditableSystemVariant['conditions'] {\n return rows.reduce<EditableSystemVariant['conditions']>((conditions, row) => {\n const key = row.key.trim()\n const value = row.value.trim()\n\n if (key && value) {\n conditions[key] = value\n }\n\n return conditions\n }, {})\n}\n\nfunction isConditionRowEmpty(row: ConditionRow): boolean {\n return !row.key.trim() && !row.value.trim()\n}\n\nfunction getEmptyConditionRowValidation(): ConditionRowValidation {\n return {key: null, value: null}\n}\n\nfunction getConditionRowsValidation(rows: ConditionRow[]): Map<number, ConditionRowValidation> {\n const conditionRowsValidation = new Map<number, ConditionRowValidation>()\n const seenKeys = new Set<string>()\n\n rows.forEach((row, index) => {\n const validation: ConditionRowValidation = {key: null, value: null}\n const key = row.key.trim()\n const value = row.value.trim()\n\n if (key) {\n if (seenKeys.has(key)) {\n validation.key = 'dialog.create.condition-key.duplicate'\n } else {\n seenKeys.add(key)\n }\n\n const keyError = getConditionKeyValidationError(row.key)\n\n if (!validation.key && keyError === 'reserved') {\n validation.key = 'dialog.create.condition-key.reserved'\n } else if (!validation.key && keyError === 'invalid') {\n validation.key = 'dialog.create.condition-key.invalid'\n }\n } else if (value) {\n validation.key = 'dialog.create.condition-key.required'\n }\n\n const valueError = getConditionValueValidationError(row.value)\n\n if ((key || isConditionRowEmpty(row)) && valueError === 'empty') {\n validation.value = 'dialog.create.condition-value.required'\n } else if (valueError === 'invalid') {\n validation.value = 'dialog.create.condition-value.invalid'\n }\n\n conditionRowsValidation.set(index, validation)\n })\n\n return conditionRowsValidation\n}\n\nfunction hasConditionRowsValidationErrors(\n validation: Map<number, ConditionRowValidation>,\n): boolean {\n return Array.from(validation.values()).some(({key, value}) => key || value)\n}\n\nfunction getPortableTextDescriptionValue(description?: PortableTextBlock[]): string {\n if (!Array.isArray(description) || !description.every(isPortableTextBlock)) {\n return ''\n }\n\n return toPlainText(description)\n}\n\nexport type VariantFormChangeHandler = (path: Path, value: unknown) => void\n\nexport function VariantForm(props: {\n onChange: VariantFormChangeHandler\n onConditionValidityChange?: (invalid: boolean) => void\n showValidation?: boolean\n value: EditableSystemVariant\n}) {\n const {onChange, onConditionValidityChange, showValidation = false, value} = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {data: variants} = useAllVariants()\n const suggestionIndex = useMemo(() => buildConditionSuggestionIndex(variants), [variants])\n const titleId = useId()\n const descriptionId = useId()\n // `conditions` is stored as an object, but object keys are awkward to edit live:\n // duplicates collapse and partial key edits like \"far\" -> \"favorite\" can lose data.\n // Keep rows locally while editing, then commit back once they serialize cleanly.\n const [conditionRows, setConditionRows] = useState(() => getConditionRows(value.conditions))\n const conditionsValidation = useMemo(\n () => getConditionRowsValidation(conditionRows),\n [conditionRows],\n )\n\n const hasTitle = Boolean(getVariantTitleValue(value))\n const showTitleError = showValidation && !hasTitle\n const lastConditionRow = conditionRows[conditionRows.length - 1]\n const canAddCondition = Boolean(\n lastConditionRow && !hasConditionRowsValidationErrors(conditionsValidation),\n )\n\n const updateConditionRows = useCallback(\n (nextRows: ConditionRow[]) => {\n const rows = nextRows.length ? nextRows : getConditionRows({})\n\n setConditionRows(rows)\n\n const nextRowsValidation = getConditionRowsValidation(rows)\n const nextRowsInvalid = hasConditionRowsValidationErrors(nextRowsValidation)\n onConditionValidityChange?.(nextRowsInvalid)\n\n if (nextRows.length === 0 || !nextRowsInvalid) {\n onChange(['conditions'], getConditionsFromRows(nextRows))\n }\n },\n [onChange, onConditionValidityChange],\n )\n\n const handleTitleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n onChange(['metadata', 'title'], event.currentTarget.value)\n },\n [onChange],\n )\n\n const handleDescriptionChange = useCallback(\n (event: ChangeEvent<HTMLTextAreaElement>) => {\n onChange(\n ['metadata', 'description'],\n createPortableTextDescription(event.currentTarget.value),\n )\n },\n [onChange],\n )\n\n const handleConditionChange = useCallback(\n (index: number, field: 'key' | 'value', nextValue: string) => {\n const nextRows = conditionRows.map((row, rowIndex) =>\n rowIndex === index ? {...row, [field]: nextValue} : row,\n )\n\n updateConditionRows(nextRows)\n },\n [conditionRows, updateConditionRows],\n )\n\n const handleAddCondition = useCallback(() => {\n if (!canAddCondition) {\n return\n }\n\n updateConditionRows([...conditionRows, {id: randomKey(12), key: '', value: ''}])\n }, [canAddCondition, conditionRows, updateConditionRows])\n\n const handleRemoveCondition = useCallback(\n (index: number) => {\n const nextRows = conditionRows.filter((_, rowIndex) => rowIndex !== index)\n\n updateConditionRows(nextRows)\n },\n [conditionRows, updateConditionRows],\n )\n\n return (\n <Stack space={5}>\n <Stack space={3}>\n <Text as=\"label\" htmlFor={titleId} size={1} weight=\"medium\">\n {t('dialog.create.variant-title.label')}\n </Text>\n <TextInput\n autoFocus\n aria-invalid={showTitleError ? 'true' : undefined}\n customValidity={showTitleError ? t('dialog.create.variant-title.required') : undefined}\n data-testid=\"variant-form-title\"\n fontSize={2}\n id={titleId}\n onChange={handleTitleChange}\n placeholder={t('dialog.create.variant-title.placeholder')}\n value={typeof value.metadata?.title === 'string' ? value.metadata.title : ''}\n />\n {showTitleError && (\n <TextWithTone data-testid=\"variant-form-title-error\" size={1} tone=\"critical\">\n {t('dialog.create.variant-title.required')}\n </TextWithTone>\n )}\n </Stack>\n\n <Stack space={3}>\n <Text as=\"label\" htmlFor={descriptionId} size={1} weight=\"medium\">\n {t('dialog.create.description.label')}\n </Text>\n <TextArea\n data-testid=\"variant-form-description\"\n fontSize={1}\n id={descriptionId}\n onChange={handleDescriptionChange}\n placeholder={t('dialog.create.description.placeholder')}\n rows={3}\n value={getPortableTextDescriptionValue(value.metadata?.description)}\n />\n </Stack>\n\n <Stack space={3}>\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n {t('dialog.create.conditions.title')}\n </Text>\n <Text muted size={1}>\n {t('dialog.create.conditions.description')}\n </Text>\n </Stack>\n\n <Stack space={2}>\n {conditionRows.map((row, index) => {\n const validation = conditionsValidation.get(index) ?? getEmptyConditionRowValidation()\n const valueValidation = showValidation ? validation.value : null\n const conditionValidationError = validation.key || valueValidation\n\n return (\n <Stack key={row.id} space={2}>\n <Flex align=\"center\" gap={2}>\n <Box flex={1}>\n <ConditionAutocompleteInput\n autoFocus={index > 0}\n ariaLabel={t('dialog.create.condition-key.label')}\n customValidity={validation.key ? t(validation.key) : undefined}\n invalid={Boolean(validation.key)}\n onChange={(nextValue) => handleConditionChange(index, 'key', nextValue)}\n options={getConditionKeyOptions(suggestionIndex, conditionRows, index)}\n placeholder={t('dialog.create.condition-key.placeholder')}\n testId=\"variant-form-condition-key\"\n value={row.key}\n />\n </Box>\n <Box flex={1}>\n <ConditionAutocompleteInput\n ariaLabel={t('dialog.create.condition-value.label')}\n customValidity={valueValidation ? t(valueValidation) : undefined}\n invalid={Boolean(valueValidation)}\n onChange={(nextValue) => handleConditionChange(index, 'value', nextValue)}\n options={getConditionValueOptions(suggestionIndex, row.key)}\n placeholder={t('dialog.create.condition-value.placeholder')}\n testId=\"variant-form-condition-value\"\n value={row.value}\n />\n </Box>\n <Button\n disabled={isConditionRowEmpty(row) && conditionRows.length === 1}\n icon={TrashIcon}\n mode=\"bleed\"\n onClick={() => handleRemoveCondition(index)}\n tone=\"critical\"\n tooltipProps={{content: t('dialog.create.remove-condition')}}\n type=\"button\"\n />\n </Flex>\n {conditionValidationError && (\n <TextWithTone\n data-testid={\n validation.key\n ? 'variant-form-condition-key-error'\n : 'variant-form-condition-value-error'\n }\n size={1}\n tone=\"critical\"\n >\n {t(conditionValidationError)}\n </TextWithTone>\n )}\n </Stack>\n )\n })}\n </Stack>\n\n <Flex>\n <Button\n disabled={!canAddCondition}\n icon={AddIcon}\n mode=\"ghost\"\n onClick={handleAddCondition}\n text={t('dialog.create.action.add-condition')}\n tooltipProps={\n canAddCondition\n ? null\n : {content: t('dialog.create.action.add-condition.disabled-hint')}\n }\n type=\"button\"\n />\n </Flex>\n </Stack>\n </Stack>\n )\n}\n","import {at, set} from '@sanity/mutate'\nimport {applyPatches} from '@sanity/mutate/_unstable_apply'\nimport {Box, Card, Flex, useToast} from '@sanity/ui'\nimport {type FormEvent, useCallback, useState} from 'react'\n\nimport {Button, Dialog} from '../../../../ui-components'\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type EditableSystemVariant} from '../../types'\nimport {getIsVariantInvalid} from '../../util/getIsVariantInvalid'\nimport {VariantForm, type VariantFormChangeHandler} from './VariantForm'\n\ninterface VariantDialogProps {\n confirmDataTestId: string\n confirmText: string\n errorTitle: string\n header: string\n id: string\n initialValue: EditableSystemVariant\n onCancel: () => void\n onSubmit: (variant: EditableSystemVariant) => Promise<void>\n renderCancelButton?: boolean\n}\n\nexport function VariantDialog(props: VariantDialogProps): React.JSX.Element {\n const {\n confirmDataTestId,\n confirmText,\n errorTitle,\n header,\n id,\n initialValue,\n onCancel,\n onSubmit,\n renderCancelButton = false,\n } = props\n const toast = useToast()\n const {t} = useTranslation(variantsLocaleNamespace)\n const [variant, setVariant] = useState(initialValue)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [showValidation, setShowValidation] = useState(false)\n const [conditionsInvalid, setConditionsInvalid] = useState(false)\n const invalid = getIsVariantInvalid(variant) || conditionsInvalid\n\n const handleVariantChange = useCallback<VariantFormChangeHandler>((path, nextValue) => {\n /* oxlint-disable typescript/no-unnecessary-type-assertion */\n setVariant(\n (currentVariant) =>\n applyPatches([at(path, set(nextValue))], currentVariant) as EditableSystemVariant,\n )\n /* oxlint-enable typescript/no-unnecessary-type-assertion */\n }, [])\n\n const handleSubmit = useCallback(\n async (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n\n if (invalid) {\n setShowValidation(true)\n return\n }\n\n setIsSubmitting(true)\n\n try {\n await onSubmit(variant)\n setIsSubmitting(false)\n } catch (error) {\n setIsSubmitting(false)\n console.error(error)\n toast.push({\n closable: true,\n status: 'error',\n title: errorTitle,\n })\n }\n },\n [errorTitle, invalid, onSubmit, toast, variant],\n )\n\n return (\n <Dialog\n __unstable_autoFocus={false}\n header={header}\n id={id}\n onClickOutside={isSubmitting ? undefined : onCancel}\n onClose={isSubmitting ? undefined : onCancel}\n padding={false}\n width={1}\n >\n <Card borderTop padding={4}>\n <form onSubmit={handleSubmit}>\n <Box paddingBottom={4}>\n <VariantForm\n onChange={handleVariantChange}\n onConditionValidityChange={setConditionsInvalid}\n showValidation={showValidation}\n value={variant}\n />\n </Box>\n <Flex gap={2} justify=\"flex-end\" paddingTop={5}>\n {renderCancelButton && (\n <Button\n disabled={isSubmitting}\n mode=\"ghost\"\n onClick={onCancel}\n text={t('dialog.edit.action.cancel')}\n type=\"button\"\n />\n )}\n <Button\n data-testid={confirmDataTestId}\n disabled={isSubmitting}\n loading={isSubmitting}\n size=\"large\"\n text={confirmText}\n type=\"submit\"\n />\n </Flex>\n </form>\n </Card>\n </Dialog>\n )\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {type EditableSystemVariant, type SystemVariant} from '../../types'\nimport {VariantDialog} from './VariantDialog'\n\ninterface EditVariantDialogProps {\n onCancel: () => void\n onSubmit: () => void\n variant: SystemVariant\n}\n\nfunction toEditableVariant(variant: SystemVariant): EditableSystemVariant {\n return {\n _id: variant._id,\n _type: variant._type,\n conditions: variant.conditions,\n priority: variant.priority,\n metadata: variant.metadata,\n }\n}\n\nexport function EditVariantDialog(props: EditVariantDialogProps): React.JSX.Element {\n const {onCancel, onSubmit, variant: initialVariant} = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {updateVariant} = useVariantOperations()\n const initialValue = useMemo(() => toEditableVariant(initialVariant), [initialVariant])\n\n const handleSubmit = useCallback(\n async (variant: EditableSystemVariant) => {\n await updateVariant(variant)\n onSubmit()\n },\n [onSubmit, updateVariant],\n )\n\n return (\n <VariantDialog\n confirmDataTestId=\"save-variant-button\"\n confirmText={t('dialog.edit.action.confirm')}\n errorTitle={t('dialog.edit.error.title')}\n header={t('dialog.edit.title')}\n id=\"edit-variant-dialog\"\n initialValue={initialValue}\n onCancel={onCancel}\n onSubmit={handleSubmit}\n renderCancelButton\n />\n )\n}\n","import {type SanityDocument} from '@sanity/client'\nimport {type DocumentSystem} from '@sanity/types'\n\nimport {DOCUMENT_SYSTEM_FIELD} from '../../../preview/constants'\nimport {type VariantDocumentVersion} from './types'\n\n/**\n * @internal\n */\nexport function toVariantDocumentVersion(document: SanityDocument): VariantDocumentVersion | null {\n const system = document[DOCUMENT_SYSTEM_FIELD] as DocumentSystem | undefined\n\n if (!system?.group?._ref) {\n return null\n }\n\n return {\n documentId: document._id,\n bundleId: system.bundleId ?? undefined,\n releaseRef: system.release?._ref ?? null,\n updatedAt: document._updatedAt ?? '',\n }\n}\n","import {useMemo} from 'react'\n\nimport {\n type DocumentInRelease,\n useBundleDocuments,\n} from '../../releases/tool/detail/useBundleDocuments'\nimport {type DocumentInVariant} from '../tool/detail/types'\nimport {toVariantDocumentVersion} from '../tool/detail/variantDocumentVersion'\n\n/**\n * Hook to fetch the documents that belong to a variant.\n *\n * Reuses the generic {@link useBundleDocuments} machinery with\n * `sanity::partOfVariant($variantId)`.\n *\n * @internal\n */\nexport function useVariantDocuments(variantId: string | undefined): {\n loading: boolean\n results: DocumentInVariant[]\n error: null | Error\n} {\n const enabled = Boolean(variantId)\n const params = useMemo(() => ({variantId: variantId ?? ''}), [variantId])\n\n const {loading, results, error} = useBundleDocuments({\n groqFilter: `sanity::partOfVariant($variantId)`,\n params,\n cacheKey: enabled ? `variant-${variantId}` : 'variant-disabled',\n enabled,\n })\n\n const variantResults = useMemo(\n () => (enabled ? toDocumentInVariants(results) : []),\n [enabled, results],\n )\n\n return {\n loading: enabled && loading,\n results: variantResults,\n error: enabled ? error : null,\n }\n}\n\nfunction toDocumentInVariants(results: DocumentInRelease[]): DocumentInVariant[] {\n return results.flatMap((result) => {\n const version = toVariantDocumentVersion(result.document)\n\n return version ? [{...result, version}] : []\n })\n}\n","import {type PerspectiveBundle} from '../../../perspective/types'\nimport {isPublishedBundleId} from '../util'\nimport {\n type DocumentInVariant,\n type DocumentInVariantGroup,\n type DocumentValidationStatus,\n type VariantDocumentVersion,\n} from './types'\n\nfunction getBundleSortOrder(bundleId: PerspectiveBundle | undefined): number {\n if (isPublishedBundleId(bundleId)) {\n return 0\n }\n\n if (bundleId === 'drafts') {\n return 1\n }\n\n return 2\n}\n\nfunction compareVariantDocumentVersions(\n left: VariantDocumentVersion,\n right: VariantDocumentVersion,\n): number {\n const leftOrder = getBundleSortOrder(left.bundleId)\n const rightOrder = getBundleSortOrder(right.bundleId)\n\n if (leftOrder !== rightOrder) {\n return leftOrder - rightOrder\n }\n\n return left.documentId.localeCompare(right.documentId)\n}\n\nfunction pickRepresentativeDocument(documents: DocumentInVariant[]): DocumentInVariant {\n return documents.reduce((latest, current) => {\n const latestUpdatedAt = latest.document._updatedAt ?? ''\n const currentUpdatedAt = current.document._updatedAt ?? ''\n\n return currentUpdatedAt > latestUpdatedAt ? current : latest\n })\n}\n\nfunction aggregateValidation(documents: DocumentInVariant[]): DocumentValidationStatus {\n const representative = pickRepresentativeDocument(documents)\n\n return {\n isValidating: documents.some((document) => document.validation.isValidating),\n validation: documents.flatMap((document) => document.validation.validation),\n revision: representative.validation.revision,\n hasError: documents.some((document) => document.validation.hasError),\n }\n}\n\n/**\n * Groups flat variant document versions into one row per document group.\n *\n * @internal\n */\nexport function groupVariantDocumentsByGroup(\n documents: DocumentInVariant[],\n): DocumentInVariantGroup[] {\n const groups = new Map<string, DocumentInVariant[]>()\n\n for (const document of documents) {\n const groupId = document.document._system?.group?._ref\n\n if (!groupId) {\n continue\n }\n\n const existingGroup = groups.get(groupId)\n\n if (existingGroup) {\n existingGroup.push(document)\n } else {\n groups.set(groupId, [document])\n }\n }\n\n return Array.from(groups.entries()).map(([groupId, groupDocuments]) => {\n const representative = pickRepresentativeDocument(groupDocuments)\n const versions = groupDocuments\n .map((item) => item.version)\n .toSorted(compareVariantDocumentVersions)\n\n return {\n ...representative,\n groupId,\n versions,\n validation: aggregateValidation(groupDocuments),\n }\n })\n}\n","import {Menu, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {MenuButton, MenuItem} from '../../../../ui-components'\nimport {ContextMenuButton} from '../../../components/contextMenuButton'\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId} from '../util'\n\nexport function VariantDetailMenuButton({variant}: {variant: SystemVariant}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const toast = useToast()\n const {deleteVariant} = useVariantOperations()\n const [isDeleting, setIsDeleting] = useState(false)\n\n const handleDelete = useCallback(async () => {\n setIsDeleting(true)\n\n try {\n await deleteVariant(variant._id)\n setIsDeleting(false)\n router.navigate({})\n } catch (error) {\n console.error(error)\n toast.push({\n closable: true,\n status: 'error',\n title: t('overview.action.delete-variant.error.title'),\n })\n setIsDeleting(false)\n }\n }, [deleteVariant, router, t, toast, variant._id])\n\n return (\n <MenuButton\n button={<ContextMenuButton disabled={isDeleting} loading={isDeleting} />}\n id={`variant-detail-actions-${getVariantId(variant._id)}`}\n menu={\n <Menu>\n <MenuItem\n // TODO: This action now doesn't validate the documents count in a variant, once we can\n // start adding documents to a variant we should revisit this to validate the documents count.\n // If it has documents we should probably disable the delete action or at least handle it differently.\n disabled={isDeleting}\n onClick={handleDelete}\n text={t('overview.action.delete-variant')}\n tone=\"critical\"\n />\n </Menu>\n }\n popover={{placement: 'bottom-end', portal: true}}\n />\n )\n}\n","import {DiamondIcon} from '@sanity/icons/Diamond'\nimport {Card, Flex, Text} from '@sanity/ui'\n\nimport {RelativeTime} from '../../../components'\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {VariantDetailMenuButton} from './VariantDetailMenuButton'\n\nexport function VariantDetailFooter({variant}: {variant: SystemVariant}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n return (\n <Card flex=\"none\">\n <Card borderTop marginX={2} style={{opacity: 0.6}} />\n\n <Flex padding={3}>\n <Flex flex={1} gap={1}>\n <Card>\n <Flex align=\"center\" gap={2}>\n <Text size={1}>\n <DiamondIcon />\n </Text>\n <Text muted size={1}>\n {t('detail.footer.created')}{' '}\n <RelativeTime time={variant._createdAt} useTemporalPhrase minimal />\n </Text>\n </Flex>\n </Card>\n </Flex>\n\n <Flex flex=\"none\" gap={1} data-testid=\"variant-detail-footer-actions\">\n <VariantDetailMenuButton variant={variant} />\n </Flex>\n </Flex>\n </Card>\n )\n}\n","import {type SanityDocument} from '@sanity/client'\n\nexport function getDocumentPreviewTitle(document: SanityDocument): string {\n const title = document.title || document.name\n\n return typeof title === 'string' && title.trim() ? title : document._id\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Badge, Box, Flex} from '@sanity/ui'\nimport {IntentLink} from 'sanity/router'\n\nimport {useTranslation} from '../../../../i18n'\nimport {ReleaseTitle} from '../../../../releases/components/ReleaseTitle'\nimport {RELEASES_INTENT} from '../../../../releases/plugin'\nimport {getReleaseDocumentIdFromReleaseId} from '../../../../releases/util/getReleaseDocumentIdFromReleaseId'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {isPublishedBundleId, isReleaseBundle} from '../../util'\nimport {type VariantDocumentVersion} from '../types'\n\nfunction getReleaseDocumentForVersion(\n version: VariantDocumentVersion,\n releasesById: Map<string, ReleaseDocument>,\n): ReleaseDocument | undefined {\n if (version.releaseRef) {\n return releasesById.get(version.releaseRef)\n }\n\n if (isReleaseBundle(version.bundleId)) {\n const releaseDocumentId = getReleaseDocumentIdFromReleaseId(version.bundleId!)\n\n return releasesById.get(releaseDocumentId)\n }\n\n return undefined\n}\n\nfunction ReleaseBundleChip({release}: {release: ReleaseDocument}) {\n const {t} = useTranslation()\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n\n return (\n <ReleaseTitle\n title={release.metadata?.title}\n fallback={t('release.placeholder-untitled-release')}\n >\n {({displayTitle}) => (\n <IntentLink intent={RELEASES_INTENT} params={{id: releaseId}}>\n <Badge radius={2} tone=\"primary\">\n {displayTitle}\n </Badge>\n </IntentLink>\n )}\n </ReleaseTitle>\n )\n}\n\nfunction StaticBundleChip({label, tone}: {label: string; tone: 'positive' | 'default'}) {\n return (\n <Badge radius={2} tone={tone}>\n {label}\n </Badge>\n )\n}\n\nexport function VariantDocumentBundleChips({\n versions,\n releasesById,\n}: {\n versions: VariantDocumentVersion[]\n releasesById: Map<string, ReleaseDocument>\n}): React.JSX.Element {\n const {t} = useTranslation()\n\n return (\n <Box style={{minWidth: 0, width: '100%', overflowX: 'auto', overflowY: 'hidden'}}>\n <Flex align=\"center\" gap={1} wrap=\"nowrap\" style={{width: 'max-content'}}>\n {versions.map((version) => {\n if (isPublishedBundleId(version.bundleId)) {\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.chip.published')}\n tone=\"positive\"\n />\n )\n }\n\n if (version.bundleId === 'drafts') {\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.chip.draft')}\n tone=\"default\"\n />\n )\n }\n\n const release = getReleaseDocumentForVersion(version, releasesById)\n\n if (release) {\n return <ReleaseBundleChip key={version.documentId} release={release} />\n }\n\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.placeholder-untitled-release')}\n tone=\"default\"\n />\n )\n })}\n </Flex>\n </Box>\n )\n}\n","import {Card} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {type PreviewLayoutKey} from '../../../../components/previews/types'\nimport {DocumentPreviewPresence} from '../../../../presence'\nimport {SanityDefaultPreview} from '../../../../preview/components/SanityDefaultPreview'\nimport {useDocumentPresence} from '../../../../store/presence/useDocumentPresence'\nimport {useDocumentPreviewValues} from '../../../../tasks/hooks/useDocumentPreviewValues'\nimport {getPublishedId} from '../../../../util/draftUtils'\nimport {isPublishedBundleId} from '../../util'\nimport {type DocumentInVariantGroup} from '../types'\n\ninterface VariantDocumentPreviewProps {\n row: DocumentInVariantGroup\n layout?: PreviewLayoutKey\n variantId?: string\n}\n\ninterface VariantDocumentPreviewLinkProps extends React.ComponentPropsWithoutRef<'a'> {\n publishedId: string\n documentType: string\n searchParams: Array<[string, string]> | undefined\n}\n\nconst VariantDocumentPreviewLink = forwardRef(function VariantDocumentPreviewLink(\n {publishedId, documentType, searchParams, ...linkProps}: VariantDocumentPreviewLinkProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n return (\n <IntentLink\n {...linkProps}\n intent=\"edit\"\n params={{\n id: publishedId,\n type: documentType,\n }}\n searchParams={searchParams}\n ref={ref}\n />\n )\n})\n\nfunction getVersionPerspectiveNavigation(\n bundleId: DocumentInVariantGroup['version']['bundleId'],\n variantId?: string,\n): {\n perspectiveStack: string[]\n searchParams: Array<[string, string]> | undefined\n} {\n const searchParams: Array<[string, string]> = variantId ? [['variant', variantId]] : []\n\n if (isPublishedBundleId(bundleId)) {\n return {\n perspectiveStack: ['published'],\n searchParams: [...searchParams, ['perspective', 'published']],\n }\n }\n\n if (bundleId === 'drafts') {\n return {\n perspectiveStack: ['drafts'],\n searchParams: searchParams.length > 0 ? searchParams : undefined,\n }\n }\n\n return {\n perspectiveStack: [bundleId ?? '', 'drafts'],\n searchParams: [...searchParams, ['perspective', bundleId ?? '']],\n }\n}\n\nexport function VariantDocumentPreview({\n row,\n layout,\n variantId,\n}: VariantDocumentPreviewProps): React.JSX.Element {\n const publishedId = getPublishedId(row.groupId)\n const documentPresence = useDocumentPresence(row.document._id)\n const {perspectiveStack, searchParams} = useMemo(\n () => getVersionPerspectiveNavigation(row.version.bundleId, variantId),\n [row.version.bundleId, variantId],\n )\n\n const previewPresence = useMemo(\n () => documentPresence?.length > 0 && <DocumentPreviewPresence presence={documentPresence} />,\n [documentPresence],\n )\n\n const {isLoading: previewLoading, value: resolvedPreview} = useDocumentPreviewValues({\n documentId: row.document._id,\n documentType: row.document._type,\n perspectiveStack,\n })\n\n return (\n <Card\n tone=\"inherit\"\n as={VariantDocumentPreviewLink}\n publishedId={publishedId}\n documentType={row.document._type}\n searchParams={searchParams}\n radius={2}\n data-as=\"a\"\n >\n <SanityDefaultPreview\n {...(resolvedPreview || {})}\n status={previewPresence}\n isPlaceholder={previewLoading}\n layout={layout}\n />\n </Card>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Flex, Text} from '@sanity/ui'\n// eslint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\nimport {memo} from 'react'\n\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../../ui-components/tooltip'\nimport {RelativeTime} from '../../../../components/RelativeTime'\nimport {useSchema} from '../../../../hooks'\nimport {SanityDefaultPreview} from '../../../../preview/components/SanityDefaultPreview'\nimport {Headers} from '../../../../releases/tool/components/Table/TableHeader'\nimport {type Column} from '../../../../releases/tool/components/Table/types'\nimport {type DocumentInVariantGroup} from '../types'\nimport {getDocumentPreviewTitle} from './getDocumentPreviewTitle'\nimport {VariantDocumentBundleChips} from './VariantDocumentBundleChips'\nimport {VariantDocumentPreview} from './VariantDocumentPreview'\n\nconst MemoVariantDocumentPreview = memo(\n function MemoVariantDocumentPreview({\n row,\n variantId,\n }: {\n row: DocumentInVariantGroup\n variantId?: string\n }) {\n return <VariantDocumentPreview row={row} variantId={variantId} />\n },\n (prev, next) => prev.row.memoKey === next.row.memoKey && prev.variantId === next.variantId,\n)\n\nconst MemoDocumentType = memo(\n function DocumentType({type}: {type: string}) {\n const schema = useSchema()\n const schemaType = schema.get(type)\n\n return <Text size={1}>{schemaType?.title || type}</Text>\n },\n (prev, next) => prev.type === next.type,\n)\n\nexport const getVariantDocumentTableColumnDefs = (\n t: TFunction<'variants'>,\n variantId: string | undefined,\n releasesById: Map<string, ReleaseDocument>,\n): Column<DocumentInVariantGroup>[] => [\n {\n id: 'documentGroup',\n hidden: true,\n width: null,\n sorting: true,\n sortTransform: (row) => row.groupId,\n },\n {\n id: 'bundle',\n width: 140,\n style: {minWidth: 100, maxWidth: 140},\n sorting: false,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('detail.documents.table.bundle')} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex\n align=\"center\"\n {...cellProps}\n style={{...cellProps.style, flex: '0 1 auto', minWidth: 0, overflow: 'hidden'}}\n >\n <Box flex={1} paddingX={2} style={{minWidth: 0, overflow: 'hidden'}}>\n {!datum.isLoading && (\n <VariantDocumentBundleChips versions={datum.versions} releasesById={releasesById} />\n )}\n </Box>\n </Flex>\n ),\n },\n {\n id: 'document._type',\n width: null,\n style: {minWidth: 100},\n sorting: true,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('detail.documents.table.type')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2}>\n {!datum.isLoading && <MemoDocumentType type={datum.document._type} />}\n </Box>\n </Flex>\n ),\n },\n {\n id: 'search',\n width: null,\n style: {minWidth: 'min(50%, calc(100vw - 80px))', maxWidth: 'min(50%, calc(100vw - 80px))'},\n sortTransform: ({document}) => getDocumentPreviewTitle(document).toLowerCase(),\n header: (props) => (\n <Headers.TableHeaderSearch\n {...props}\n placeholder={t('detail.documents.table.search-placeholder')}\n />\n ),\n cell: ({cellProps, datum}) => (\n <Box {...cellProps} flex={1} padding={1} paddingRight={2} sizing=\"border\">\n {datum.isLoading ? (\n <SanityDefaultPreview isPlaceholder />\n ) : (\n <MemoVariantDocumentPreview row={datum} variantId={variantId} />\n )}\n </Box>\n ),\n },\n {\n id: 'document._updatedAt',\n sorting: true,\n width: 130,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('detail.documents.table.edited')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} style={{minWidth: 130}}>\n {!datum.isLoading && datum.document._updatedAt && (\n <Text muted size={1}>\n <RelativeTime time={datum.document._updatedAt} useTemporalPhrase minimal />\n </Text>\n )}\n </Flex>\n ),\n },\n {\n id: 'validation',\n sorting: false,\n width: 50,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={''} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => {\n if (datum.isLoading) return null\n\n const validationErrorCount = datum.validation.validation.filter(\n (validation) => validation.level === 'error',\n ).length\n\n return (\n <Flex {...cellProps} flex={1} padding={1} justify=\"center\" align=\"center\" sizing=\"border\">\n {datum.validation.hasError && (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Flex align=\"center\" gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n {t(\n validationErrorCount === 1\n ? 'detail.documents.table.validation.error_one'\n : 'detail.documents.table.validation.error_other',\n {count: validationErrorCount},\n )}\n </Flex>\n </Text>\n }\n >\n <Text size={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n </Tooltip>\n )}\n </Flex>\n )\n },\n },\n]\n","import {Card} from '@sanity/ui'\nimport {type CSSProperties, useMemo, useState} from 'react'\n\nimport {useTranslation} from '../../../i18n'\nimport {useActiveReleases} from '../../../releases/store/useActiveReleases'\nimport {Table} from '../../../releases/tool/components/Table/Table'\nimport {type Column} from '../../../releases/tool/components/Table/types'\nimport {searchDocumentRelease} from '../../../releases/tool/detail/documentTable/searchDocumentRelease'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type DocumentInVariantGroup} from './types'\nimport {getVariantDocumentTableColumnDefs} from './variantDocumentTable/VariantDocumentTableColumnDefs'\n\nconst TABLE_CARD_STYLE: CSSProperties = {\n height: '100%',\n overflow: 'auto',\n}\n\nfunction filterDocuments(\n rows: DocumentInVariantGroup[],\n searchTerm: string,\n): DocumentInVariantGroup[] {\n if (!searchTerm.trim()) {\n return rows\n }\n\n return rows.filter(({document}) => searchDocumentRelease(document, searchTerm))\n}\n\nexport function VariantDocumentsTable({\n rows,\n loading = false,\n variantId,\n}: {\n rows: DocumentInVariantGroup[]\n loading?: boolean\n variantId?: string\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const {data: releases} = useActiveReleases()\n const releasesById = useMemo(\n () => new Map(releases.map((release) => [release._id, release])),\n [releases],\n )\n const columnDefs = useMemo<Column<DocumentInVariantGroup>[]>(\n () => getVariantDocumentTableColumnDefs(t, variantId, releasesById),\n [t, variantId, releasesById],\n )\n\n return (\n <Card flex={1} ref={setScrollContainerRef} style={TABLE_CARD_STYLE}>\n <Table<DocumentInVariantGroup>\n columnDefs={columnDefs}\n data={rows}\n defaultSort={{column: 'documentGroup', direction: 'asc'}}\n emptyState={t('detail.documents.no-documents')}\n loading={loading}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"groupId\"\n scrollContainerRef={scrollContainerRef}\n searchFilter={filterDocuments}\n />\n </Card>\n )\n}\n","import {Box, Card, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {LoadingBlock} from '../../../components'\nimport {useTranslation} from '../../../i18n'\nimport {EditVariantDialog} from '../../components/dialog/EditVariantDialog'\nimport {useVariantDocuments} from '../../hooks/useVariantDocuments'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {\n decodeVariantIdFromRoute,\n getVariantConditionsText,\n getVariantDescription,\n getVariantId,\n getVariantTitle,\n} from '../util'\nimport {groupVariantDocumentsByGroup} from './groupVariantDocumentsByGroup'\nimport {VariantDetailFooter} from './VariantDetailFooter'\nimport {VariantDocumentsTable} from './VariantDocumentsTable'\n\nexport function VariantDetail() {\n const router = useRouter()\n const {t} = useTranslation(variantsLocaleNamespace)\n const [editDialogOpen, setEditDialogOpen] = useState(false)\n const variantIdRaw =\n typeof router.state.variantId === 'string' ? router.state.variantId : undefined\n const variantId = decodeVariantIdFromRoute(variantIdRaw)\n const {byId, loading} = useAllVariants()\n\n const variant = variantId ? byId.get(variantId) : undefined\n const {\n loading: documentsLoading,\n results: variantDocuments,\n error: variantDocumentsError,\n } = useVariantDocuments(variant?._id)\n\n const tableRows = useMemo(\n () => groupVariantDocumentsByGroup(variantDocuments),\n [variantDocuments],\n )\n\n if (loading) {\n return <LoadingBlock fill title={t('detail.loading')} />\n }\n\n if (!variant) {\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n <Card borderBottom flex=\"none\" padding={3}>\n <Button mode=\"bleed\" onClick={() => router.navigate({})} text={t('detail.back')} />\n </Card>\n <Box padding={4}>\n <Card border padding={4} radius={3}>\n <Stack space={3}>\n <Text size={2} weight=\"semibold\">\n {t('detail.not-found.title')}\n </Text>\n <Text muted size={1}>\n {t('detail.not-found.description')}\n </Text>\n </Stack>\n </Card>\n </Box>\n </Flex>\n )\n }\n\n const description = getVariantDescription(variant)\n const conditionsText = getVariantConditionsText(variant.conditions)\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\">\n <Card borderBottom flex=\"none\" padding={3}>\n <Button mode=\"bleed\" onClick={() => router.navigate({})} text={t('detail.back')} />\n </Card>\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\" style={{minHeight: 0}}>\n <Container flex=\"none\" width={3}>\n <Flex direction=\"column\" paddingX={3}>\n <Card paddingY={5}>\n <Flex align=\"flex-start\" gap={4} justify=\"space-between\">\n <Stack space={3}>\n <Text as=\"h1\" size={4} weight=\"bold\">\n {getVariantTitle(variant)}\n </Text>\n <Text muted size={1}>\n {description || t('detail.no-description')}\n </Text>\n </Stack>\n <Button\n onClick={() => setEditDialogOpen(true)}\n text={t('detail.action.edit-variant')}\n />\n </Flex>\n\n <Box paddingTop={4}>\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n {t('dialog.create.conditions.title')}\n </Text>\n <Text muted size={1}>\n {conditionsText || t('overview.table.no-conditions')}\n </Text>\n </Stack>\n </Box>\n </Card>\n </Flex>\n </Container>\n <Flex direction=\"column\" flex={1} overflow=\"hidden\" style={{minHeight: 0}}>\n {variantDocumentsError ? (\n <Box padding={4}>\n <Text muted size={1}>\n {t('detail.documents.error')}\n </Text>\n </Box>\n ) : (\n <VariantDocumentsTable\n loading={documentsLoading}\n rows={tableRows}\n variantId={getVariantId(variant._id)}\n />\n )}\n </Flex>\n </Flex>\n <VariantDetailFooter variant={variant} />\n {editDialogOpen && (\n <EditVariantDialog\n onCancel={() => setEditDialogOpen(false)}\n onSubmit={() => setEditDialogOpen(false)}\n variant={variant}\n />\n )}\n </Flex>\n )\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {getVariantDefaults} from '../../util/variantDefaults'\nimport {VariantDialog} from './VariantDialog'\n\ninterface CreateVariantDialogProps {\n onCancel: () => void\n onSubmit: (createdVariantId: string) => void\n}\n\nexport function CreateVariantDialog(props: CreateVariantDialogProps): React.JSX.Element {\n const {onCancel, onSubmit} = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {createVariant} = useVariantOperations()\n const initialValue = useMemo(() => getVariantDefaults(), [])\n\n const handleSubmit = useCallback(\n async (variant: typeof initialValue) => {\n await createVariant(variant)\n onSubmit(variant._id)\n },\n [createVariant, onSubmit],\n )\n\n return (\n <VariantDialog\n confirmDataTestId=\"submit-variant-button\"\n confirmText={t('dialog.create.action.confirm')}\n errorTitle={t('dialog.create.error.title')}\n header={t('dialog.create.title')}\n id=\"create-variant-dialog\"\n initialValue={initialValue}\n onCancel={onCancel}\n onSubmit={handleSubmit}\n />\n )\n}\n","import {Menu, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\n\nimport {MenuButton, MenuItem} from '../../../../ui-components'\nimport {ContextMenuButton} from '../../../components/contextMenuButton'\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId} from '../util'\n\nexport function VariantMenuButton({variant}: {variant: SystemVariant}) {\n const {t} = useTranslation(variantsLocaleNamespace)\n const toast = useToast()\n const {deleteVariant} = useVariantOperations()\n const [isDeleting, setIsDeleting] = useState(false)\n\n const handleDelete = useCallback(async () => {\n setIsDeleting(true)\n\n try {\n await deleteVariant(variant._id)\n setIsDeleting(false)\n } catch (error) {\n console.error(error)\n toast.push({\n closable: true,\n status: 'error',\n title: t('overview.action.delete-variant.error.title'),\n })\n setIsDeleting(false)\n }\n }, [deleteVariant, t, toast, variant._id])\n\n return (\n <MenuButton\n button={<ContextMenuButton disabled={isDeleting} loading={isDeleting} />}\n id={`variant-actions-${getVariantId(variant._id)}`}\n menu={\n <Menu>\n <MenuItem\n // TODO: This action now doesn't validate the documents count in a variant, once we can\n // start adding documents to a variant we should revisit this to validate the documents count.\n // If it has documents we should probably disable the delete action or at least handle it differently.\n disabled={isDeleting}\n onClick={handleDelete}\n text={t('overview.action.delete-variant')}\n tone=\"critical\"\n />\n </Menu>\n }\n popover={{placement: 'bottom-end', portal: true}}\n />\n )\n}\n","/**\n * Isometric illustration: one primary document with smaller derived copies,\n * echoing the layered panels used in {@link ReleaseIllustration}.\n */\nconst BASE_PANEL =\n 'M64 150.174V81.8262C64 79.1748 65.498 76.751 67.8695 75.5653L103.87 57.5652C108.524 55.2381 114 58.6226 114 63.8262V132.174C114 134.825 112.502 137.249 110.131 138.435L74.1305 156.435C69.4762 158.762 64 155.377 64 150.174Z'\n\n/** Horizontal “body copy” lines in panel local coordinates */\nconst LINES_FULL = ['M72 86 L106 86', 'M72 96 L102 96', 'M72 106 L104 106', 'M72 116 L98 116']\n\nconst LINES_MEDIUM = ['M72 88 L100 88', 'M72 98 L96 98', 'M72 108 L102 108']\n\nconst LINES_SHORT = ['M72 90 L94 90', 'M72 100 L92 100']\n\nexport const VariantIllustration = () => (\n <svg\n aria-hidden=\"true\"\n data-testid=\"variant-illustration\"\n width=\"248\"\n height=\"201\"\n viewBox=\"0 0 248 201\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* faint depth behind hub */}\n <g opacity={0.12}>\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n transform=\"translate(12 10)\"\n />\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n transform=\"translate(6 6)\"\n />\n </g>\n\n {/* derived copies — same silhouette, different inner lines */}\n <g opacity={0.28}>\n <g transform=\"translate(118 6) scale(0.5)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_MEDIUM.map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.55}\n />\n ))}\n </g>\n </g>\n\n <g opacity={0.34}>\n <g transform=\"translate(126 52) scale(0.52)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_FULL.slice(0, 3).map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.5}\n />\n ))}\n </g>\n </g>\n\n <g opacity={0.26}>\n <g transform=\"translate(106 102) scale(0.48)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_SHORT.map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.55}\n />\n ))}\n </g>\n </g>\n\n {/* soft connectors — hub to satellites */}\n <g opacity={0.14} stroke=\"var(--card-muted-fg-color)\" strokeWidth={1.2} strokeLinecap=\"round\">\n <path d=\"M118 112 Q 152 72 168 58\" fill=\"none\" />\n <path d=\"M124 124 Q 168 108 188 92\" fill=\"none\" />\n <path d=\"M118 138 Q 150 152 162 168\" fill=\"none\" />\n </g>\n\n {/* primary document */}\n <g transform=\"translate(26 20) scale(1.06)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n opacity={0.92}\n />\n {LINES_FULL.map((d, index) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.42 + index * 0.06}\n />\n ))}\n </g>\n </svg>\n)\n","import {Flex, rem, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components'\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {VariantIllustration} from '../resources/VariantIllustration'\n\ninterface VariantsEmptyStateProps {\n createVariantButton?: React.ReactNode\n}\n\nconst VARIANTS_DOCUMENTATION_URL = 'https://www.sanity.io/docs/content-variants'\n\nexport const VariantsEmptyState = ({createVariantButton}: VariantsEmptyStateProps) => {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n return (\n <Flex\n align=\"center\"\n data-testid=\"variants-empty-state\"\n flex={1}\n direction=\"column\"\n gap={3}\n style={{maxWidth: rem(300)}}\n paddingBottom={5}\n >\n <VariantIllustration />\n <Text as=\"h1\" size={1} weight=\"semibold\" data-testid=\"no-variants-info-text\">\n {t('overview.title')}\n </Text>\n <Text size={1} muted style={{textAlign: 'center'}}>\n {t('overview.empty-state.description')}\n </Text>\n <Flex gap={2}>\n {createVariantButton}\n <Button\n as=\"a\"\n href={VARIANTS_DOCUMENTATION_URL}\n target=\"_blank\"\n mode=\"ghost\"\n text={t('overview.action.documentation')}\n />\n </Flex>\n </Flex>\n )\n}\n","import {Box, Card, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type HTMLProps, useMemo} from 'react'\nimport {StateLink} from 'sanity/router'\n\nimport {type UseTranslationResponse, useTranslation} from '../../../i18n'\nimport {Headers} from '../../../releases/tool/components/Table/TableHeader'\nimport {type Column, type VisibleColumn} from '../../../releases/tool/components/Table/types'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId, getVariantConditionsText, getVariantTitle} from '../util'\n\nconst VariantDocumentsCell: VisibleColumn<SystemVariant>['cell'] = ({cellProps, datum}) => {\n if (datum.isLoading) {\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text size={1}>\n <Skeleton animated radius={1} style={{width: '4ch'}} />\n </Text>\n </Flex>\n )\n }\n\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text muted size={1}>\n 0\n </Text>\n </Flex>\n )\n}\n\nconst VariantTitleCell: VisibleColumn<SystemVariant>['cell'] = ({cellProps, datum: variant}) => {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n const encodedVariantId = getVariantId(variant._id)\n\n const VariantLink = useMemo(\n () =>\n forwardRef(function VariantLinkComponent(\n linkProps: HTMLProps<HTMLAnchorElement>,\n ref: ForwardedRef<HTMLAnchorElement>,\n ) {\n return <StateLink {...linkProps} ref={ref} state={{variantId: encodedVariantId}} />\n }),\n [encodedVariantId],\n )\n\n if (variant.isLoading) {\n return (\n <Box {...cellProps} flex={1} paddingLeft={3} paddingRight={2} paddingY={2} sizing=\"border\">\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n <Skeleton animated radius={1} style={{width: '16ch'}} />\n </Text>\n <Text muted size={1}>\n <Skeleton animated radius={1} style={{width: '32ch'}} />\n </Text>\n </Stack>\n </Box>\n )\n }\n\n const conditionsText = getVariantConditionsText(variant.conditions)\n\n return (\n <Box {...cellProps} flex={1} paddingLeft={3} paddingRight={2} paddingY={1} sizing=\"border\">\n <Card as={VariantLink} data-as=\"a\" flex={1} padding={2} radius={2} tone=\"inherit\">\n <Flex align=\"center\" gap={3}>\n <Stack flex={1} space={2}>\n <Text size={1} weight=\"medium\">\n {getVariantTitle(variant)}\n </Text>\n <Text muted size={1}>\n {conditionsText || t('overview.table.no-conditions')}\n </Text>\n </Stack>\n </Flex>\n </Card>\n </Box>\n )\n}\n\nexport function variantsOverviewColumnDefs(\n t: UseTranslationResponse<'variants', undefined>['t'],\n): Column<SystemVariant>[] {\n return [\n {\n id: 'metadata.title',\n sorting: true,\n width: null,\n style: {minWidth: 'min(50%, calc(100vw - 80px))'},\n header: (props) => (\n <Flex\n {...props.headerProps}\n flex={1}\n paddingLeft={3}\n paddingRight={2}\n paddingY={3}\n sizing=\"border\"\n >\n <Headers.SortHeaderButton {...props} text={t('overview.table.variant')} />\n </Flex>\n ),\n cell: VariantTitleCell,\n sortTransform: (variant) => getVariantTitle(variant),\n },\n {\n id: 'documentCount',\n sorting: false,\n width: 120,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('overview.table.documents')} />\n </Flex>\n ),\n cell: VariantDocumentsCell,\n },\n ]\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Card, Container, Flex, Stack, Text, TextInput} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n'\nimport {Table, type TableProps} from '../../../releases/tool/components/Table/Table'\nimport {CreateVariantDialog} from '../../components/dialog/CreateVariantDialog'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {type SystemVariant} from '../../types'\nimport {filterVariantsForSearch, getVariantId} from '../util'\nimport {VariantMenuButton} from './VariantMenuButton'\nimport {VariantsEmptyState} from './VariantsEmptyState'\nimport {variantsOverviewColumnDefs} from './VariantsOverviewColumnDefs'\n\nconst VARIANT_TABLE_ROW_ID = '_id'\n\nexport function VariantsOverview() {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const {data: variants, error, loading} = useAllVariants()\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const [searchQuery, setSearchQuery] = useState('')\n const [isCreateVariantDialogOpen, setIsCreateVariantDialogOpen] = useState(false)\n\n const handleCreateVariant = useCallback(() => {\n setIsCreateVariantDialogOpen(true)\n }, [])\n\n const handleOnCreateVariant = useCallback(\n (createdVariantId: string) => {\n setIsCreateVariantDialogOpen(false)\n router.navigate({variantId: getVariantId(createdVariantId)})\n },\n [router],\n )\n\n const columnDefs = useMemo(() => variantsOverviewColumnDefs(t), [t])\n const renderRowActions = useCallback<\n NonNullable<TableProps<SystemVariant, undefined>['rowActions']>\n >(({datum}) => <VariantMenuButton variant={datum as SystemVariant} />, [])\n\n const variantsList = useMemo(() => variants ?? [], [variants])\n\n const filteredVariants = useMemo(\n () => filterVariantsForSearch(variantsList, searchQuery),\n [variantsList, searchQuery],\n )\n\n const hasVariants = variantsList.length > 0\n\n const createVariantButton = useMemo(\n () => (\n <Button\n disabled={isCreateVariantDialogOpen}\n icon={AddIcon}\n onClick={handleCreateVariant}\n text={t('overview.action.create-variant')}\n />\n ),\n [handleCreateVariant, isCreateVariantDialogOpen, t],\n )\n\n const tableEmptyState = useCallback(() => {\n if (error && !hasVariants) {\n return (\n <Flex align=\"center\" direction=\"column\" gap={3} justify=\"center\" padding={4}>\n <Text muted size={1}>\n {t('overview.error')}\n </Text>\n </Flex>\n )\n }\n\n return <VariantsEmptyState createVariantButton={createVariantButton} />\n }, [createVariantButton, error, hasVariants, t])\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n {/* Same container width as releases document table (`container[3]` in Table), so chrome aligns with row content */}\n <Container flex=\"none\" width={3}>\n <Flex direction=\"column\" paddingX={3}>\n <Card flex=\"none\" paddingY={5}>\n <Flex align=\"flex-start\" gap={4} justify=\"space-between\">\n <Stack space={3}>\n <Text as=\"h1\" size={4} weight=\"bold\">\n {t('overview.title')}\n </Text>\n <Text muted size={1}>\n {t('overview.description')}\n </Text>\n </Stack>\n {createVariantButton}\n </Flex>\n </Card>\n\n <Box flex=\"none\" paddingBottom={4} paddingTop={2}>\n <TextInput\n clearButton={!!searchQuery}\n fontSize={1}\n icon={SearchIcon}\n onChange={(event) => setSearchQuery(event.currentTarget.value)}\n onClear={() => setSearchQuery('')}\n placeholder={t('overview.search.placeholder')}\n radius={3}\n value={searchQuery}\n />\n </Box>\n\n {error && (\n <Card flex=\"none\" padding={3} tone=\"critical\">\n <Text size={1}>{t('overview.error')}</Text>\n </Card>\n )}\n </Flex>\n </Container>\n\n {/* Full-width scroll region so table borders span the tool pane (same pattern as release detail summary). */}\n <Box flex={1} overflow=\"auto\" ref={setScrollContainerRef}>\n <Table<SystemVariant>\n columnDefs={columnDefs}\n data={filteredVariants}\n emptyState={tableEmptyState}\n loading={loading}\n rowId={VARIANT_TABLE_ROW_ID}\n rowActions={renderRowActions}\n scrollContainerRef={scrollContainerRef}\n />\n </Box>\n\n {isCreateVariantDialogOpen && (\n <CreateVariantDialog\n onCancel={() => setIsCreateVariantDialogOpen(false)}\n onSubmit={handleOnCreateVariant}\n />\n )}\n </Flex>\n )\n}\n","import {useRouter} from 'sanity/router'\n\nimport {VariantDetail} from './detail/VariantDetail'\nimport {VariantsOverview} from './overview/VariantsOverview'\n\nexport function VariantsTool() {\n const router = useRouter()\n const variantId = typeof router.state.variantId === 'string' ? router.state.variantId : undefined\n\n if (variantId) {\n return <VariantDetail key={variantId} />\n }\n\n return <VariantsOverview />\n}\n"],"names":["createVariantOperationsStore","options","client","variantsClient","createVariant","variant","action","actionType","variantId","getVariantId","_id","conditions","priority","metadata","tag","updateVariant","setPayload","patch","set","unset","deleteVariant","variantIdOrDocumentId","useVariantOperations","$","_c","studioClient","useClient","VARIANTS_STUDIO_CLIENT_OPTIONS","t0","getVariantTitleValue","title","trim","getIsVariantInvalid","getHasValidConditions","entries","Object","length","every","key","value","Boolean","CONDITION_KEY_REGEX","RESERVED_KEY_PREFIXES","getConditionKeyValidationError","trimmedKey","prefix","startsWith","includes","CONDITION_SEPARATOR","test","getConditionValueValidationError","createVariantIdSuffix","customAlphabet","createVariantId","VARIANT_DOCUMENTS_PATH","getVariantDefaults","_type","description","createPortableTextDescription","text","_key","randomKey","children","marks","markDefs","style","sortValues","values","Array","from","filter","toSorted","a","b","localeCompare","buildConditionSuggestionIndex","variants","keys","Set","valuesByKey","Map","forEach","rawKey","rawValue","add","get","getConditionKeyOptions","index","rows","currentRowIndex","usedKeys","_","rowIndex","map","row","has","getConditionValueOptions","conditionKey","filterConditionOption","query","option","toLowerCase","ConditionAutocompleteInput","props","ariaLabel","autoFocus","customValidity","invalid","onChange","placeholder","testId","id","useId","focused","setFocused","useState","nextValue","handleQueryChange","t1","undefined","t2","for","t3","t4","t5","getConditionRows","getConditionsFromRows","reduce","isConditionRowEmpty","getEmptyConditionRowValidation","getConditionRowsValidation","conditionRowsValidation","seenKeys","validation","keyError","valueError","hasConditionRowsValidationErrors","some","getPortableTextDescriptionValue","isArray","isPortableTextBlock","toPlainText","VariantForm","onConditionValidityChange","showValidation","t","useTranslation","variantsLocaleNamespace","data","useAllVariants","suggestionIndex","titleId","descriptionId","conditionRows","setConditionRows","conditionsValidation","showTitleError","lastConditionRow","canAddCondition","t6","nextRows","nextRowsValidation","nextRowsInvalid","updateConditionRows","t7","event","currentTarget","handleTitleChange","t8","event_0","handleDescriptionChange","t9","field","nextRows_0","handleConditionChange","t10","handleAddCondition","t11","index_0","nextRows_1","rowIndex_0","handleRemoveCondition","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","row_0","index_1","valueValidation","conditionValidationError","nextValue_0","nextValue_1","TrashIcon","content","t34","t35","t36","t37","t38","AddIcon","t39","t40","VariantDialog","confirmDataTestId","confirmText","errorTitle","header","initialValue","onCancel","onSubmit","renderCancelButton","toast","useToast","setVariant","isSubmitting","setIsSubmitting","setShowValidation","conditionsInvalid","setConditionsInvalid","Symbol","path","currentVariant","applyPatches","at","handleVariantChange","preventDefault","error","console","push","closable","status","handleSubmit","toEditableVariant","EditVariantDialog","initialVariant","toVariantDocumentVersion","document","system","DOCUMENT_SYSTEM_FIELD","group","_ref","documentId","bundleId","releaseRef","release","updatedAt","_updatedAt","useVariantDocuments","enabled","params","groqFilter","cacheKey","loading","results","useBundleDocuments","toDocumentInVariants","variantResults","flatMap","result","version","getBundleSortOrder","isPublishedBundleId","compareVariantDocumentVersions","left","right","leftOrder","rightOrder","pickRepresentativeDocument","documents","latest","current","latestUpdatedAt","aggregateValidation","representative","isValidating","revision","hasError","groupVariantDocumentsByGroup","groups","groupId","_system","existingGroup","groupDocuments","versions","item","VariantDetailMenuButton","router","useRouter","isDeleting","setIsDeleting","navigate","handleDelete","placement","portal","VariantDetailFooter","opacity","_createdAt","getDocumentPreviewTitle","name","getReleaseDocumentForVersion","releasesById","isReleaseBundle","releaseDocumentId","getReleaseDocumentIdFromReleaseId","ReleaseBundleChip","getReleaseIdFromReleaseDocumentId","releaseId","displayTitle","RELEASES_INTENT","StaticBundleChip","label","tone","VariantDocumentBundleChips","minWidth","width","overflowX","overflowY","VariantDocumentPreviewLink","forwardRef","ref","documentType","linkProps","publishedId","searchParams","type","getVersionPerspectiveNavigation","perspectiveStack","VariantDocumentPreview","layout","getPublishedId","documentPresence","useDocumentPresence","previewPresence","isLoading","previewLoading","resolvedPreview","useDocumentPreviewValues","MemoVariantDocumentPreview","memo","prev","next","memoKey","MemoDocumentType","schema","useSchema","getVariantDocumentTableColumnDefs","hidden","sorting","sortTransform","maxWidth","headerProps","cell","cellProps","datum","flex","overflow","validationErrorCount","level","ErrorOutlineIcon","count","TABLE_CARD_STYLE","height","filterDocuments","searchTerm","searchDocumentRelease","VariantDocumentsTable","scrollContainerRef","setScrollContainerRef","releases","useActiveReleases","_temp","columnDefs","column","direction","VariantDetail","editDialogOpen","setEditDialogOpen","variantIdRaw","state","decodeVariantIdFromRoute","byId","documentsLoading","variantDocuments","variantDocumentsError","tableRows","getVariantDescription","conditionsText","getVariantConditionsText","minHeight","T0","Flex","getVariantTitle","CreateVariantDialog","VariantMenuButton","BASE_PANEL","LINES_FULL","LINES_MEDIUM","LINES_SHORT","VariantIllustration","slice","_temp2","_temp3","_temp4","d","d_0","d_1","d_2","VARIANTS_DOCUMENTATION_URL","VariantsEmptyState","createVariantButton","rem","textAlign","VariantDocumentsCell","VariantTitleCell","encodedVariantId","VariantLink","variantsOverviewColumnDefs","VARIANT_TABLE_ROW_ID","VariantsOverview","searchQuery","setSearchQuery","isCreateVariantDialogOpen","setIsCreateVariantDialogOpen","handleCreateVariant","createdVariantId","handleOnCreateVariant","renderRowActions","variantsList","filterVariantsForSearch","filteredVariants","hasVariants","tableEmptyState","SearchIcon","VariantsTool"],"mappings":"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"}
1
+ {"version":3,"file":"VariantsTool.js","sources":["../../src/core/variants/store/createVariantOperationsStore.ts","../../src/core/variants/store/useVariantOperations.ts","../../src/core/variants/util/getIsVariantInvalid.ts","../../src/core/variants/util/conditionValidation.ts","../../src/core/variants/util/createVariantId.ts","../../src/core/variants/util/variantDefaults.ts","../../src/core/variants/components/dialog/conditionSuggestions.ts","../../src/core/variants/components/dialog/ConditionAutocompleteInput.tsx","../../src/core/variants/components/dialog/VariantForm.tsx","../../src/core/variants/components/dialog/VariantDialog.tsx","../../src/core/variants/components/dialog/EditVariantDialog.tsx","../../src/core/variants/tool/detail/variantDocumentVersion.ts","../../src/core/variants/hooks/useVariantDocuments.ts","../../src/core/variants/tool/detail/groupVariantDocumentsByGroup.ts","../../src/core/variants/tool/detail/VariantDetailMenuButton.tsx","../../src/core/variants/tool/detail/VariantDetailFooter.tsx","../../src/core/variants/tool/detail/variantDocumentTable/getDocumentPreviewTitle.ts","../../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentBundleChips.tsx","../../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentPreview.tsx","../../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentTableColumnDefs.tsx","../../src/core/variants/tool/detail/VariantDocumentsTable.tsx","../../src/core/variants/tool/detail/VariantDetail.tsx","../../src/core/variants/components/dialog/CreateVariantDialog.tsx","../../src/core/variants/tool/overview/VariantMenuButton.tsx","../../src/core/variants/tool/resources/VariantIllustration.tsx","../../src/core/variants/tool/overview/VariantsEmptyState.tsx","../../src/core/variants/tool/overview/VariantsOverviewColumnDefs.tsx","../../src/core/variants/tool/overview/VariantsOverview.tsx","../../src/core/variants/tool/VariantsTool.tsx"],"sourcesContent":["import {type SanityClient} from '@sanity/client'\n\nimport {getVariantId} from '../tool/util'\nimport {type EditableSystemVariant} from '../types'\nimport {variantsClient, type VariantDefinitionActionResult} from './variantsClient'\n\nexport interface VariantOperationsStore {\n createVariant: (variant: EditableSystemVariant) => Promise<VariantDefinitionActionResult>\n updateVariant: (variant: EditableSystemVariant) => Promise<VariantDefinitionActionResult>\n deleteVariant: (variantId: string) => Promise<VariantDefinitionActionResult>\n}\n\n/**\n * Variant definition writes use the actions API. See ../ACTIONS.md.\n */\nexport function createVariantOperationsStore(options: {\n client: SanityClient\n}): VariantOperationsStore {\n const client = variantsClient(options.client)\n\n const handleCreateVariant = async (variant: EditableSystemVariant) => {\n const variantId = getVariantId(variant._id)\n const action = {\n actionType: 'sanity.action.variant.definition.create' as const,\n variantId,\n conditions: variant.conditions,\n priority: variant.priority,\n ...(variant.metadata ? {metadata: variant.metadata} : {}),\n }\n\n return await client.action(action, {tag: 'variants.create'})\n }\n\n const handleUpdateVariant = async (variant: EditableSystemVariant) => {\n const variantId = getVariantId(variant._id)\n const setPayload: Pick<EditableSystemVariant, 'conditions' | 'priority'> &\n Partial<Pick<EditableSystemVariant, 'metadata'>> = {\n conditions: variant.conditions,\n priority: variant.priority,\n }\n\n if (variant.metadata) {\n setPayload.metadata = variant.metadata\n }\n\n const patch: {\n set: typeof setPayload\n unset?: ['metadata']\n } = {\n set: setPayload,\n }\n\n if (!variant.metadata) {\n patch.unset = ['metadata']\n }\n\n const action = {\n actionType: 'sanity.action.variant.definition.edit' as const,\n variantId,\n patch,\n }\n\n return await client.action(action, {tag: 'variants.edit'})\n }\n\n const handleDeleteVariant = async (variantIdOrDocumentId: string) => {\n const action = {\n actionType: 'sanity.action.variant.definition.delete' as const,\n variantId: getVariantId(variantIdOrDocumentId),\n }\n\n return await client.action(action, {tag: 'variants.delete'})\n }\n\n return {\n createVariant: handleCreateVariant,\n updateVariant: handleUpdateVariant,\n deleteVariant: handleDeleteVariant,\n }\n}\n","import {useMemo} from 'react'\n\nimport {useClient} from '../../hooks'\nimport {VARIANTS_STUDIO_CLIENT_OPTIONS} from './constants'\nimport {createVariantOperationsStore} from './createVariantOperationsStore'\n\n/**\n * @internal\n */\nexport function useVariantOperations() {\n const studioClient = useClient(VARIANTS_STUDIO_CLIENT_OPTIONS)\n\n return useMemo(\n () =>\n createVariantOperationsStore({\n client: studioClient,\n }),\n [studioClient],\n )\n}\n","import {type EditableSystemVariant} from '../types'\n\n/**\n * @internal\n */\nexport function getVariantTitleValue(variant: EditableSystemVariant): string {\n const title = variant.metadata?.title\n\n return typeof title === 'string' ? title.trim() : ''\n}\n\n/**\n * @internal\n */\nexport function getIsVariantInvalid(variant: EditableSystemVariant): boolean {\n return !getVariantTitleValue(variant) || !getHasValidConditions(variant.conditions)\n}\n\nfunction getHasValidConditions(conditions: EditableSystemVariant['conditions']): boolean {\n const entries = Object.entries(conditions)\n\n return entries.length > 0 && entries.every(([key, value]) => Boolean(key.trim() && value.trim()))\n}\n","const CONDITION_KEY_REGEX = /^[a-z][a-z0-9_-]{0,63}$/\nconst CONDITION_SEPARATOR = ':'\nconst RESERVED_KEY_PREFIXES = ['_', '$'] as const\n\nexport type ConditionKeyValidationError = 'invalid' | 'reserved'\nexport type ConditionValueValidationError = 'empty' | 'invalid'\n\nexport function getConditionKeyValidationError(\n key: string,\n): ConditionKeyValidationError | undefined {\n const trimmedKey = key.trim()\n\n if (!trimmedKey) {\n return undefined\n }\n\n for (const prefix of RESERVED_KEY_PREFIXES) {\n if (trimmedKey.startsWith(prefix)) {\n return 'reserved'\n }\n }\n\n if (trimmedKey.includes(CONDITION_SEPARATOR) || !CONDITION_KEY_REGEX.test(trimmedKey)) {\n return 'invalid'\n }\n\n return undefined\n}\n\nexport function getConditionValueValidationError(\n value: string,\n): ConditionValueValidationError | undefined {\n if (!value.trim()) {\n return 'empty'\n }\n\n if (value.includes(CONDITION_SEPARATOR)) {\n return 'invalid'\n }\n\n return undefined\n}\n","// Mimics the implementation from createReleaseId.ts\nimport {customAlphabet} from 'nanoid'\n\nimport {VARIANT_DOCUMENTS_PATH} from '../store/constants'\n\n/**\n * ~24 years (or 7.54e+8 seconds) needed, in order to have a 1% probability of at least one collision if 10 ID's are generated every hour.\n */\nconst createVariantIdSuffix = customAlphabet(\n 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',\n 8,\n)\n\n/**\n * Create a unique system variant document id.\n *\n * @internal\n */\nexport function createVariantId(): `${typeof VARIANT_DOCUMENTS_PATH}.${string}` {\n return `${VARIANT_DOCUMENTS_PATH}.${createVariantIdSuffix()}`\n}\n","import {type PortableTextBlock} from '@sanity/types'\nimport {randomKey} from '@sanity/util/content'\n\nimport {type EditableSystemVariant} from '../types'\nimport {createVariantId} from './createVariantId'\n\n/**\n * @internal\n */\nexport function getVariantDefaults(): EditableSystemVariant {\n return {\n _id: createVariantId(),\n _type: 'system.variant',\n conditions: {},\n priority: 0,\n metadata: {\n title: '',\n description: [],\n },\n }\n}\n\n/**\n * @internal\n */\nexport function createPortableTextDescription(text: string): PortableTextBlock[] {\n const trimmedText = text.trim()\n\n if (!trimmedText) {\n return []\n }\n\n return [\n {\n _key: randomKey(12),\n _type: 'block',\n children: [\n {\n _key: randomKey(12),\n _type: 'span',\n marks: [],\n text,\n },\n ],\n markDefs: [],\n style: 'normal',\n },\n ]\n}\n","import {type SystemVariant} from '../../types'\n\nexport interface ConditionSuggestionOption {\n value: string\n}\n\n/**\n * Precomputed lookup of the condition keys and per-key values used across all\n * existing variants. Building this once (e.g. in a `useMemo` keyed on the\n * variants) keeps per-row option derivation cheap, since it avoids re-scanning\n * every variant on each render/keystroke.\n *\n * @internal\n */\nexport interface ConditionSuggestionIndex {\n /** Unique condition keys, sorted. */\n keys: string[]\n /** Unique values per condition key, sorted. */\n valuesByKey: Map<string, string[]>\n}\n\nfunction sortValues(values: Iterable<string>): string[] {\n return Array.from(values)\n .filter(Boolean)\n .toSorted((a, b) => a.localeCompare(b))\n}\n\n/**\n * @internal\n */\nexport function buildConditionSuggestionIndex(variants: SystemVariant[]): ConditionSuggestionIndex {\n const keys = new Set<string>()\n const valuesByKey = new Map<string, Set<string>>()\n\n variants.forEach((variant) => {\n Object.entries(variant.conditions).forEach(([rawKey, rawValue]) => {\n const key = rawKey.trim()\n\n if (!key) {\n return\n }\n\n keys.add(key)\n\n const value = rawValue?.trim()\n\n if (!value) {\n return\n }\n\n let values = valuesByKey.get(key)\n\n if (!values) {\n values = new Set<string>()\n valuesByKey.set(key, values)\n }\n\n values.add(value)\n })\n })\n\n return {\n keys: sortValues(keys),\n valuesByKey: new Map(Array.from(valuesByKey, ([key, values]) => [key, sortValues(values)])),\n }\n}\n\n/**\n * @internal\n */\nexport function getConditionKeyOptions(\n index: ConditionSuggestionIndex,\n rows: ReadonlyArray<{key: string}>,\n currentRowIndex: number,\n): ConditionSuggestionOption[] {\n const usedKeys = new Set(\n rows\n .filter((_, rowIndex) => rowIndex !== currentRowIndex)\n .map((row) => row.key.trim())\n .filter(Boolean),\n )\n\n return index.keys.filter((key) => !usedKeys.has(key)).map((value) => ({value}))\n}\n\n/**\n * @internal\n */\nexport function getConditionValueOptions(\n index: ConditionSuggestionIndex,\n conditionKey: string,\n): ConditionSuggestionOption[] {\n const key = conditionKey.trim()\n\n if (!key) {\n return []\n }\n\n return index.valuesByKey.get(key)?.map((value) => ({value})) ?? []\n}\n\n/**\n * @internal\n */\nexport function filterConditionOption(query: string, option: ConditionSuggestionOption): boolean {\n return option.value.toLowerCase().includes(query.trim().toLowerCase())\n}\n","import {Autocomplete} from '@sanity/ui'\nimport {useCallback, useId, useState} from 'react'\n\nimport {type ConditionSuggestionOption, filterConditionOption} from './conditionSuggestions'\n\ninterface ConditionAutocompleteInputProps {\n ariaLabel: string\n autoFocus?: boolean\n customValidity?: string\n invalid?: boolean\n onChange: (value: string) => void\n options: ConditionSuggestionOption[]\n placeholder: string\n testId: string\n value: string\n}\n\nexport function ConditionAutocompleteInput(\n props: ConditionAutocompleteInputProps,\n): React.JSX.Element {\n const {\n ariaLabel,\n autoFocus,\n customValidity,\n invalid,\n onChange,\n options,\n placeholder,\n testId,\n value,\n } = props\n const id = useId()\n const [focused, setFocused] = useState(false)\n\n const handleQueryChange = useCallback(\n (nextValue: string | null) => {\n // `onChange` fires when an option is selected. Free-text typing is exposed\n // through `onQueryChange`; `null` means the internal query closed.\n if (nextValue !== null) {\n onChange(nextValue)\n }\n },\n [onChange],\n )\n\n return (\n <Autocomplete\n id={id}\n aria-invalid={invalid ? 'true' : undefined}\n aria-label={ariaLabel}\n autoFocus={autoFocus}\n customValidity={customValidity}\n data-testid={testId}\n filterOption={filterConditionOption}\n fontSize={1}\n onBlur={() => setFocused(false)}\n onChange={onChange}\n onFocus={() => setFocused(true)}\n onQueryChange={handleQueryChange}\n openButton\n options={options}\n placeholder={placeholder}\n value={focused ? undefined : value}\n />\n )\n}\n","import {isPortableTextBlock, toPlainText} from '@portabletext/toolkit'\nimport {AddIcon} from '@sanity/icons/Add'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {type Path} from '@sanity/mutate'\nimport {type PortableTextBlock} from '@sanity/types'\nimport {Box, Flex, Stack, Text, TextArea, TextInput} from '@sanity/ui'\nimport {randomKey} from '@sanity/util/content'\nimport {type ChangeEvent, useCallback, useId, useMemo, useState} from 'react'\n\nimport {Button} from '../../../../ui-components'\nimport {TextWithTone} from '../../../components/textWithTone/TextWithTone'\nimport {useTranslation} from '../../../i18n'\nimport {type VariantsLocaleResourceKeys, variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {type EditableSystemVariant} from '../../types'\nimport {\n getConditionKeyValidationError,\n getConditionValueValidationError,\n} from '../../util/conditionValidation'\nimport {getVariantTitleValue} from '../../util/getIsVariantInvalid'\nimport {createPortableTextDescription} from '../../util/variantDefaults'\nimport {ConditionAutocompleteInput} from './ConditionAutocompleteInput'\nimport {\n buildConditionSuggestionIndex,\n getConditionKeyOptions,\n getConditionValueOptions,\n} from './conditionSuggestions'\n\ninterface ConditionRow {\n id: string\n key: string\n value: string\n}\n\ninterface ConditionRowValidation {\n key: VariantsLocaleResourceKeys | null\n value: VariantsLocaleResourceKeys | null\n}\n\nfunction getConditionRows(conditions: EditableSystemVariant['conditions']): ConditionRow[] {\n const rows = Object.entries(conditions).map(([key, value]) => ({\n id: randomKey(12),\n key,\n value,\n }))\n\n return rows.length ? rows : [{id: randomKey(12), key: '', value: ''}]\n}\n\nfunction getConditionsFromRows(rows: ConditionRow[]): EditableSystemVariant['conditions'] {\n return rows.reduce<EditableSystemVariant['conditions']>((conditions, row) => {\n const key = row.key.trim()\n const value = row.value.trim()\n\n if (key && value) {\n conditions[key] = value\n }\n\n return conditions\n }, {})\n}\n\nfunction isConditionRowEmpty(row: ConditionRow): boolean {\n return !row.key.trim() && !row.value.trim()\n}\n\nfunction getEmptyConditionRowValidation(): ConditionRowValidation {\n return {key: null, value: null}\n}\n\nfunction getConditionRowsValidation(rows: ConditionRow[]): Map<number, ConditionRowValidation> {\n const conditionRowsValidation = new Map<number, ConditionRowValidation>()\n const seenKeys = new Set<string>()\n\n rows.forEach((row, index) => {\n const validation: ConditionRowValidation = {key: null, value: null}\n const key = row.key.trim()\n const value = row.value.trim()\n\n if (key) {\n if (seenKeys.has(key)) {\n validation.key = 'dialog.create.condition-key.duplicate'\n } else {\n seenKeys.add(key)\n }\n\n const keyError = getConditionKeyValidationError(row.key)\n\n if (!validation.key && keyError === 'reserved') {\n validation.key = 'dialog.create.condition-key.reserved'\n } else if (!validation.key && keyError === 'invalid') {\n validation.key = 'dialog.create.condition-key.invalid'\n }\n } else if (value) {\n validation.key = 'dialog.create.condition-key.required'\n }\n\n const valueError = getConditionValueValidationError(row.value)\n\n if ((key || isConditionRowEmpty(row)) && valueError === 'empty') {\n validation.value = 'dialog.create.condition-value.required'\n } else if (valueError === 'invalid') {\n validation.value = 'dialog.create.condition-value.invalid'\n }\n\n conditionRowsValidation.set(index, validation)\n })\n\n return conditionRowsValidation\n}\n\nfunction hasConditionRowsValidationErrors(\n validation: Map<number, ConditionRowValidation>,\n): boolean {\n return Array.from(validation.values()).some(({key, value}) => key || value)\n}\n\nfunction getPortableTextDescriptionValue(description?: PortableTextBlock[]): string {\n if (!Array.isArray(description) || !description.every(isPortableTextBlock)) {\n return ''\n }\n\n return toPlainText(description)\n}\n\nexport type VariantFormChangeHandler = (path: Path, value: unknown) => void\n\nexport function VariantForm(props: {\n onChange: VariantFormChangeHandler\n onConditionValidityChange?: (invalid: boolean) => void\n showValidation?: boolean\n value: EditableSystemVariant\n}) {\n const {onChange, onConditionValidityChange, showValidation = false, value} = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {data: variants} = useAllVariants()\n const suggestionIndex = useMemo(() => buildConditionSuggestionIndex(variants), [variants])\n const titleId = useId()\n const descriptionId = useId()\n // `conditions` is stored as an object, but object keys are awkward to edit live:\n // duplicates collapse and partial key edits like \"far\" -> \"favorite\" can lose data.\n // Keep rows locally while editing, then commit back once they serialize cleanly.\n const [conditionRows, setConditionRows] = useState(() => getConditionRows(value.conditions))\n const conditionsValidation = useMemo(\n () => getConditionRowsValidation(conditionRows),\n [conditionRows],\n )\n\n const hasTitle = Boolean(getVariantTitleValue(value))\n const showTitleError = showValidation && !hasTitle\n const lastConditionRow = conditionRows[conditionRows.length - 1]\n const canAddCondition = Boolean(\n lastConditionRow && !hasConditionRowsValidationErrors(conditionsValidation),\n )\n\n const updateConditionRows = useCallback(\n (nextRows: ConditionRow[]) => {\n const rows = nextRows.length ? nextRows : getConditionRows({})\n\n setConditionRows(rows)\n\n const nextRowsValidation = getConditionRowsValidation(rows)\n const nextRowsInvalid = hasConditionRowsValidationErrors(nextRowsValidation)\n onConditionValidityChange?.(nextRowsInvalid)\n\n if (nextRows.length === 0 || !nextRowsInvalid) {\n onChange(['conditions'], getConditionsFromRows(nextRows))\n }\n },\n [onChange, onConditionValidityChange],\n )\n\n const handleTitleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n onChange(['metadata', 'title'], event.currentTarget.value)\n },\n [onChange],\n )\n\n const handleDescriptionChange = useCallback(\n (event: ChangeEvent<HTMLTextAreaElement>) => {\n onChange(\n ['metadata', 'description'],\n createPortableTextDescription(event.currentTarget.value),\n )\n },\n [onChange],\n )\n\n const handleConditionChange = useCallback(\n (index: number, field: 'key' | 'value', nextValue: string) => {\n const nextRows = conditionRows.map((row, rowIndex) =>\n rowIndex === index ? {...row, [field]: nextValue} : row,\n )\n\n updateConditionRows(nextRows)\n },\n [conditionRows, updateConditionRows],\n )\n\n const handleAddCondition = useCallback(() => {\n if (!canAddCondition) {\n return\n }\n\n updateConditionRows([...conditionRows, {id: randomKey(12), key: '', value: ''}])\n }, [canAddCondition, conditionRows, updateConditionRows])\n\n const handleRemoveCondition = useCallback(\n (index: number) => {\n const nextRows = conditionRows.filter((_, rowIndex) => rowIndex !== index)\n\n updateConditionRows(nextRows)\n },\n [conditionRows, updateConditionRows],\n )\n\n return (\n <Stack space={5}>\n <Stack space={3}>\n <Text as=\"label\" htmlFor={titleId} size={1} weight=\"medium\">\n {t('dialog.create.variant-title.label')}\n </Text>\n <TextInput\n autoFocus\n aria-invalid={showTitleError ? 'true' : undefined}\n customValidity={showTitleError ? t('dialog.create.variant-title.required') : undefined}\n data-testid=\"variant-form-title\"\n fontSize={2}\n id={titleId}\n onChange={handleTitleChange}\n placeholder={t('dialog.create.variant-title.placeholder')}\n value={typeof value.metadata?.title === 'string' ? value.metadata.title : ''}\n />\n {showTitleError && (\n <TextWithTone data-testid=\"variant-form-title-error\" size={1} tone=\"critical\">\n {t('dialog.create.variant-title.required')}\n </TextWithTone>\n )}\n </Stack>\n\n <Stack space={3}>\n <Text as=\"label\" htmlFor={descriptionId} size={1} weight=\"medium\">\n {t('dialog.create.description.label')}\n </Text>\n <TextArea\n data-testid=\"variant-form-description\"\n fontSize={1}\n id={descriptionId}\n onChange={handleDescriptionChange}\n placeholder={t('dialog.create.description.placeholder')}\n rows={3}\n value={getPortableTextDescriptionValue(value.metadata?.description)}\n />\n </Stack>\n\n <Stack space={3}>\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n {t('dialog.create.conditions.title')}\n </Text>\n <Text muted size={1}>\n {t('dialog.create.conditions.description')}\n </Text>\n </Stack>\n\n <Stack space={2}>\n {conditionRows.map((row, index) => {\n const validation = conditionsValidation.get(index) ?? getEmptyConditionRowValidation()\n const valueValidation = showValidation ? validation.value : null\n const conditionValidationError = validation.key || valueValidation\n\n return (\n <Stack key={row.id} space={2}>\n <Flex align=\"center\" gap={2}>\n <Box flex={1}>\n <ConditionAutocompleteInput\n autoFocus={index > 0}\n ariaLabel={t('dialog.create.condition-key.label')}\n customValidity={validation.key ? t(validation.key) : undefined}\n invalid={Boolean(validation.key)}\n onChange={(nextValue) => handleConditionChange(index, 'key', nextValue)}\n options={getConditionKeyOptions(suggestionIndex, conditionRows, index)}\n placeholder={t('dialog.create.condition-key.placeholder')}\n testId=\"variant-form-condition-key\"\n value={row.key}\n />\n </Box>\n <Box flex={1}>\n <ConditionAutocompleteInput\n ariaLabel={t('dialog.create.condition-value.label')}\n customValidity={valueValidation ? t(valueValidation) : undefined}\n invalid={Boolean(valueValidation)}\n onChange={(nextValue) => handleConditionChange(index, 'value', nextValue)}\n options={getConditionValueOptions(suggestionIndex, row.key)}\n placeholder={t('dialog.create.condition-value.placeholder')}\n testId=\"variant-form-condition-value\"\n value={row.value}\n />\n </Box>\n <Button\n disabled={isConditionRowEmpty(row) && conditionRows.length === 1}\n icon={TrashIcon}\n mode=\"bleed\"\n onClick={() => handleRemoveCondition(index)}\n tone=\"critical\"\n tooltipProps={{content: t('dialog.create.remove-condition')}}\n type=\"button\"\n />\n </Flex>\n {conditionValidationError && (\n <TextWithTone\n data-testid={\n validation.key\n ? 'variant-form-condition-key-error'\n : 'variant-form-condition-value-error'\n }\n size={1}\n tone=\"critical\"\n >\n {t(conditionValidationError)}\n </TextWithTone>\n )}\n </Stack>\n )\n })}\n </Stack>\n\n <Flex>\n <Button\n disabled={!canAddCondition}\n icon={AddIcon}\n mode=\"ghost\"\n onClick={handleAddCondition}\n text={t('dialog.create.action.add-condition')}\n tooltipProps={\n canAddCondition\n ? null\n : {content: t('dialog.create.action.add-condition.disabled-hint')}\n }\n type=\"button\"\n />\n </Flex>\n </Stack>\n </Stack>\n )\n}\n","import {at, set} from '@sanity/mutate'\nimport {applyPatches} from '@sanity/mutate/_unstable_apply'\nimport {Box, Card, Flex, useToast} from '@sanity/ui'\nimport {type FormEvent, useCallback, useState} from 'react'\n\nimport {Button, Dialog} from '../../../../ui-components'\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type EditableSystemVariant} from '../../types'\nimport {getIsVariantInvalid} from '../../util/getIsVariantInvalid'\nimport {VariantForm, type VariantFormChangeHandler} from './VariantForm'\n\ninterface VariantDialogProps {\n confirmDataTestId: string\n confirmText: string\n errorTitle: string\n header: string\n id: string\n initialValue: EditableSystemVariant\n onCancel: () => void\n onSubmit: (variant: EditableSystemVariant) => Promise<void>\n renderCancelButton?: boolean\n}\n\nexport function VariantDialog(props: VariantDialogProps): React.JSX.Element {\n const {\n confirmDataTestId,\n confirmText,\n errorTitle,\n header,\n id,\n initialValue,\n onCancel,\n onSubmit,\n renderCancelButton = false,\n } = props\n const toast = useToast()\n const {t} = useTranslation(variantsLocaleNamespace)\n const [variant, setVariant] = useState(initialValue)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [showValidation, setShowValidation] = useState(false)\n const [conditionsInvalid, setConditionsInvalid] = useState(false)\n const invalid = getIsVariantInvalid(variant) || conditionsInvalid\n\n const handleVariantChange = useCallback<VariantFormChangeHandler>((path, nextValue) => {\n /* oxlint-disable typescript/no-unnecessary-type-assertion */\n setVariant(\n (currentVariant) =>\n applyPatches([at(path, set(nextValue))], currentVariant) as EditableSystemVariant,\n )\n /* oxlint-enable typescript/no-unnecessary-type-assertion */\n }, [])\n\n const handleSubmit = useCallback(\n async (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n\n if (invalid) {\n setShowValidation(true)\n return\n }\n\n setIsSubmitting(true)\n\n try {\n await onSubmit(variant)\n setIsSubmitting(false)\n } catch (error) {\n setIsSubmitting(false)\n console.error(error)\n toast.push({\n closable: true,\n status: 'error',\n title: errorTitle,\n })\n }\n },\n [errorTitle, invalid, onSubmit, toast, variant],\n )\n\n return (\n <Dialog\n __unstable_autoFocus={false}\n header={header}\n id={id}\n onClickOutside={isSubmitting ? undefined : onCancel}\n onClose={isSubmitting ? undefined : onCancel}\n padding={false}\n width={1}\n >\n <Card borderTop padding={4}>\n <form onSubmit={handleSubmit}>\n <Box paddingBottom={4}>\n <VariantForm\n onChange={handleVariantChange}\n onConditionValidityChange={setConditionsInvalid}\n showValidation={showValidation}\n value={variant}\n />\n </Box>\n <Flex gap={2} justify=\"flex-end\" paddingTop={5}>\n {renderCancelButton && (\n <Button\n disabled={isSubmitting}\n mode=\"ghost\"\n onClick={onCancel}\n text={t('dialog.edit.action.cancel')}\n type=\"button\"\n />\n )}\n <Button\n data-testid={confirmDataTestId}\n disabled={isSubmitting}\n loading={isSubmitting}\n size=\"large\"\n text={confirmText}\n type=\"submit\"\n />\n </Flex>\n </form>\n </Card>\n </Dialog>\n )\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {type EditableSystemVariant, type SystemVariant} from '../../types'\nimport {VariantDialog} from './VariantDialog'\n\ninterface EditVariantDialogProps {\n onCancel: () => void\n onSubmit: () => void\n variant: SystemVariant\n}\n\nfunction toEditableVariant(variant: SystemVariant): EditableSystemVariant {\n return {\n _id: variant._id,\n _type: variant._type,\n conditions: variant.conditions,\n priority: variant.priority,\n metadata: variant.metadata,\n }\n}\n\nexport function EditVariantDialog(props: EditVariantDialogProps): React.JSX.Element {\n const {onCancel, onSubmit, variant: initialVariant} = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {updateVariant} = useVariantOperations()\n const initialValue = useMemo(() => toEditableVariant(initialVariant), [initialVariant])\n\n const handleSubmit = useCallback(\n async (variant: EditableSystemVariant) => {\n await updateVariant(variant)\n onSubmit()\n },\n [onSubmit, updateVariant],\n )\n\n return (\n <VariantDialog\n confirmDataTestId=\"save-variant-button\"\n confirmText={t('dialog.edit.action.confirm')}\n errorTitle={t('dialog.edit.error.title')}\n header={t('dialog.edit.title')}\n id=\"edit-variant-dialog\"\n initialValue={initialValue}\n onCancel={onCancel}\n onSubmit={handleSubmit}\n renderCancelButton\n />\n )\n}\n","import {type SanityDocument} from '@sanity/client'\nimport {type DocumentSystem} from '@sanity/types'\n\nimport {DOCUMENT_SYSTEM_FIELD} from '../../../preview/constants'\nimport {type VariantDocumentVersion} from './types'\n\n/**\n * @internal\n */\nexport function toVariantDocumentVersion(document: SanityDocument): VariantDocumentVersion | null {\n const system = document[DOCUMENT_SYSTEM_FIELD] as DocumentSystem | undefined\n\n if (!system?.group?._ref) {\n return null\n }\n\n return {\n documentId: document._id,\n bundleId: system.bundleId ?? undefined,\n releaseRef: system.release?._ref ?? null,\n updatedAt: document._updatedAt ?? '',\n }\n}\n","import {useMemo} from 'react'\n\nimport {\n type DocumentInRelease,\n useBundleDocuments,\n} from '../../releases/tool/detail/useBundleDocuments'\nimport {type DocumentInVariant} from '../tool/detail/types'\nimport {toVariantDocumentVersion} from '../tool/detail/variantDocumentVersion'\nimport {getVariantId} from '../tool/util'\n\n/**\n * Hook to fetch the documents that belong to a variant.\n *\n * Reuses the generic {@link useBundleDocuments} machinery with\n * `sanity::partOfVariant($variantId)`.\n *\n * @internal\n */\nexport function useVariantDocuments(variantId: string | undefined): {\n loading: boolean\n results: DocumentInVariant[]\n error: null | Error\n} {\n const enabled = Boolean(variantId)\n const params = useMemo(() => ({variantId: variantId ? getVariantId(variantId) : ''}), [variantId])\n\n const {loading, results, error} = useBundleDocuments({\n groqFilter: `sanity::partOfVariant($variantId)`,\n params,\n cacheKey: enabled ? `variant-${variantId}` : 'variant-disabled',\n enabled,\n })\n\n const variantResults = useMemo(\n () => (enabled ? toDocumentInVariants(results) : []),\n [enabled, results],\n )\n\n return {\n loading: enabled && loading,\n results: variantResults,\n error: enabled ? error : null,\n }\n}\n\nfunction toDocumentInVariants(results: DocumentInRelease[]): DocumentInVariant[] {\n return results.flatMap((result) => {\n const version = toVariantDocumentVersion(result.document)\n\n return version ? [{...result, version}] : []\n })\n}\n","import {type PerspectiveBundle} from '../../../perspective/types'\nimport {isPublishedBundleId} from '../util'\nimport {\n type DocumentInVariant,\n type DocumentInVariantGroup,\n type DocumentValidationStatus,\n type VariantDocumentVersion,\n} from './types'\n\nfunction getBundleSortOrder(bundleId: PerspectiveBundle | undefined): number {\n if (isPublishedBundleId(bundleId)) {\n return 0\n }\n\n if (bundleId === 'drafts') {\n return 1\n }\n\n return 2\n}\n\nfunction compareVariantDocumentVersions(\n left: VariantDocumentVersion,\n right: VariantDocumentVersion,\n): number {\n const leftOrder = getBundleSortOrder(left.bundleId)\n const rightOrder = getBundleSortOrder(right.bundleId)\n\n if (leftOrder !== rightOrder) {\n return leftOrder - rightOrder\n }\n\n return left.documentId.localeCompare(right.documentId)\n}\n\nfunction pickRepresentativeDocument(documents: DocumentInVariant[]): DocumentInVariant {\n return documents.reduce((latest, current) => {\n const latestUpdatedAt = latest.document._updatedAt ?? ''\n const currentUpdatedAt = current.document._updatedAt ?? ''\n\n return currentUpdatedAt > latestUpdatedAt ? current : latest\n })\n}\n\nfunction aggregateValidation(documents: DocumentInVariant[]): DocumentValidationStatus {\n const representative = pickRepresentativeDocument(documents)\n\n return {\n isValidating: documents.some((document) => document.validation.isValidating),\n validation: documents.flatMap((document) => document.validation.validation),\n revision: representative.validation.revision,\n hasError: documents.some((document) => document.validation.hasError),\n }\n}\n\n/**\n * Groups flat variant document versions into one row per document group.\n *\n * @internal\n */\nexport function groupVariantDocumentsByGroup(\n documents: DocumentInVariant[],\n): DocumentInVariantGroup[] {\n const groups = new Map<string, DocumentInVariant[]>()\n\n for (const document of documents) {\n const groupId = document.document._system?.group?._ref\n\n if (!groupId) {\n continue\n }\n\n const existingGroup = groups.get(groupId)\n\n if (existingGroup) {\n existingGroup.push(document)\n } else {\n groups.set(groupId, [document])\n }\n }\n\n return Array.from(groups.entries()).map(([groupId, groupDocuments]) => {\n const representative = pickRepresentativeDocument(groupDocuments)\n const versions = groupDocuments\n .map((item) => item.version)\n .toSorted(compareVariantDocumentVersions)\n\n return {\n ...representative,\n groupId,\n versions,\n validation: aggregateValidation(groupDocuments),\n }\n })\n}\n","import {Menu, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {MenuButton, MenuItem} from '../../../../ui-components'\nimport {ContextMenuButton} from '../../../components/contextMenuButton'\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId} from '../util'\n\nexport function VariantDetailMenuButton({variant}: {variant: SystemVariant}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const toast = useToast()\n const {deleteVariant} = useVariantOperations()\n const [isDeleting, setIsDeleting] = useState(false)\n\n const handleDelete = useCallback(async () => {\n setIsDeleting(true)\n\n try {\n await deleteVariant(variant._id)\n setIsDeleting(false)\n router.navigate({})\n } catch (error) {\n console.error(error)\n toast.push({\n closable: true,\n status: 'error',\n title: t('overview.action.delete-variant.error.title'),\n })\n setIsDeleting(false)\n }\n }, [deleteVariant, router, t, toast, variant._id])\n\n return (\n <MenuButton\n button={<ContextMenuButton disabled={isDeleting} loading={isDeleting} />}\n id={`variant-detail-actions-${getVariantId(variant._id)}`}\n menu={\n <Menu>\n <MenuItem\n // TODO: This action now doesn't validate the documents count in a variant, once we can\n // start adding documents to a variant we should revisit this to validate the documents count.\n // If it has documents we should probably disable the delete action or at least handle it differently.\n disabled={isDeleting}\n onClick={handleDelete}\n text={t('overview.action.delete-variant')}\n tone=\"critical\"\n />\n </Menu>\n }\n popover={{placement: 'bottom-end', portal: true}}\n />\n )\n}\n","import {DiamondIcon} from '@sanity/icons/Diamond'\nimport {Card, Flex, Text} from '@sanity/ui'\n\nimport {RelativeTime} from '../../../components'\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {VariantDetailMenuButton} from './VariantDetailMenuButton'\n\nexport function VariantDetailFooter({variant}: {variant: SystemVariant}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n return (\n <Card flex=\"none\">\n <Card borderTop marginX={2} style={{opacity: 0.6}} />\n\n <Flex padding={3}>\n <Flex flex={1} gap={1}>\n <Card>\n <Flex align=\"center\" gap={2}>\n <Text size={1}>\n <DiamondIcon />\n </Text>\n <Text muted size={1}>\n {t('detail.footer.created')}{' '}\n <RelativeTime time={variant._createdAt} useTemporalPhrase minimal />\n </Text>\n </Flex>\n </Card>\n </Flex>\n\n <Flex flex=\"none\" gap={1} data-testid=\"variant-detail-footer-actions\">\n <VariantDetailMenuButton variant={variant} />\n </Flex>\n </Flex>\n </Card>\n )\n}\n","import {type SanityDocument} from '@sanity/client'\n\nexport function getDocumentPreviewTitle(document: SanityDocument): string {\n const title = document.title || document.name\n\n return typeof title === 'string' && title.trim() ? title : document._id\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Badge, Box, Flex} from '@sanity/ui'\nimport {IntentLink} from 'sanity/router'\n\nimport {useTranslation} from '../../../../i18n'\nimport {ReleaseTitle} from '../../../../releases/components/ReleaseTitle'\nimport {RELEASES_INTENT} from '../../../../releases/plugin'\nimport {getReleaseDocumentIdFromReleaseId} from '../../../../releases/util/getReleaseDocumentIdFromReleaseId'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {isPublishedBundleId, isReleaseBundle} from '../../util'\nimport {type VariantDocumentVersion} from '../types'\n\nfunction getReleaseDocumentForVersion(\n version: VariantDocumentVersion,\n releasesById: Map<string, ReleaseDocument>,\n): ReleaseDocument | undefined {\n if (version.releaseRef) {\n return releasesById.get(version.releaseRef)\n }\n\n if (isReleaseBundle(version.bundleId)) {\n const releaseDocumentId = getReleaseDocumentIdFromReleaseId(version.bundleId!)\n\n return releasesById.get(releaseDocumentId)\n }\n\n return undefined\n}\n\nfunction ReleaseBundleChip({release}: {release: ReleaseDocument}) {\n const {t} = useTranslation()\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n\n return (\n <ReleaseTitle\n title={release.metadata?.title}\n fallback={t('release.placeholder-untitled-release')}\n >\n {({displayTitle}) => (\n <IntentLink intent={RELEASES_INTENT} params={{id: releaseId}}>\n <Badge radius={2} tone=\"primary\">\n {displayTitle}\n </Badge>\n </IntentLink>\n )}\n </ReleaseTitle>\n )\n}\n\nfunction StaticBundleChip({label, tone}: {label: string; tone: 'positive' | 'default'}) {\n return (\n <Badge radius={2} tone={tone}>\n {label}\n </Badge>\n )\n}\n\nexport function VariantDocumentBundleChips({\n versions,\n releasesById,\n}: {\n versions: VariantDocumentVersion[]\n releasesById: Map<string, ReleaseDocument>\n}): React.JSX.Element {\n const {t} = useTranslation()\n\n return (\n <Box style={{minWidth: 0, width: '100%', overflowX: 'auto', overflowY: 'hidden'}}>\n <Flex align=\"center\" gap={1} wrap=\"nowrap\" style={{width: 'max-content'}}>\n {versions.map((version) => {\n if (isPublishedBundleId(version.bundleId)) {\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.chip.published')}\n tone=\"positive\"\n />\n )\n }\n\n if (version.bundleId === 'drafts') {\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.chip.draft')}\n tone=\"default\"\n />\n )\n }\n\n const release = getReleaseDocumentForVersion(version, releasesById)\n\n if (release) {\n return <ReleaseBundleChip key={version.documentId} release={release} />\n }\n\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.placeholder-untitled-release')}\n tone=\"default\"\n />\n )\n })}\n </Flex>\n </Box>\n )\n}\n","import {Card} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {type PreviewLayoutKey} from '../../../../components/previews/types'\nimport {DocumentPreviewPresence} from '../../../../presence'\nimport {SanityDefaultPreview} from '../../../../preview/components/SanityDefaultPreview'\nimport {useDocumentPresence} from '../../../../store/presence/useDocumentPresence'\nimport {useDocumentPreviewValues} from '../../../../tasks/hooks/useDocumentPreviewValues'\nimport {getPublishedId} from '../../../../util/draftUtils'\nimport {isPublishedBundleId} from '../../util'\nimport {type DocumentInVariantGroup} from '../types'\n\ninterface VariantDocumentPreviewProps {\n row: DocumentInVariantGroup\n layout?: PreviewLayoutKey\n variantId?: string\n}\n\ninterface VariantDocumentPreviewLinkProps extends React.ComponentPropsWithoutRef<'a'> {\n publishedId: string\n documentType: string\n searchParams: Array<[string, string]> | undefined\n}\n\nconst VariantDocumentPreviewLink = forwardRef(function VariantDocumentPreviewLink(\n {publishedId, documentType, searchParams, ...linkProps}: VariantDocumentPreviewLinkProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n return (\n <IntentLink\n {...linkProps}\n intent=\"edit\"\n params={{\n id: publishedId,\n type: documentType,\n }}\n searchParams={searchParams}\n ref={ref}\n />\n )\n})\n\nfunction getVersionPerspectiveNavigation(\n bundleId: DocumentInVariantGroup['version']['bundleId'],\n variantId?: string,\n): {\n perspectiveStack: string[]\n searchParams: Array<[string, string]> | undefined\n} {\n const searchParams: Array<[string, string]> = variantId ? [['variant', variantId]] : []\n\n if (isPublishedBundleId(bundleId)) {\n return {\n perspectiveStack: ['published'],\n searchParams: [...searchParams, ['perspective', 'published']],\n }\n }\n\n if (bundleId === 'drafts') {\n return {\n perspectiveStack: ['drafts'],\n searchParams: searchParams.length > 0 ? searchParams : undefined,\n }\n }\n\n return {\n perspectiveStack: [bundleId ?? '', 'drafts'],\n searchParams: [...searchParams, ['perspective', bundleId ?? '']],\n }\n}\n\nexport function VariantDocumentPreview({\n row,\n layout,\n variantId,\n}: VariantDocumentPreviewProps): React.JSX.Element {\n const publishedId = getPublishedId(row.groupId)\n const documentPresence = useDocumentPresence(row.document._id)\n const {perspectiveStack, searchParams} = useMemo(\n () => getVersionPerspectiveNavigation(row.version.bundleId, variantId),\n [row.version.bundleId, variantId],\n )\n\n const previewPresence = useMemo(\n () => documentPresence?.length > 0 && <DocumentPreviewPresence presence={documentPresence} />,\n [documentPresence],\n )\n\n const {isLoading: previewLoading, value: resolvedPreview} = useDocumentPreviewValues({\n documentId: row.document._id,\n documentType: row.document._type,\n perspectiveStack,\n })\n\n return (\n <Card\n tone=\"inherit\"\n as={VariantDocumentPreviewLink}\n publishedId={publishedId}\n documentType={row.document._type}\n searchParams={searchParams}\n radius={2}\n data-as=\"a\"\n >\n <SanityDefaultPreview\n {...(resolvedPreview || {})}\n status={previewPresence}\n isPlaceholder={previewLoading}\n layout={layout}\n />\n </Card>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Flex, Text} from '@sanity/ui'\n// eslint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\nimport {memo} from 'react'\n\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../../ui-components/tooltip'\nimport {RelativeTime} from '../../../../components/RelativeTime'\nimport {useSchema} from '../../../../hooks'\nimport {SanityDefaultPreview} from '../../../../preview/components/SanityDefaultPreview'\nimport {Headers} from '../../../../releases/tool/components/Table/TableHeader'\nimport {type Column} from '../../../../releases/tool/components/Table/types'\nimport {type DocumentInVariantGroup} from '../types'\nimport {getDocumentPreviewTitle} from './getDocumentPreviewTitle'\nimport {VariantDocumentBundleChips} from './VariantDocumentBundleChips'\nimport {VariantDocumentPreview} from './VariantDocumentPreview'\n\nconst MemoVariantDocumentPreview = memo(\n function MemoVariantDocumentPreview({\n row,\n variantId,\n }: {\n row: DocumentInVariantGroup\n variantId?: string\n }) {\n return <VariantDocumentPreview row={row} variantId={variantId} />\n },\n (prev, next) => prev.row.memoKey === next.row.memoKey && prev.variantId === next.variantId,\n)\n\nconst MemoDocumentType = memo(\n function DocumentType({type}: {type: string}) {\n const schema = useSchema()\n const schemaType = schema.get(type)\n\n return <Text size={1}>{schemaType?.title || type}</Text>\n },\n (prev, next) => prev.type === next.type,\n)\n\nexport const getVariantDocumentTableColumnDefs = (\n t: TFunction<'variants'>,\n variantId: string | undefined,\n releasesById: Map<string, ReleaseDocument>,\n): Column<DocumentInVariantGroup>[] => [\n {\n id: 'documentGroup',\n hidden: true,\n width: null,\n sorting: true,\n sortTransform: (row) => row.groupId,\n },\n {\n id: 'bundle',\n width: 140,\n style: {minWidth: 100, maxWidth: 140},\n sorting: false,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('detail.documents.table.bundle')} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex\n align=\"center\"\n {...cellProps}\n style={{...cellProps.style, flex: '0 1 auto', minWidth: 0, overflow: 'hidden'}}\n >\n <Box flex={1} paddingX={2} style={{minWidth: 0, overflow: 'hidden'}}>\n {!datum.isLoading && (\n <VariantDocumentBundleChips versions={datum.versions} releasesById={releasesById} />\n )}\n </Box>\n </Flex>\n ),\n },\n {\n id: 'document._type',\n width: null,\n style: {minWidth: 100},\n sorting: true,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('detail.documents.table.type')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2}>\n {!datum.isLoading && <MemoDocumentType type={datum.document._type} />}\n </Box>\n </Flex>\n ),\n },\n {\n id: 'search',\n width: null,\n style: {minWidth: 'min(50%, calc(100vw - 80px))', maxWidth: 'min(50%, calc(100vw - 80px))'},\n sortTransform: ({document}) => getDocumentPreviewTitle(document).toLowerCase(),\n header: (props) => (\n <Headers.TableHeaderSearch\n {...props}\n placeholder={t('detail.documents.table.search-placeholder')}\n />\n ),\n cell: ({cellProps, datum}) => (\n <Box {...cellProps} flex={1} padding={1} paddingRight={2} sizing=\"border\">\n {datum.isLoading ? (\n <SanityDefaultPreview isPlaceholder />\n ) : (\n <MemoVariantDocumentPreview row={datum} variantId={variantId} />\n )}\n </Box>\n ),\n },\n {\n id: 'document._updatedAt',\n sorting: true,\n width: 130,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('detail.documents.table.edited')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} style={{minWidth: 130}}>\n {!datum.isLoading && datum.document._updatedAt && (\n <Text muted size={1}>\n <RelativeTime time={datum.document._updatedAt} useTemporalPhrase minimal />\n </Text>\n )}\n </Flex>\n ),\n },\n {\n id: 'validation',\n sorting: false,\n width: 50,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={''} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => {\n if (datum.isLoading) return null\n\n const validationErrorCount = datum.validation.validation.filter(\n (validation) => validation.level === 'error',\n ).length\n\n return (\n <Flex {...cellProps} flex={1} padding={1} justify=\"center\" align=\"center\" sizing=\"border\">\n {datum.validation.hasError && (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Flex align=\"center\" gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n {t(\n validationErrorCount === 1\n ? 'detail.documents.table.validation.error_one'\n : 'detail.documents.table.validation.error_other',\n {count: validationErrorCount},\n )}\n </Flex>\n </Text>\n }\n >\n <Text size={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n </Tooltip>\n )}\n </Flex>\n )\n },\n },\n]\n","import {Card} from '@sanity/ui'\nimport {type CSSProperties, useMemo, useState} from 'react'\n\nimport {useTranslation} from '../../../i18n'\nimport {useActiveReleases} from '../../../releases/store/useActiveReleases'\nimport {Table} from '../../../releases/tool/components/Table/Table'\nimport {type Column} from '../../../releases/tool/components/Table/types'\nimport {searchDocumentRelease} from '../../../releases/tool/detail/documentTable/searchDocumentRelease'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type DocumentInVariantGroup} from './types'\nimport {getVariantDocumentTableColumnDefs} from './variantDocumentTable/VariantDocumentTableColumnDefs'\n\nconst TABLE_CARD_STYLE: CSSProperties = {\n height: '100%',\n overflow: 'auto',\n}\n\nfunction filterDocuments(\n rows: DocumentInVariantGroup[],\n searchTerm: string,\n): DocumentInVariantGroup[] {\n if (!searchTerm.trim()) {\n return rows\n }\n\n return rows.filter(({document}) => searchDocumentRelease(document, searchTerm))\n}\n\nexport function VariantDocumentsTable({\n rows,\n loading = false,\n variantId,\n}: {\n rows: DocumentInVariantGroup[]\n loading?: boolean\n variantId?: string\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const {data: releases} = useActiveReleases()\n const releasesById = useMemo(\n () => new Map(releases.map((release) => [release._id, release])),\n [releases],\n )\n const columnDefs = useMemo<Column<DocumentInVariantGroup>[]>(\n () => getVariantDocumentTableColumnDefs(t, variantId, releasesById),\n [t, variantId, releasesById],\n )\n\n return (\n <Card flex={1} ref={setScrollContainerRef} style={TABLE_CARD_STYLE}>\n <Table<DocumentInVariantGroup>\n columnDefs={columnDefs}\n data={rows}\n defaultSort={{column: 'documentGroup', direction: 'asc'}}\n emptyState={t('detail.documents.no-documents')}\n loading={loading}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"groupId\"\n scrollContainerRef={scrollContainerRef}\n searchFilter={filterDocuments}\n />\n </Card>\n )\n}\n","import {Box, Card, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {LoadingBlock} from '../../../components'\nimport {useTranslation} from '../../../i18n'\nimport {EditVariantDialog} from '../../components/dialog/EditVariantDialog'\nimport {useVariantDocuments} from '../../hooks/useVariantDocuments'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {\n decodeVariantIdFromRoute,\n getVariantConditionsText,\n getVariantDescription,\n getVariantId,\n getVariantTitle,\n} from '../util'\nimport {groupVariantDocumentsByGroup} from './groupVariantDocumentsByGroup'\nimport {VariantDetailFooter} from './VariantDetailFooter'\nimport {VariantDocumentsTable} from './VariantDocumentsTable'\n\nexport function VariantDetail() {\n const router = useRouter()\n const {t} = useTranslation(variantsLocaleNamespace)\n const [editDialogOpen, setEditDialogOpen] = useState(false)\n const variantIdRaw =\n typeof router.state.variantId === 'string' ? router.state.variantId : undefined\n const variantId = decodeVariantIdFromRoute(variantIdRaw)\n const {byId, loading} = useAllVariants()\n\n const variant = variantId ? byId.get(variantId) : undefined\n const {\n loading: documentsLoading,\n results: variantDocuments,\n error: variantDocumentsError,\n } = useVariantDocuments(variant?._id)\n\n const tableRows = useMemo(\n () => groupVariantDocumentsByGroup(variantDocuments),\n [variantDocuments],\n )\n\n if (loading) {\n return <LoadingBlock fill title={t('detail.loading')} />\n }\n\n if (!variant) {\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n <Card borderBottom flex=\"none\" padding={3}>\n <Button mode=\"bleed\" onClick={() => router.navigate({})} text={t('detail.back')} />\n </Card>\n <Box padding={4}>\n <Card border padding={4} radius={3}>\n <Stack space={3}>\n <Text size={2} weight=\"semibold\">\n {t('detail.not-found.title')}\n </Text>\n <Text muted size={1}>\n {t('detail.not-found.description')}\n </Text>\n </Stack>\n </Card>\n </Box>\n </Flex>\n )\n }\n\n const description = getVariantDescription(variant)\n const conditionsText = getVariantConditionsText(variant.conditions)\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\">\n <Card borderBottom flex=\"none\" padding={3}>\n <Button mode=\"bleed\" onClick={() => router.navigate({})} text={t('detail.back')} />\n </Card>\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\" style={{minHeight: 0}}>\n <Container flex=\"none\" width={3}>\n <Flex direction=\"column\" paddingX={3}>\n <Card paddingY={5}>\n <Flex align=\"flex-start\" gap={4} justify=\"space-between\">\n <Stack space={3}>\n <Text as=\"h1\" size={4} weight=\"bold\">\n {getVariantTitle(variant)}\n </Text>\n <Text muted size={1}>\n {description || t('detail.no-description')}\n </Text>\n </Stack>\n <Button\n onClick={() => setEditDialogOpen(true)}\n text={t('detail.action.edit-variant')}\n />\n </Flex>\n\n <Box paddingTop={4}>\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n {t('dialog.create.conditions.title')}\n </Text>\n <Text muted size={1}>\n {conditionsText || t('overview.table.no-conditions')}\n </Text>\n </Stack>\n </Box>\n </Card>\n </Flex>\n </Container>\n <Flex direction=\"column\" flex={1} overflow=\"hidden\" style={{minHeight: 0}}>\n {variantDocumentsError ? (\n <Box padding={4}>\n <Text muted size={1}>\n {t('detail.documents.error')}\n </Text>\n </Box>\n ) : (\n <VariantDocumentsTable\n loading={documentsLoading}\n rows={tableRows}\n variantId={getVariantId(variant._id)}\n />\n )}\n </Flex>\n </Flex>\n <VariantDetailFooter variant={variant} />\n {editDialogOpen && (\n <EditVariantDialog\n onCancel={() => setEditDialogOpen(false)}\n onSubmit={() => setEditDialogOpen(false)}\n variant={variant}\n />\n )}\n </Flex>\n )\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {getVariantDefaults} from '../../util/variantDefaults'\nimport {VariantDialog} from './VariantDialog'\n\ninterface CreateVariantDialogProps {\n onCancel: () => void\n onSubmit: (createdVariantId: string) => void\n}\n\nexport function CreateVariantDialog(props: CreateVariantDialogProps): React.JSX.Element {\n const {onCancel, onSubmit} = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {createVariant} = useVariantOperations()\n const initialValue = useMemo(() => getVariantDefaults(), [])\n\n const handleSubmit = useCallback(\n async (variant: typeof initialValue) => {\n await createVariant(variant)\n onSubmit(variant._id)\n },\n [createVariant, onSubmit],\n )\n\n return (\n <VariantDialog\n confirmDataTestId=\"submit-variant-button\"\n confirmText={t('dialog.create.action.confirm')}\n errorTitle={t('dialog.create.error.title')}\n header={t('dialog.create.title')}\n id=\"create-variant-dialog\"\n initialValue={initialValue}\n onCancel={onCancel}\n onSubmit={handleSubmit}\n />\n )\n}\n","import {Menu, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\n\nimport {MenuButton, MenuItem} from '../../../../ui-components'\nimport {ContextMenuButton} from '../../../components/contextMenuButton'\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId} from '../util'\n\nexport function VariantMenuButton({variant}: {variant: SystemVariant}) {\n const {t} = useTranslation(variantsLocaleNamespace)\n const toast = useToast()\n const {deleteVariant} = useVariantOperations()\n const [isDeleting, setIsDeleting] = useState(false)\n\n const handleDelete = useCallback(async () => {\n setIsDeleting(true)\n\n try {\n await deleteVariant(variant._id)\n setIsDeleting(false)\n } catch (error) {\n console.error(error)\n toast.push({\n closable: true,\n status: 'error',\n title: t('overview.action.delete-variant.error.title'),\n })\n setIsDeleting(false)\n }\n }, [deleteVariant, t, toast, variant._id])\n\n return (\n <MenuButton\n button={<ContextMenuButton disabled={isDeleting} loading={isDeleting} />}\n id={`variant-actions-${getVariantId(variant._id)}`}\n menu={\n <Menu>\n <MenuItem\n // TODO: This action now doesn't validate the documents count in a variant, once we can\n // start adding documents to a variant we should revisit this to validate the documents count.\n // If it has documents we should probably disable the delete action or at least handle it differently.\n disabled={isDeleting}\n onClick={handleDelete}\n text={t('overview.action.delete-variant')}\n tone=\"critical\"\n />\n </Menu>\n }\n popover={{placement: 'bottom-end', portal: true}}\n />\n )\n}\n","/**\n * Isometric illustration: one primary document with smaller derived copies,\n * echoing the layered panels used in {@link ReleaseIllustration}.\n */\nconst BASE_PANEL =\n 'M64 150.174V81.8262C64 79.1748 65.498 76.751 67.8695 75.5653L103.87 57.5652C108.524 55.2381 114 58.6226 114 63.8262V132.174C114 134.825 112.502 137.249 110.131 138.435L74.1305 156.435C69.4762 158.762 64 155.377 64 150.174Z'\n\n/** Horizontal “body copy” lines in panel local coordinates */\nconst LINES_FULL = ['M72 86 L106 86', 'M72 96 L102 96', 'M72 106 L104 106', 'M72 116 L98 116']\n\nconst LINES_MEDIUM = ['M72 88 L100 88', 'M72 98 L96 98', 'M72 108 L102 108']\n\nconst LINES_SHORT = ['M72 90 L94 90', 'M72 100 L92 100']\n\nexport const VariantIllustration = () => (\n <svg\n aria-hidden=\"true\"\n data-testid=\"variant-illustration\"\n width=\"248\"\n height=\"201\"\n viewBox=\"0 0 248 201\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* faint depth behind hub */}\n <g opacity={0.12}>\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n transform=\"translate(12 10)\"\n />\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n transform=\"translate(6 6)\"\n />\n </g>\n\n {/* derived copies — same silhouette, different inner lines */}\n <g opacity={0.28}>\n <g transform=\"translate(118 6) scale(0.5)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_MEDIUM.map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.55}\n />\n ))}\n </g>\n </g>\n\n <g opacity={0.34}>\n <g transform=\"translate(126 52) scale(0.52)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_FULL.slice(0, 3).map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.5}\n />\n ))}\n </g>\n </g>\n\n <g opacity={0.26}>\n <g transform=\"translate(106 102) scale(0.48)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_SHORT.map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.55}\n />\n ))}\n </g>\n </g>\n\n {/* soft connectors — hub to satellites */}\n <g opacity={0.14} stroke=\"var(--card-muted-fg-color)\" strokeWidth={1.2} strokeLinecap=\"round\">\n <path d=\"M118 112 Q 152 72 168 58\" fill=\"none\" />\n <path d=\"M124 124 Q 168 108 188 92\" fill=\"none\" />\n <path d=\"M118 138 Q 150 152 162 168\" fill=\"none\" />\n </g>\n\n {/* primary document */}\n <g transform=\"translate(26 20) scale(1.06)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n opacity={0.92}\n />\n {LINES_FULL.map((d, index) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.42 + index * 0.06}\n />\n ))}\n </g>\n </svg>\n)\n","import {Flex, rem, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components'\nimport {useTranslation} from '../../../i18n'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {VariantIllustration} from '../resources/VariantIllustration'\n\ninterface VariantsEmptyStateProps {\n createVariantButton?: React.ReactNode\n}\n\nconst VARIANTS_DOCUMENTATION_URL = 'https://www.sanity.io/docs/content-variants'\n\nexport const VariantsEmptyState = ({createVariantButton}: VariantsEmptyStateProps) => {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n return (\n <Flex\n align=\"center\"\n data-testid=\"variants-empty-state\"\n flex={1}\n direction=\"column\"\n gap={3}\n style={{maxWidth: rem(300)}}\n paddingBottom={5}\n >\n <VariantIllustration />\n <Text as=\"h1\" size={1} weight=\"semibold\" data-testid=\"no-variants-info-text\">\n {t('overview.title')}\n </Text>\n <Text size={1} muted style={{textAlign: 'center'}}>\n {t('overview.empty-state.description')}\n </Text>\n <Flex gap={2}>\n {createVariantButton}\n <Button\n as=\"a\"\n href={VARIANTS_DOCUMENTATION_URL}\n target=\"_blank\"\n mode=\"ghost\"\n text={t('overview.action.documentation')}\n />\n </Flex>\n </Flex>\n )\n}\n","import {Box, Card, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type HTMLProps, useMemo} from 'react'\nimport {StateLink} from 'sanity/router'\n\nimport {type UseTranslationResponse, useTranslation} from '../../../i18n'\nimport {Headers} from '../../../releases/tool/components/Table/TableHeader'\nimport {type Column, type VisibleColumn} from '../../../releases/tool/components/Table/types'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId, getVariantConditionsText, getVariantTitle} from '../util'\n\nconst VariantDocumentsCell: VisibleColumn<SystemVariant>['cell'] = ({cellProps, datum}) => {\n if (datum.isLoading) {\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text size={1}>\n <Skeleton animated radius={1} style={{width: '4ch'}} />\n </Text>\n </Flex>\n )\n }\n\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text muted size={1}>\n 0\n </Text>\n </Flex>\n )\n}\n\nconst VariantTitleCell: VisibleColumn<SystemVariant>['cell'] = ({cellProps, datum: variant}) => {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n const encodedVariantId = getVariantId(variant._id)\n\n const VariantLink = useMemo(\n () =>\n forwardRef(function VariantLinkComponent(\n linkProps: HTMLProps<HTMLAnchorElement>,\n ref: ForwardedRef<HTMLAnchorElement>,\n ) {\n return <StateLink {...linkProps} ref={ref} state={{variantId: encodedVariantId}} />\n }),\n [encodedVariantId],\n )\n\n if (variant.isLoading) {\n return (\n <Box {...cellProps} flex={1} paddingLeft={3} paddingRight={2} paddingY={2} sizing=\"border\">\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n <Skeleton animated radius={1} style={{width: '16ch'}} />\n </Text>\n <Text muted size={1}>\n <Skeleton animated radius={1} style={{width: '32ch'}} />\n </Text>\n </Stack>\n </Box>\n )\n }\n\n const conditionsText = getVariantConditionsText(variant.conditions)\n\n return (\n <Box {...cellProps} flex={1} paddingLeft={3} paddingRight={2} paddingY={1} sizing=\"border\">\n <Card as={VariantLink} data-as=\"a\" flex={1} padding={2} radius={2} tone=\"inherit\">\n <Flex align=\"center\" gap={3}>\n <Stack flex={1} space={2}>\n <Text size={1} weight=\"medium\">\n {getVariantTitle(variant)}\n </Text>\n <Text muted size={1}>\n {conditionsText || t('overview.table.no-conditions')}\n </Text>\n </Stack>\n </Flex>\n </Card>\n </Box>\n )\n}\n\nexport function variantsOverviewColumnDefs(\n t: UseTranslationResponse<'variants', undefined>['t'],\n): Column<SystemVariant>[] {\n return [\n {\n id: 'metadata.title',\n sorting: true,\n width: null,\n style: {minWidth: 'min(50%, calc(100vw - 80px))'},\n header: (props) => (\n <Flex\n {...props.headerProps}\n flex={1}\n paddingLeft={3}\n paddingRight={2}\n paddingY={3}\n sizing=\"border\"\n >\n <Headers.SortHeaderButton {...props} text={t('overview.table.variant')} />\n </Flex>\n ),\n cell: VariantTitleCell,\n sortTransform: (variant) => getVariantTitle(variant),\n },\n {\n id: 'documentCount',\n sorting: false,\n width: 120,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('overview.table.documents')} />\n </Flex>\n ),\n cell: VariantDocumentsCell,\n },\n ]\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Card, Container, Flex, Stack, Text, TextInput} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n'\nimport {Table, type TableProps} from '../../../releases/tool/components/Table/Table'\nimport {CreateVariantDialog} from '../../components/dialog/CreateVariantDialog'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {type SystemVariant} from '../../types'\nimport {filterVariantsForSearch, getVariantId} from '../util'\nimport {VariantMenuButton} from './VariantMenuButton'\nimport {VariantsEmptyState} from './VariantsEmptyState'\nimport {variantsOverviewColumnDefs} from './VariantsOverviewColumnDefs'\n\nconst VARIANT_TABLE_ROW_ID = '_id'\n\nexport function VariantsOverview() {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const {data: variants, error, loading} = useAllVariants()\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const [searchQuery, setSearchQuery] = useState('')\n const [isCreateVariantDialogOpen, setIsCreateVariantDialogOpen] = useState(false)\n\n const handleCreateVariant = useCallback(() => {\n setIsCreateVariantDialogOpen(true)\n }, [])\n\n const handleOnCreateVariant = useCallback(\n (createdVariantId: string) => {\n setIsCreateVariantDialogOpen(false)\n router.navigate({variantId: getVariantId(createdVariantId)})\n },\n [router],\n )\n\n const columnDefs = useMemo(() => variantsOverviewColumnDefs(t), [t])\n const renderRowActions = useCallback<\n NonNullable<TableProps<SystemVariant, undefined>['rowActions']>\n >(({datum}) => <VariantMenuButton variant={datum as SystemVariant} />, [])\n\n const variantsList = useMemo(() => variants ?? [], [variants])\n\n const filteredVariants = useMemo(\n () => filterVariantsForSearch(variantsList, searchQuery),\n [variantsList, searchQuery],\n )\n\n const hasVariants = variantsList.length > 0\n\n const createVariantButton = useMemo(\n () => (\n <Button\n disabled={isCreateVariantDialogOpen}\n icon={AddIcon}\n onClick={handleCreateVariant}\n text={t('overview.action.create-variant')}\n />\n ),\n [handleCreateVariant, isCreateVariantDialogOpen, t],\n )\n\n const tableEmptyState = useCallback(() => {\n if (error && !hasVariants) {\n return (\n <Flex align=\"center\" direction=\"column\" gap={3} justify=\"center\" padding={4}>\n <Text muted size={1}>\n {t('overview.error')}\n </Text>\n </Flex>\n )\n }\n\n return <VariantsEmptyState createVariantButton={createVariantButton} />\n }, [createVariantButton, error, hasVariants, t])\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n {/* Same container width as releases document table (`container[3]` in Table), so chrome aligns with row content */}\n <Container flex=\"none\" width={3}>\n <Flex direction=\"column\" paddingX={3}>\n <Card flex=\"none\" paddingY={5}>\n <Flex align=\"flex-start\" gap={4} justify=\"space-between\">\n <Stack space={3}>\n <Text as=\"h1\" size={4} weight=\"bold\">\n {t('overview.title')}\n </Text>\n <Text muted size={1}>\n {t('overview.description')}\n </Text>\n </Stack>\n {createVariantButton}\n </Flex>\n </Card>\n\n <Box flex=\"none\" paddingBottom={4} paddingTop={2}>\n <TextInput\n clearButton={!!searchQuery}\n fontSize={1}\n icon={SearchIcon}\n onChange={(event) => setSearchQuery(event.currentTarget.value)}\n onClear={() => setSearchQuery('')}\n placeholder={t('overview.search.placeholder')}\n radius={3}\n value={searchQuery}\n />\n </Box>\n\n {error && (\n <Card flex=\"none\" padding={3} tone=\"critical\">\n <Text size={1}>{t('overview.error')}</Text>\n </Card>\n )}\n </Flex>\n </Container>\n\n {/* Full-width scroll region so table borders span the tool pane (same pattern as release detail summary). */}\n <Box flex={1} overflow=\"auto\" ref={setScrollContainerRef}>\n <Table<SystemVariant>\n columnDefs={columnDefs}\n data={filteredVariants}\n emptyState={tableEmptyState}\n loading={loading}\n rowId={VARIANT_TABLE_ROW_ID}\n rowActions={renderRowActions}\n scrollContainerRef={scrollContainerRef}\n />\n </Box>\n\n {isCreateVariantDialogOpen && (\n <CreateVariantDialog\n onCancel={() => setIsCreateVariantDialogOpen(false)}\n onSubmit={handleOnCreateVariant}\n />\n )}\n </Flex>\n )\n}\n","import {useRouter} from 'sanity/router'\n\nimport {VariantDetail} from './detail/VariantDetail'\nimport {VariantsOverview} from './overview/VariantsOverview'\n\nexport function VariantsTool() {\n const router = useRouter()\n const variantId = typeof router.state.variantId === 'string' ? router.state.variantId : undefined\n\n if (variantId) {\n return <VariantDetail key={variantId} />\n }\n\n return <VariantsOverview />\n}\n"],"names":["createVariantOperationsStore","options","client","variantsClient","createVariant","variant","action","actionType","variantId","getVariantId","_id","conditions","priority","metadata","tag","updateVariant","setPayload","patch","set","unset","deleteVariant","variantIdOrDocumentId","useVariantOperations","$","_c","studioClient","useClient","VARIANTS_STUDIO_CLIENT_OPTIONS","t0","getVariantTitleValue","title","trim","getIsVariantInvalid","getHasValidConditions","entries","Object","length","every","key","value","Boolean","CONDITION_KEY_REGEX","RESERVED_KEY_PREFIXES","getConditionKeyValidationError","trimmedKey","prefix","startsWith","includes","CONDITION_SEPARATOR","test","getConditionValueValidationError","createVariantIdSuffix","customAlphabet","createVariantId","VARIANT_DOCUMENTS_PATH","getVariantDefaults","_type","description","createPortableTextDescription","text","_key","randomKey","children","marks","markDefs","style","sortValues","values","Array","from","filter","toSorted","a","b","localeCompare","buildConditionSuggestionIndex","variants","keys","Set","valuesByKey","Map","forEach","rawKey","rawValue","add","get","getConditionKeyOptions","index","rows","currentRowIndex","usedKeys","_","rowIndex","map","row","has","getConditionValueOptions","conditionKey","filterConditionOption","query","option","toLowerCase","ConditionAutocompleteInput","props","ariaLabel","autoFocus","customValidity","invalid","onChange","placeholder","testId","id","useId","focused","setFocused","useState","nextValue","handleQueryChange","t1","undefined","t2","for","t3","t4","t5","getConditionRows","getConditionsFromRows","reduce","isConditionRowEmpty","getEmptyConditionRowValidation","getConditionRowsValidation","conditionRowsValidation","seenKeys","validation","keyError","valueError","hasConditionRowsValidationErrors","some","getPortableTextDescriptionValue","isArray","isPortableTextBlock","toPlainText","VariantForm","onConditionValidityChange","showValidation","t","useTranslation","variantsLocaleNamespace","data","useAllVariants","suggestionIndex","titleId","descriptionId","conditionRows","setConditionRows","conditionsValidation","showTitleError","lastConditionRow","canAddCondition","t6","nextRows","nextRowsValidation","nextRowsInvalid","updateConditionRows","t7","event","currentTarget","handleTitleChange","t8","event_0","handleDescriptionChange","t9","field","nextRows_0","handleConditionChange","t10","handleAddCondition","t11","index_0","nextRows_1","rowIndex_0","handleRemoveCondition","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","row_0","index_1","valueValidation","conditionValidationError","nextValue_0","nextValue_1","TrashIcon","content","t34","t35","t36","t37","t38","AddIcon","t39","t40","VariantDialog","confirmDataTestId","confirmText","errorTitle","header","initialValue","onCancel","onSubmit","renderCancelButton","toast","useToast","setVariant","isSubmitting","setIsSubmitting","setShowValidation","conditionsInvalid","setConditionsInvalid","Symbol","path","currentVariant","applyPatches","at","handleVariantChange","preventDefault","error","console","push","closable","status","handleSubmit","toEditableVariant","EditVariantDialog","initialVariant","toVariantDocumentVersion","document","system","DOCUMENT_SYSTEM_FIELD","group","_ref","documentId","bundleId","releaseRef","release","updatedAt","_updatedAt","useVariantDocuments","enabled","params","groqFilter","cacheKey","loading","results","useBundleDocuments","toDocumentInVariants","variantResults","flatMap","result","version","getBundleSortOrder","isPublishedBundleId","compareVariantDocumentVersions","left","right","leftOrder","rightOrder","pickRepresentativeDocument","documents","latest","current","latestUpdatedAt","aggregateValidation","representative","isValidating","revision","hasError","groupVariantDocumentsByGroup","groups","groupId","_system","existingGroup","groupDocuments","versions","item","VariantDetailMenuButton","router","useRouter","isDeleting","setIsDeleting","navigate","handleDelete","placement","portal","VariantDetailFooter","opacity","_createdAt","getDocumentPreviewTitle","name","getReleaseDocumentForVersion","releasesById","isReleaseBundle","releaseDocumentId","getReleaseDocumentIdFromReleaseId","ReleaseBundleChip","getReleaseIdFromReleaseDocumentId","releaseId","displayTitle","RELEASES_INTENT","StaticBundleChip","label","tone","VariantDocumentBundleChips","minWidth","width","overflowX","overflowY","VariantDocumentPreviewLink","forwardRef","ref","documentType","linkProps","publishedId","searchParams","type","getVersionPerspectiveNavigation","perspectiveStack","VariantDocumentPreview","layout","getPublishedId","documentPresence","useDocumentPresence","previewPresence","isLoading","previewLoading","resolvedPreview","useDocumentPreviewValues","MemoVariantDocumentPreview","memo","prev","next","memoKey","MemoDocumentType","schema","useSchema","getVariantDocumentTableColumnDefs","hidden","sorting","sortTransform","maxWidth","headerProps","cell","cellProps","datum","flex","overflow","validationErrorCount","level","ErrorOutlineIcon","count","TABLE_CARD_STYLE","height","filterDocuments","searchTerm","searchDocumentRelease","VariantDocumentsTable","scrollContainerRef","setScrollContainerRef","releases","useActiveReleases","_temp","columnDefs","column","direction","VariantDetail","editDialogOpen","setEditDialogOpen","variantIdRaw","state","decodeVariantIdFromRoute","byId","documentsLoading","variantDocuments","variantDocumentsError","tableRows","getVariantDescription","conditionsText","getVariantConditionsText","minHeight","T0","Flex","getVariantTitle","CreateVariantDialog","VariantMenuButton","BASE_PANEL","LINES_FULL","LINES_MEDIUM","LINES_SHORT","VariantIllustration","slice","_temp2","_temp3","_temp4","d","d_0","d_1","d_2","VARIANTS_DOCUMENTATION_URL","VariantsEmptyState","createVariantButton","rem","textAlign","VariantDocumentsCell","VariantTitleCell","encodedVariantId","VariantLink","variantsOverviewColumnDefs","VARIANT_TABLE_ROW_ID","VariantsOverview","searchQuery","setSearchQuery","isCreateVariantDialogOpen","setIsCreateVariantDialogOpen","handleCreateVariant","createdVariantId","handleOnCreateVariant","renderRowActions","variantsList","filterVariantsForSearch","filteredVariants","hasVariants","tableEmptyState","SearchIcon","VariantsTool"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var version = "6.4.1-next.4+d51f56c2ba";
1
+ var version = "6.4.1-next.5+4ab4b17e26";
2
2
  let buildVersion;
3
3
  try {
4
4
  buildVersion = process.env.PKG_BUILD_VERSION;
@@ -7,7 +7,7 @@ try {
7
7
  try {
8
8
  buildVersion = buildVersion || // This is replaced by `@sanity/pkg-utils` at build time
9
9
  // and must always be references by its full static name, e.g. no optional chaining, no `if (process && process.env)` etc.
10
- "6.4.1-next.4+d51f56c2ba";
10
+ "6.4.1-next.5+4ab4b17e26";
11
11
  } catch {
12
12
  }
13
13
  const SANITY_VERSION = buildVersion || `${version}-dev`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity",
3
- "version": "6.4.1-next.4",
3
+ "version": "6.4.1-next.5",
4
4
  "description": "Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches",
5
5
  "keywords": [
6
6
  "cms",
@@ -154,11 +154,11 @@
154
154
  "uuid": "^14.0.1",
155
155
  "web-vitals": "^5.3.0",
156
156
  "xstate": "^5.32.2",
157
- "@sanity/schema": "6.4.1-next.4+d51f56c2ba",
158
- "@sanity/util": "6.4.1-next.4+d51f56c2ba",
159
- "@sanity/mutator": "6.4.1-next.4+d51f56c2ba",
160
- "@sanity/types": "6.4.1-next.4+d51f56c2ba",
161
- "@sanity/diff": "6.4.1-next.4+d51f56c2ba"
157
+ "@sanity/diff": "6.4.1-next.5+4ab4b17e26",
158
+ "@sanity/mutator": "6.4.1-next.5+4ab4b17e26",
159
+ "@sanity/types": "6.4.1-next.5+4ab4b17e26",
160
+ "@sanity/util": "6.4.1-next.5+4ab4b17e26",
161
+ "@sanity/schema": "6.4.1-next.5+4ab4b17e26"
162
162
  },
163
163
  "devDependencies": {
164
164
  "@rolldown/plugin-babel": "^0.2.3",
@@ -200,10 +200,10 @@
200
200
  "vitest": "^4.1.9",
201
201
  "vitest-browser-react": "^2.2.0",
202
202
  "vitest-package-exports": "^1.2.0",
203
- "@repo/package.bundle": "6.4.1-next.4+d51f56c2ba",
204
- "@repo/test-config": "6.4.1-next.4+d51f56c2ba",
205
- "@repo/package.config": "6.4.1-next.4+d51f56c2ba",
206
- "@repo/tsconfig": "6.4.1-next.4+d51f56c2ba"
203
+ "@repo/package.bundle": "6.4.1-next.5+4ab4b17e26",
204
+ "@repo/package.config": "6.4.1-next.5+4ab4b17e26",
205
+ "@repo/test-config": "6.4.1-next.5+4ab4b17e26",
206
+ "@repo/tsconfig": "6.4.1-next.5+4ab4b17e26"
207
207
  },
208
208
  "peerDependencies": {
209
209
  "react": "^19.2.2",