chore: version packages - #267
Merged
Merged
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 21, 2026 13:09
945a130 to
ebf92b6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@tenphi/tasty@3.1.0
Minor Changes
#266
b90760cThanks @tenphi! - Treat modern CSS color functions as colors so they reach the color slot of every style property.light-dark()andcontrast-color()are now recognized alongsidecolor-mix(),color-contrast(),color()and the channel functions, and the tokens inside them are expanded.fill,color,border,outline,shadowandsvgFillplace the whole call in their color slot instead of dropping it or emitting the unresolved DSL.light-dark()is filed by content:light-dark(#dark, #light)is a color,light-dark(1x, 2x)stays a value, sopadding: 'light-dark(1x, 2x)'still works.shadowsplits layers through the parser instead ofsplit(','), so a color function's own commas no longer tear a layer apart.color-mix(in oklab, <color> 50%, transparent)— instead of appending a slash alpha the function has no channel for.--name-color-{space}companion expressed by reference with relative color syntax, so#token.alphakeeps working. Such a companion is registered as@property … syntax: "*"; numeric companions keep<number>+. The SSR collector no longer emits a second, conflicting companion rule for it.parseColor()no longer reports the name of avar()reference found inside a color function as the color's own name —color-mix(in oklab, #purple 50%, #red)is not namedpurple.tokensprop keeps the whole fallback chain in the components companion:(#primary, #fallback)now yieldsvar(--primary-color-{space}, var(--fallback-color-{space}))instead of only the last fallback.#268
9c4b929Thanks @tenphi! - Apply the color-token opacity suffix with CSS relative color syntax instead of the channel components.#purple.5now emitsoklch(from var(--purple-color) l c h / .5)where it previously emittedoklch(var(--purple-color-oklch) / .5). The channels are copied over and the alpha slot is written, which asks nothing of the color beyond being a color — so the suffix no longer needs the token decomposed into channels first.That makes it work where it used to break:
color-mix(), alight-dark(), or acolor()in a space Tasty cannot convert — none of which have channels to decompose--name-colorvariable declared in your own CSS, with no Tasty token definition and no companion variable behind it, which previously fell back to the@propertyinitial value and silently rendered blackWriting the alpha slot keeps two properties that compositing with
color-mix()againsttransparentwould have broken: alpha is replaced rather than multiplied (a token holdingrgb(255 0 0 / .8)faded to.5is.5, not.4), and the alpha may be a<number>or a<percentage>, so#purple.$fadeworks whether$fadeholds.5or50%— which is what--*-opacityproperties are registered to accept. The authored digits also survive verbatim, so#purple.07stays.07.#current.Nis unchanged and still composes:currentcoloris the color an element inherits, which an ancestor may already have faded, so#current.4means "40% of what reaches me" and a nested#current.18under it lands at.072. Color ramps built on#currentdepend on that. Its percentage is now derived by shifting the decimal point rather than multiplying, so#current.07emits7%instead of7.000000000000001%.The space is always
oklch, whatevercolorSpaceis set to: it is unbounded, so a wide-gamut color survives a round trip that a gamut-limited space would clamp.What changes for consumers:
#token.alphavalue. The colour and its computed serialization are unchanged —oklch(…), as before — so snapshots over computed styles are largely unaffected; snapshots over emitted CSS text need updating.#current.alphais untouched.parseColor().colorreturns the faded form;.nameand.opacityare unchanged, both read through it.--name-color-{space}companions are untouched: they are still generated, still registered as@property, and still what you reach for to address a token's channels. An opacity suffix does not move them —color="#purple.5"still reports#purple's own channels in--current-color-{space}.A replace token is substituted while parsing, so its colour is faded in place:
#brand: 'hsl(220 90% 50%)'with#brand.5still giveshsl(220 90% 50% / .5).Also fixes
color(name, 0.07)emitting7.000000000000001%.