nativemind_widgets

High-level Flutter widgets one level above Material and Cupertino: a themed, localized widget set with data tables, adaptive navigation, charts and domain widgets (real estate, telecom, marketing, parsing, billing, accounts, domain names). Part of the NativeMind framework: VPN widgets are nativemind_vpn, the AI copilot is nativemind_copilot, sound and deals widgets are nativemind_sound and nativemind_deals.

Data table

Features

  • Themes built from a 16 logical-px icon unit: 4 palettes (NativeMind Blue, Green, Orange, Pink) × 3 presets (consumer, product, workspace), with light and derived dark versions. Custom palettes via NmPalette.custom / NmPalette.fromSeed.
  • Icons: a thematic Fugue set (558 glyphs in 13 themes — NmFugue, NmFugueThemes) in 16, 32 and 48 px, shadow and shadowless, picked by display density; custom telecom rasters (NmCustomIcons) and SVG marks (payment methods — NmSvgIcons; country flags and app marks are in nativemind_vpn). The full 3,571-glyph set is the separate fugue package.
  • Adaptive labels: buttons, chips and dense table headers shrink from icon + text + parameters to icon + parameters to the icon alone; the hidden text becomes the tooltip and semantics label (NmAdaptiveLabel).
  • Localization: English, Russian, Thai, Hindi and Simplified Chinese, plus partial extra locales. Defaults to the system language, remembers the user's choice and falls back to English.
  • Core widgets in layers: primitives (buttons, pills, fields, states), composites (data table with sorting, selection, row and bulk actions and a columns editor; editable lists; dialogs; registry / detail workspace; console), navigation (collapsible sidebar with a destination tree, adaptive scaffold with bottom bar, agent panel) and charts (flow / Sankey, share comparison, visibility matrix, ranked bars). Touch-first composites for consumer apps: onboarding, swipe cards, achievements, hints, image carousel, flip and photo cards, feature tour, share sheet, command palette and voice filter.
  • Domain libraries, each a separate import that re-exports core:
Import For
package:nativemind_widgets/real_estate.dart RESO-aligned properties and tax-lien certificates: cards, table, auction and redemption badges, county picker, tax sales and calendar, swipe deck, galaxy view, map / radar / graph mechanics, x-ray
package:nativemind_widgets/telecom.dart SIM cards and modems: tables, signal bars, operator badges, USSD console, gateway channels, calls / SMS, command sets, dial plans, zones
package:nativemind_widgets/billing.dart Subscription sheet (plan, promo, method, card), plan cards, billing table, balance banner
package:nativemind_widgets/marketing.dart Traffic streams, competitor breakdown, intent visibility, domain opportunities, keyword positions
package:nativemind_widgets/parsing.dart Pipeline status vocabularies, task progress, failure groups, field mapping and schedule editors, platform config editor
package:nativemind_widgets/account.dart Sign-in screen, API keys, MCP tool policy, profile and account sections
package:nativemind_widgets/domains.dart Domain names and zones: domain cards and rows, zone grid
Charts Dark mode
Real estate

Upgrading from 0.x: doc/migration-1.0.md.

Getting started

dependencies:
  nativemind_widgets: ^1.0.0
  fugue: ^0.1.0          # optional: only for Fugue glyphs outside the thematic set
import 'package:flutter/material.dart';
import 'package:nativemind_widgets/nativemind_widgets.dart';

void main() {
  runApp(NmApp(
    theme: const NmTheme(palette: NmPalette.nativeMindBlue, preset: NmPreset.product),
    localeController: NmLocaleController(),
    home: const HomePage(),
  ));
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) => NmAdaptiveScaffold(
    destinations: const [
      NmNavDestination(id: 'home', icon: NmFugue.home, label: 'Home'),
      NmNavDestination(id: 'settings', icon: NmFugue.gear, label: 'Settings'),
    ],
    selectedId: 'home',
    onSelect: (_) {},
    logoCompact: const NmIcon(NmFugue.home),
    logoWide: const Text('My app'),
    body: const NmEmptyState(),
  );
}

Apps with their own MaterialApp use NmTheme(...).toThemeData(brightness) and NmApp.delegates([...]) instead of NmApp. Read tokens with context.nm (colors, sizes, text styles) and the layout class with context.nmFormFactor.

Run the gallery in example/ to browse every widget in every palette, preset and mode.

Icons

const NmIcon(NmFugue.lock);                                   // thematic Fugue glyph
const NmIcon(NmCustomIcons.telecomRssi3);                     // custom raster
const NmIcon(NmIconData.fugue('abacus', package: 'fugue'));   // any glyph, with package `fugue`
NmFugueThemes.all['telecom'];                                 // browse a theme

Every icon sits in a 16 × 16 logical-pixel box; Flutter picks the 16, 32 or 48 px file for 1×, 2× and 3× screens.

Rules

  • Icons come from Fugue (NmIcon(NmFugue.x)) or bundled SVGs (NmSvgIcons), never Icons.* or CupertinoIcons.*.
  • Sizes and colors come from tokens, not literals.
  • dart run tool/check_rules.dart [--app <path>] checks an app or the library for these rules, for complete translations and, in an app, that every imported domain library's delegate is registered.

License

NativeMindNONC (see LICENSE). Bundled Fugue icons © Yusuke Kamiyamane, CC BY 3.0 (see NOTICE).

Libraries

account
Accounts, teams, members, invitations, API keys and agent access policies (widgets for SaaS workspaces).
billing
Billing entities (plans, prices, payment methods, invoices) and widgets.
domains
Domain names: search, availability and status, history, WHOIS, zones, watch lists and acquisition options.
marketing
SEO and growth-marketing entities (domains, traffic streams, intents) and widgets.
nativemind_widgets
NativeMind widgets: the core kit (re-exported from nativemind_core) plus persistence on shared_preferences (NmPrefs) and the feature tour. Domain libraries: account.dart, billing.dart, domains.dart, marketing.dart, network.dart, parsing.dart, real_estate.dart, telecom.dart.
parsing
Data parsing and ingestion entities (harvests, parser configs) and widgets.
real_estate
Real-estate entities (RESO Data Dictionary aligned) and widgets.
telecom
Telecommunications entities (SIM cards, modems, operators) and widgets.