diff --git a/components/src/DesignTokens/DesignTokens.mdx b/components/src/DesignTokens/DesignTokens.mdx index 16126e9b..794da0c6 100644 --- a/components/src/DesignTokens/DesignTokens.mdx +++ b/components/src/DesignTokens/DesignTokens.mdx @@ -36,20 +36,20 @@ import * as NoteStories from '../Note/Note.stories.svelte'; ### Web -The `` component makes colours, type sizes and other design tokens available to its children as CSS variables. +The `` component makes colours, type sizes and other design tokens available to its children as CSS variables. Set the `theme` prop to `light` or `dark` to yield light and dark semantic colours or `auto` to follow the user's preference. ```html - +

I'm a sample paragraph

``` diff --git a/components/src/DesignTokens/DesignTokens.svelte b/components/src/DesignTokens/DesignTokens.svelte index 81f4bfc7..321616b7 100644 --- a/components/src/DesignTokens/DesignTokens.svelte +++ b/components/src/DesignTokens/DesignTokens.svelte @@ -1,11 +1,16 @@ -
+
{#if children} {@render children()} {/if} @@ -51,7 +56,8 @@ --color-logoFill: var(--logoFill-light); --color-pageFill: var(--pageFill-light); --color-surfaceFill: var(--surfaceFill-light); - @media (prefers-color-scheme: dark) { + + &[data-theme='dark'] { --color-logoFill: var(--logoFill-dark); --color-pageFill: var(--pageFill-dark); --color-surfaceFill: var(--surfaceFill-dark); diff --git a/components/src/index.js b/components/src/index.js index c763249a..e4fafdeb 100644 --- a/components/src/index.js +++ b/components/src/index.js @@ -1,6 +1,7 @@ // Design Tokens export { default as DesignTokens } from './DesignTokens/DesignTokens.svelte'; export { tokens as tokens } from './DesignTokens/index.js'; +export { default as isDarkMode } from './isDarkMode/isDarkMode.svelte'; // Typography export { default as Headline } from './Headline/Headline.svelte'; diff --git a/components/src/isDarkMode/index.js b/components/src/isDarkMode/index.js new file mode 100644 index 00000000..7ca5c67d --- /dev/null +++ b/components/src/isDarkMode/index.js @@ -0,0 +1,2 @@ +import isDarkMode from './isDarkMode.svelte.js'; +export default isDarkMode; diff --git a/components/src/isDarkMode/isDarkMode.stories.svelte b/components/src/isDarkMode/isDarkMode.stories.svelte new file mode 100644 index 00000000..3fc29894 --- /dev/null +++ b/components/src/isDarkMode/isDarkMode.stories.svelte @@ -0,0 +1,10 @@ + + +{JSON.stringify($isDarkMode)} diff --git a/components/src/isDarkMode/isDarkMode.svelte.js b/components/src/isDarkMode/isDarkMode.svelte.js new file mode 100644 index 00000000..504c1a1a --- /dev/null +++ b/components/src/isDarkMode/isDarkMode.svelte.js @@ -0,0 +1,6 @@ +import { MediaQuery } from 'svelte/reactivity'; +import { readable } from 'svelte/store'; + +const dm = new MediaQuery('prefers-color-scheme: dark', false); +const isDarkMode = readable(dm.current); +export default isDarkMode;