NmEditionTheme.of constructor

NmEditionTheme.of(
  1. NmConfig config
)

Reads palette (an NmPalette id or name: blue, green, orange, pink), gradient, gradient2 and forecolor* of config. Without palette the accent comes from gradient (last stop), else blue.

Implementation

// written by Claude Code (generated by Claude Code), 2026-10-13; SDD: flows/sdd-widgets-handmade
factory NmEditionTheme.of(NmConfig config) {
  final m = config.map;
  final g = m['gradient'] is LinearGradient ? m['gradient'] as LinearGradient : null;
  final g2 = m['gradient2'] is LinearGradient ? m['gradient2'] as LinearGradient : null;
  final named = NmPalette.byName('${m['palette'] ?? ''}');
  final palette =
      named ??
      (g != null && g.colors.length >= 2
          ? NmPalette.custom(displayName: config.title.isEmpty ? 'Edition' : config.title, brand: g.colors.last, brandLight: g.colors.first)
          : NmPalette.blue);
  return NmEditionTheme(
    palette: palette,
    gradient: g,
    gradient2: g2,
    forecolors: [
      for (final k in const ['forecolor', 'forecolor2', 'forecolor3', 'forecolor4', 'forecolor5']) m[k] is Color ? m[k] as Color : null,
    ],
  );
}