Version Packages - #1349
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
🏋️ Size limit report
Compared against main at 8fdee38 — run 32753929263, 2026-08-24T16:58:31Z.To see which modules changed, download the size-limit-statoscope-report artifact from this run and open report.html. |
Contributor
🧪 Storybook is successfully deployed!
|
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 24, 2026 18:12
eed6fe8 to
b93e357
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 25, 2026 09:13
b93e357 to
da9a4f6
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 25, 2026 09:18
da9a4f6 to
6c83648
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
@cube-dev/ui-kit@0.167.0
Minor Changes
#1350
ee97f365Thanks @tenphi! -Board: corner-anchored widget chrome, app-defined widget modifiers, a reason ononLayoutChange, and a realdragCanceldefault.dragCancelnow defaults toBOARD_SELECTION_CANCELinstead of no cancel at all. A control inside a widget has to keep its own press whether or not the board happens to support selection — previously that only worked on a selectable board, whereselectionCancelincidentally doubled as the drag guard, so every other board had to hand-write a selector or a pointer-down on a child's button would drag the widget instead. Pass your own selector to narrow or widen it, or''for the old behaviour.cornerChrome(withcornerChromePlacement, default'ne') puts a control on a widget's corner, centred on it. It renders in the same layer as the corner resize grips, which is the layer that escapes the widget's ownoverflow: hidden— chrome hung off the corner from inside a widget is cropped in half by that clip, or by an ancestor's scroll container when the widget sits in the first row. Being outside the widget host, it is also outside the drag gesture, so pressing it can never start a drag and it needs nodragCancelentry.modsonBoard.Widget(and board-wide viawidgetProps) merges app-defined modifiers into the ones the board sets, so astylesmap can match on app state (mods={{ editing: true }}withstyles={{ shadow: { editing: '…' } }}) instead of the app swapping whole style objects per state. Board's own modifiers are applied last, so a custom one can never shadowselected,dragand the rest, which the board's styling and its accessibility wiring both depend on.onLayoutChangenow reports why the layout changed —'drag','resize','transfer', or'normalize'for the commits no gesture caused (a reflow for a changed column count, anisAutoHeightwidget growing). An app that persisted every commit had no way to tell a user's edit from the board fitting itself to a constraint that moved, so it wrote the reflow back as an edit and marked a document dirty nobody touched. The argument is additive: existing one-parameter handlers keep working.The docs also now explain that widget style maps are merged: a map with no
''entry extends the defaults, while one that sets''replaces them and needs'@inherit'to keep any. Reaching for'': falseto switch a single state off is the easy mistake — it silently takesselected,pre-selectedand the drag lift with it.#1351
2caf1072Thanks @tenphi! - New:resolveTokenValue(),resolveTokenValues()andresolvePresetValues(), plus theuseTokenValue()/useTokenValues()/usePresetValues()hooks — a supported way to ask the kit for a design token's resolved value, for consumers rendering into a surface our stylesheets do not reach: a third-party iframe (Stripe Elements), a CodeMirror or Monaco theme, a chart spec. Those take colors, lengths and font descriptors as values, andvar(--purple-color)means nothing to them.Reading tokens off
getComputedStyle()by hand fails silently.Rootdeclares the token block on<body>, so<html>, a detached node, and a tree that has not mountedRootyet are all outside it — and a token read from outside does not come back empty, it comes back as tasty's registered@propertydefault. Some of those are obvious duds (rgba(0, 0, 0, 0),0px), but many are ordinary-looking values that are merely wrong:--gapreads4pxrather than the kit's8px,--transitionreads80ms,--radiusreads6px. So the helpers do not inspect the value. They read$tokens-applied, a new marker the token block declares alongside the tokens, and use it to answer the only question that settles the matter — are the kit's tokens in effect on this element? Off that surface every read returnsnull(or an explicitfallback) and warns once in development; on it, the computed value is the truth, so a token that genuinely istransparentor0px—#clear,#scrollbar-outline,$h2-letter-spacing— comes through intact. The hooks re-resolve when the palette is re-seeded or the scheme / contrast tier flips, and match the server's markup while hydrating.All six take
{ element, fallback }— passelementto resolve against a local override (a subtree with its owntokensprop, or one under a differingdata-schema) instead of the document.#1345
8fdee382Thanks @tenphi! - Update Tasty to 3.3.1 (from 3.1.0). Three things come with it.Color tokens no longer emit companion channel variables, and
colorSpaceis deprecated. A#nametoken used to declare--name-colorplus a decomposed companion —--name-color-rgbhere, since the kit configuredcolorSpace: 'rgb'— and only the companion is gone:--name-coloris emitted exactly as authored. Opacity has used CSS relative color syntax since 3.1.0, so nothing inside Tasty needed the channels any more. If your own CSS reads a companion —rgb(var(--primary-color-rgb) / .2)and the like — it silently stops resolving. Rewrite it against the token itself:oklch(from var(--primary-color) l c h / .2), which works on any color, including the ones no build-time conversion could evaluate.configure({ colorSpace })now warns in development and does nothing; the kit no longer sets it. One more consequence worth planning for: a token is emitted in the space it was authored in, sogetComputedStyle(el).backgroundColornow returnsoklch(…)/oklab(…)where it used to returnrgb(…). The color is the same, but any test or code that parses those strings by hand has to stop assuming sRGB syntax.The inherited color is now readable as a color, through
$current-color.#currentkeeps emitting thecurrentcolorkeyword, so it still resolves against the element that reads it — which is what lets a ramp express its disabled state once, incolor, and have everything painted from#currentbelow it fade along. Beside that, everycolorstyle now publishes--current-color, registered withinitial-value: currentcolor, for the cases the keyword cannot serve: hand-authored CSS, or anywhere the inherited color is needed as a color. Read it as$current-color. A value that already reads the color it inherits —#current, a#currentfade — is deliberately not published into it, since resolving it again one level down would fade it twice.Opt-in batched style injection (from 3.2.0):
configure({ batchInjection: true })plus a<TastyBatchProvider>queue a commit's stylesheet writes into one FIFO and apply them together, so the document is style-invalidated once per flush instead of once per component — which matters in a tree that measures layout during render (popovers, autosizing inputs, virtualized lists). The provider flushes inuseInsertionEffect, before any layout effect, so a queued write can never be observed by a measurement.flushStyles(),hasPendingStyleWrites()andresetStyleBatch()come with it, and all of it is re-exported from@cube-dev/ui-kit. Batching stays off unless an app turns it on.Patch Changes
#1345
8fdee382Thanks @tenphi! -no-redundant-default-propnow knows three defaults it used to miss:ItemTable'ssizeandsummary, andPagination'ssummary. The registry it checks against is parsed line by line out of*.docs.mdx, so a documented default whose(default: …)annotation had been hard-wrapped onto the next line was invisible to the parser. Unwrapping the documentation surfaced them, and the generator proved each value against the component it belongs to.#1352
40261f63Thanks @tenphi! -useContextMenuanduseAnchoredMenunow re-readdefaultMenuPropson every render instead of snapshotting them when the menu opens. A menu whose content lives in those defaults — the row context menu inTreeand the tab context menu inTabsboth do — stayed frozen while open, so items appearing, disappearing or flippingisDisabledwere invisible until it was closed and reopened. Runtime props passed toopen()/update()still take precedence and are unaffected.Note
Low Risk
This PR only updates version, changelog, and changeset metadata; functional risk is whatever was already merged and will be published on merge.
Overview
Automated Changesets release that bumps
@cube-dev/ui-kitfrom 0.166.0 to 0.167.0, folds consumed changeset files into CHANGELOG.md, and removes those.changeset/*.mdentries. No library source changes in this diff—merge publishes what’s already on main.0.167.0 (documented in the changelog) ships Board improvements (
dragCanceldefault,cornerChrome, widgetmods,onLayoutChangereason), token resolution APIs/hooks (resolveTokenValue/useTokenValueand related), Tasty 3.3.1 (color token/CSS behavior,$current-color, optional batched style injection), plus patches for eslint default-prop coverage and livedefaultMenuPropsin context/anchored menus.Reviewed by Cursor Bugbot for commit 6c83648. Bugbot is set up for automated code reviews on this repo. Configure here.