@sanity/ui
Version:
The Sanity UI components.
68 lines (57 loc) • 1.4 kB
text/typescript
import {isColorButtonMode} from '../../system'
import {
isColorConfigBaseKey,
isColorConfigBaseTone,
isColorConfigBlendKey,
isColorConfigStateKey,
isColorConfigStateTone,
} from '../helpers'
import {TokenKeyNode} from './types'
/** @internal */
export function parseTokenKey(str: string): TokenKeyNode | undefined {
const segments = str.split('/')
const segment0 = segments.shift() || ''
if (isColorConfigBaseTone(segment0)) {
const key = segments.join('/')
if (isColorConfigBaseKey(key)) {
return {
type: 'base',
tone: segment0,
key,
}
}
if (isColorConfigBlendKey(key)) {
return {
type: 'base',
tone: segment0,
key,
}
}
}
if (segment0 === 'button') {
const segment1 = segments.shift() || ''
if (isColorConfigStateTone(segment1)) {
const segment2 = segments.shift() || ''
if (isColorButtonMode(segment2)) {
const key = segments.join('/')
if (isColorConfigStateKey(key)) {
return {
type: 'button',
tone: segment1,
mode: segment2,
key,
}
}
if (isColorConfigBlendKey(key)) {
return {
type: 'button',
tone: segment1,
mode: segment2,
key,
}
}
}
}
}
return undefined
}