Skip to content

Releases: flutterbysunny/nova_ui

v1.0.7 — NovaAppBar, NovaListTile, NovaStatCard & NovaTimeline

15 Jun 12:59

Choose a tag to compare

✨ 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.7

Full Changelog: https://github.com/flutterbysunny/nova_ui/blob/main/CHANGELOG.md

v1.0.6 — NovaSearchBar, NovaStepIndicator & NovaTabBar

12 Jun 09:07

Choose a tag to compare

✨ 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; added activeTextColor for custom styling

Installation

dependencies:
  nova_ui: ^1.0.6

Full Changelog: https://github.com/flutterbysunny/nova_ui/blob/main/CHANGELOG.md

v1.0.5— NovaDropdown, NovaCheckbox & NovaSwitch

09 Jun 08:11

Choose a tag to compare

✨ 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.5

Full Changelog: https://github.com/flutterbysunny/nova_ui/blob/main/CHANGELOG.md

v1.0.3 — NovaShimmer, NovaAvatar & NovaChip

08 Jun 06:34

Choose a tag to compare

✨ 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)  // 64px

NovaChip

// 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.3

Full Changelog: https://github.com/flutterbysunny/nova_ui/blob/main/CHANGELOG.md

v1.0.2 — NovaLoader, NovaDialog & NovaBadge

07 Jun 16:58

Choose a tag to compare

🆕 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 — fixed final field initialization error in named constructors
  • Replaced named constructors (NovaBadge.dot, NovaBadge.count, NovaBadge.overlay) with single unified constructor

Installation

dependencies:
  nova_ui: ^1.0.2

Full Changelog: https://github.com/flutterbysunny/nova_ui/blob/main/CHANGELOG.md

v1.0.1 — NovaCard, NovaTheme & Widget Improvements

07 Jun 10:01

Choose a tag to compare

What's New in 1.0.1

🆕 New Widgets

  • NovaCard — zero-config card with elevation, rounded corners, and tap support
  • NovaThemeNovaTheme.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

  • CardThemeCardThemeData (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.1

v1.0.0 — Initial Release

07 Jun 09:56

Choose a tag to compare

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.0
import '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'),
)