astryx_ui 0.0.3-dev
astryx_ui: ^0.0.3-dev copied to clipboard
An unofficial Flutter port of Astryx, Meta's design system for building internal tools and products. Faithful token engine, themeable components, built on flutter/widgets.
Changelog #
All notable changes to astryx_ui are documented here.
The format follows Keep a Changelog and this project adheres to Semantic Versioning.
Unreleased #
0.0.3-dev #
Documentation only. No library code changed, so nothing here can break a consumer.
Added #
- A documentation site, in
example/. Every component with prose, live examples, the source that produced them, and an API reference — viewable in any of the eight themes, either brightness, both densities and both text directions. Built fromastryx_uiitself, with no Material anywhere: the navigation is a column of pressable cards, the example frames are cards, the Preview/Code switch is anAstryxTabList, the API references areAstryxTables. Pages are addressable by URL fragment on the web. doc/— the same content as markdown: 30 component pages undercomponents/, seven guides underguides/(installation, theming, design tokens, density, right-to-left, accessibility), and an index. Generated from the page model byexample/tool/gen_docs_md.dart.- A skill for AI coding agents, in
.claude/skills/astryx-ui/. The rules the widget set is built to, a component index, per-group API references, every public enum's values, and the mistakes a generator makes without them. Generated from the same source byexample/tool/gen_skill.dart. - Snippet extraction. Every code block in the site, the markdown and the
skill is lifted from a real, compiling widget in
example/lib/examples/byexample/tool/gen_snippets.dart. A snippet cannot describe something the package does not do, because the preview and the code come from the same lines. - Example tests that render every page and build all 156 examples, so a layout error in a documented example fails the suite rather than being found by a reader.
Changed #
example/is the documentation site rather than a gallery of demo pages. The theme, brightness, density and direction pickers survive; the demo and gallery scaffolding they lived in does not.
0.0.2-dev #
Fixed #
AstryxCardno longer assertsBoxConstraints forces an infinite widthwhen given an unbounded width — inside aRow, anAstryxHStack, or a horizontal list. It fills a bounded width as before and shrinks to fit an unbounded one, matching how a block box sizes itself in CSS.
0.0.1-dev #
First development preview. The API is unstable and may change without a major version bump until 0.1.0.
Added #
- Package scaffold: pubspec, lint configuration, directory layout, license and attribution files.
- Token layer: colour primitives (OKLCH, RGBA, CSS colour parsing, light/dark pairs) and the full token set — colour, spacing, radius, size, border, shadow, duration, ease, font weight, text size and typography tokens.
- Theme engine:
defineTheme, the token resolver, scale expansion for colour, type, radius and motion, contrast and HCT helpers, style overrides, syntax themes and the theme registry. - Theme runtime:
AstryxThemeData,ResolvedTokenSet,AstryxTheme,AstryxShadow, font stacks, token-to-Flutter conversions, and per-component theme classes. - Prebuilt themes: neutral, stone, butter, chocolate, gothic, matcha and y2k.
- App layer:
AstryxAppandAstryxThemeProvider. - Foundation: density, focus ring, focus trap, focus-visible tracking, link delegate, motion, overlay positioning and stack, RTL helpers, semantics, size scope, states controller and tap targets.
- Components — layout and typography (stack, grid, center, divider, heading, text, icon), actions (button, icon button, button group), feedback (progress bar, skeleton, spinner), forms (text input, checkbox, radio list, selector, switch, toggle row, field), overlays (dialog, dropdown menu, popover, toast, tooltip, anchored overlay), surfaces (badge, banner, card, palette) and data display (table, tab list).
- Icon registry backed by Lucide, mirroring Astryx's semantic icon names.
- Localizations via
AstryxLocalizations. - Secondary entry point
package:astryx_ui/theme.dartfor the theme layer without components.