diff --git a/app/helpers/set-theme.js b/app/helpers/set-theme.js new file mode 100644 index 00000000000..f0d786ba655 --- /dev/null +++ b/app/helpers/set-theme.js @@ -0,0 +1,11 @@ +import { helper } from '@ember/component/helper'; + +export default helper(function ([theme]) { + if (window.document) { + if (theme) { + window.document.documentElement.dataset.theme = theme; + } else { + delete window.document.documentElement.dataset.theme; + } + } +}); diff --git a/app/styles/application.module.css b/app/styles/application.module.css index 0557d2be4ec..1c7b338ae63 100644 --- a/app/styles/application.module.css +++ b/app/styles/application.module.css @@ -29,7 +29,7 @@ --placeholder-bg2: hsl(213, 16%, 75%); } -:global(.new-design) { +:root[data-theme="new-design"] { --header-bg-color: var(--violet800); --main-bg: white; --footer-bg-color: var(--grey900); diff --git a/app/templates/application.hbs b/app/templates/application.hbs index 234b0a0e4d3..5d46acc6a2b 100644 --- a/app/templates/application.hbs +++ b/app/templates/application.hbs @@ -1,6 +1,7 @@ {{page-title "crates.io: Rust Package Registry" separator=' - ' prepend=true}} +{{set-theme (if this.design.useNewDesign "new-design")}} @@ -19,7 +20,4 @@ -{{/if}} -{{#if this.design.useNewDesign}} - {{set-body-class "new-design"}} {{/if}} \ No newline at end of file diff --git a/package.json b/package.json index 57c35f17fc0..116c86ef8c4 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,6 @@ "ember-qunit": "5.1.5", "ember-resolver": "8.0.3", "ember-router-scroll": "4.1.2", - "ember-set-body-class": "1.0.2", "ember-source": "3.28.8", "ember-svg-jar": "2.3.3", "ember-template-lint": "3.15.0", diff --git a/tests/helpers/index.js b/tests/helpers/index.js index 46b8e94c5e1..aaa59798700 100644 --- a/tests/helpers/index.js +++ b/tests/helpers/index.js @@ -10,18 +10,15 @@ export function setupApplicationTest(hooks, options) { upstreamSetupApplicationTest(hooks, options); setupMirage(hooks); setupSentryMock(hooks); - setupAppTestBodyClass(hooks); + setupAppTestDataAttr(hooks); } -function setupAppTestBodyClass(hooks) { - const ID = 'app-test'; - +function setupAppTestDataAttr(hooks) { hooks.beforeEach(function () { - this.bodyClass = this.owner.lookup('service:body-class'); - this.bodyClass.register(ID, ['app-test']); + document.documentElement.dataset.appTest = ''; }); hooks.afterEach(function () { - this.bodyClass.deregister(ID); + delete document.documentElement.dataset.appTest; }); } diff --git a/vendor/qunit.css b/vendor/qunit.css index 2c2059dc633..f6afed4c7a0 100644 --- a/vendor/qunit.css +++ b/vendor/qunit.css @@ -1,3 +1,3 @@ -body.app-test .ember-application { +[data-app-test] .ember-application { background-color: var(--header-bg-color); } diff --git a/yarn.lock b/yarn.lock index 746ba5fae63..6c690e35e93 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6970,13 +6970,6 @@ ember-router-scroll@4.1.2: ember-cli-babel "^7.26.6" ember-compatibility-helpers "^1.2.5" -ember-set-body-class@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ember-set-body-class/-/ember-set-body-class-1.0.2.tgz#a970933f00e57ece6b6a88b96daf22f2374c3c34" - integrity sha512-SEsTwFp9SHTg4LgebhkUuLgYWg1VZD7I1QcrV2sTY583wu216OThoSs5szvS/KgSc1xD1Z22TFvOb848t2hGfw== - dependencies: - ember-cli-babel "^7.22.1" - ember-source-channel-url@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ember-source-channel-url/-/ember-source-channel-url-3.0.0.tgz#bcd5be72c63fa0b8c390b3121783b462063e2a1b"