nativemind_widgets 1.0.1
nativemind_widgets: ^1.0.1 copied to clipboard
Themed, localized Flutter widgets above Material and Cupertino: data tables, adaptive navigation, charts, Fugue icons and domain widget libraries.
1.0.1 #
- Docs: README (install, handmade authors and roles, links), migration guide, PROVENANCE.
- pubspec:
repositoryfield so README links resolve on pub.dev.
1.0.0 #
The NativeMind framework release (SDD flows/sdd-widgets-handmade, task 3.3). Guide: doc/migration-1.0.md.
- Requires
nativemind_core^1.0.0 andnativemind_icons_fugue^0.2.0 (published). - Removed
ai.dartwithlib/src/ai/**and its strings (deprecated in 0.5): usenativemind_copilot. - Removed
network.dartand the oldlib/src/network/copy: the library isnativemind_vpn(0.5 → 1.0 re-exported it; the dependency on nativemind_vpn is gone). - Removed dead code (research 02a): 58 public declarations nothing used — real_estate gestures and animations,
telecom modem / SMS gateway parts, four parsing config panels and the new-harvest dialog,
NmKeywordChips; 85 unused ARB keys. - Shared strings: telecom and parsing buttons read core's
NmL10n.actionCancel/Apply/Add/Save/Delete/Retry/CloseandstateUnsaved(their duplicate keys are gone). - Gallery: pages for the handmade packages
nativemind_vpn,nativemind_sound,nativemind_deals; the AI and network sections are gone. - License: NativeMindNONC (part of the NativeMind framework).
0.5.0 #
Two splits: the copilot moved to its own package, nativemind_copilot, and the light base moved to
nativemind_core. Imports keep working: package:nativemind_widgets/nativemind_widgets.dart re-exports core.
-
core split:
- code: theme, primitives, composites, navigation, charts, l10n and icons now live in
nativemind_core. This package depends on it and re-exports it, so nothing to change in apps; - icons: the Fugue PNGs moved to
nativemind_core(72 essentials) andnativemind_icons_fugue(the rest), both dependencies of this package. Every icon still shows. SVG flags / payment / apps and the telecom icons stay here; - persistence:
NmAppsets shared_preferences (NmPrefs.instance) as the default store of the library controllers, as before. Apps that do not useNmAppcallNmWidgets.usePersistentPrefs()once; - languages: core strings beyond en / ru / th / hi / zh moved to
nativemind_translations; apps that show them callNmTranslations.install(). The domain libraries keep their languages; - the
src/core/...paths are gone. Use the public libraries (no known app imported them).
- code: theme, primitives, composites, navigation, charts, l10n and icons now live in
-
ai:
package:nativemind_widgets/ai.dartis deprecated. It stays for this version as a frozen copy of 0.4.0, so apps keep building, and is removed in 0.6.0. Move topackage:nativemind_copilot/nativemind_copilot.dart: the same class names; the strings accessor isNmCopilot(NmAiremains there as a deprecated alias). Import one of the two libraries, never both (the names clash). Guide:doc/migration-0.5-copilot.md. -
core: unchanged.
NmAdaptiveScaffold.agentPanel, the agent panel width token and thebrandBubblecolour stay here for any agent panel. -
A test checks that no library except
ai.dartreaches the copilot code.
0.4.0 #
The agent panel as a conversation of turns (from the Traffic OS reference of PBN). Additive: NmAgentPanel /
NmAgentController and everything else of 0.3 keep working unchanged.
- ai:
NmAgentConversationPanel+NmAgentConversationController: header with the autonomy switch and its tip (the app may pass its own, e.g. a money-free Pilot tip), the turns, suggestion chips, the composer (locked withcanSend/lockedHint), Stop while busy, «earlier» paging. Suggestions are filled pills sized to their text; the field and «Поручить» share one framed box (as in the reference).NmAgentTurnView: the user bubble on the right; the agent's text without a bubble; the step card; decision cards; the answer; follow-up buttons.NmAgentStepCard: wait (faded) / run (tinted row) / done (tick) / failed, with a detail line.NmAgentDecisionCard: approval («Подтвердить» / «Не сейчас») or soft offer («Сделать» / «Не нужно»), and the resolved states — confirmed, done automatically (can be rolled back), postponed, declined, failed, expired.NmAgentLauncher: the top-bar «give the agent a task» field with a ⌘K / Ctrl K chip;NmAgentLauncher.shortcutsbinds the keys.- Models:
NmAgentTurn,NmTurnStep,NmDecision,NmTurnActionand their enums. - 17 new strings in en / ru / zh / hi / th.
- core:
NmGateDialog: a fixed «continue after …» gate (e.g. sign-up after a guest try-out) with the app's own copy.NmTextField.focusNode.
- Gallery: «ai · conversation panel (0.4)» replays the reference turn; «ai · launcher (0.4)».
0.3.0 #
Every widget of the NativeMind apps now lives in the library, even when only one app uses it, so its translations are maintained in one place. Eight apps were migrated; their parity was checked screenshot by screenshot.
- New sub-libraries:
account.dart(sign-in, API keys, MCP policy, profile and account sections) anddomains.dart(domain names and zones); both re-export core and have their own delegate. - Parsing (from the parser hub and the platforms admin): the platform config editor —
NmPlatformConfig,NmPlatformConfigSchema, the transformation engine (nmPreviewTransformation,nmApplyRecordRepair), theNmPlatformConfigEditorcontract with theNmPlatformConfigJsonEditsmixin, 11 config panels (NmSelectorsPanel,NmMappingPanel,NmCountiesPanel,NmManifestPanel,NmDiscoveryPanel,NmTransformationsPanel,NmBusinessRulesPanel,NmSchedulePanel,NmRawJsonPanel,NmConfigKeyValuePanel,NmDomainBadgeRow) andNmNewHarvestDialog; 146 strings. - Core data views:
NmFactsSection,NmPager,NmFilterPanel(+ fields and conditions),NmFreshnessBar,NmAsyncSection; info viewsNmTitledCard,NmIconStack,NmDeviceClock,NmGlossaryCard; settings rowNmSwitchCard. - Account:
NmLoginScreen,NmApiKeysTable,NmApiKeyCreateDialog,NmSecretRevealDialog,NmMcpPolicyEditor,NmProfileCard,NmAccountSection,NmAccountDeleteResult. - Network:
NmServerSubscriptionCard,NmAddSubscriptionCard. - Telecom: the SIM gateway set (
NmChannelTable,NmChannelCardList,NmChannelsSplitView,NmChannelDetail,NmModemList,NmModemDetail,NmLineDetail,NmLinePicker,NmCallsPanel,NmSmsPaneland their models; 53 strings in 25 locales) and three administration features moved whole with controllers over abstract repositories: command sets (NmCommandSetsWorkspace), dial plans (NmPlansWorkspace,NmDialPlan) and zones (NmZonesWorkspace,NmZoneCodeEditor);NmDeviceStrip. - Real estate:
- RESO Data Dictionary 2.0 alignment:
NmProperty.propertySubType,NmProperty.standardStatus+NmStandardStatus(exactly the DD lookup),nmResoLabel; fields outside the DD are documented as extensions and checked by a test. - Tax sales:
NmTaxSale(+ type, status, summary, registration),NmCalendarTable,NmAnalyticResultCard. - Counties:
NmCountyTile,NmStateChip. - Swipe deck:
NmTaxLienSwipeFace,NmListingPreview,NmMatchDialog,NmListingShareSheet,NmSwipeTour,NmLienFlipCard,NmLienFilterSheet(+NmLienFilter),NmLienFinancialSheet. - Cards:
NmLienCard,NmGradeBadge,NmGalaxyCanvas,NmGalaxyDot. - Galaxy:
NmGalaxyViewport,NmGalaxyController,NmGalaxySelection,NmGalaxyLien,NmGalaxyDimension, layouts, painters, clustering, lasso and rotate gestures, transitions,NmDimensionIndicator. - Mechanics (widgets, models, gestures): tax radar, tax graph, magnetic groups, map layers, orbit triage, layered
card, x-ray (
NmXRayOverlay,NmInsightDetailSheet).
- RESO Data Dictionary 2.0 alignment:
- Core, from the swipe app:
- Onboarding:
NmSkipButton,NmChoiceCard,NmModeCard,NmSwipeDemoCard,NmSwipeHintOverlay. - Swipe and sharing:
NmSwipeCard,NmSwipeActionBar,NmConfetti,NmShareSheet,NmFeatureTour. - Engagement:
NmAchievement,NmAchievementToast,NmAchievementListener,NmAchievementChips,NmAppStoreBanner. - Hints:
NmHintBubble,NmHintOverlay,NmHintTrigger,NmNudgeBanner. - Cards and panels:
NmImageCarousel,NmPhotoCard,NmFlipCard,NmPeekPager,NmDetailsSheet,NmAnnotationCanvas,NmFloatPanel,NmHudPill. - Input: the command palette (
NmCommandPaletteOverlay), the voice filter (NmVoiceGesturePanel), a unified gesture / hover / shortcut detector with recognizers and adapters. NmRelativeTime.
- Onboarding:
- AI: the AI loupe (
NmAiLoupeOverlay, explanation service contract) and the deal copilot (NmCopilotSheet,NmCopilotController,NmCopilotResult). - Theme:
NmPreset.saas— the expressive surface language (gradient CTA, pill chips, borderless soft-shadow cards) at the standard scale with Fugue icons; in this cell body text 14, top bar 64 and 44 px minimum taps on phones (NmSizes.minTouchTarget,NmSizes.touch, honoured byNmButton/NmIconButton). Other presets unchanged.NmPreset.custom(style:, density:, iconography:)for any other combination. - Buttons: in the expressive style (
consumer,saas) the primary button is the accent gradient at every label size (it used to switch to the solidsmallButtonFillunder 17 px). The gradient is the style's surface language;smallButtonFillnow applies to the flat styles (clean,technical) only. Emphasis is the variant's job (one primary per screen; secondary / ghost for the rest). - Theme: two settings derived from the palette (the hand-tuned palettes are unchanged; defaults keep today's look):
NmTheme.ctaFill—NmCtaFill.bright(the palette's accent gradient) orNmCtaFill.deep(a deeper, more saturated gradient in the brand hue, white labels ≥ 4.5:1 over the whole button, viaNmColors.ctaGradient;brandLightstays an accent);NmTheme.surfaceTone—NmSurfaceTone.calmorNmSurfaceTone.vivid(brand undertone on the background, stronger tints, brand-tinted hairlines, secondary text re-derived to ≥ 4.5:1).NmColors.tuned()applies them. Tests check the contrast for every palette in light and dark, including Flutter'stextContrastGuidelineon a saas primary button. - New widgets (from an expiring-domains search product; model-free, the app maps its data):
- core:
NmWordmark,NmSearchHero<T>(kind chips with detection),NmCompactSearch,NmPlainSearchField,NmPillChip,NmChoiceChip,NmCardAction,NmTextLink,NmCapsLabel,NmUnderlineTabs,NmMetricStrip,NmMetricGrid,NmLimitBar,NmLifecycleTimeline,NmSideSheet+NmSideSheetHeader,NmDialogCard,NmFilterBar(+NmRemovableChip,NmDashedChip,NmPillMenu,NmPillInput),NmSourcesProgress;NmToast.showgainsaction/onAction/style(NmToastStyle.floating, the dark bar). - domains:
NmDomainCard,NmDomainRow,NmAcquisitionRow,NmZoneTile,NmZoneGrid. - billing:
NmOrderCard. account:NmCredentialForm(+NmCredentialField; strings moved in for the five must locales). ai:NmAgentBubble,NmAgentToolTrace,NmAgentResultCard,NmAgentConfirmCard,NmAgentSuggestions. - Gallery page "Search & listings"; catalog rows; tests.
- core:
- Fix (desktop):
NmPageScroll,NmDataTable(horizontal) and the zones code editor gave theirScrollbarno controller; on macOS / Windows / Linux the scroll view does not adopt thePrimaryScrollController, so the first scroll (orensureVisible) threw "The Scrollbar's ScrollController has no ScrollPosition attached". They now share one controller (their own when none is passed). Found by the dropexpired integration flows on macOS. - Navigation:
NmNavDestination.countLabel— a plain secondary count after the label (list sizes in a nav tree), formatted by the app; not an alert likebadge. - Icons: 52 Fugue glyphs added to the thematic set (theme
real_estate).NmIconkeeps a Fugue glyph at 16 px, centred, under tight constraints (it used to stretch). - Localization: about 870 strings moved from the apps, in the five must locales and every extra locale an app had;
locale
bnin core and account. - Rules: R7 — a wishlist row marked done leaves no app class over 40 lines; R8 — an app that imports a domain library registers its delegate (domain widgets silently fell back to English otherwise).
- Tools:
move_strings.dart(moves an app's ARB keys into a library domain, every locale),move_feature.py(copies an app feature folder into a domain withNmnames, library strings and Fugue icons),fill_docs.py(first-draft dartdoc),widget_parity.py(renders app screens before / after a move and diffs them). - Fixes: a division by zero in the galaxy county layout with no liens; the achievement toast looked for an
overlay above the navigator; ink ripples hidden under decorated sheets; overflows with longer Russian labels.
Header rows that overflowed on narrow cards or with the
consumertype scale now ellipsize or shrink: voice filter, graph anomalies, x-ray, AI approval card, county picker ("Select all in state"), plan card price. - Gallery: new page "Touch & engagement" (onboarding, swipe cards, achievements, hints, cards and sheets, command palette, voice filter); real estate gains the swipe deck, lien cards and sheets, tax radar / graph, magnetic groups, map layers, orbit triage, layered card and x-ray; AI gains the loupe and the copilot; account gains the account section. Several 0.3.0 demos were hidden before (their titles lacked the domain prefix the page filters on).
0.2.0 #
Breaking: the library now bundles only a thematic subset of Fugue (558 glyphs in 13 themes) instead of all
3,571; the full set moved to the new fugue package.
Migration: if an NmFugue.x constant no longer exists, add fugue: ^0.1.0 to your dependencies and use
NmIconData.fugue('x-upstream-name', package: 'fugue'). dart run tool/check_rules.dart --app <path> (rule R6)
lists string-named glyphs outside the thematic set.
- Icons:
NmFugueThemes(actions, navigation, status, forms, data, charts, telecom, network, real-estate, billing, marketing, parsing, ai); a 48 px (3×) tier for every bundled glyph (AI-made, same method as the Fugue 2× set);NmIconData.fugue(…, package:);NmCustomIcons— the telecom rasters drawn for SimBox (SIM and registration states, RSSI, QoS, modems, USB hubs, reader, operator marks) in 16 / 32 / 48 px;NmIconData.custom. Archive size 19 MB → about 8 MB. - Adaptive labels:
NmAdaptiveLabel/NmLabelLevel; used byNmButton(with an icon),NmFilterChip,NmActionChipand dense table headers.NmSectionTitleandNmPageHeadertake anicon. - Navigation tree:
NmNavDestination.children,NmNavTree(pathTo,find,firstLeaf); the sidebar expands parents (persisted), opens a flyout when collapsed; phones show the branch's children as tabs. - Rules: R4 checks the 16 / 32 / 48 px tiers of Fugue and custom rasters; new R6 for apps.
- Repository layout: the package lives in
flutter/nativemind_widgets/of widgets.nativemind.net.
0.1.0 #
First release.
- Theme:
NmThemewith 4 palettes (NativeMind Blue, Green, Orange, Pink; custom and seeded palettes), 3 presets (consumer,product,workspace), styles, densities (dense as a per-widget opt-in), light and derived dark modes, form factors; tokens throughcontext.nm. - Icons: the full Fugue set (16 / 32 px, shadow and shadowless) as
NmFugue; bundled SVG flags, payment and app marks asNmSvgIcons. - Localization: en, ru, th, hi, zh-Hans complete, extra partial locales, English fallback;
NmLocaleControllerpersists the choice and migrates legacy keys. - App shell:
NmApp,NmAdaptiveScaffold(bottom bar, collapsible sidebar, agent panel),NmTopBar,NmBottomNavBar,NmLanguageSelector. - Primitives and composites: buttons, pills, fields, selects, states, cards,
NmDataTable(sorting, selection, row and bulk actions, columns editor, phone cards),NmTableToolbar,NmEditableList, dialogs and sheets, registry / detail workspace, console, settings form. - Charts:
NmFlowChart(Sankey),NmShareComparisonBars,NmVisibilityMatrix,NmRankedBarList, sparkline, year bars, link graph, goal chart. - Domain libraries:
real_estate,telecom,network,billing,marketing,parsing,ai. - Tooling:
tool/check_rules.dart(icons, names, layering, Fugue pairs, translations),tool/check_catalog.dart,tool/sync_fugue.dart,tool/sync_svg.dart,tool/gen_l10n.dart.
