Changelog
All notable changes to the @antadesign/anta package are documented here.
This file only tracks what ships to npm consumers — anything under src/, dist/, the build / generator scripts, and root files in the published tarball. Updates to the documentation site at anta.design are not consumer-facing and are intentionally not in this changelog; see the commit history for the site narrative.
Versions ending in -dev.N are pre-release builds published under the npm dev dist-tag; main releases drop the suffix. Always pin a specific version in your package.json ("@antadesign/anta": "0.1.1-dev.1") rather than the floating "dev" tag — the floating tag tracks the latest dev build and will silently change between installs.
0.2.0 — June 9, 2026
Added
- New
Tagcomponent (<Tag>/<a-tag>). A compact uppercase pill for status, labels, and metadata. CSS-only (no JS, no shadow DOM) like<Title>— tone, size, and case are plain attributes. Content is composed fromicon/iconTrailing(icon shapes),label, andvalueprops, the same way<Button>works;valueis the primary text (default color/weight) andlabel, when paired with a value, renders as a bold “key” before it (same color, weight 600, no divider — a lone label is treated as the primary text and keeps the default styling). Passing rawchildreninstead gives a segmented tag: each segment after the first gets a hairline divider (a leading icon stays flush).tonetakes the five named tones (brand/info/success/warning/critical), defaulting to a neutral gray when omitted, or any literal CSS color for a one-off custom tone (hue kept, lightness/chroma pinned to the named-tone curve viaoklch(from …), re-tuned for dark mode — same mechanism as<Button>). Named tones source--text-2-{tone}/--bg-4-{tone}, so light/dark track automatically.size="small" | "medium" | "large"(16 / 20 / 24px, defaultmedium, matchingButton);nocapsopts out of the default uppercase. Height is intrinsic (line-height + padding, no fixed height, so text is never clipped); tabular figures (tnum) plusss05alternate numerals are always on so counts / versions / timers don’t reflow. Exposes--tag-text,--tag-bg,--tag-border,--tag-separator,--tag-padding-block,--tag-padding-inline,--tag-gap,--tag-icon-size,--tag-label-weight(the border + separator derive from--tag-text). Registered via the@antadesign/anta/elementsbarrel. - New
tagicon shape (lucide), available as<Icon shape="tag" />/<a-icon shape="tag">and in theIconShapeunion (synonyms:label,badge,chip).
Breaking
- Stickers extracted to a separate package,
@antadesign/stickers. All sticker code and artwork moved out of@antadesign/anta— and with it, thelottie-webdependency. Removed from this package: theSticker/StickerAnimatedcomponents and their types, the<a-sticker>/<a-sticker-animated>elements, and the@antadesign/anta/stickers,@antadesign/anta/stickers/*, and@antadesign/anta/generate-stickers.mjssubpath exports. Apps that don’t use stickers no longer installlottie-webat all. Migration:npm install @antadesign/stickers(it depends on@antadesign/anta+lottie-web) and change imports —@antadesign/anta/stickers→@antadesign/stickers,@antadesign/anta/elements(for sticker tags) → add@antadesign/stickers/elements. The component API (size,label,paused) and the generator are unchanged.
Changed
<Text>’s defaultpriorityis nowsecondary(wasprimary). A plain<Text>(and<Text tone="…">) now renders one step softer —--text-2/--text-2-{tone}instead of--text-1/--text-1-{tone}— so default body text isn’t the strongest foreground.primaryis now the explicit opt-in for--text-1;tertiary–quinaryare unchanged. Migration: addpriority="primary"to any<Text>that relied on the old strongest default.- Selected buttons gain an inset ring.
selectednow addsbox-shadow: inset 0 0 0 1px currentColor— a 1px outline in the current foreground color (up from the prior 0.5px) — on top of the existing pressed/active look. Declared after the priority blocks so it survives theirbox-shadowcancels regardless of priority. - Secondary buttons gain a hairline edge. The default
secondarypriority now carriesbox-shadow: 0 0 1px color-mix(in oklch, currentColor, transparent 50%)— a 1px outline in the current foreground tone at 50% alpha — giving the tinted chip a subtle border.primary,tertiary, andquaternaryexplicitly cancel it (box-shadow: none). - Secondary button rest labels darkened slightly (light mode). The
secondaryrest foreground is now shifted down0.05in oklch lightness (oklch(from var(--button-fg-secondary-rest) calc(l - 0.05) c h)) so the label reads a touch stronger. Applied dynamically at the--button-fgwiring via the--button-fg-secondary-l-shiftknob, so it covers every tone — named and custom alike. Hover / active are unchanged, and dark mode zeroes the shift (--button-fg-secondary-l-shift: 0). - Quaternary button labels are slightly heavier.
priority="quaternary"setsfont-weight: 415(vs the450shared default) so the faded quaternary text holds up at its lower opacity. - Quaternary buttons now read quieter than tertiary. A
priority="quaternary"button’s rest foreground is the tone at 90% alpha (color-mix(in oklch, var(--button-fg-quaternary-rest) 90%, transparent)) — slightly faded — so it’s visually distinct from the full-opacity tertiary (previously the two looked identical at rest). Hover / active restore full opacity.
Fixed
- An empty
toneon a button no longer renders it invisible. Atone=""(e.g. when a consumer clears the prop) matched the custom-tone branch by attribute presence, where the empty value resolved totransparentand wiped the button’s foreground/background. Both the wrapper and the element now treat an emptytoneas “no tone” → the neutral default:<Button>collapsestone=""to omitting the attribute, and the element CSS excludes[tone=""]from the custom-tone selector (so a hand-authored<a-button tone="">renders neutral too). A missingtoneattribute was already correct.
0.1.1-dev.8 — June 5, 2026
Added
- New
Tooltipcomponent (<Tooltip>/<a-tooltip>). A small floating bubble placed as a child of the element it describes — it doesn’t affect that element’s layout and its content can be anything (slotted light DOM). Shows on hover (afterdelay, default 250ms) and keyboard focus (gated on:focus-visible, so a click/tap that merely focuses the anchor doesn’t surface it); dismisses on mouse leave, blur, Esc, or when the anchor scrolls away. On touch devices it opens on press-and-hold (~500ms) and lingers ~1.5s after the finger lifts so it stays readable — a quick tap never shows it. Follows the cursor by default; passstaticto pin it under the anchor, orinteractiveto make the bubble hoverable + clickable (pointer events on, stays open while the cursor is over it — for content like links; impliesstatic).placement="top" | "bottom"(defaultbottom) auto-flips when there’s no room. Renders in the top layer via the Popover API; one tooltip shows at a time, with a short close delay so moving between anchors cross-fades cleanly instead of blinking. Exposes--tooltip-bg,--tooltip-shadow,--tooltip-border,--tooltip-backdrop-filter,--tooltip-radius,--tooltip-max-width(shadow-only theming surface) — so a bubble can be made fully transparent and borderless, or given a real border. The bubble gives its slotted content a normalized text baseline (Anta body typography:--text-3,wdth 100,0.02chletter-spacing,1.5line-height) so the anchor’s text styling — e.g. a<Button>’s condensed width axis or letter-spacing — doesn’t bleed into it; customise a single tooltip’s text with a class on your content. - Granular element registration / smaller bundles. Each element can now be imported on its own —
import '@antadesign/anta/elements/a-tooltip'registers just that element and loads its CSS, pulling in only that element’s code. A tooltip- or button-only app no longer shipslottie-web(which onlya-sticker-animatedneeds). The convenience barrel is unchanged:import '@antadesign/anta/elements'still registers everything. Implementation: eacha-{name}module self-registers and imports its own CSS on load; the barrel re-exports them.
Dependencies
- Added
es-toolkit(1.47.0) as a runtime dependency. It’s imported with named, tree-shakeable imports, so consumer bundlers include only what’s used — currently justdebounce(in the<a-tooltip>element).
Fixed
- Anchor-buttons (
<Button href>/<a role="button">) no longer pick up link colour + underline from Anta’s global link reset.a:link/a:visitedare pseudo-classes with the same(0,1,1)specificity asa[role="button"], so they tied the button rule and won on source order. The reset’s link selectors now exclude[role="button"](a:not([role="button"])…), so anchor-buttons keep their button styling. Affectsreset.css. - Button & link
:hoverstyles no longer stick after a tap on touch devices. Hover-only appearance changes (button color/background per priority, the tertiary/quaternary underline, and the globala/a-text alink hover) are now gated behind@media (hover: hover) and (pointer: fine), so they apply only on real-pointer devices. On touch, buttons and links return to their rest state after a tap instead of keeping the hover look until the next tap elsewhere;:active/[selected]press feedback is unchanged. Affectsa-button.css,reset.css, anda-text.css.
0.1.1-dev.7 — June 3, 2026
Added
- New
Buttoncomponent (<Button>/<a-button>). Five named tones (neutraldefault /brand/info/success/warning/critical) plus any literal CSS color as a custom tone; four priorities (primary/secondary/tertiary/quaternary); three sizes (small/medium/large);icon/trailingIcon,label,loading,selected,disabled,paddingless; anchor mode viahref. Registered via the@antadesign/anta/elementsbarrel. - New
rotate-ccwicon shape (lucide), available as<Icon shape="rotate-ccw" />/<a-icon shape="rotate-ccw">and in theIconShapeunion.
Breaking
- Background tokens renamed to a numeric elevation scale. The named background custom properties are replaced by
--bg-1 … --bg-5(by elevation, 1 = deepest / recessed, 5 = most raised):--bg-section→--bg-1,--bg-base→--bg-2,--bg-pane→--bg-3,--bg-block→--bg-4,--bg-spot→--bg-5. Tinted variants follow the number:--bg-base-info→--bg-2-info,--bg-spot-info→--bg-5-info, etc.--bg-1is neutral-only (no tinted variant). Values are unchanged.--text-1…5and--border-1…5are unaffected. No back-compat aliases are shipped (prerelease). Migration: renamevar(--bg-base)→var(--bg-2)and so on; if you prefer named tokens, alias them in your own:root(e.g.--bg-base: var(--bg-2)). <Button>’siconButtonprop is removed andleadingIconis renamed toicon. Icon-only behavior is now purely structural: passiconwith nolabel,trailingIcon, orchildren, and the existing CSS rule (a-button:has(> a-icon:only-child)) gives the host the square padding + min-size pin. No opt-in attribute. Migration:<Button iconButton leadingIcon="check" />→<Button icon="check" />;<Button leadingIcon="check" label="…" />→<Button icon="check" label="…" />.trailingIconis unchanged.
Changed
- Button sizes grew 2px taller. Vertical padding gained 1px top and bottom across all sizes (and horizontal padding 1px each side to match), so the default
mediumbutton is now 28px tall (was 26):small22 → 24,medium26 → 28,large30 → 32.padding-yis now 3 / 5 / 7 and text-edgepadding-x7 / 9 / 13 (small / medium / large); icon-edge padding stays text-edge − 2px. Icon-only square buttons track the same heights (min-size 24 / 28 / 32). Font size and the 18px label line-box are unchanged. - Dark theme palette comprehensively retuned. Every dark-mode background and border token — neutral plus all five tinted tones (brand / success / critical / warning / info) — was reworked into hand-tuned
hsl()values, deepened from the Anta 0.2 baseline so dark surfaces and borders read with less glare. The dark background and border ramps are now authored in HSL; light mode and dark text tokens are unchanged. - Raw
<code>now setsline-height: 1em(insrc/reset.css,@layer anta) so inline code no longer inflates the line box of the prose it sits in. - Neutral secondary button background retuned. Light mode evens out its rest→hover→active ramp — active drops from ~20% to ~15% alpha (
#44374b33→#44374b26), giving ~7 → 10 → 15% instead of the abrupt 7 → 10 → 20. Dark mode is retuned to ~11 → 14 → 18% (#e4d1efat1c/24/2e, from1a/26/33). Other tones unchanged. - Dark neutral
--bg-base/--bg-sectionadjusted (now--bg-2/--bg-1after the rename above).--bg-baselightened tohsl(280 10% 5.5%)and--bg-sectionset to near-blackhsl(280 20% 0%), so the deepest surface now sits below the page base in lightness — elevated / code surfaces read as recessed rather than raised.--bg-blockand--bg-spot(now--bg-4/--bg-5) were also nudged (#161316/#1a171b);--bg-pane(--bg-3) and all tinted tones are unchanged. (These were later converted fromhsl()to hex.) - Dark tinted button fills bumped (secondary, tertiary, custom tones). The five named tinted tones (
brand/critical/info/success/warning) step their dark-mode secondary fill to 23 → 28 → 33% alpha (rest / hover / active), from ~15 → 20 → 25%; their tertiary hover/active fills move in lockstep to 23 → 28%. Custom (color-literal) tones get the same dark ramp via the--_tone-bg-a-*knobs (0.23 / 0.28 / 0.33). Neutral steps its secondary rest up to ~11% (~11 → 14 → 18% secondary, ~8 → 13% tertiary). - Loading stripe animation sped up —
--button-loading-durationdefault1s→0.5s(override per-instance to taste). - Link hover no longer repaints the underline color.
a:hovernow only thickens the underline (0.5px → 1px); the underline keeps its resting hairline color (thecurrentColor75% mix) instead of switching to the solid--link-color-hover. - Quaternary button press feedback (light mode).
priority="quaternary"’s:activenow lightens the rest foreground by0.05in oklch lightness (oklch(from var(--button-fg-quaternary-rest) calc(l + 0.05) c h)) for a subtle pressed look, instead of snapping back to the rest color. Dark mode is unchanged — it still returns to rest, since lightening would brighten the already-light foreground. - Button label
font-weightsoftened from500to450. Applies to every<Button>/<a-button>label across all priorities and sizes. - Boolean button attributes now render as presence, not
="true".<Button>’sselected/disabled/loading/paddinglessprops now emit a presence attribute (disabled="") instead ofdisabled="true", and the element CSS matches them by presence (a-button[disabled], not[disabled="true"]). The wrapper API is unchanged (still boolean props); hand-authored elements keep working whether you writedisabled,disabled="", or the olddisabled="true"(presence matches all). ARIA mirrors (aria-pressed,aria-disabled,aria-busy) stay string-valued. - Custom-tone
primaryfill now normalizes lightness. Instead of painting the raw color, a customtoneonpriority="primary"keeps the source hue + chroma but pins its lightness near the Brand primary’s (viaoklch(from … L c h)), with hover/active stepping the lightness — so a too-light or too-dark input still lands at a Brand-like fill. Re-tunes between light and dark through the same knobs, like the named tones. Secondary/tertiary/quaternary (hue-only) are unchanged.
Fixed
<a-icon>with a rawsizeattribute no longer collapses to 0×0 on browsers without typedattr()(iOS Safari, Firefox). Thea-icon[size]rule is now guarded by@supports, so where typedattr()is unsupported the icon falls back to the visible 16px default instead of vanishing. Use the<Icon size={N}>JSX wrapper (which sets--icon-sizeinline) for an exact custom size on those browsers.
0.1.1-dev.6 — May 28, 2026
Added
- New
Titlecomponent (<a-title>styled tag +TitleJSX wrapper) for headings at one of sixlevels. Drives both the type scale (font-size + line-height) and the vertical rhythm (logicalmargin-blockper level); also surfacesrole="heading"+aria-levelfor assistive tech. MirrorsText’spriority(primary-quinary, mapping to--text-1…--text-5) andtone(brand,success,critical,warning,info) APIs. Children are arbitrary — pass icons, badges, or any inline content beside the title text; there are noleadingIcon/trailingIconprops. <a-title>is intentionally CSS-only — nocustomElements.define, no shadow DOM. The browser treats it as a generic unknown element and the rules indist/elements/a-title.cssdo all the work, so consumers who import@antadesign/anta/elementsget it for free.
Changed
src/reset.cssnow styles raw<h1>-<h6>to match<Title level={n}>at the defaultprimarypriority / no tone — same demi-bold weight (584.62), letter-spacing (0), per-level font-size, line-height, and logical block margins. Reach for a real heading tag when SEO matters and you don’t needtone/priority; reach for<Title>when you do.
0.1.1-dev.5 — May 25, 2026
Breaking
<Button>’s default tone flipped frombrandtoneutral. Buttons rendered without atone=prop now resolve to the neutral token set (gray fill, soft secondary alpha, neutral text on tertiary / quaternary) instead of the saturated brand purple. The CSS selector that owns the default branch moved from:where(:not([tone]), [tone="brand"])to:where(:not([tone]), [tone="neutral"]), with the inverse on the explicit[tone="brand"]block. Migration: addtone="brand"explicitly anywhere you relied on the old default; everything else (icons, labels, sizes, priorities) is unchanged.<Button tone="custom">removed. Pass any literal CSS color as thetoneinstead (tone="#ff1493",tone="oklch(0.6 0.25 30)",tone="rgb(255 20 147)", named colors, anything that parses as<color>). The JSX wrapper hands the color to the host via--button-tone-sourceon inline style; the CSS resolver extracts the hue withoklch(from var(--button-tone-source) … h)and runs it through the brand-tone L/C curve so every priority × state slot is populated automatically — hover/active darken on schedule, secondary alpha overlays anchor to the consumer’s color, tertiary and quaternary text colors all derive. Power-userstyle={{ '--button-fg-color': '#…' }}overrides still beat the resolver. Migration: drop thetone="custom"literal + the trio of--button-{bg,fg,br}-colorinline declarations and just settoneto the source color. Relative-coloroklch(from …)is the only modern-CSS dependency (Safari ≥16.4, Firefox ≥113, Chrome ≥119).
Changed
Button’stoneprop type widens: the'custom'literal is dropped and the union gains(string & {})so any color literal is type-safe while autocomplete on the six named tones stays intact.AButtonAttributes.tonemirrors the same widening.<Button>now defaults toflex-shrink: 0. When the button sat as a flex item in a tight parent, it used to compress and silently clip its icon / label because the host carriesoverflow: hidden. The new default makes the button hold its natural width and overflow the parent instead — the loud failure mode. Consumers who want the old shrinkable behavior can opt back in withstyle={{ flexShrink: 1 }}per instance. The dedicateda-menu > a-buttonrule simplified accordingly (it used to setflex-shrink: 0itself).iconButtonaccepts anIconShapestring in addition toboolean.<Button iconButton="check" />is now equivalent to<Button iconButton leadingIcon="check" />; if both are set, the string form wins.- Icon-only buttons gain a
min-width/min-heightpinned to the natural square (small 20px, default 24px, large 28px) so a tight flex parent can no longer squeeze the host below the 16px icon. - Base
cursor: pointermoved from the (deleted) shadow:hoststyle intoa-button.css, so anchor-mode buttons and JS-only consumers (no element CSS loaded yet) both pick it up.
0.1.1-dev.4 — May 6, 2026
Breaking
anta_global_tokens.cssrenamed totokens.cssand split. Consumers should update their import:@antadesign/anta/anta_global_tokens.css→@antadesign/anta/tokens.css. The new file contains only the CSS custom property declarations on:root/:root.dark, plus a one-line@layer base, anta, components, utilities;cascade-order declaration. Tokens stay unlayered (custom properties don’t compete in the cascade).- New
reset.cssimport carries the typography defaults that used to live alongside the tokens (h1-h6 { font-weight: 600 },strong,ul / ol / li / menu,alink states) plus a modern small reset (universal box-sizing, margin reset, replaced-element block-display + max-width, form-control font inheritance, text-wrap defaults). All wrapped in@layer anta. Consumers who want Anta’s previous out-of-the-box look addimport '@antadesign/anta/reset.css'alongside the tokens import; consumers who have their own reset can skip it. - All Anta CSS now lives in
@layer anta— element rules (a-progress,a-text,a-icon,a-icon.shapes), the reset, and the generate-icons output. Token property declarations (the:root { --… }blocks) remain unlayered so they’re available everywhere unconditionally. The pre-declared layer order (base, anta, components, utilities) keeps Anta’s defaults above any preflight resets (Tailwind’s@layer base, etc.) while letting consumer components and utility classes override single properties when needed.
Changed
- Progress component colors realigned with the “Anta 0.2” Figma library (frame
1313:1219). All four states (light × dark × neutral × info) updated. Every Progress colour now resolves through an existing global token:--bg-block/--bg-spot/--border-2/--text-2/--text-3and their-infovariants. --progress-indicator-edgeis now declared once at the base level and derives from--progress-border-colorvia CSS relative-colour syntax (rgb(from … r g b / 0) → var(…)). The right-edge gradient automatically tracks the border colour in every state.<a-progress-number>color anchor moved from--text-1/--text-1-infoto--text-2/--text-2-info, matching Figma’scomponent/progress/text-{neutral,info}tokens.<a-progress-text>and<a-progress-hint>are now tone-aware: intone="info"they pick up--text-2-info/--text-3-infoinstead of staying on neutral. Previously this was a visual bug — the descriptive label and hint stayed grey even when the rest of the component shifted to info-blue.
Added
- New
table-2icon on<a-icon>(Lucide-derived).synonyms.jsonupdated with search aliases (table,grid,data,spreadsheet,rows,columns);a-icon.shapes.{ts,css}regenerated. - New
sunandmoonicons on<a-icon>(Lucide-derived) for theme-toggle UIs. - New
refresh-ccw-doticon on<a-icon>(Lucide-derived) — used by the playground’s reset button and useful for any “revert to defaults” affordance.
0.1.1-dev.3 — May 5, 2026
Changed
- Dark-mode text tokens
--text-{3,4,5}-{success,critical,warning}re-anchored to their level-2 base hue (matching the light-mode pattern and the source-of-truth in the Figma “Anta 0.2” library). Visual effect in dark mode: success / critical / warning text at tertiary, quaternary, and quinary priorities shifts slightly toward the level-2 hue. Light-mode tokens are unchanged. Allbg-*andborder-*tokens were also audited against the same Figma source — no drift, no changes.
Removed
--text-whitetoken. It was declared inanta_global_tokens.cssbut referenced nowhere in the package and is not part of the Figma “Anta 0.2” source-of-truth. Consumers relying onvar(--text-white)should switch to#ffffff(orwhite) directly, or define their own variable.
0.1.1-dev.2 — May 3, 2026
Added
- Five new icons on
<a-icon>:swatch-book,hat-glasses,heart-handshake,hourglass,text-initial(Lucide-derived).synonyms.jsonupdated;a-icon.shapes.{ts,css}regenerated. Iconwrapper gains an optionallabelprop. When set, the wrapper exposesrole="img"+aria-label={label}so the icon is announced. When omitted (the default), the icon is treated as decorative —aria-hidden="true"is applied so it doesn’t add noise alongside neighbouring text.Progresswrapper now composes a singlearia-labelfromlabel+ percentage +hint, joined with·, so screen readers announce what sighted users see in one phrase. The element still setsrole="progressbar",aria-valuenow, andaria-valuemaxindependently.general_types.ts:AProgressAttributesandAIconAttributesnow declare typed ARIA attributes (role,aria-label,aria-valuenow,aria-valuemax,aria-valuemin,aria-hidden) so JSX type-checks the wrapper’s pass-through.
Changed
- Convention strengthened (no API impact): ARIA wiring (
role,aria-*,tabindex, etc.) lives insrc/components/<Name>.tsxJSX wrappers as attribute pass-through, never inside the web component class. Web components stay pure declarative DOM — neither the constructor norattributeChangedCallbackmutates host attributes or inline styles. Documented inCLAUDE.md. - Default body
font-weightinanta_global_tokens.csschanged to400for both:root, .light(was390) and.dark(was350). The previous values applied a small optical-compensation offset so dark-mode text was rendered slightly thinner; the new values are uniform regular weight. Apps that overridefont-weighton:rootor.darkare unaffected.
0.1.1-dev.1 — May 3, 2026
Added
:root, .lightselector mirror inanta_global_tokens.css, so consumers can apply thelightclass to a subtree to opt back into light tokens explicitly even when a.darkancestor would otherwise be in effect (useful for dark/light comparison demos).
0.1.0-dev.1 — May 2, 2026
Added
Textcomponent +<a-text>element. Props:priority(primary/secondary/tertiary/quaternary/quinary),tone(brand/success/critical/warning/info),inline,truncate(truefor single line, integer ≥ 2 for line-clamp),expandable(chevron + fade-out mask, click or Enter to expand).Iconcomponent +<a-icon>element. Mask-based icon set recolored viacurrentColor.sizeprop sets--icon-size. 80+ shapes derived from Lucide / Feather / Blueprint sources.scripts/generate-icons.mjs— Node generator that emitsa-icon.shapes.cssanda-icon.shapes.tsfrom a folder of SVGs. The.tsfile augmentsIconShapesvia adeclare module '@antadesign/anta'block, so consumer-generated icons auto-merge with Anta’sIconShapetype.- Global element defaults in
anta_global_tokens.css:<a>styling — color, hairline (0.5 px) underline at 75 % alpha by default,--link-color-hover+ 1 px underline on hover.<ul>/<ol>getpadding-left: 3chandli::markermuted to--text-5;ligets a0.5embottom margin.<menu>is reset (no list-style, no padding, no margins) so consumers can use it as a clean semantic container.
- New tokens
--link-color,--link-color-hover(in:rootand.dark). NOTICES.mdat repo root attributing Lucide (ISC), Feather (MIT), and Blueprint (Apache 2.0) for derived icons;NOTICES.mdis included in the published tarball.
Changed
- Prose link styling moved out of the docs
base.cssand into Anta’s global tokens, so every consumer ofanta_global_tokens.cssgets the same defaults.
Notes for upgraders
- If you were inlining your own
a { color: ... }rule, Anta’s defaults will now apply unless overridden — the generated underline / link color / 1 px hover thickness /currentColordecoration mirror are picked up automatically. To opt out for a specific element, settext-decoration: noneand your owncolor. - If you were styling
<menu>,<ul>, or<ol>from scratch, expect the new defaults to take effect; override with more-specific selectors as needed.
0.0.x — through April 2026
Initial scaffolding: package layout, <Progress> component (<a-progress> element + Progress JSX wrapper), the light/dark CSS-token system imported from the Figma “Anta 0.2” library (background / text / border tokens × 5 levels × 5 tints + neutral, with hex + oklch dual declarations). No formal versioning during this period; treat as the seed of the design system.