diff --git a/sdk/lib/theme/colors.dart b/sdk/lib/theme/colors.dart new file mode 100644 index 0000000000000000000000000000000000000000..658ababcef09435df47b28035d32e28714345c18 --- /dev/null +++ b/sdk/lib/theme/colors.dart @@ -0,0 +1,253 @@ +// Copyright 2015 The Chromium 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 'dart:sky' show Color; + +const Map Red = const { + 50: const Color(0xFFFFEBEE), + 100: const Color(0xFFFFCDD2), + 200: const Color(0xFFEF9A9A), + 300: const Color(0xFFE57373), + 400: const Color(0xFFEF5350), + 500: const Color(0xFFF44336), + 600: const Color(0xFFE53935), + 700: const Color(0xFFD32F2F), + 800: const Color(0xFFC62828), + 900: const Color(0xFFB71C1C), +}; + +const Map Pink = const { + 50: const Color(0xFFFCE4EC), + 100: const Color(0xFFF8BBD0), + 200: const Color(0xFFF48FB1), + 300: const Color(0xFFF06292), + 400: const Color(0xFFEC407A), + 500: const Color(0xFFE91E63), + 600: const Color(0xFFD81B60), + 700: const Color(0xFFC2185B), + 800: const Color(0xFFAD1457), + 900: const Color(0xFF880E4F), +}; + +const Map Purple = const { + 50: const Color(0xFFF3E5F5), + 100: const Color(0xFFE1BEE7), + 200: const Color(0xFFCE93D8), + 300: const Color(0xFFBA68C8), + 400: const Color(0xFFAB47BC), + 500: const Color(0xFF9C27B0), + 600: const Color(0xFF8E24AA), + 700: const Color(0xFF7B1FA2), + 800: const Color(0xFF6A1B9A), + 900: const Color(0xFF4A148C), +}; + +const Map DeepPurple = const { + 50: const Color(0xFFEDE7F6), + 100: const Color(0xFFD1C4E9), + 200: const Color(0xFFB39DDB), + 300: const Color(0xFF9575CD), + 400: const Color(0xFF7E57C2), + 500: const Color(0xFF673AB7), + 600: const Color(0xFF5E35B1), + 700: const Color(0xFF512DA8), + 800: const Color(0xFF4527A0), + 900: const Color(0xFF311B92), +}; + +const Map Indigo = const { + 50: const Color(0xFFE8EAF6), + 100: const Color(0xFFC5CAE9), + 200: const Color(0xFF9FA8DA), + 300: const Color(0xFF7986CB), + 400: const Color(0xFF5C6BC0), + 500: const Color(0xFF3F51B5), + 600: const Color(0xFF3949AB), + 700: const Color(0xFF303F9F), + 800: const Color(0xFF283593), + 900: const Color(0xFF1A237E), +}; + +const Map Blue = const { + 50: const Color(0xFFE3F2FD), + 100: const Color(0xFFBBDEFB), + 200: const Color(0xFF90CAF9), + 300: const Color(0xFF64B5F6), + 400: const Color(0xFF42A5F5), + 500: const Color(0xFF2196F3), + 600: const Color(0xFF1E88E5), + 700: const Color(0xFF1976D2), + 800: const Color(0xFF1565C0), + 900: const Color(0xFF0D47A1), +}; + +const Map LightBlue = const { + 50: const Color(0xFFE1F5FE), + 100: const Color(0xFFB3E5FC), + 200: const Color(0xFF81D4FA), + 300: const Color(0xFF4FC3F7), + 400: const Color(0xFF29B6F6), + 500: const Color(0xFF03A9F4), + 600: const Color(0xFF039BE5), + 700: const Color(0xFF0288D1), + 800: const Color(0xFF0277BD), + 900: const Color(0xFF01579B), +}; + +const Map Cyan = const { + 50: const Color(0xFFE0F7FA), + 100: const Color(0xFFB2EBF2), + 200: const Color(0xFF80DEEA), + 300: const Color(0xFF4DD0E1), + 400: const Color(0xFF26C6DA), + 500: const Color(0xFF00BCD4), + 600: const Color(0xFF00ACC1), + 700: const Color(0xFF0097A7), + 800: const Color(0xFF00838F), + 900: const Color(0xFF006064), +}; + +const Map Teal = const { + 50: const Color(0xFFE0F2F1), + 100: const Color(0xFFB2DFDB), + 200: const Color(0xFF80CBC4), + 300: const Color(0xFF4DB6AC), + 400: const Color(0xFF26A69A), + 500: const Color(0xFF009688), + 600: const Color(0xFF00897B), + 700: const Color(0xFF00796B), + 800: const Color(0xFF00695C), + 900: const Color(0xFF004D40), +}; + +const Map Green = const { + 50: const Color(0xFFE8F5E9), + 100: const Color(0xFFC8E6C9), + 200: const Color(0xFFA5D6A7), + 300: const Color(0xFF81C784), + 400: const Color(0xFF66BB6A), + 500: const Color(0xFF4CAF50), + 600: const Color(0xFF43A047), + 700: const Color(0xFF388E3C), + 800: const Color(0xFF2E7D32), + 900: const Color(0xFF1B5E20), +}; + +const Map LightGreen = const { + 50: const Color(0xFFF1F8E9), + 100: const Color(0xFFDCEDC8), + 200: const Color(0xFFC5E1A5), + 300: const Color(0xFFAED581), + 400: const Color(0xFF9CCC65), + 500: const Color(0xFF8BC34A), + 600: const Color(0xFF7CB342), + 700: const Color(0xFF689F38), + 800: const Color(0xFF558B2F), + 900: const Color(0xFF33691E), +}; + +const Map Lime = const { + 50: const Color(0xFFF9FBE7), + 100: const Color(0xFFF0F4C3), + 200: const Color(0xFFE6EE9C), + 300: const Color(0xFFDCE775), + 400: const Color(0xFFD4E157), + 500: const Color(0xFFCDDC39), + 600: const Color(0xFFC0CA33), + 700: const Color(0xFFAFB42B), + 800: const Color(0xFF9E9D24), + 900: const Color(0xFF827717), +}; + +const Map Yellow = const { + 50: const Color(0xFFFFFDE7), + 100: const Color(0xFFFFF9C4), + 200: const Color(0xFFFFF59D), + 300: const Color(0xFFFFF176), + 400: const Color(0xFFFFEE58), + 500: const Color(0xFFFFEB3B), + 600: const Color(0xFFFDD835), + 700: const Color(0xFFFBC02D), + 800: const Color(0xFFF9A825), + 900: const Color(0xFFF57F17), +}; + +const Map Amber = const { + 50: const Color(0xFFFFF8E1), + 100: const Color(0xFFFFECB3), + 200: const Color(0xFFFFE082), + 300: const Color(0xFFFFD54F), + 400: const Color(0xFFFFCA28), + 500: const Color(0xFFFFC107), + 600: const Color(0xFFFFB300), + 700: const Color(0xFFFFA000), + 800: const Color(0xFFFF8F00), + 900: const Color(0xFFFF6F00), +}; + +const Map Orange = const { + 50: const Color(0xFFFFF3E0), + 100: const Color(0xFFFFE0B2), + 200: const Color(0xFFFFCC80), + 300: const Color(0xFFFFB74D), + 400: const Color(0xFFFFA726), + 500: const Color(0xFFFF9800), + 600: const Color(0xFFFB8C00), + 700: const Color(0xFFF57C00), + 800: const Color(0xFFEF6C00), + 900: const Color(0xFFE65100), +}; + +const Map DeepOrange = const { + 50: const Color(0xFFFBE9E7), + 100: const Color(0xFFFFCCBC), + 200: const Color(0xFFFFAB91), + 300: const Color(0xFFFF8A65), + 400: const Color(0xFFFF7043), + 500: const Color(0xFFFF5722), + 600: const Color(0xFFF4511E), + 700: const Color(0xFFE64A19), + 800: const Color(0xFFD84315), + 900: const Color(0xFFBF360C), +}; + +const Map Brown = const { + 50: const Color(0xFFEFEBE9), + 100: const Color(0xFFD7CCC8), + 200: const Color(0xFFBCAAA4), + 300: const Color(0xFFA1887F), + 400: const Color(0xFF8D6E63), + 500: const Color(0xFF795548), + 600: const Color(0xFF6D4C41), + 700: const Color(0xFF5D4037), + 800: const Color(0xFF4E342E), + 900: const Color(0xFF3E2723), +}; + +const Map Grey = const { + 50: const Color(0xFFFAFAFA), + 100: const Color(0xFFF5F5F5), + 200: const Color(0xFFEEEEEE), + 300: const Color(0xFFE0E0E0), + 350: const Color(0xFFD6D6D6), // only for raised button while pressed or disabled + 400: const Color(0xFFBDBDBD), + 500: const Color(0xFF9E9E9E), + 600: const Color(0xFF757575), + 700: const Color(0xFF616161), + 800: const Color(0xFF424242), + 900: const Color(0xFF212121), +}; + +const Map BlueGrey = const { + 50: const Color(0xFFECEFF1), + 100: const Color(0xFFCFD8DC), + 200: const Color(0xFFB0BEC5), + 300: const Color(0xFF90A4AE), + 400: const Color(0xFF78909C), + 500: const Color(0xFF607D8B), + 600: const Color(0xFF546E7A), + 700: const Color(0xFF455A64), + 800: const Color(0xFF37474F), + 900: const Color(0xFF263238), +}; diff --git a/sdk/lib/theme/edges.dart b/sdk/lib/theme/edges.dart new file mode 100644 index 0000000000000000000000000000000000000000..4da5d9b44e66888660f5c2ef12344db6317ddc53 --- /dev/null +++ b/sdk/lib/theme/edges.dart @@ -0,0 +1,11 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +enum MaterialEdge { canvas, card, circle } + +const Map edges = const { + MaterialEdge.canvas: null, + MaterialEdge.card: 2.0, + MaterialEdge.circle: null, +}; diff --git a/sdk/lib/theme/shadows.dart b/sdk/lib/theme/shadows.dart new file mode 100644 index 0000000000000000000000000000000000000000..4f5697fdeb663c3d5901eeef565522b5309eb95a --- /dev/null +++ b/sdk/lib/theme/shadows.dart @@ -0,0 +1,60 @@ +// Copyright 2015 The Chromium 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 'dart:sky' show Color, Size; + +import '../painting/box_painter.dart'; + +const Map> shadows = const { + 1: const [ + const BoxShadow( + color: const Color(0x1F000000), + offset: const Size(0.0, 1.0), + blur: 3.0), + const BoxShadow( + color: const Color(0x3D000000), + offset: const Size(0.0, 1.0), + blur: 2.0), + ], + 2: const [ + const BoxShadow( + color: const Color(0x29000000), + offset: const Size(0.0, 3.0), + blur: 6.0), + const BoxShadow( + color: const Color(0x3B000000), + offset: const Size(0.0, 3.0), + blur: 6.0), + ], + 3: const [ + const BoxShadow( + color: const Color(0x30000000), + offset: const Size(0.0, 10.0), + blur: 20.0), + const BoxShadow( + color: const Color(0x3B000000), + offset: const Size(0.0, 6.0), + blur: 6.0), + ], + 4: const [ + const BoxShadow( + color: const Color(0x40000000), + offset: const Size(0.0, 14.0), + blur: 28.0), + const BoxShadow( + color: const Color(0x38000000), + offset: const Size(0.0, 10.0), + blur: 10.0), + ], + 5: const [ + const BoxShadow( + color: const Color(0x4E000000), + offset: const Size(0.0, 19.0), + blur: 28.0), + const BoxShadow( + color: const Color(0x38000000), + offset: const Size(0.0, 15.0), + blur: 12.0), + ], +}; diff --git a/sdk/lib/theme/typography.dart b/sdk/lib/theme/typography.dart new file mode 100644 index 0000000000000000000000000000000000000000..ffb3e5d95cbce02df902e4c3f1cd1d18d017ad45 --- /dev/null +++ b/sdk/lib/theme/typography.dart @@ -0,0 +1,53 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// See http://www.google.com/design/spec/style/typography.html + +import 'dart:sky'; + +import '../painting/text_style.dart'; + +// TODO(eseidel): Font weights are supposed to be language relative! +// These values are for English-like text. +class _TextTheme { + _TextTheme(Color color54, Color color87) + : display4 = new TextStyle(fontSize: 112.0, fontWeight: FontWeight.w100, color: color54), + display3 = new TextStyle(fontSize: 56.0, fontWeight: FontWeight.w400, color: color54), + display2 = new TextStyle(fontSize: 45.0, fontWeight: FontWeight.w400, color: color54), + display1 = new TextStyle(fontSize: 34.0, fontWeight: FontWeight.w400, color: color54), + headline = new TextStyle(fontSize: 24.0, fontWeight: FontWeight.w400, color: color87), + title = new TextStyle(fontSize: 20.0, fontWeight: FontWeight.w500, color: color87), + subhead = new TextStyle(fontSize: 16.0, fontWeight: FontWeight.w400, color: color87), + body2 = new TextStyle(fontSize: 14.0, fontWeight: FontWeight.w500, color: color87), + body1 = new TextStyle(fontSize: 14.0, fontWeight: FontWeight.w400, color: color87), + caption = new TextStyle(fontSize: 12.0, fontWeight: FontWeight.w400, color: color54), + button = new TextStyle(fontSize: 14.0, fontWeight: FontWeight.w500, color: color87); + + final TextStyle display4; + final TextStyle display3; + final TextStyle display2; + final TextStyle display1; + final TextStyle headline; + final TextStyle title; + final TextStyle subhead; + final TextStyle body2; + final TextStyle body1; + final TextStyle caption; + final TextStyle button; +} + + +final _TextTheme black = new _TextTheme( + const Color(0xFF757575), + const Color(0xFF212121) +); + + +final _TextTheme white = new _TextTheme( + const Color(0xFF8A8A8A), + const Color(0xFFDEDEDE) +); + +// TODO(abarth): Maybe this should be hard-coded in Scaffold? +const String typeface = 'font-family: sans-serif'; diff --git a/sdk/lib/theme/view_configuration.dart b/sdk/lib/theme/view_configuration.dart new file mode 100644 index 0000000000000000000000000000000000000000..b31a5383869721c5b700e42b9a5add3d1e9d5911 --- /dev/null +++ b/sdk/lib/theme/view_configuration.dart @@ -0,0 +1,40 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Modeled after Android's ViewConfiguration: +// https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/ViewConfiguration.java + +const double kNotificationAreaHeight = 25.0; +// TODO(ianh): Figure out actual specced height for status bar +const double kStatusBarHeight = 50.0; + +// TODO(eseidel) Toolbar needs to change size based on orientation: +// http://www.google.com/design/spec/layout/structure.html#structure-app-bar +// Mobile Landscape: 48dp +// Mobile Portrait: 56dp +// Tablet/Desktop: 64dp +const double kToolBarHeight = 56.0; + +const double kMaterialDrawerHeight = 140.0; +const double kScrollbarSize = 10.0; +const double kScrollbarFadeDuration = 250.0; +const double kScrollbarFadeDelay = 300.0; +const double kFadingEdgeLength = 12.0; +const double kPressedStateDuration = 64.0; +const double kDefaultLongPressTimeout = 500.0; +const double kTapTimeout = 100.0; +const double kJumpTapTimeout = 500.0; +const double kDoubleTapTimeout = 300.0; +const double kDoubleTapMinTime = 40.0; +const double kHoverTapTimeout = 150.0; +const double kHoverTapSlop = 20.0; +const double kZoomControlsTimeout = 3000.0; +const double kEdgeSlop = 12.0; +const double kTouchSlop = 8.0; +const double kDoubleTapTouchSlop = kTouchSlop; +const double kPagingTouchSlop = kTouchSlop * 2.0; +const double kDoubleTapSlop = 100.0; +const double kWindowTouchSlop = 16.0; +const double kMinFlingVelocity = 50.0; +const double kMaxFlingVelocity = 8000.0;