diff --git a/third_party/site-shared/README.md b/third_party/site-shared/README.md new file mode 100644 index 0000000000..d410e33808 --- /dev/null +++ b/third_party/site-shared/README.md @@ -0,0 +1,7 @@ +# Content and infrastructure shared across Dart and Flutter websites. + +Vendoring resource files from: +- https://github.com/dart-lang/site-shared/tree/main/pkgs/dash_design + +Vendored files can be updated by running: +`./update-site-shared.sh` diff --git a/third_party/site-shared/dash_design/LICENSE b/third_party/site-shared/dash_design/LICENSE new file mode 100644 index 0000000000..b03a788683 --- /dev/null +++ b/third_party/site-shared/dash_design/LICENSE @@ -0,0 +1,27 @@ +Copyright 2024, the Dart project authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/third_party/site-shared/dash_design/lib/styles.scss b/third_party/site-shared/dash_design/lib/styles.scss new file mode 100644 index 0000000000..b575311200 --- /dev/null +++ b/third_party/site-shared/dash_design/lib/styles.scss @@ -0,0 +1,33 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +/// styles.scss: +/// +/// Incorporates all styles and CSS custom properties (variables) +/// from the dash_design package. +/// +/// Most variables are added at the `:root` (the `html` element), +/// but dark mode variable overrides are added to the `body` element if +/// the class `dark-theme` is added to it. + +@use 'styles/variables'; + +$google-site: false !default; + +:root { + @include variables.typography; + @include variables.shared-colors; + + @include variables.light-theme; + + @if $google-site { + @include variables.google-overrides; + } +} + +body { + &.dark-theme { + @include variables.dark-theme; + } +} diff --git a/third_party/site-shared/dash_design/lib/styles/variables.scss b/third_party/site-shared/dash_design/lib/styles/variables.scss new file mode 100644 index 0000000000..96d082ddf0 --- /dev/null +++ b/third_party/site-shared/dash_design/lib/styles/variables.scss @@ -0,0 +1,52 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +/// styles/variables.scss: +/// +/// Mixins that can be included to load CSS custom properties (variables) +/// into any desired scope. + +/// Shared typography CSS variables. +@mixin typography { + /// Used for body text and smaller UI elements, like labels. + --dash-default-fontFamily: 'Roboto', sans-serif; + + /// Used for headlines, titles, and larger UI elements. + --dash-display-fontFamily: 'Roboto', sans-serif; + + /// Used for monospace text, such as code blocks. + --dash-mono-fontFamily: 'Roboto Mono', 'Source Code Pro', 'Cascadia Mono', 'JetBrains Mono', monospace; + + /// Used for icons, such as the magnifying glass for search. + --dash-symbol-fontFamily: 'Material Symbols', 'Material Symbols Outlined'; +} + +/// Color-related, theme-agnostic CSS variables. +@mixin shared-colors { + +} + +/// Light-theme specific CSS variables. +@mixin light-theme { + /// The default text color, used for body text. + --dash-surface-fgColor: #4a4a4a; +} + +/// Dark-theme specific CSS variables. +@mixin dark-theme { + --dash-surface-fgColor: #dcdcdc; +} + +/// CSS variables that specify values that can only be used by Google sites, +/// such as enabling the Google Sans font families. +/// +/// These overrides should be included after all other variables are defined. +@mixin google-overrides { + // Non-Google sites, such as self-hosted API docs, + // can't use Google Sans or Google Symbols. + --dash-default-fontFamily: 'Google Sans Text', 'Google Sans', 'Roboto', sans-serif; + --dash-display-fontFamily: 'Google Sans', 'Google Sans Text', 'Roboto', sans-serif; + --dash-mono-fontFamily: 'Google Sans Mono', 'Roboto Mono', 'Source Code Pro', 'Cascadia Mono', 'JetBrains Mono', monospace; + --dash-symbol-fontFamily: 'Google Symbols', 'Material Symbols', 'Material Symbols Outlined'; +} diff --git a/third_party/site-shared/last-updated.txt b/third_party/site-shared/last-updated.txt new file mode 100644 index 0000000000..128bd02dd5 --- /dev/null +++ b/third_party/site-shared/last-updated.txt @@ -0,0 +1,2 @@ +commit c30707803572c7c7c2fd3650d8c6e2a2e61731f4 +2024-11-06T15:44+01:00 diff --git a/third_party/site-shared/update-site-shared.sh b/third_party/site-shared/update-site-shared.sh new file mode 100755 index 0000000000..4ceb999b92 --- /dev/null +++ b/third_party/site-shared/update-site-shared.sh @@ -0,0 +1,27 @@ +#!/bin/bash +set -e + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +TEMP_DIR=$(mktemp -d) + +# Clone site-shared repository +git clone https://github.com/dart-lang/site-shared "$TEMP_DIR" + +# Delete the previous version +rm -rf "$SCRIPT_DIR/dash_design" + +# Copy css, js, png files to dash_design/ +mkdir "$SCRIPT_DIR/dash_design" +cp -r "$TEMP_DIR"/pkgs/dash_design/lib/ "$SCRIPT_DIR/dash_design/" + +# Copy license +cp "$TEMP_DIR/pkgs/dash_design/LICENSE" "$SCRIPT_DIR/dash_design/LICENSE" + +# Update the last updated file: +cd "$TEMP_DIR"/pkgs/dash_design/ && git show --summary | grep commit | head -1 >"$SCRIPT_DIR/last-updated.txt" +date -Iminutes >>"$SCRIPT_DIR/last-updated.txt" + +# Cleanup +cd "$SCRIPT_DIR" +rm -rf "$TEMP_DIR"