nativemind_widgets 0.5.0
nativemind_widgets: ^0.5.0 copied to clipboard
Themed, localized Flutter widgets above Material and Cupertino: data tables, adaptive navigation, charts, Fugue icons and domain widget libraries.
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, network, parsing, billing, AI agents, accounts, domain names).
[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 viaNmPalette.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 (country flags, payment methods, app marks —NmSvgIcons). The full 3,571-glyph set is the separatefuguepackage. - 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/network.dart |
VPN clients: connect button, connection stats, server list, split tunneling, server subscriptions |
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/ai.dart |
Agent panel with approvals and job steps, support chat, AI loupe, deal copilot |
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] |
Getting started #
dependencies:
nativemind_widgets: ^0.3.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), neverIcons.*orCupertinoIcons.*. - 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).
