import { RawValueSignature, SpecifyZIndexValue, TokenState, } from '@specifyapp/specify-design-token-format'; import { DEFAULT_UNRESOLVABLE_STRATEGY } from '../aliasStrategies/throwOnUnresolvable.js'; import { CssResolvableAliasStrategy, CssUnresolvableAliasStrategy, } from '../aliasStrategies/CssAliasStrategy.js'; /** * Converts a `TokenState<'zIndex'>` to a css value. * E.g: `10` */ export function zIndexToCss( aliasStrategy: CssResolvableAliasStrategy, unresolvableAliasStrategy: CssUnresolvableAliasStrategy = DEFAULT_UNRESOLVABLE_STRATEGY, ) { return (tokenState: TokenState<'zIndex'>) => tokenState .getStatefulValueResult() .mapResolvableTopLevelAlias(aliasStrategy) .mapUnresolvableTopLevelAlias(alias => unresolvableAliasStrategy(tokenState, alias)) .mapTopLevelValue(value => value .mapRawValue(rawValue => rawZIndexToCss(rawValue)) .mapResolvableModeLevelAlias(aliasStrategy) .mapUnresolvableModeLevelAlias(alias => unresolvableAliasStrategy(tokenState, alias)) .unwrap(), ) .unwrap(); } /** * Converts a `RawValueSignature<'zIndex'>` to css. */ export function rawZIndexToCss(zIndex: RawValueSignature<'zIndex'>) { return zIndex.toString(); } /** * Converts a zIndex to css. */ export function zIndexValueToCss(zIndex: SpecifyZIndexValue) { return zIndex.toString(); }