refactor(ui): migrate renderer atoms to Astryx - #1670
Merged
Astro-Han merged 8 commits intoJul 31, 2026
Conversation
Astro-Han
force-pushed
the
refactor/1565-astryx-button
branch
from
July 30, 2026 18:46
4c945be to
0c47204
Compare
Astro-Han
force-pushed
the
refactor/1565-astryx-button
branch
from
July 30, 2026 18:57
0c47204 to
64e8a1c
Compare
Retires the legacy cva Button from packages/ui and migrates every direct call site to the Astryx Button (label/isDisabled/isIconOnly/tooltip). Base UI render-prop seams (Tooltip/Menu/Toast/Dialog triggers) stay on the legacy buttonVariants classes until their owning slices retire them. Refs #1565
Slice PR 3 of #1565: Divider is Astryx's taxonomy name for the primitive. The Separator wrapper had zero product consumers, so the barrel entry moves with it; the form-controls story and the curated-primitives contract now exercise Divider (orientation, label).
Slice PR 3 of #1565: the thin data-slot Card retires; the barrel slot now re-exports Astryx Card, which owns the card face (background, border, radius, elevation). SettingsRows keeps only its row grid / container query in rows.css (padding={0}, rows carry their own insets); the crash surface expresses its destructive face through Card's own vocabulary (variant="red", elevation="high") and error.css keeps only the icon/copy grid. Visual diff is confined to the declared settings-rows subtree — all five routes clean under the scoped contract.
Slice PR 3 of #1565: the cva pill recipe retires; the barrel slot re-exports Astryx Badge (label prop). Call sites map destructive→error and secondary→neutral (statusBadgeVariant now returns Astryx names); the health-page wrapping override targets the stable .astryx-badge component class (runtime-hook allowlisted); badgeVariants retires with the recipe (no consumers). Converge/radius/chip contracts re-pin the Astryx authority.
Astro-Han
force-pushed
the
refactor/1565-astryx-button
branch
from
July 30, 2026 19:03
64e8a1c to
b1c3694
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.
Summary
Activate the prepared Maka theme with the first Astryx atom consumers and retire the replaced atom paths in one atomic cut:
IconButtonprimitive instead of a boolean mode.makaThemein the live app and Storybook only here, where consumers exist. The theme-induced Markdown typography change and atom changes are declared through the existing slice contract.buttonVariantsonly at Base UI render-prop seams whose owning later slices must remove it; no compatibility component, feature flag, or parallel Button authority is introduced.isIconOnly.This is one forced API cut. Splitting it would leave old and new Button authorities alive together or make an intermediate branch fail to compile, so the indivisible mechanical migration is the smaller design in state and rollback surface.
Refs #1565
Verification
npm --workspace @maka/ui run test— 282 tests, 0 failures.npm --workspace @maka/desktop run test— 2967 tests, 0 failures.npm run typecheck/npm run lint/npm run format:check— clean.npx knip --workspace apps/desktop/npx knip --workspace packages/ui— clean; only the two existing desktop configuration hints remain.npm run check:visual-contract -- --against refactor/1565-astryx-atoms --scopes scripts/visual-contract-scopes/pr3-atoms.json— 20/20 comparisons clean; every change is attributed to a hook-owned migrated subtree.npm run check:hit-test— all 5 routes clean.node scripts/audit-alignment.mjs— all 12 fixtures clean.Review focus
aria-disabled; ordinary disabled controls retain nativedisabled.buttonVariantsis not a second component authority: it remains only as classes on native controls owned by later floating/dialog/toast slices.