sanity 6.3.0 → 6.3.1-next.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/_chunks-dts/ActiveWorkspaceMatcherContext.d.ts +116 -18
- package/lib/_chunks-dts/index.d.ts +8 -2
- package/lib/_chunks-es/MenuGroup.js +2 -2
- package/lib/_chunks-es/MenuGroup.js.map +1 -1
- package/lib/_chunks-es/PostMessagePreviewSnapshots.js.map +1 -1
- package/lib/_chunks-es/PostMessageSchema.js +1 -0
- package/lib/_chunks-es/PostMessageSchema.js.map +1 -1
- package/lib/_chunks-es/PresentationToolGrantsCheck.js +2 -0
- package/lib/_chunks-es/PresentationToolGrantsCheck.js.map +1 -1
- package/lib/_chunks-es/ReleasesTool.js +4 -4
- package/lib/_chunks-es/ReleasesTool.js.map +1 -1
- package/lib/_chunks-es/StructureToolProvider.js.map +1 -1
- package/lib/_chunks-es/Table.js.map +1 -1
- package/lib/_chunks-es/Tool.js +1 -1
- package/lib/_chunks-es/Tool.js.map +1 -1
- package/lib/_chunks-es/VariantsTool.js +182 -101
- package/lib/_chunks-es/VariantsTool.js.map +1 -1
- package/lib/_chunks-es/index.js +1 -1
- package/lib/_chunks-es/index.js.map +1 -1
- package/lib/_chunks-es/index2.js +1171 -931
- package/lib/_chunks-es/index2.js.map +1 -1
- package/lib/_chunks-es/index9.js +4 -1
- package/lib/_chunks-es/index9.js.map +1 -1
- package/lib/_chunks-es/presentation.js.map +1 -1
- package/lib/_chunks-es/resources.js +12 -0
- package/lib/_chunks-es/resources.js.map +1 -1
- package/lib/_chunks-es/resources8.js +4 -0
- package/lib/_chunks-es/resources8.js.map +1 -1
- package/lib/_chunks-es/structureTool.js +559 -347
- package/lib/_chunks-es/structureTool.js.map +1 -1
- package/lib/_chunks-es/version.js +2 -2
- package/lib/_singletons.d.ts +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +10 -1
- package/lib/router.js.map +1 -1
- package/package.json +12 -12
|
@@ -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/VariantDetailMenuButton.tsx","../../src/core/variants/tool/detail/VariantDetailFooter.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, TrashIcon} from '@sanity/icons'\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 setVariant(\n (currentVariant) =>\n applyPatches([at(path, set(nextValue))], currentVariant) as EditableSystemVariant,\n )\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 {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'\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'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {type CSSProperties, memo, useMemo, useState} from 'react'\n\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {useSchema} from '../../../hooks'\nimport {type UseTranslationResponse, useTranslation} from '../../../i18n'\nimport {SanityDefaultPreview} from '../../../preview/components/SanityDefaultPreview'\nimport {Table} from '../../../releases/tool/components/Table/Table'\nimport {Headers} from '../../../releases/tool/components/Table/TableHeader'\nimport {type Column} from '../../../releases/tool/components/Table/types'\nimport {variantsLocaleNamespace} from '../../i18n'\n\ninterface VariantDocumentRow {\n document: SanityDocument\n}\n\nconst TABLE_CARD_STYLE: CSSProperties = {\n height: '100%',\n overflow: 'auto',\n}\n\nfunction getDocumentPreviewTitle(document: SanityDocument): string {\n const title = document.title || document.name\n\n return typeof title === 'string' && title.trim() ? title : document._id\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\nfunction getVariantDocumentColumnDefs(\n t: UseTranslationResponse<'variants', undefined>['t'],\n): Column<VariantDocumentRow>[] {\n return [\n {\n id: 'version',\n width: null,\n style: {minWidth: 100},\n sorting: false,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('detail.documents.table.version')} />\n </Flex>\n ),\n cell: ({cellProps}) => (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2}>\n <Text muted size={1}>\n -\n </Text>\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 <SanityDefaultPreview\n title={getDocumentPreviewTitle(datum.document)}\n subtitle={datum.document._id}\n />\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}\n\nfunction filterDocuments(rows: VariantDocumentRow[], searchTerm: string): VariantDocumentRow[] {\n const normalizedSearchTerm = searchTerm.trim().toLowerCase()\n\n if (!normalizedSearchTerm) {\n return rows\n }\n\n return rows.filter(({document}) =>\n [getDocumentPreviewTitle(document), document._id, document._type].some((value) =>\n value.toLowerCase().includes(normalizedSearchTerm),\n ),\n )\n}\n\nexport function VariantDocumentsTable({\n documents,\n}: {\n documents: SanityDocument[]\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const columnDefs = useMemo(() => getVariantDocumentColumnDefs(t), [t])\n const rows = useMemo(() => documents.map((document) => ({document})), [documents])\n\n return (\n <Card flex={1} ref={setScrollContainerRef} style={TABLE_CARD_STYLE}>\n <Table<VariantDocumentRow>\n columnDefs={columnDefs}\n data={rows}\n defaultSort={{column: 'search', direction: 'asc'}}\n emptyState={t('detail.documents.no-documents')}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"document._id\"\n scrollContainerRef={scrollContainerRef}\n searchFilter={filterDocuments}\n />\n </Card>\n )\n}\n","import {type SanityDocument} from '@sanity/client'\nimport {Box, Card, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {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 {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {\n decodeVariantIdFromRoute,\n getVariantConditionsText,\n getVariantDescription,\n getVariantTitle,\n} from '../util'\nimport {VariantDetailFooter} from './VariantDetailFooter'\nimport {VariantDocumentsTable} from './VariantDocumentsTable'\n\nconst EMPTY_VARIANT_DOCUMENTS: SanityDocument[] = []\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\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 <VariantDocumentsTable documents={EMPTY_VARIANT_DOCUMENTS} />\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, SearchIcon} from '@sanity/icons'\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","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","VariantDetailMenuButton","router","useRouter","isDeleting","setIsDeleting","navigate","handleDelete","placement","portal","VariantDetailFooter","opacity","_createdAt","TABLE_CARD_STYLE","height","overflow","getDocumentPreviewTitle","document","name","MemoDocumentType","memo","type","schema","useSchema","prev","next","getVariantDocumentColumnDefs","width","minWidth","sorting","headerProps","cell","cellProps","datum","isLoading","maxWidth","sortTransform","_updatedAt","filterDocuments","searchTerm","normalizedSearchTerm","VariantDocumentsTable","documents","scrollContainerRef","setScrollContainerRef","columnDefs","_temp","column","direction","EMPTY_VARIANT_DOCUMENTS","VariantDetail","editDialogOpen","setEditDialogOpen","variantIdRaw","state","decodeVariantIdFromRoute","byId","loading","getVariantDescription","conditionsText","getVariantConditionsText","T0","Flex","T1","minHeight","T2","Container","T3","T4","Card","T5","T6","Stack","T7","Text","getVariantTitle","t41","t42","t43","t44","t45","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","forwardRef","linkProps","ref","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/hooks/useVariantDocuments.ts","../../src/core/variants/tool/detail/VariantDetailMenuButton.tsx","../../src/core/variants/tool/detail/VariantDetailFooter.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, TrashIcon} from '@sanity/icons'\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 {useMemo} from 'react'\n\nimport {\n type DocumentInRelease,\n useBundleDocuments,\n} from '../../releases/tool/detail/useBundleDocuments'\n\n/**\n * Hook to fetch the documents that belong to a variant.\n *\n * Reuses the generic {@link useBundleDocuments} machinery. Currently filters by\n * `_system.variant._ref` until `sanity::partOfVariant($variantId)` is supported\n * in content lake.\n *\n * @internal\n */\nexport function useVariantDocuments(variantId: string): {\n loading: boolean\n results: DocumentInRelease[]\n error: null | Error\n} {\n const params = useMemo(() => ({variantId}), [variantId])\n\n return useBundleDocuments({\n // TODO: Switch to `sanity::partOfVariant` when content lake supports it.\n // groqFilter: `sanity::partOfVariant($variantId)`,\n groqFilter: `_system.variant._ref == $variantId`,\n params,\n cacheKey: `variant-${variantId}`,\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'\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 ReleaseDocument, type SanityDocument} from '@sanity/client'\nimport {type DocumentSystem} from '@sanity/types'\nimport {Badge, type BadgeTone, Box, Card, Flex, Text} from '@sanity/ui'\nimport {type CSSProperties, memo, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\n\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {useSchema} from '../../../hooks'\nimport {type UseTranslationResponse, useTranslation} from '../../../i18n'\nimport {SanityDefaultPreview} from '../../../preview/components/SanityDefaultPreview'\nimport {useReleasesStore} from '../../../releases/store/useReleasesStore'\nimport {Table} from '../../../releases/tool/components/Table/Table'\nimport {Headers} from '../../../releases/tool/components/Table/TableHeader'\nimport {type Column} from '../../../releases/tool/components/Table/types'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {getReleaseTitleDetails} from '../../../releases/util/getReleaseTitleDetails'\nimport {getReleaseTone} from '../../../releases/util/getReleaseTone'\nimport {variantsLocaleNamespace} from '../../i18n'\n\ninterface VariantDocumentVersion {\n label: string\n tone: BadgeTone\n}\n\ninterface VariantDocumentRow {\n document: SanityDocument\n version: VariantDocumentVersion\n}\n\n/**\n * Derives the bundle a variant document belongs to from its `_system` metadata and returns the\n * label and tone for its version chip. Variant documents are scoped to both a variant and a bundle\n * (a release, the published bundle, or drafts).\n */\nfunction getVariantDocumentVersion({\n document,\n releasesById,\n t,\n}: {\n document: SanityDocument\n releasesById: Map<string, ReleaseDocument> | undefined\n t: UseTranslationResponse<'variants', undefined>['t']\n}): VariantDocumentVersion {\n const system = document._system as DocumentSystem | undefined\n const releaseRef = system?.release?._ref\n\n if (releaseRef) {\n const release = releasesById?.get(releaseRef)\n\n if (release) {\n const {displayTitle} = getReleaseTitleDetails(\n release.metadata?.title,\n getReleaseIdFromReleaseDocumentId(release._id),\n )\n\n return {label: displayTitle, tone: getReleaseTone(release)}\n }\n\n return {label: getReleaseIdFromReleaseDocumentId(releaseRef), tone: 'default'}\n }\n\n if (system?.bundleId === 'drafts') {\n return {label: t('detail.documents.table.version.drafts'), tone: getReleaseTone('drafts')}\n }\n\n return {label: t('detail.documents.table.version.published'), tone: getReleaseTone('published')}\n}\n\nconst TABLE_CARD_STYLE: CSSProperties = {\n height: '100%',\n overflow: 'auto',\n}\n\nfunction getDocumentPreviewTitle(document: SanityDocument): string {\n const title = document.title || document.name\n\n return typeof title === 'string' && title.trim() ? title : document._id\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\nfunction getVariantDocumentVersionSortRank(document: SanityDocument): number {\n const system = document._system as DocumentSystem | undefined\n\n if (system?.release?._ref) {\n return 2\n }\n\n if (system?.bundleId === 'drafts') {\n return 1\n }\n\n return 0\n}\n\nfunction getVariantDocumentGroupSortKey({document, version}: VariantDocumentRow): string {\n const groupRef = (document._system as DocumentSystem | undefined)?.group._ref ?? document._id\n const versionRank = getVariantDocumentVersionSortRank(document)\n\n // Group by document family, then order versions Published → Drafts → Releases.\n return `${groupRef}\\0${versionRank}\\0${version.label}\\0${document._id}`\n}\n\nfunction getVariantDocumentColumnDefs(\n t: UseTranslationResponse<'variants', undefined>['t'],\n): Column<VariantDocumentRow>[] {\n return [\n {\n id: 'documentGroup',\n hidden: true,\n width: null,\n sorting: true,\n sortTransform: getVariantDocumentGroupSortKey,\n },\n {\n id: 'version',\n width: null,\n style: {minWidth: 100},\n sorting: false,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('detail.documents.table.version')} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2}>\n {!datum.isLoading && datum.version && (\n <Badge fontSize={1} mode=\"outline\" radius={2} tone={datum.version.tone}>\n {datum.version.label}\n </Badge>\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 <SanityDefaultPreview\n title={getDocumentPreviewTitle(datum.document)}\n subtitle={datum.document._id}\n />\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}\n\nfunction filterDocuments(rows: VariantDocumentRow[], searchTerm: string): VariantDocumentRow[] {\n const normalizedSearchTerm = searchTerm.trim().toLowerCase()\n\n if (!normalizedSearchTerm) {\n return rows\n }\n\n return rows.filter(({document}) =>\n [getDocumentPreviewTitle(document), document._id, document._type].some((value) =>\n value.toLowerCase().includes(normalizedSearchTerm),\n ),\n )\n}\n\nexport function VariantDocumentsTable({\n documents,\n loading = false,\n}: {\n documents: SanityDocument[]\n loading?: boolean\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const {state$} = useReleasesStore()\n const releasesState = useObservable(state$)\n const releasesById = releasesState?.releases\n const columnDefs = useMemo(() => getVariantDocumentColumnDefs(t), [t])\n const rows = useMemo(\n () =>\n documents.map((document) => ({\n document,\n version: getVariantDocumentVersion({document, releasesById, t}),\n })),\n [documents, releasesById, t],\n )\n\n return (\n <Card flex={1} ref={setScrollContainerRef} style={TABLE_CARD_STYLE}>\n <Table<VariantDocumentRow>\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=\"document._id\"\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 getVariantTitle,\n} from '../util'\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\n const {results: variantDocuments, loading: documentsLoading} = useVariantDocuments(\n variantId ?? '',\n )\n const documents = useMemo(\n () => variantDocuments.map((result) => result.document),\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 <VariantDocumentsTable documents={documents} loading={documentsLoading} />\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, SearchIcon} from '@sanity/icons'\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","useVariantDocuments","params","groqFilter","cacheKey","useBundleDocuments","VariantDetailMenuButton","router","useRouter","isDeleting","setIsDeleting","navigate","handleDelete","placement","portal","VariantDetailFooter","opacity","_createdAt","getVariantDocumentVersion","document","releasesById","system","_system","releaseRef","release","_ref","displayTitle","getReleaseTitleDetails","getReleaseIdFromReleaseDocumentId","label","tone","getReleaseTone","bundleId","TABLE_CARD_STYLE","height","overflow","getDocumentPreviewTitle","name","MemoDocumentType","memo","type","schema","useSchema","prev","next","getVariantDocumentVersionSortRank","getVariantDocumentGroupSortKey","version","groupRef","group","versionRank","getVariantDocumentColumnDefs","hidden","width","sorting","sortTransform","minWidth","headerProps","cell","cellProps","datum","isLoading","maxWidth","_updatedAt","filterDocuments","searchTerm","normalizedSearchTerm","VariantDocumentsTable","documents","loading","scrollContainerRef","setScrollContainerRef","state$","useReleasesStore","useObservable","releases","columnDefs","column","direction","VariantDetail","editDialogOpen","setEditDialogOpen","variantIdRaw","state","decodeVariantIdFromRoute","byId","results","variantDocuments","documentsLoading","_temp","getVariantDescription","conditionsText","getVariantConditionsText","T0","Flex","T1","minHeight","T2","Container","T3","T4","Card","T5","T6","Stack","T7","Text","getVariantTitle","t41","t42","t43","t44","t45","t46","t47","result","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","forwardRef","linkProps","ref","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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"}
|