diff --git a/packages/uniwind/src/metro/processor/color.ts b/packages/uniwind/src/metro/processor/color.ts index b459028b..859f5906 100644 --- a/packages/uniwind/src/metro/processor/color.ts +++ b/packages/uniwind/src/metro/processor/color.ts @@ -1,6 +1,7 @@ import { Color as ColorType, converter, formatHex, formatHex8, parse } from 'culori' -import { CssColor } from 'lightningcss' +import { CssColor, UnresolvedColor } from 'lightningcss' import { Logger } from '../logger' +import { pipe } from '../utils' import type { ProcessorBuilder } from './processor' export class Color { @@ -12,7 +13,7 @@ export class Color { constructor(private readonly Processor: ProcessorBuilder) {} - processColor(color: CssColor) { + processColor(color: CssColor | UnresolvedColor) { if (typeof color === 'string') { const parsed = parse(color) @@ -31,11 +32,19 @@ export class Color { } if (color.type === 'rgb' || color.type === 'srgb') { + const alpha = typeof color.alpha === 'number' + ? color.alpha + : pipe(color.alpha)( + x => this.Processor.CSS.processValue(x), + Number, + x => isNaN(x) ? 1 : x, + ) + return this.format({ r: color.r / 255, g: color.g / 255, b: color.b / 255, - alpha: color.alpha, + alpha, mode: 'rgb', }) } diff --git a/packages/uniwind/src/metro/processor/css.ts b/packages/uniwind/src/metro/processor/css.ts index 2fb86fc0..a6137302 100644 --- a/packages/uniwind/src/metro/processor/css.ts +++ b/packages/uniwind/src/metro/processor/css.ts @@ -264,6 +264,8 @@ export class CSS { return ')' case 'light-dark': return `rt.lightDark( ${this.processValue(declarationValue.light)}, ${this.processValue(declarationValue.dark)} )` + case 'unresolved-color': + return this.getProcessedValue(declarationValue.value) case 'track-list': case 'sticky': case 'fit-content': diff --git a/packages/uniwind/src/metro/types.ts b/packages/uniwind/src/metro/types.ts index 02b45e1d..4f5a12a8 100644 --- a/packages/uniwind/src/metro/types.ts +++ b/packages/uniwind/src/metro/types.ts @@ -9,6 +9,7 @@ import type { ParsedComponent, Token, TokenOrValue, + UnresolvedColor, } from 'lightningcss' import { ColorScheme, Orientation } from '../types' @@ -62,6 +63,7 @@ export type DeclarationValues = | LineDirection | GradientItemFor_DimensionPercentageFor_LengthValue | AbsoluteFontWeight + | UnresolvedColor export type ProcessMetaValues = { className?: string | null