From ef1abffb1375d785f82d9fd6e89d5d4c54c448ce Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Wed, 4 Nov 2020 11:39:07 -0500 Subject: [PATCH 1/5] refactor: convert themes to sass mixins and assign with both classes and media query --- .../styles/rose/variables/color/_css.scss | 128 ++++++++++-------- 1 file changed, 71 insertions(+), 57 deletions(-) diff --git a/addons/rose/addon/styles/rose/variables/color/_css.scss b/addons/rose/addon/styles/rose/variables/color/_css.scss index 5c910e93a..3e554cc07 100644 --- a/addons/rose/addon/styles/rose/variables/color/_css.scss +++ b/addons/rose/addon/styles/rose/variables/color/_css.scss @@ -4,7 +4,7 @@ */ // Light Mode -:root { +@mixin light-mode { // absolutes --white: #{color(white)}; --black: #{color(black)}; @@ -80,62 +80,76 @@ } // Dark Mode +@mixin dark-mode { + // poles + --subtle: var(--black); + --stark: #{color(ui-gray, 100)}; + --stark-components: 255, 255, 255; + + // theme colors + --info-subtler-3: #{color(blue, 800)}; + --info-subtler-2: #{color(blue, 700)}; + --info-subtler-1: #{color(blue, 600)}; + --info: #{color(blue)}; + --info-starker-1: #{color(blue, 300)}; + --info-starker-2: #{color(blue, 200)}; + + --alert-subtler-2: #{color(orange, 900)}; + --alert-subtler-1: #{color(orange, 800)}; + --alert: #{color(orange)}; + --alert-starker-1: #{color(orange, 200)}; + + --warning-subtler-2: #{color(yellow, 900)}; + --warning-subtler-1: #{color(yellow, 800)}; + --warning: #{color(yellow)}; + --warning-starker-1: #{color(yellow, 200)}; + + --failure-subtler-2: #{color(red, 900)}; + --failure-subtler-1: #{color(red, 800)}; + --failure: #{color(red, 300)}; + --failure-starker-1: #{color(red, 200)}; + + --success-subtler-2: #{color(green, 900)}; + --success-subtler-1: #{color(green, 800)}; + --success: #{color(green, 700)}; + --success-starker-1: #{color(green, 400)}; + + --action-subtler-2: #{darken(color(blue, 900), 10%)}; + --action-subtler-1h: #{darken(color(blue, 900), 5%)}; + --action-subtler-1: #{color(blue, 800)}; + --action: #{color(blue, 400)}; + --action-starker-1: #{color(blue, 200)}; + + --ui-border-subtler-1: #{color(ui-gray, 800)}; + --ui-border: #{color(ui-gray, 700)}; + + --ui-gray-subtler-6: #{color(ui-gray, 900)}; + --ui-gray-subtler-5: #{color(ui-gray, 800)}; + --ui-gray-subtler-4: #{color(ui-gray, 700)}; + --ui-gray-subtler-3: #{color(ui-gray, 600)}; + --ui-gray-subtler-2: #{color(ui-gray, 500)}; + --ui-gray-subtler-1: #{color(ui-gray, 400)}; + --ui-gray: #{color(ui-gray, 300)}; + --ui-gray-starker-1: #{color(ui-gray, 200)}; + --ui-gray-starker-2: #{color(ui-gray, 100)}; + --ui-gray-starker-3: #{color(ui-gray, 050)}; + --ui-gray-starker-4: #{color(ui-gray, 010)}; + + --ui-header-subtler: #{color(ui-cool-gray, 100)}; +} + +// Light mode is the default, hence it is applied to `html` by default +.ember-application, +.ember-application.rose-theme-light { + @include light-mode; +} + @media (prefers-color-scheme: dark) { - :root { - // poles - --subtle: var(--black); - --stark: #{color(ui-gray, 100)}; - --stark-components: 255, 255, 255; - - // theme colors - --info-subtler-3: #{color(blue, 800)}; - --info-subtler-2: #{color(blue, 700)}; - --info-subtler-1: #{color(blue, 600)}; - --info: #{color(blue)}; - --info-starker-1: #{color(blue, 300)}; - --info-starker-2: #{color(blue, 200)}; - - --alert-subtler-2: #{color(orange, 900)}; - --alert-subtler-1: #{color(orange, 800)}; - --alert: #{color(orange)}; - --alert-starker-1: #{color(orange, 200)}; - - --warning-subtler-2: #{color(yellow, 900)}; - --warning-subtler-1: #{color(yellow, 800)}; - --warning: #{color(yellow)}; - --warning-starker-1: #{color(yellow, 200)}; - - --failure-subtler-2: #{color(red, 900)}; - --failure-subtler-1: #{color(red, 800)}; - --failure: #{color(red, 300)}; - --failure-starker-1: #{color(red, 200)}; - - --success-subtler-2: #{color(green, 900)}; - --success-subtler-1: #{color(green, 800)}; - --success: #{color(green, 700)}; - --success-starker-1: #{color(green, 400)}; - - --action-subtler-2: #{darken(color(blue, 900), 10%)}; - --action-subtler-1h: #{darken(color(blue, 900), 5%)}; - --action-subtler-1: #{color(blue, 800)}; - --action: #{color(blue, 400)}; - --action-starker-1: #{color(blue, 200)}; - - --ui-border-subtler-1: #{color(ui-gray, 800)}; - --ui-border: #{color(ui-gray, 700)}; - - --ui-gray-subtler-6: #{color(ui-gray, 900)}; - --ui-gray-subtler-5: #{color(ui-gray, 800)}; - --ui-gray-subtler-4: #{color(ui-gray, 700)}; - --ui-gray-subtler-3: #{color(ui-gray, 600)}; - --ui-gray-subtler-2: #{color(ui-gray, 500)}; - --ui-gray-subtler-1: #{color(ui-gray, 400)}; - --ui-gray: #{color(ui-gray, 300)}; - --ui-gray-starker-1: #{color(ui-gray, 200)}; - --ui-gray-starker-2: #{color(ui-gray, 100)}; - --ui-gray-starker-3: #{color(ui-gray, 050)}; - --ui-gray-starker-4: #{color(ui-gray, 010)}; - - --ui-header-subtler: #{color(ui-cool-gray, 100)}; + .ember-application { + @include dark-mode; } } + +.ember-application.rose-theme-dark { + @include dark-mode; +} From 5c1f79f98dd4e613cc405ca34cf821467ffc82ee Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Wed, 4 Nov 2020 12:05:44 -0500 Subject: [PATCH 2/5] refactor: update component-specific dark mode styles to account for class toggle --- .../styles/rose/components/card/_link.scss | 23 ++++++++++++--- .../rose/components/dropdown/_dropdown.scss | 27 +++++++++++++----- .../styles/rose/components/header/_index.scss | 24 ++++++++++++---- .../addon/styles/rose/variables/_opacity.scss | 28 ++++++++++++++----- 4 files changed, 79 insertions(+), 23 deletions(-) diff --git a/addons/rose/addon/styles/rose/components/card/_link.scss b/addons/rose/addon/styles/rose/components/card/_link.scss index 605b274cb..8c102c151 100644 --- a/addons/rose/addon/styles/rose/components/card/_link.scss +++ b/addons/rose/addon/styles/rose/components/card/_link.scss @@ -6,6 +6,24 @@ $xxxs: sizing.rems(xxxs); // 2 .rose-card-link { + + --background-color-light: transparent; + --background-color-dark: var(--ui-gray-subtler-6); + + --background-color: var(--background-color-light); + + .ember-application.rose-theme-light & { + --background-color: var(--background-color-light); + } + + @media (prefers-color-scheme: dark) { + --background-color: var(--background-color-dark); + } + + .ember-application.rose-theme-dark & { + --background-color: var(--background-color-dark); + } + @include type.type(s); border: sizing.rems(xxxxs) solid var(--ui-gray-subtler-2); border-radius: sizing.rems(xxxs); @@ -15,10 +33,7 @@ $xxxs: sizing.rems(xxxs); // 2 margin: 0 sizing.rems(m) sizing.rems(m) 0; box-shadow: 0 $xxxs $xxxs rgba(var(--stark-components), var(--opacity-4)), 0 $xxxs $xxxs rgba(var(--stark-components), var(--opacity-4)); - - @media (prefers-color-scheme: dark) { - background-color: var(--ui-gray-subtler-6); - } + background-color: var(--background-color); a { text-decoration: none; diff --git a/addons/rose/addon/styles/rose/components/dropdown/_dropdown.scss b/addons/rose/addon/styles/rose/components/dropdown/_dropdown.scss index 0c0069b00..4b75b3ad5 100644 --- a/addons/rose/addon/styles/rose/components/dropdown/_dropdown.scss +++ b/addons/rose/addon/styles/rose/components/dropdown/_dropdown.scss @@ -3,10 +3,27 @@ $xs: sizing.rems(xs); // 8 $xxs: sizing.rems(xxs); // 4 -$chevron: "data:image/svg+xml;utf-8,"; -$chevronWhite: "data:image/svg+xml;utf-8,"; +$chevron: url("data:image/svg+xml;utf-8,"); +$chevronWhite: url("data:image/svg+xml;utf-8,"); .rose-dropdown { + --background-image-light: #{$chevron}; + --background-image-dark: #{$chevronWhite}; + + --background-image: var(--background-image-light); + + .ember-application.rose-theme-light & { + --background-image: var(--background-image-light); + } + + @media (prefers-color-scheme: dark) { + --background-image: var(--background-image-dark); + } + + .ember-application.rose-theme-dark & { + --background-image: var(--background-image-dark); + } + position: relative; display: inline-block; @@ -59,14 +76,10 @@ $chevronWhite: "data:image/svg+xml;utf-8, Date: Wed, 4 Nov 2020 13:51:37 -0500 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20add=20initial=20colo?= =?UTF-8?q?r=20theme=20toggle=20UX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rose/form/radio/group/index.hbs | 2 +- .../rose/form/radio/group/index.stories.mdx | 4 +++ .../rose/form/radio/radio/index.hbs | 3 +- .../rose/form/radio/radio/index.stories.mdx | 1 + .../components/rose/form/radio/group-test.js | 10 +++++-- ui/core/app/routes/application.js | 30 +++++++++++++++++++ ui/core/app/templates/application.hbs | 22 ++++++++++++++ .../tests/acceptance/authentication-test.js | 26 ++++++++++++++++ ui/core/translations/en-us.yaml | 4 +++ 9 files changed, 98 insertions(+), 4 deletions(-) diff --git a/addons/rose/addon/components/rose/form/radio/group/index.hbs b/addons/rose/addon/components/rose/form/radio/group/index.hbs index 76cfea93b..fc34bd1cc 100644 --- a/addons/rose/addon/components/rose/form/radio/group/index.hbs +++ b/addons/rose/addon/components/rose/form/radio/group/index.hbs @@ -1,3 +1,3 @@ {{yield (hash - radio=(component 'rose/form/radio/radio' name=@name selectedValue=@selectedValue disabled=@disabled) + radio=(component 'rose/form/radio/radio' name=@name selectedValue=@selectedValue disabled=@disabled changed=@changed) )}} diff --git a/addons/rose/addon/components/rose/form/radio/group/index.stories.mdx b/addons/rose/addon/components/rose/form/radio/group/index.stories.mdx index ebdb50560..be2871af1 100644 --- a/addons/rose/addon/components/rose/form/radio/group/index.stories.mdx +++ b/addons/rose/addon/components/rose/form/radio/group/index.stories.mdx @@ -1,5 +1,6 @@ import { Meta, Story, Preview } from '@storybook/addon-docs/blocks'; import { hbs } from 'ember-cli-htmlbars'; +import { action } from '@storybook/addon-actions'; import { text, boolean } from '@storybook/addon-knobs'; @@ -13,6 +14,7 @@ Renders a form radiofield group. @disabled={{false}} @name={{name}} @selectedValue="disagree" + @changed={{fn}} as |radioGroup| > diff --git a/addons/rose/addon/components/rose/form/radio/radio/index.hbs b/addons/rose/addon/components/rose/form/radio/radio/index.hbs index 4e38ecb4f..9b037d7fb 100644 --- a/addons/rose/addon/components/rose/form/radio/radio/index.hbs +++ b/addons/rose/addon/components/rose/form/radio/radio/index.hbs @@ -9,7 +9,8 @@ @name={{@name}} @value={{@value}} @groupValue={{@selectedValue}} - @disabled={{@disabled}}/> + @disabled={{@disabled}} + @changed={{@changed}} />