// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import '../../layout/letter_spacing.dart'; import 'colors.dart'; final ThemeData craneTheme = _buildCraneTheme(); IconThemeData _customIconTheme(IconThemeData original, Color color) { return original.copyWith(color: color); } ThemeData _buildCraneTheme() { final ThemeData base = ThemeData.light(); return base.copyWith( colorScheme: const ColorScheme.light().copyWith( primary: cranePurple800, secondary: craneRed700, error: craneErrorOrange, ), hintColor: craneWhite60, indicatorColor: cranePrimaryWhite, scaffoldBackgroundColor: cranePrimaryWhite, cardColor: cranePrimaryWhite, highlightColor: Colors.transparent, textTheme: _buildCraneTextTheme(base.textTheme), textSelectionTheme: const TextSelectionThemeData( selectionColor: cranePurple700, ), primaryTextTheme: _buildCraneTextTheme(base.primaryTextTheme), iconTheme: _customIconTheme(base.iconTheme, craneWhite60), primaryIconTheme: _customIconTheme(base.iconTheme, cranePrimaryWhite), ); } TextTheme _buildCraneTextTheme(TextTheme base) { return GoogleFonts.ralewayTextTheme( base.copyWith( displayLarge: base.displayLarge!.copyWith( fontWeight: FontWeight.w300, fontSize: 96, ), displayMedium: base.displayMedium!.copyWith( fontWeight: FontWeight.w400, fontSize: 60, ), displaySmall: base.displaySmall!.copyWith( fontWeight: FontWeight.w600, fontSize: 48, ), headlineMedium: base.headlineMedium!.copyWith( fontWeight: FontWeight.w600, fontSize: 34, ), headlineSmall: base.headlineSmall!.copyWith( fontWeight: FontWeight.w600, fontSize: 24, ), titleLarge: base.titleLarge!.copyWith( fontWeight: FontWeight.w600, fontSize: 20, ), titleMedium: base.titleMedium!.copyWith( fontWeight: FontWeight.w500, fontSize: 16, letterSpacing: letterSpacingOrNone(0.5), ), titleSmall: base.titleSmall!.copyWith( fontWeight: FontWeight.w600, fontSize: 12, color: craneGrey, ), bodyLarge: base.bodyLarge!.copyWith( fontWeight: FontWeight.w500, fontSize: 16, ), bodyMedium: base.bodyMedium!.copyWith( fontWeight: FontWeight.w400, fontSize: 14, ), labelLarge: base.labelLarge!.copyWith( fontWeight: FontWeight.w600, fontSize: 13, letterSpacing: letterSpacingOrNone(0.8), ), bodySmall: base.bodySmall!.copyWith( fontWeight: FontWeight.w500, fontSize: 12, color: craneGrey, ), labelSmall: base.labelSmall!.copyWith( fontWeight: FontWeight.w600, fontSize: 12, ), ), ); }