diff --git a/packages/components/rollup.config.mjs b/packages/components/rollup.config.mjs index 9b83a1c23c6..5fbef1b94af 100644 --- a/packages/components/rollup.config.mjs +++ b/packages/components/rollup.config.mjs @@ -9,6 +9,7 @@ import copy from 'rollup-plugin-copy'; import scss from 'rollup-plugin-scss'; import process from 'process'; import path from 'node:path'; +import * as sass from 'sass'; const addon = new Addon({ srcDir: 'src', @@ -61,6 +62,31 @@ const plugins = [ fileName: 'styles/@hashicorp/design-system-power-select-overrides.css', }), + // Custom plugin to compile the themed SCSS with different include paths + { + name: 'compile-themed-scss', + generateBundle() { + // Compile the themed SCSS file + try { + const result = sass.compile('src/styles/@hashicorp/design-system-components-with-css-selectors.scss', { + // equivalent to includePaths in rollup-plugin-scss + loadPaths: [ + 'node_modules/@hashicorp/design-system-tokens/dist/products/css/themed-tokens/with-css-selectors', + ], + }); + + // Emit the compiled CSS + this.emitFile({ + type: 'asset', + fileName: 'styles/@hashicorp/design-system-components-with-css-selectors.css', + source: result.css, + }); + } catch (error) { + this.error(`Failed to compile themed SCSS: ${error.message}`); + } + }, + }, + // Ensure that standalone .hbs files are properly integrated as Javascript. addon.hbs(), diff --git a/packages/components/src/styles/@hashicorp/design-system-components-with-css-selectors.scss b/packages/components/src/styles/@hashicorp/design-system-components-with-css-selectors.scss new file mode 100644 index 00000000000..4c30f8588da --- /dev/null +++ b/packages/components/src/styles/@hashicorp/design-system-components-with-css-selectors.scss @@ -0,0 +1,12 @@ +/** + * Copyright (c) HashiCorp, Inc. + * SPDX-License-Identifier: MPL-2.0 + */ + +// this file comes from packages/tokens/dist/products/css/tokens.css +@use "tokens"; +@use "../mixins/screen-reader-only" as *; + +.sr-only { + @include screen-reader-only(); +} diff --git a/packages/tokens/dist/products/css/themed-tokens/with-css-selectors/tokens.css b/packages/tokens/dist/products/css/themed-tokens/with-css-selectors/tokens.css new file mode 100644 index 00000000000..592d7afc00b --- /dev/null +++ b/packages/tokens/dist/products/css/themed-tokens/with-css-selectors/tokens.css @@ -0,0 +1,68 @@ +/** + * Do not edit directly, this file was auto-generated. + */ + +.hds-theme-default, +[data-hds-theme="default"] { + --token-color-palette-neutral-300: #000000; + --token-color-palette-neutral-0: #ffffff; + --token-color-foreground-semantic-outlier: var( + --token-color-palette-neutral-0 + ); +} + +.hds-theme-cds-0, +[data-hds-theme="cds-0"] { + --token-color-palette-neutral-300: #c00000; + --token-color-palette-neutral-0: #cfffff; + --token-color-foreground-semantic-outlier: var( + --token-color-palette-neutral-100 + ); +} + +.hds-theme-cds-10, +[data-hds-theme="cds-10"] { + --token-color-palette-neutral-300: #c33333; + --token-color-palette-neutral-0: #cccccc; + --token-color-foreground-semantic-outlier: var( + --token-color-palette-neutral-200 + ); +} + +.hds-theme-cds-90, +[data-hds-theme="cds-90"] { + --token-color-palette-neutral-300: #cccccc; + --token-color-palette-neutral-0: #c33333; + --token-color-foreground-semantic-outlier: var( + --token-color-palette-neutral-300 + ); +} + +.hds-theme-cds-100, +[data-hds-theme="cds-100"] { + --token-color-palette-neutral-300: #cfffff; + --token-color-palette-neutral-0: #c00000; + --token-color-foreground-semantic-outlier: #abcdef; +} + +:root { + --token-color-palette-neutral-300: #000000; + --token-color-palette-neutral-0: #ffffff; + --token-color-foreground-semantic-outlier: var( + --token-color-palette-neutral-0 + ); +} + +:root { + --token-color-palette-neutral-200: #dedfe3; + --token-color-palette-neutral-100: #f1f2f3; + --token-component-a-size: 123px; + --token-color-foreground-strong: var(--token-color-palette-neutral-300); + --token-color-foreground-primary: var(--token-color-palette-neutral-200); + --token-color-foreground-high-contrast: var(--token-color-palette-neutral-0); + --token-component-a-color: var(--token-color-palette-neutral-300); + --token-component-b-color: var(--token-color-palette-neutral-200); + --token-component-b-size: var(--token-component-a-size); + --token-component-c-color: var(--token-color-foreground-high-contrast); + --token-component-d-color: var(--token-color-foreground-semantic-outlier); +} diff --git a/packages/tokens/dist/products/css/themed-tokens/with-prefers-color-scheme/tokens.css b/packages/tokens/dist/products/css/themed-tokens/with-prefers-color-scheme/tokens.css new file mode 100644 index 00000000000..90db7cd8b13 --- /dev/null +++ b/packages/tokens/dist/products/css/themed-tokens/with-prefers-color-scheme/tokens.css @@ -0,0 +1,35 @@ +/** + * Do not edit directly, this file was auto-generated. + */ + +@media (prefers-color-scheme: dark) { + :root { + --token-color-palette-neutral-300: #c00000; + --token-color-palette-neutral-0: #cfffff; + --token-color-foreground-semantic-outlier: var( + --token-color-palette-neutral-100 + ); + } +} + +@media (prefers-color-scheme: light) { + :root { + --token-color-palette-neutral-300: #cfffff; + --token-color-palette-neutral-0: #c00000; + --token-color-foreground-semantic-outlier: #abcdef; + } +} + +:root { + --token-color-palette-neutral-200: #dedfe3; + --token-color-palette-neutral-100: #f1f2f3; + --token-component-a-size: 123px; + --token-color-foreground-strong: var(--token-color-palette-neutral-300); + --token-color-foreground-primary: var(--token-color-palette-neutral-200); + --token-color-foreground-high-contrast: var(--token-color-palette-neutral-0); + --token-component-a-color: var(--token-color-palette-neutral-300); + --token-component-b-color: var(--token-color-palette-neutral-200); + --token-component-b-size: var(--token-component-a-size); + --token-component-c-color: var(--token-color-foreground-high-contrast); + --token-component-d-color: var(--token-color-foreground-semantic-outlier); +} diff --git a/showcase/app/components/page-components/badge-count/index.gts b/showcase/app/components/page-components/badge-count/index.gts index f0783b3ad1d..af27dacb306 100644 --- a/showcase/app/components/page-components/badge-count/index.gts +++ b/showcase/app/components/page-components/badge-count/index.gts @@ -4,13 +4,14 @@ */ import type { TemplateOnlyComponent } from '@ember/component/template-only'; - import { pageTitle } from 'ember-page-title'; import ShwTextH1 from 'showcase/components/shw/text/h1'; +import ShwDivider from 'showcase/components/shw/divider'; import SubSectionContent from 'showcase/components/page-components/badge-count/sub-sections/content'; import SubSectionVariants from 'showcase/components/page-components/badge-count/sub-sections/variants'; +import SubSectionCarbonization from 'showcase/components/page-components/badge-count/sub-sections/carbonization'; const BadgeCountIndex: TemplateOnlyComponent =