@@ -27,19 +29,10 @@
color: var(--violet-blue);
font-family: var(--swr-sans);
}
- .title {
- font-size: var(--fs-large-3);
- line-height: 1.05;
- text-wrap: balance;
- font-weight: 700;
- margin-bottom: 0.2em;
- }
.subtitle {
text-wrap: balance;
- margin-bottom: 0.25em;
- font-size: var(--fs-large-1);
- &:last-child {
- margin-bottom: 0;
- }
+ }
+ .content {
+ margin-top: 0.25em;
}
diff --git a/components/src/Copy/Copy.stories.svelte b/components/src/Copy/Copy.stories.svelte
new file mode 100644
index 0000000..fc46e45
--- /dev/null
+++ b/components/src/Copy/Copy.stories.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
+ Björn Schittenhelm, Apotheker aus Holzgerlingen (Kreis Böblingen), bedient derzeit
+ größtenteils Allergiegeplagte: "Wir gehen nahtlos von der Erkältungssaison in die Pollensaison
+ hinein. Wir merken definitiv eine Veränderung über die letzten Jahre: Die Pollensaison wird
+ länger, die Grippesaison wird länger und dadurch überlappt sich das Ganze."
+
+
+
+
+
+
+ Björn Schittenhelm, Apotheker aus Holzgerlingen (Kreis Böblingen), bedient derzeit
+ größtenteils Allergiegeplagte: "Wir gehen nahtlos von der Erkältungssaison in die Pollensaison
+ hinein. Wir merken definitiv eine Veränderung über die letzten Jahre: Die Pollensaison wird
+ länger, die Grippesaison wird länger und dadurch überlappt sich das Ganze."
+
+
+
diff --git a/components/src/Copy/Copy.svelte b/components/src/Copy/Copy.svelte
new file mode 100644
index 0000000..db5cab0
--- /dev/null
+++ b/components/src/Copy/Copy.svelte
@@ -0,0 +1,29 @@
+
+
+
+ {#if children}
+ {@render children()}
+ {/if}
+
+
+
diff --git a/components/src/Copy/index.ts b/components/src/Copy/index.ts
new file mode 100644
index 0000000..affce32
--- /dev/null
+++ b/components/src/Copy/index.ts
@@ -0,0 +1,2 @@
+import Copy from './Copy.svelte';
+export default Copy;
diff --git a/components/src/DesignTokens/DesignTokens.mdx b/components/src/DesignTokens/DesignTokens.mdx
index 7d795c9..5a7112f 100644
--- a/components/src/DesignTokens/DesignTokens.mdx
+++ b/components/src/DesignTokens/DesignTokens.mdx
@@ -1,10 +1,29 @@
-import { Title, Story, ColorPalette, ColorItem, Meta, Typeset } from '@storybook/blocks';
-import { shades, scales } from "./Tokens"
+import { Title, Story, ColorPalette, ColorItem, Meta, Typeset, Canvas } from '@storybook/blocks';
+import { shades, scales, typography } from "./Tokens"
+
+import * as HeadlineStories from "../Headline/Headline.stories.svelte"
+import * as CopyStories from "../Copy/Copy.stories.svelte"
+import * as CaptionStories from "../Caption/Caption.stories.svelte"
+import * as NoteStories from "../Note/Note.stories.svelte"
# Design Tokens
+## Table of Contents
+
+- [Usage](#usage)
+ - [Web](#web)
+ - [Figma](#figma)
+- [Typography](#typography)
+ - [Sizes](#sizes)
+ - [Styles](#styles)
+- [Colours](#colours)
+ - [Shades](#shades)
+ - [Linear scales](#linear-scales)
+ - [Categorical Scales](#categorical-scales)
+ - [Divergent Scales](#divergent-scales)
+
## Usage
### Web
@@ -39,12 +58,32 @@ const sampleScale = scaleThreshold([0, 10], tokens.scales.red_blue);
The tokens on this page are available as a [Figma library](https://www.figma.com/design/Wrd7uUV3GxpNXXkM5ozuHk/Datalab-Design-Tokens?node-id=0-1&t=iOqDxhuMdvEyY8VK-1). This is enabled by default for any file in the [SWR Data Lab team](https://www.figma.com/files/1125823985461580916/team/1415988138343592768).
-## Available Tokens
-### Typography
+## Typography
+
+Type sizes and paragraph styles are designed to match the typography on [swr.de](https://www.swr.de/). **Styles** come with built-in settings for `line-height`, `letter-spacing`, etc. and should be preferred over using **sizes** directly.
+
+### Styles
+#### H2
+
-
diff --git a/components/src/DesignTokens/Tokens.js b/components/src/DesignTokens/Tokens.ts
similarity index 59%
rename from components/src/DesignTokens/Tokens.js
rename to components/src/DesignTokens/Tokens.ts
index 592efd4..7ce74e0 100644
--- a/components/src/DesignTokens/Tokens.js
+++ b/components/src/DesignTokens/Tokens.ts
@@ -1,4 +1,14 @@
-const shades = {
+interface ColourMap {
+ [index: string]: ColourPalette | ColourList;
+}
+interface ColourPalette {
+ [index: string]: string
+}
+interface ColourList {
+ [index: number]: string
+}
+
+const shades: ColourMap = {
violet: {
light5: '#f3eefa',
light4: '#e5dbf5',
@@ -138,31 +148,36 @@ const shades = {
}
};
-const scales = {
- violets: [
- shades.violet.dark3,
- shades.violet.dark2,
- shades.violet.dark1,
- shades.violet.base,
- shades.violet.light1,
- shades.violet.light2,
- shades.violet.light3
- ],
- red_blue: [...Object.entries(shades.red).reverse(), ...Object.entries(shades.blue)],
- red_violet: [...Object.entries(shades.red).reverse(), ...Object.entries(shades.violet)],
- violet_teal: [...Object.entries(shades.violet).reverse(), ...Object.entries(shades.teal)],
- orange_teal: [...Object.entries(shades.orange).reverse(), ...Object.entries(shades.teal)],
- red_forest: [...Object.entries(shades.red).reverse(), ...Object.entries(shades.forest)],
- red_apple: [...Object.entries(shades.red).reverse(), ...Object.entries(shades.apple)],
- red_teal: [...Object.entries(shades.red).reverse(), ...Object.entries(shades.violet)],
- violet_orange: [...Object.entries(shades.violet).reverse(), ...Object.entries(shades.orange)],
- orange_blue: [...Object.entries(shades.orange).reverse(), ...Object.entries(shades.blue)],
- teal_pink: [...Object.entries(shades.teal).reverse(), ...Object.entries(shades.pink)],
- blue_pink: [...Object.entries(shades.blue).reverse(), ...Object.entries(shades.pink)],
- apple_plum: [...Object.entries(shades.apple).reverse(), ...Object.entries(shades.plum)],
- forest_plum: [...Object.entries(shades.forest).reverse(), ...Object.entries(shades.plum)]
+const scales: ColourMap = {
+ red_blue: [...Object.values(shades.red).reverse(), ...Object.values(shades.blue)],
+ red_violet: [...Object.values(shades.red).reverse(), ...Object.values(shades.violet)],
+ violet_teal: [...Object.values(shades.violet).reverse(), ...Object.values(shades.teal)],
+ orange_teal: [...Object.values(shades.orange).reverse(), ...Object.values(shades.teal)],
+ red_forest: [...Object.values(shades.red).reverse(), ...Object.values(shades.forest)],
+ red_apple: [...Object.values(shades.red).reverse(), ...Object.values(shades.apple)],
+ red_teal: [...Object.values(shades.red).reverse(), ...Object.values(shades.violet)],
+ violet_orange: [...Object.values(shades.violet).reverse(), ...Object.values(shades.orange)],
+ orange_blue: [...Object.values(shades.orange).reverse(), ...Object.values(shades.blue)],
+ teal_pink: [...Object.values(shades.teal).reverse(), ...Object.values(shades.pink)],
+ blue_pink: [...Object.values(shades.blue).reverse(), ...Object.values(shades.pink)],
+ apple_plum: [...Object.values(shades.apple).reverse(), ...Object.values(shades.plum)],
+ forest_plum: [...Object.values(shades.forest).reverse(), ...Object.values(shades.plum)]
};
-const typography = {};
-export { shades, scales };
+const typography = {
+ wide: {
+ sizes: {
+ "fs-small-3": "0.75rem",
+ "fs-small-2": "0.875rem",
+ "fs-small-1": "1rem",
+ "fs-base": "1.25rem",
+ "fs-large-1": "1.5rem",
+ "fs-large-2": "2rem",
+ "fs-large-3": "2.5rem",
+ "fs-large-4": "3.5rem"
+ }
+ }
+};
+
+export { shades, scales, typography };
diff --git a/components/src/Headline/Headline.stories.svelte b/components/src/Headline/Headline.stories.svelte
new file mode 100644
index 0000000..fcb267d
--- /dev/null
+++ b/components/src/Headline/Headline.stories.svelte
@@ -0,0 +1,17 @@
+
+
+