Releases: flutterbysunny/nova_ui
Releases · flutterbysunny/nova_ui
v1.0.7 — NovaAppBar, NovaListTile, NovaStatCard & NovaTimeline
✨ What's New in 1.0.7
New Widgets
- NovaAppBar — flexible app bar with avatar/icon leading/trailing items (network, asset, icon, or custom widget), badges, tooltips, subtitle, and bottom slot support
- NovaListTile / NovaListGroup — consistent list items with leading avatar/icon, trailing widgets, chevron, and grouped sections
- NovaStatCard / NovaStatGrid — dashboard metric cards with trend indicators and responsive grid layout
- NovaTimeline — vertical timeline for order tracking and activity feeds
NovaAppBar
// Profile avatar + actions
NovaAppBar(
title: 'Hello, Sunny 👋',
subtitle: 'Welcome back',
leading: NovaAppBarItem(
type: NovaAppBarImageType.network,
source: 'https://avatars.githubusercontent.com/u/283915454?v=4',
width: 36,
height: 36,
onTap: () => _openProfile(),
),
actions: [
NovaAppBarItem(
type: NovaAppBarImageType.icon,
icon: Icons.notifications_outlined,
badge: 5,
onTap: () {},
),
],
)NovaListTile / NovaListGroup
NovaListGroup(
title: 'Account',
children: [
NovaListTile(
title: 'Sunny Patel',
subtitle: 'sunny@example.com',
leading: NovaAvatar(name: 'Sunny Patel'),
showChevron: true,
showDivider: true,
onTap: () {},
),
NovaListTile(
title: 'Notifications',
leadingIcon: Icons.notifications_outlined,
trailing: NovaSwitch(value: true, onChanged: (v) {}),
),
],
)NovaStatCard / NovaStatGrid
NovaStatGrid(
cards: [
NovaStatCard(
label: 'Total Revenue',
value: '\$24.5K',
icon: Icons.attach_money_rounded,
trend: NovaStatTrend.up,
trendValue: '+12.5%',
subtitle: 'vs last month',
),
NovaStatCard(
label: 'Active Users',
value: '1,204',
icon: Icons.people_outline_rounded,
trend: NovaStatTrend.up,
trendValue: '+8.2%',
),
],
)NovaTimeline
NovaTimeline(
items: [
NovaTimelineItem(
title: 'Order Placed',
subtitle: 'Jun 10 — 10:30 AM',
state: NovaTimelineState.completed,
),
NovaTimelineItem(
title: 'Out for Delivery',
state: NovaTimelineState.active,
icon: Icons.local_shipping_rounded,
),
NovaTimelineItem(
title: 'Delivered',
state: NovaTimelineState.pending,
),
],
)Installation
dependencies:
nova_ui: ^1.0.7Full Changelog: https://github.com/flutterbysunny/nova_ui/blob/main/CHANGELOG.md
v1.0.6 — NovaSearchBar, NovaStepIndicator & NovaTabBar
✨ What's New in 1.0.6
New Widgets
- NovaSearchBar — search input with clear button, loading state, debounce, pill shape
- NovaStepIndicator — numbered/dots/progress styles for onboarding and checkout flows
- NovaTabBar — pill/underline/filled tab bar with icons, badges, scrollable support
NovaSearchBar
// Simple
NovaSearchBar(
onChanged: (query) => _filterList(query),
)
// Debounce — API call delay
NovaSearchBar(
debounce: Duration(milliseconds: 500),
onChanged: (q) => _apiSearch(q),
)
// Loading state
NovaSearchBar(
isLoading: _isSearching,
onChanged: (q) => _search(q),
)NovaStepIndicator
// Numbered with labels
NovaStepIndicator(
totalSteps: 4,
currentStep: 1,
labels: ['Account', 'Profile', 'Review', 'Done'],
)
// Progress bar — checkout flow
NovaStepIndicator(
totalSteps: 4,
currentStep: 2,
style: NovaStepIndicatorStyle.progress,
)NovaTabBar
// Pill — default
NovaTabBar(
tabs: [
NovaTabItem(label: 'All'),
NovaTabItem(label: 'Active'),
NovaTabItem(label: 'Done'),
],
onChanged: (i) => setState(() => _tab = i),
)
// Underline with icons + badge
NovaTabBar(
style: NovaTabBarStyle.underline,
tabs: [
NovaTabItem(label: 'Feed', icon: Icons.home_rounded),
NovaTabItem(label: 'Inbox', icon: Icons.mail_rounded, badge: 3),
],
onChanged: (i) => setState(() => _tab = i),
)
// Filled — segmented control style
NovaTabBar(
style: NovaTabBarStyle.filled,
tabs: [
NovaTabItem(label: 'Day'),
NovaTabItem(label: 'Week'),
NovaTabItem(label: 'Month'),
],
onChanged: (i) => setState(() => _tab = i),
)Bug Fixes
NovaTabBar— fixed pill style text clipping and selected tab text color; addedactiveTextColorfor custom styling
Installation
dependencies:
nova_ui: ^1.0.6Full Changelog: https://github.com/flutterbysunny/nova_ui/blob/main/CHANGELOG.md
v1.0.5— NovaDropdown, NovaCheckbox & NovaSwitch
✨ What's New in 1.0.5
New Widgets
- NovaDropdown — styled dropdown with label, validation, icons, disabled state
- NovaCheckbox — rounded/circle/square shapes, sublabel, tristate, group support
- NovaSwitch — animated toggle with label, sublabel, sm/md/lg sizes, label position
NovaDropdown
NovaDropdown<String>(
label: 'Country',
hintText: 'Select a country',
items: const [
NovaDropdownItem(value: 'in', label: 'India'),
NovaDropdownItem(value: 'us', label: 'United States'),
],
onChanged: (v) => setState(() => _country = v),
)NovaCheckbox
// Simple
NovaCheckbox(
value: _checked,
label: 'Accept terms',
onChanged: (v) => setState(() => _checked = v!),
)
// Group
NovaCheckboxGroup(
items: ['Flutter', 'Dart', 'Firebase'],
selectedItems: _selected,
onChanged: (items) => setState(() => _selected = items),
)NovaSwitch
// With label left — settings style
NovaSwitch(
value: _wifi,
label: 'Wi-Fi',
labelPosition: NovaSwitchLabelPosition.left,
onChanged: (v) => setState(() => _wifi = v),
)Installation
dependencies:
nova_ui: ^1.0.5Full Changelog: https://github.com/flutterbysunny/nova_ui/blob/main/CHANGELOG.md
v1.0.3 — NovaShimmer, NovaAvatar & NovaChip
✨ What's New in 1.0.3
New Widgets
- NovaShimmer — animated skeleton loading placeholders
- NovaAvatar — network/asset/initials/icon avatar
- NovaChip — filter/tag chips with group support
NovaShimmer
// Rectangle placeholder
const NovaShimmer(width: 200, height: 16)
// Circle — avatar placeholder
const NovaShimmer.circle(size: 48)
// Card skeleton
NovaShimmer.card()
// List skeleton
NovaShimmer.list(itemCount: 5)
// Real world usage
isLoading
? NovaShimmer.list(itemCount: 4)
: ListView.builder(...)NovaAvatar
// Initials — auto color from name
NovaAvatar(name: 'John Doe') // → 'JD'
// Network image with fallback
NovaAvatar(
imageUrl: 'https://example.com/photo.jpg',
name: 'John Doe',
)
// Online indicator
NovaAvatar(
name: 'John',
showOnlineIndicator: true,
isOnline: true,
)
// Sizes
NovaAvatar(name: 'JD', size: NovaAvatarSize.xs) // 28px
NovaAvatar(name: 'JD', size: NovaAvatarSize.lg) // 64pxNovaChip
// Simple tag
NovaChip(label: 'Flutter')
// Variants
NovaChip(label: 'Soft', variant: NovaChipVariant.soft)
NovaChip(label: 'Outlined', variant: NovaChipVariant.outlined)
// Deletable
NovaChip(
label: 'Remove',
onDeleted: () => _removeTag(),
)
// Single select group
NovaChipGroup(
chips: ['All', 'Active', 'Completed'],
selectedIndex: _tab,
onChanged: (i) => setState(() => _tab = i),
)
// Multi select group
NovaChipGroup.multi(
chips: ['Flutter', 'Dart', 'Firebase'],
selectedIndexes: _filters,
onMultiChanged: (i) => setState(() => _filters = i),
)Installation
dependencies:
nova_ui: ^1.0.3Full Changelog: https://github.com/flutterbysunny/nova_ui/blob/main/CHANGELOG.md
v1.0.2 — NovaLoader, NovaDialog & NovaBadge
🆕 What's New in 1.0.2
New Widgets
- NovaLoader — circular, linear, and dots loading indicators with theme-aware colors
- NovaDialog — info/success/warning/danger alert and confirm dialogs with a simple
show()helper - NovaBadge — status labels, notification counts, dot indicators, and overlay badges
NovaLoader
// Circular (default)
const NovaLoader()
// Linear progress bar
NovaLoader(type: NovaLoaderType.linear)
// Dots animation
NovaLoader(type: NovaLoaderType.dots, size: 32)
// Custom color
NovaLoader(color: Colors.white)NovaDialog
// Simple alert
NovaDialog.show(
context: context,
title: 'Done!',
message: 'Your profile has been saved.',
type: NovaDialogType.success,
);
// Confirm dialog
NovaDialog.show(
context: context,
title: 'Delete Account?',
message: 'This action cannot be undone.',
type: NovaDialogType.danger,
confirmText: 'Delete',
cancelText: 'Cancel',
onConfirm: () => _deleteAccount(),
);NovaBadge
// Status label
NovaBadge(label: 'Active', color: NovaBadgeColor.success)
// Soft variant
NovaBadge(label: 'Pending', color: NovaBadgeColor.warning, variant: NovaBadgeVariant.soft)
// Dot indicator
NovaBadge(isDot: true, color: NovaBadgeColor.success)
// Count
NovaBadge(count: 5)
// Overlay on icon
NovaBadge(count: 12, child: Icon(Icons.notifications))Bug Fixes
NovaBadge— fixedfinalfield initialization error in named constructors- Replaced named constructors (
NovaBadge.dot,NovaBadge.count,NovaBadge.overlay) with single unified constructor
Installation
dependencies:
nova_ui: ^1.0.2Full Changelog: https://github.com/flutterbysunny/nova_ui/blob/main/CHANGELOG.md
v1.0.1 — NovaCard, NovaTheme & Widget Improvements
What's New in 1.0.1
🆕 New Widgets
- NovaCard — zero-config card with elevation, rounded corners, and tap support
- NovaTheme —
NovaTheme.light()/NovaTheme.dark()for one-line theme setup
✨ Improvements
- NovaButton — variants (filled/outlined/text), icon support, disabled state, theme-aware colors
- NovaTextField — label, password toggle, multiline, validation, 5 border states
- NovaContainer — onTap, elevation shorthand, gradient, width/height, clipBehavior
🎨 Design System
- NovaColors — semantic theme-aware methods + raw MaterialColor swatches
- NovaSpacing — gap widgets, EdgeInsets presets, dynamic helpers
- NovaRadius — full (pill), Radius variants, directional helpers
- NovaThemeContext — BuildContext extension for quick theme access
🐛 Bug Fixes
CardTheme→CardThemeData(Flutter 3.19+ compatibility)- Replaced deprecated
.withOpacity()with.withValues(alpha:)
📖 Documentation
///dartdoc comments on all public API elements- Proper MIT LICENSE added
Installation
dependencies:
nova_ui: ^1.0.1v1.0.0 — Initial Release
Initial Release
Nova UI — A modern Flutter UI framework with reusable widgets and clean APIs.
Widgets
- NovaButton — customizable button with loading state, custom colors, border radius
- NovaTextField — styled text field with prefix/suffix icons, validation, password support
- NovaContainer — flexible container with gradient, border, shadow support
🎨 Design System
- NovaColors — semantic color constants (primary, secondary, success, warning, error)
- NovaSpacing — spacing scale (xs, sm, md, lg, xl)
- NovaRadius — border radius tokens (xs, sm, md, lg, xl)
✅ Features
- Null safety support
- Lightweight — only Flutter SDK dependency
- Material 3 compatible
- All platforms supported (Android, iOS, Web, Windows, macOS, Linux)
Installation
dependencies:
nova_ui: ^1.0.0import 'package:nova_ui/nova_ui.dart';
NovaButton(
text: 'Login',
onPressed: () {},
)
NovaTextField(
hintText: 'Email',
prefixIcon: Icon(Icons.email),
)
NovaContainer(
padding: EdgeInsets.all(16),
borderRadius: BorderRadius.circular(12),
child: Text('Hello Nova UI'),
)