fluttersdk_wind 1.0.0-alpha.1
fluttersdk_wind: ^1.0.0-alpha.1 copied to clipboard
Utility-first styling framework for Flutter inspired by Tailwind CSS. Build UIs with WDiv, WText, WButton using intuitive className syntax like 'flex gap-4 bg-blue-500 hover:bg-blue-600'.
Changelog #
All notable changes to this project will be documented in this file.
This project follows Semantic Versioning 2.0.0.
1.0.0-alpha.1 - 2026-02-05 #
🎉 First Alpha Release #
Wind v1.0.0-alpha.1 marks the first public preview of the complete architectural rewrite. This release focuses on code quality, CI/CD infrastructure, and ensuring a solid foundation for the v1 stable release.
✨ What's Included #
Core Widgets:
WDiv- Utility-first container with flex, grid, and overflow supportWText- Typography widget with cascading text stylesWInput/WFormInput- Form inputs with validation and state stylingWButton- Interactive button with loading statesWCheckbox/WFormCheckbox- Checkbox with custom stylingWSelect/WFormSelect/WFormMultiSelect- Dropdown with search and taggingWDatePicker/WFormDatePicker- Calendar-based date pickerWPopover- Overlay positioning systemWIcon,WImage,WSvg,WSpacer- Media and spacing utilitiesWAnchor- State management for hover/focus/custom statesWKeyboardActions- iOS keyboard toolbar management
Utility Classes:
- Layout:
flex,grid,wrap,flex-row,flex-col,gap-* - Sizing:
w-*,h-*,min-*,max-*,w-1/2,aspect-*,w-[200px] - Spacing:
p-*,px-*,py-*,m-*,mx-*,my-* - Typography:
text-*,font-*,uppercase,underline,truncate - Colors:
bg-*,text-*,border-*with/50opacity modifiers - Effects:
shadow-*,opacity-*,ring-*,rounded-* - Transitions:
duration-*,ease-*,animate-* - States:
hover:,focus:,disabled:,loading:, custom states - Responsive:
sm:,md:,lg:,xl:,2xl: - Platform:
ios:,android:,web:,mobile: - Dark Mode:
dark:prefix for all utilities
Theme System:
WindTheme/WindThemeData- Customizable design tokens- Runtime theme toggling with reactive updates
- Default Tailwind-compatible color palette
- Typography, spacing, and sizing scales
🔧 Code Quality & Infrastructure #
- Zero Analyzer Issues: Full compliance with
flutter_lints5.0.0 - 835 Tests Passing: Comprehensive test coverage across all widgets and parsers
- CI/CD Ready: Automated publishing via GitHub Actions with OIDC
- Flutter 3.29+ Support: Using latest stable APIs (
toARGB32()) - Clean Code Standards: No custom linter exceptions, proper formatting
🐛 Bug Fixes #
- Fixed hover state test timing issues with
addPostFrameCallback - Resolved deprecated
.valueusage by migrating to.toARGB32() - Fixed curly braces in flow control structures
- Replaced unnecessary
ContainerwithSizedBoxfor whitespace - Updated
.where()type checks to use.whereType<T>()
📦 Dependencies #
flutter_svg: ^2.0.0- SVG rendering supportkeyboard_actions: ^4.2.1- iOS keyboard managementflutter_lints: ^5.0.0- Code quality enforcement
⚠️ Breaking Changes from v0 #
This is a complete rewrite. Migration from v0 requires updating all widget names and class syntax. See README.md for the new API.
📚 Documentation #
- Full widget documentation: wind.fluttersdk.com
- AI agent integration guides:
docs/claude/ - Example application included in
/example
🚀 What's Next #
This alpha release is feature-complete for core functionality. Upcoming releases will focus on:
- Community feedback and bug fixes
- Performance optimizations
- Additional widgets (WFormTextArea, WSlider, etc.)
- Enhanced documentation and examples
- Stable v1.0.0 release
1.0.0-alpha.9 - 2026-02-04 #
✨ New Features #
WKeyboardActions Widget
- Added: New
WKeyboardActionswidget for iOS keyboard management. - Problem Solved: iOS numeric keyboards lack a "Done" button, making it impossible to dismiss the keyboard.
- Solution: Wraps form content with a keyboard toolbar showing Done button and optional field navigation.
- Package: Integrated
keyboard_actionspackage (v4.2.1).
Usage:
class MyForm extends StatefulWidget {
@override
State<MyForm> createState() => _MyFormState();
}
class _MyFormState extends State<MyForm> {
final _amountFocus = FocusNode();
final _quantityFocus = FocusNode();
@override
void dispose() {
_amountFocus.dispose();
_quantityFocus.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return WKeyboardActions(
focusNodes: [_amountFocus, _quantityFocus],
toolbarClassName: 'bg-gray-100 dark:bg-gray-800',
child: Column(
children: [
WFormInput(
focusNode: _amountFocus,
label: 'Amount',
type: InputType.number, // Done button appears!
),
WFormInput(
focusNode: _quantityFocus,
label: 'Quantity',
type: InputType.number,
),
],
),
);
}
}
Props:
focusNodes: List of FocusNodes for inputs needing keyboard actionsplatform: Target platform ('ios','android','all') - default'all'nextFocus: Enable up/down navigation between fields - defaulttruetoolbarClassName: Wind className for toolbar styling (supportsbg-*,dark:bg-*)closeWidgetBuilder: Custom close button builder
Re-exports:
keyboard_actionspackage is re-exported for advanced usage
1.0.0-alpha.8 - 2026-01-02 #
✨ New Features #
Named Max-Width Sizes
- Added: Tailwind-compatible named max-width values for
max-w-*classes. - Classes:
max-w-xs(320px),max-w-sm(384px),max-w-md(448px),max-w-lg(512px),max-w-xl(576px),max-w-2xl(672px),max-w-3xl(768px),max-w-4xl(896px),max-w-5xl(1024px),max-w-6xl(1152px),max-w-7xl(1280px),max-w-prose(1040px). - Usage:
WDiv(className: "max-w-sm p-4 bg-white rounded-lg", ...).
Border-0 Support
- Added:
border-0now correctly removes borders. - Added: Shade-less border colors now work:
border-white,border-black,border-transparent.
🐛 Bug Fixes #
WDiv Max-Width Constraint Override
- Fixed:
max-w-smand other max-width constraints were being overridden by explicit width values. - Behavior: Max-width constraints now take precedence over width when explicitly set.
- Impact: Cards with
max-w-smnow correctly constrain to 384px instead of expanding to full width.
1.0.0-alpha.7 - 2026-01-01 #
🐛 Bug Fixes #
WDiv Fractional Sizing in Scroll Contexts
- Fixed:
w-full/h-fullnow works correctly inside scroll views (overflow-auto). - Behavior: Uses
LayoutBuilderto detect unbounded constraints and appliesMediaQuery.of(context).sizefor full-size factors instead ofFractionallySizedBox. - Impact: Enables proper Tailwind-to-Flutter conversion where scrollable containers wrap full-viewport content with flex centering.
Flex Centering with Full Size
- Fixed:
justify-centeranditems-centernow work correctly withh-full/w-fullandmin-h-full/min-w-full. - Behavior: Column with
h-full,min-h-full, or explicit height now usesMainAxisSize.maxinstead of.min, allowing vertical centering to work. - Impact:
flex flex-col items-center justify-center h-fullormin-h-fullnow properly centers content like Tailwind.
Background Fill with Full Size
- Fixed:
bg-*colors now properly fill entire parent area when combined withw-full/h-full. - Behavior: Container uses
width: double.infinityandheight: double.infinitywhen full-size is requested. - Impact:
w-full h-full bg-slate-950now fills the entire viewport with the background color.
✨ New Features #
Tailwind v4 Color Shades
- Added: 950 shade for all color palettes.
- Colors: All 22 colors now have 950 shade (slate, gray, zinc, neutral, stone, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose).
- Examples:
bg-slate-950,text-indigo-950,border-red-950, etc.
Space Utilities
- Added:
space-x-*andspace-y-*utilities for spacing between children. - Usage:
space-y-6adds vertical gap of 24px (6 × 4) between children. - Implementation: Internally mapped to
gap-xandgap-yfor Flutter compatibility.
1.0.0-alpha.6 - 2026-01-01 #
✨ New Features #
WPopover Widget
- Overlay System: Flexible popover for dropdowns, menus, and tooltips.
- Alignment: 6 supported positions (bottomLeft, bottomCenter, bottomRight, etc.).
- Styling: Full Wind
classNamesupport for overlay container. - Interaction:
triggerBuilderandcontentBuilderfor maximum flexibility. - Auto-Close: Built-in tap-outside handling via
TapRegion.
1.0.0-alpha.5 - 2025-12-26 #
✨ New Features #
Extended Widget Suite
- WSelect: Powerful dropdown with single/multi-select, search, pagination (infinite scroll), tagging (
onCreateOption), and full custom builders. - WCheckbox: Utility-first checkbox with
checked:state styling and custom icon support. - WImage: Network/Asset image wrapper with
object-fit,aspect-ratio, androundedutilities. Supportsasset://schema. - WSvg: SVG rendering with
fill-,stroke-coloring and parent style inheritance. - WIcon: Tailwind-styled Icon wrapper that honors parent text styles (
text-{color},text-{size}).
Animation System (Explicit)
- Animation Utilities:
animate-spin,animate-pulse,animate-bounce,animate-ping. - WindAnimationWrapper: Integrated wrapper that handles explicit animations automatically.
- Widget Integration:
WDiv,WIcon,WText(via WDiv wrapper) support animation classes.
Implicit Animations (Transitions)
- Duration:
duration-{ms}enables implicit animations on properties. - Easing:
ease-linear,ease-in,ease-out,ease-in-outcurves. - Animated Widgets: Automatically swaps to
AnimatedContainer,AnimatedOpacity,AnimatedAlign(via explicit toggle pattern) when duration is present.
🐛 Bug Fixes & Improvements #
- Opacity Parsing: Enhanced
/[0.2]arbitrary syntax support to handle fractional doubles (0.0-1.0) correctly. - Revert: Removed implicit alignment animation (
align-*on containers) to avoid layout conflicts. Alignment animation should be done explicitly viaAnimatedAlign.
1.0.0-alpha.4 - 2025-12-26 #
✨ New Features #
WInput Widget (Form Input)
- React-Style Binding:
value+onChangedprops for controlled state management. - Input Types:
text,password,email,number,multilineviaInputTypeenum. - Tailwind Styling:
classNamefor input,placeholderClassNamefor placeholder text. - Focus Ring Support:
focus:ring-2 focus:ring-blue-500and similar classes work. - Custom States: Use
states: {'error'}witherror:border-red-500for validation. - Keyboard Actions:
textInputAction,onSubmitted,onEditingComplete,onTap,onTapOutside. - Text Customization:
textCapitalization,autocorrect,enableSuggestionsprops.
Ring Parser Enhancements
- Theme-Configurable Widths:
ringWidthsandringOffsetsinWindThemeData. - Custom Ring Values:
ring-customlooks up from theme config. - Opacity Parsing: Verified and tested
/opacitysyntax works for all ring colors.
📦 New Example Pages #
/forms/input_basic- Basic input types demonstration./forms/input_styled- Styled inputs with Tailwind classes./forms/input_states- Focus, disabled, and error state examples.
🐛 Bug Fixes #
- Fixed deprecated
Color.valueusage in tests (replaced withtoARGB32()).
1.0.0-alpha.3 - 2025-12-26 #
✨ New Features #
State System Refactor
- Unified State Handling: Removed boolean flags (
isHovering, etc.) in favor ofactiveStates(Set<String>). - Custom States: Support for arbitrary states like
loading:,selected:,error:. - Extensible Prefixes: Any string can act as a state prefix (e.g.,
loading:bg-gray-400).
Color Opacity Support
- Opacity Modifier: Support for
/50syntax on all color utilities. - Classes:
bg-{color}/{opacity},text-{color}/{opacity},border-{color}/{opacity},ring-{color}/{opacity},shadow-{color}/{opacity}. - Examples:
bg-blue-500/50,text-red-500/75,ring-green-500/[0.3].
Ring Utilities
- Ring Width:
ring,ring-0toring-8. - Ring Color:
ring-{color},ring-{color}/{opacity}. - Ring Offset:
ring-offset-2,ring-offset-{color}. - Ring Inset:
ring-inset. - Theme Configuration:
WindThemeData.ringColorto set default ring color.
Shadow Improvements
- Shadow Opacity: Support for opacity modifiers in shadow colors (
shadow-blue-500/50).
1.0.0-alpha.2 - 2025-12-25 #
✨ New Features #
Typography & Font Family
- Font Family Utilities:
font-sans,font-serif,font-mono - Arbitrary Font Families:
font-[Roboto],font-[Inter, sans-serif] - Default Font Application: Automatically applies
font-sansto all text (configurable viaWindThemeData.applyDefaultFontFamily) - Theme Customization: Define custom font families in
WindThemeData.fontFamilies
Sizing & Layout
- Aspect Ratio:
aspect-square,aspect-video,aspect-auto,aspect-[4/3] - Z-Index:
z-0toz-50,z-auto,z-[100] - Overflow:
overflow-auto,overflow-hidden,overflow-visible,overflow-scroll,overflow-x/y-*
Effects & Borders
- Opacity:
opacity-0toopacity-100,opacity-[0.37] - Rings:
ring,ring-2,ring-red-500,ring-offset-2(Focus rings equivalents)
Transitions & Animations
- Duration:
duration-75/100/150/200/300/500/700/1000,duration-[ms] - Timing Function:
ease-linear,ease-in,ease-out,ease-in-out - AnimatedContainer Integration:
WDivautomatically usesAnimatedContainerwhenduration-*is set
Developer Experience (DX)
- Helper Functions:
wColor,wSpacing,wScreen,wFontSize,wFontWeight - BuildContext Extensions:
context.windTheme,context.windColors,context.wColorExt(...) - WindStyle Parsing:
wStyle(context, '...')helper to programmatically parse styles
🐛 Bug Fixes #
- Fixed
font-weightparsing interfering withfont-familyclasses - Fixed padding being applied outside Container instead of inside (Tailwind behavior)
- Fixed various documentation examples
[1.0.0-alpha.1] - 2025-12-24 #
🚀 Major Release - Complete Architectural Rewrite #
This release represents a complete rewrite of the Wind framework with a new architecture inspired by TailwindCSS and Laravel Artisan philosophies.
⚠️ Breaking Changes #
- Removed all v0 widgets:
WCard,WFlex,WFlexible,WContainer,WGapare no longer available - New widget system: Use
WDiv,WText,WAnchorinstead - Theme API changed:
WindTheme.toThemeData()replaced withWindThemewidget wrapper - Class name syntax updated: Some utility class names have been standardized
✨ New Features #
New Widget System
WDiv: The fundamental building block - dynamically buildsColumn,Row,GridView, orWrapbased on display typeWText: Specialized typography widget with full text utility supportWAnchor: Interactive wrapper for hover, focus, and disabled state management
New Parsing Engine
WindParser: Central parser with static caching for optimized performanceWindStyle: Immutable style data object containing all resolved propertiesWindContext: Context object with theme, screen size, platform, and state information
Specialist Parsers (8 Total)
DisplayParser:block,flex,grid,wrap,hiddenBackgroundParser: Colors, images, gradients, positioning, repeatBorderParser: Border width, color, style, and radius utilitiesTextParser: Colors, sizes, weights, alignment, decoration, transform, clampSizingParser: Width, height, min/max constraints, fractionsPaddingParser: All padding variants (p-,px-,py-,pt-, etc.)MarginParser: All margin variants (m-,mx-,my-,mt-, etc.)FlexboxGridParser: Flex direction, justify, align, gap, grid columns
Border & Rounded Utilities
- Border width:
border,border-0,border-2,border-4,border-8 - Directional borders:
border-t,border-r,border-b,border-l - Border colors:
border-{color}-{shade},border-[#hex] - Border radius:
rounded,rounded-sm/md/lg/xl/2xl/3xl/full/none - Directional radius:
rounded-t/r/b/l/tl/tr/bl/br - Theme customization:
borderWidths,borderRadiusinWindThemeData
State-Based Styling
hover:- Styles applied on hover (requiresWAnchor)focus:- Styles applied on focus (requiresWAnchor)disabled:- Styles applied when disabled (requiresWAnchor)
Platform Prefixes
ios:,android:,web:,macos:,windows:,linux:,mobile:
Responsive Breakpoints
sm:(640px),md:(768px),lg:(1024px),xl:(1280px),2xl:(1536px)
Dark Mode Support
dark:prefix for dark-mode-only styles- Automatic color inversion via
WindThemeData.brightness
CSS-Like Text Inheritance
- Text styles cascade from parent
WDivto childWTextviaDefaultTextStyle
🛠 Technical Improvements #
- Immutable Styles:
WindStyleis@immutablewith proper==andhashCode - Static Caching: Parsed styles are cached by compound key for performance
- "Last Class Wins": Conflicting classes resolved by taking the last one
- Intelligent Composition: Widgets only wrap with decorators when needed
📦 New Theme Defaults #
- Colors: Full Tailwind color palette (slate, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose)
- Font Sizes: xs, sm, base, lg, xl, 2xl, 3xl, 4xl, 5xl, 6xl
- Font Weights: thin, extralight, light, normal, medium, semibold, bold, extrabold, black
- Tracking: tighter, tight, normal, wide, wider, widest
- Leading: tight, snug, normal, relaxed, loose
🐛 Bug Fixes #
- Fixed
getSpacing('full')to returndouble.infinity(#3)
📚 Documentation #
- Complete system instruction for AI assistants
- Comprehensive test suite (212 tests passing)
0.0.4 - 2025-06-12 #
- Updated
platform_infodependency to^5.0.0for improved platform detection.
0.0.3 - 2025-06-09 #
Added #
- Display Control (
hide,show) utility classes DisplayParserfor handling display-related utilities- New example page for display utilities
Changed #
- Improved debug logging for widgets
WFlexible.childis now nullableWContainerwraps withClipRRectwhenborderRadiusis specified
Fixed #
- Alignment mapping for
alignment-leftandalignment-right - Text alignment handling
0.0.2 - 2025-02-02 #
- Added Github workflow for publishing package to pub.dev
- Updated README.md with installation and usage instructions
- Added example application
0.0.1 - 2025-01-29 #
- Initial release