Flutter DuskMoon UI Design System
Complete component library for Flutter apps with codegen-driven theming, adaptive (Material/Cupertino) widgets, platform-aware settings UI, feedback helpers, and data visualization.
Quick Start
Umbrella package (recommended)
Add duskmoon_ui to get theme, widgets, settings, feedback, forms, visualization, theme BLoC, and code-engine primitives in one import:
# pubspec.yaml
dependencies:
duskmoon_ui: ^1.6.0
import 'package:duskmoon_ui/duskmoon_ui.dart';
Individual packages
dependencies:
duskmoon_theme: ^1.6.0 # Theme only
duskmoon_widgets: ^1.6.0 # Adaptive widgets, markdown, chat
duskmoon_settings: ^1.6.0 # Settings UI
duskmoon_feedback: ^1.6.0 # Dialogs, toasts, snackbars
duskmoon_form: ^1.6.0 # BLoC-based form management
duskmoon_visualization: ^1.6.0 # Data visualization charts
duskmoon_theme_bloc: ^1.6.0 # BLoC persistence
duskmoon_adaptive_scaffold: ^1.6.0 # Responsive scaffold
duskmoon_code_engine: ^1.6.0 # Code editor engine
Skill Modules
Detailed documentation is split by package:
- duskmoon_ui.md — Umbrella package direct exports and
DmEditorTheme
- duskmoon_theme.md — Theme system, color schemes, text themes, extensions
- duskmoon_widgets.md — Adaptive widgets (Material/Cupertino/Fluent) plus markdown rendering, markdown input, chat, and code editor
- duskmoon_settings.md — Platform-aware settings UI (Material/Cupertino/Fluent)
- duskmoon_feedback.md — Dialogs, snackbars, toasts, bottom sheets
- duskmoon_form.md — BLoC-based form state management with adaptive field builders and field BLoCs
- duskmoon_visualization.md — Data visualization: line, bar, scatter, heatmap, network graph, map chart
- duskmoon_theme_bloc.md — BLoC for persisting theme via SharedPreferences
- duskmoon_adaptive_scaffold.md — Responsive scaffold with M3 adaptive layout, breakpoints, and slot-based composition
- duskmoon_code_engine.md — Pure Dart code editor engine with 19 language grammars, incremental parsing, and syntax highlighting
Minimal App Example
import 'package:flutter/material.dart';
import 'package:duskmoon_ui/duskmoon_ui.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: DmThemeData.sunshine(),
darkTheme: DmThemeData.moonlight(),
themeMode: ThemeMode.system,
home: const HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: DmAppBar(title: const Text('DuskMoon App')),
body: Center(
child: DmButton(
onPressed: () => showDmSuccessToast(
context: context,
message: 'Hello from DuskMoon!',
),
child: const Text('Tap me'),
),
),
);
}
}
Architecture Overview
duskmoon_theme <- Pure theme, zero external deps
+-- duskmoon_theme_bloc <- BLoC for theme persistence
+-- duskmoon_widgets <- Adaptive widgets + markdown + chat + code editor
| +-- duskmoon_code_engine (for DmCodeEditor)
+-- duskmoon_settings <- Settings UI (Material/Cupertino/Fluent)
+-- duskmoon_feedback <- Dialogs, snackbars, toasts, bottom sheets
+-- duskmoon_form <- BLoC-based form management (depends on theme + widgets)
+-- duskmoon_visualization <- Data visualization charts (depends on theme)
+-- duskmoon_code_engine <- Pure Dart code editor (re-exported by umbrella)
|
duskmoon_ui <- Umbrella: re-exports primary packages
Provides DmEditorTheme (fromTheme, sunshine, moonlight)
duskmoon_code_engine <- Pure Dart code editor (standalone)
duskmoon_adaptive_scaffold <- Responsive scaffold (forked, independently versioned)
duskmoon_ui does not directly export duskmoon_adaptive_scaffold; import
that package separately for low-level scaffold APIs.
Conventions
- All public classes use
Dm prefix
- Factory classes are
abstract final with static methods
- Generated token files use
.g.dart suffix in src/generated/
- BLoC classes (user-subclassable) keep original names (e.g.,
FormBloc, TextFieldBloc); only UI widgets get Dm prefix
- Platform resolution is 4-tier: widget
platformOverride -> DmPlatformOverride InheritedWidget -> DuskmoonApp -> Theme.of(context).platform
DmPlatformStyle has 3 values: material, cupertino, fluent
1---2name: flutter-duskmoon3description: Flutter DuskMoon UI design system — theme, adaptive widgets, settings, feedback, forms, data visualization, code editor engine, and BLoC theme persistence. Use when building Flutter apps with duskmoon_ui, duskmoon_theme, duskmoon_widgets, duskmoon_settings, duskmoon_feedback, duskmoon_form, duskmoon_visualization, duskmoon_code_engine, or duskmoon_theme_bloc packages.4---56# Flutter DuskMoon UI Design System78Complete component library for Flutter apps with codegen-driven theming, adaptive (Material/Cupertino) widgets, platform-aware settings UI, feedback helpers, and data visualization.910## Quick Start1112### Umbrella package (recommended)1314Add `duskmoon_ui` to get theme, widgets, settings, feedback, forms, visualization, theme BLoC, and code-engine primitives in one import:1516```yaml17# pubspec.yaml18dependencies:19 duskmoon_ui: ^1.6.020```2122```dart23import 'package:duskmoon_ui/duskmoon_ui.dart';24```2526### Individual packages2728```yaml29dependencies:30 duskmoon_theme: ^1.6.0 # Theme only31 duskmoon_widgets: ^1.6.0 # Adaptive widgets, markdown, chat32 duskmoon_settings: ^1.6.0 # Settings UI33 duskmoon_feedback: ^1.6.0 # Dialogs, toasts, snackbars34 duskmoon_form: ^1.6.0 # BLoC-based form management35 duskmoon_visualization: ^1.6.0 # Data visualization charts36 duskmoon_theme_bloc: ^1.6.0 # BLoC persistence37 duskmoon_adaptive_scaffold: ^1.6.0 # Responsive scaffold38 duskmoon_code_engine: ^1.6.0 # Code editor engine39```4041## Skill Modules4243Detailed documentation is split by package:4445- [duskmoon_ui.md](duskmoon_ui.md) — Umbrella package direct exports and `DmEditorTheme`46- [duskmoon_theme.md](duskmoon_theme.md) — Theme system, color schemes, text themes, extensions47- [duskmoon_widgets.md](duskmoon_widgets.md) — Adaptive widgets (Material/Cupertino/Fluent) plus markdown rendering, markdown input, chat, and code editor48- [duskmoon_settings.md](duskmoon_settings.md) — Platform-aware settings UI (Material/Cupertino/Fluent)49- [duskmoon_feedback.md](duskmoon_feedback.md) — Dialogs, snackbars, toasts, bottom sheets50- [duskmoon_form.md](duskmoon_form.md) — BLoC-based form state management with adaptive field builders and field BLoCs51- [duskmoon_visualization.md](duskmoon_visualization.md) — Data visualization: line, bar, scatter, heatmap, network graph, map chart52- [duskmoon_theme_bloc.md](duskmoon_theme_bloc.md) — BLoC for persisting theme via SharedPreferences53- [duskmoon_adaptive_scaffold.md](duskmoon_adaptive_scaffold.md) — Responsive scaffold with M3 adaptive layout, breakpoints, and slot-based composition54- [duskmoon_code_engine.md](duskmoon_code_engine.md) — Pure Dart code editor engine with 19 language grammars, incremental parsing, and syntax highlighting5556## Minimal App Example5758```dart59import 'package:flutter/material.dart';60import 'package:duskmoon_ui/duskmoon_ui.dart';6162void main() => runApp(const MyApp());6364class MyApp extends StatelessWidget {65 const MyApp({super.key});6667 @override68 Widget build(BuildContext context) {69 return MaterialApp(70 theme: DmThemeData.sunshine(),71 darkTheme: DmThemeData.moonlight(),72 themeMode: ThemeMode.system,73 home: const HomePage(),74 );75 }76}7778class HomePage extends StatelessWidget {79 const HomePage({super.key});8081 @override82 Widget build(BuildContext context) {83 return Scaffold(84 appBar: DmAppBar(title: const Text('DuskMoon App')),85 body: Center(86 child: DmButton(87 onPressed: () => showDmSuccessToast(88 context: context,89 message: 'Hello from DuskMoon!',90 ),91 child: const Text('Tap me'),92 ),93 ),94 );95 }96}97```9899## Architecture Overview100101```102duskmoon_theme <- Pure theme, zero external deps103 +-- duskmoon_theme_bloc <- BLoC for theme persistence104 +-- duskmoon_widgets <- Adaptive widgets + markdown + chat + code editor105 | +-- duskmoon_code_engine (for DmCodeEditor)106 +-- duskmoon_settings <- Settings UI (Material/Cupertino/Fluent)107 +-- duskmoon_feedback <- Dialogs, snackbars, toasts, bottom sheets108 +-- duskmoon_form <- BLoC-based form management (depends on theme + widgets)109 +-- duskmoon_visualization <- Data visualization charts (depends on theme)110 +-- duskmoon_code_engine <- Pure Dart code editor (re-exported by umbrella)111 |112 duskmoon_ui <- Umbrella: re-exports primary packages113 Provides DmEditorTheme (fromTheme, sunshine, moonlight)114115duskmoon_code_engine <- Pure Dart code editor (standalone)116duskmoon_adaptive_scaffold <- Responsive scaffold (forked, independently versioned)117```118119`duskmoon_ui` does not directly export `duskmoon_adaptive_scaffold`; import120that package separately for low-level scaffold APIs.121122## Conventions123124- All public classes use `Dm` prefix125- Factory classes are `abstract final` with static methods126- Generated token files use `.g.dart` suffix in `src/generated/`127- BLoC classes (user-subclassable) keep original names (e.g., `FormBloc`, `TextFieldBloc`); only UI widgets get `Dm` prefix128- Platform resolution is 4-tier: widget `platformOverride` -> `DmPlatformOverride` InheritedWidget -> `DuskmoonApp` -> `Theme.of(context).platform`129- `DmPlatformStyle` has 3 values: `material`, `cupertino`, `fluent`