generateBoth static method

String generateBoth({
  1. required ThemePalette light,
  2. required ThemePalette dark,
  3. FontConfig fonts = const FontConfig(),
  4. RadiusConfig radius = const RadiusConfig(),
})

Generate CSS for both light and dark mode.

Implementation

static String generateBoth({
  required ThemePalette light,
  required ThemePalette dark,
  FontConfig fonts = const FontConfig(),
  RadiusConfig radius = const RadiusConfig(),
}) {
  final StringBuffer buffer = StringBuffer();

  // Light mode (includes static values)
  // Use both :root and html.light so variables work for:
  // - Default/fallback (:root)
  // - Document-level scrollbars when light class is on html (html.light)
  buffer.writeln(
    generate(
      light,
      selector: ':root, html.light, .light',
      fonts: fonts,
      radius: radius,
      includeStatic: true,
    ),
  );

  buffer.writeln();

  // Dark mode (no static values, they inherit from :root)
  // Use both html.dark and .dark so variables work for:
  // - Document-level scrollbars (html.dark)
  // - Component-level styling (.dark on #arcane-root)
  buffer.writeln(
    generate(
      dark,
      selector: 'html.dark, .dark',
      fonts: fonts,
      radius: radius,
      includeStatic: false,
    ),
  );

  return buffer.toString();
}