@mediaradar/design-tokens 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,159 @@
1
+ /* MR Reset
2
+ Optional baseline reset. Load after tokens.css so CSS vars are defined.
3
+ Import: @mediaradar/design-tokens/css/reset.css */
4
+
5
+ /* Document baseline */
6
+ html {
7
+ font-size: 100%;
8
+ -webkit-text-size-adjust: 100%;
9
+ scroll-padding-top: 2rem;
10
+ }
11
+
12
+ html,
13
+ body {
14
+ min-height: 100%;
15
+ }
16
+
17
+ /* Ensure the Angular host fills the body */
18
+ app-root {
19
+ display: block;
20
+ min-height: 100dvh;
21
+ }
22
+
23
+ /* Box model */
24
+ *,
25
+ *::before,
26
+ *::after {
27
+ box-sizing: border-box;
28
+ }
29
+
30
+ /* Remove default margins */
31
+ body,
32
+ h1,
33
+ h2,
34
+ h3,
35
+ h4,
36
+ h5,
37
+ h6,
38
+ p,
39
+ figure,
40
+ blockquote,
41
+ dl,
42
+ dd,
43
+ form {
44
+ margin: 0;
45
+ padding: 0;
46
+ }
47
+
48
+ /* Body baseline — pulls from design tokens */
49
+ body {
50
+ min-height: 100vh;
51
+ min-height: 100dvh;
52
+ font-family: var(--mr-ref-typography-family-primary, Arial, sans-serif);
53
+ font-size: var(--mr-typography-font-size-base, 1rem);
54
+ font-weight: var(--mr-typography-weight-regular, 400);
55
+ line-height: var(--mr-typography-line-height-base, 1.5);
56
+ color: var(--mr-color-text-primary, #1f2937);
57
+ background-color: var(--mr-color-canvas, #ffffff);
58
+ -webkit-font-smoothing: antialiased;
59
+ -moz-osx-font-smoothing: grayscale;
60
+ }
61
+
62
+ /* Headings */
63
+ h1,
64
+ h2,
65
+ h3,
66
+ h4,
67
+ h5,
68
+ h6 {
69
+ font-weight: var(--mr-typography-weight-semibold, 600);
70
+ line-height: var(--mr-typography-line-height-tight, 1.2);
71
+ }
72
+
73
+ /* Links */
74
+ a {
75
+ color: var(--mr-color-text-link, currentColor);
76
+ text-decoration: none;
77
+ }
78
+
79
+ a:hover {
80
+ text-decoration: underline;
81
+ }
82
+
83
+ /* Lists: reset spacing, but preserve bullets/numbers */
84
+ ul,
85
+ ol {
86
+ margin: 0;
87
+ padding: 0;
88
+ }
89
+
90
+ /* Optional utility for UI lists */
91
+ .mr-list-reset {
92
+ margin: 0;
93
+ padding: 0;
94
+ list-style: none;
95
+ }
96
+
97
+ /* Media */
98
+ img,
99
+ picture,
100
+ svg,
101
+ video,
102
+ canvas {
103
+ display: block;
104
+ max-width: 100%;
105
+ }
106
+
107
+ img,
108
+ picture,
109
+ video,
110
+ canvas {
111
+ height: auto;
112
+ }
113
+
114
+ /* Form elements inherit font from body */
115
+ input,
116
+ button,
117
+ textarea,
118
+ select {
119
+ font: inherit;
120
+ }
121
+
122
+ textarea {
123
+ resize: vertical;
124
+ min-height: 40px;
125
+ }
126
+
127
+ /* Search input — remove webkit decorations */
128
+ input[type="search"]::-webkit-search-cancel-button,
129
+ input[type="search"]::-webkit-search-decoration {
130
+ -webkit-appearance: none;
131
+ }
132
+
133
+ /* Buttons */
134
+ button {
135
+ color: inherit;
136
+ background: none;
137
+ border: 0;
138
+ padding: 0;
139
+ }
140
+
141
+ button:not(:disabled) {
142
+ cursor: pointer;
143
+ }
144
+
145
+ button:disabled {
146
+ cursor: not-allowed;
147
+ }
148
+
149
+ /* Tables */
150
+ table {
151
+ border-collapse: collapse;
152
+ border-spacing: 0;
153
+ }
154
+
155
+ /* Focus */
156
+ :focus-visible {
157
+ outline: 2px solid var(--mr-color-focus-ring, var(--mr-color-brand-primary, Highlight));
158
+ outline-offset: 2px;
159
+ }
@@ -0,0 +1,74 @@
1
+ @layer utilities {
2
+
3
+ // Word wrap
4
+ .mr-word-normal {
5
+ word-break: normal;
6
+ }
7
+
8
+ .mr-word-wrap {
9
+ word-break: break-all;
10
+ }
11
+
12
+ .mr-word-nowrap {
13
+ word-break: keep-all;
14
+ }
15
+
16
+ // Text alignment
17
+ .mr-tl {
18
+ text-align: left;
19
+ }
20
+
21
+ .mr-tr {
22
+ text-align: right;
23
+ }
24
+
25
+ .mr-tc {
26
+ text-align: center;
27
+ }
28
+
29
+ .mr-tj {
30
+ text-align: justify;
31
+ }
32
+
33
+ // Text transform
34
+ .mr-ttc {
35
+ text-transform: capitalize;
36
+ }
37
+
38
+ .mr-ttl {
39
+ text-transform: lowercase;
40
+ }
41
+
42
+ .mr-ttu {
43
+ text-transform: uppercase;
44
+ }
45
+
46
+ .mr-ttn {
47
+ text-transform: none;
48
+ }
49
+
50
+ .mr-cur-p {
51
+ cursor: pointer;
52
+ }
53
+ // Font-weight helpers
54
+ .mr-fw-regular {
55
+ font-weight: var(--mr-ref-typography-weight-regular, 400);
56
+ }
57
+
58
+ .mr-fw-medium {
59
+ font-weight: var(--mr-ref-typography-weight-medium, 500);
60
+ }
61
+
62
+ .mr-fw-semibold {
63
+ font-weight: var(--mr-ref-typography-weight-semibold, 600);
64
+ }
65
+
66
+ .mr-fw-bold {
67
+ font-weight: var(--mr-ref-typography-weight-bold, 700);
68
+ }
69
+
70
+ // Interaction
71
+ .mr-no-select {
72
+ user-select: none;
73
+ }
74
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "routes": [
3
+ {
4
+ "route": "/css/*",
5
+ "headers": { "Cache-Control": "public, max-age=3600, stale-while-revalidate=86400" }
6
+ },
7
+ {
8
+ "route": "/tailwind/*",
9
+ "headers": { "Cache-Control": "public, max-age=3600, stale-while-revalidate=86400" }
10
+ },
11
+ {
12
+ "route": "/js/*",
13
+ "headers": { "Cache-Control": "public, max-age=3600, stale-while-revalidate=86400" }
14
+ },
15
+ {
16
+ "route": "/*.md",
17
+ "headers": { "Cache-Control": "public, max-age=3600" }
18
+ },
19
+ {
20
+ "route": "/patterns.json",
21
+ "headers": { "Cache-Control": "public, max-age=60, stale-while-revalidate=300" }
22
+ }
23
+ ],
24
+ "globalHeaders": {
25
+ "Access-Control-Allow-Origin": "*"
26
+ },
27
+ "mimeTypes": {
28
+ ".css": "text/css",
29
+ ".js": "application/javascript",
30
+ ".d.ts": "text/plain",
31
+ ".md": "text/plain"
32
+ }
33
+ }
@@ -0,0 +1,103 @@
1
+ @theme {
2
+ --spacing-0: var(--mr-ref-dimension-spacing-scale-0);
3
+ --spacing-1: var(--mr-ref-dimension-spacing-scale-1);
4
+ --spacing-2: var(--mr-ref-dimension-spacing-scale-2);
5
+ --spacing-3: var(--mr-ref-dimension-spacing-scale-3);
6
+ --spacing-4: var(--mr-ref-dimension-spacing-scale-4);
7
+ --spacing-5: var(--mr-ref-dimension-spacing-scale-5);
8
+ --spacing-6: var(--mr-ref-dimension-spacing-scale-6);
9
+ --spacing-7: var(--mr-ref-dimension-spacing-scale-7);
10
+ --spacing-8: var(--mr-ref-dimension-spacing-scale-8);
11
+ --spacing-9: var(--mr-ref-dimension-spacing-scale-9);
12
+ --spacing-10: var(--mr-ref-dimension-spacing-scale-10);
13
+ --spacing-11: var(--mr-ref-dimension-spacing-scale-11);
14
+ --spacing-12: var(--mr-ref-dimension-spacing-scale-12);
15
+ --spacing-13: var(--mr-ref-dimension-spacing-scale-13);
16
+ --spacing-14: var(--mr-ref-dimension-spacing-scale-14);
17
+ --spacing-15: var(--mr-ref-dimension-spacing-scale-15);
18
+ --spacing-16: var(--mr-ref-dimension-spacing-scale-16);
19
+ --spacing-17: var(--mr-ref-dimension-spacing-scale-17);
20
+ --spacing-18: var(--mr-ref-dimension-spacing-scale-18);
21
+ --spacing-19: var(--mr-ref-dimension-spacing-scale-19);
22
+ --spacing-20: var(--mr-ref-dimension-spacing-scale-20);
23
+ --spacing-21: var(--mr-ref-dimension-spacing-scale-21);
24
+ --spacing-22: var(--mr-ref-dimension-spacing-scale-22);
25
+ --spacing-23: var(--mr-ref-dimension-spacing-scale-23);
26
+ --spacing-24: var(--mr-ref-dimension-spacing-scale-24);
27
+ --spacing-25: var(--mr-ref-dimension-spacing-scale-25);
28
+ --spacing-26: var(--mr-ref-dimension-spacing-scale-26);
29
+ --spacing-27: var(--mr-ref-dimension-spacing-scale-27);
30
+ --spacing-28: var(--mr-ref-dimension-spacing-scale-28);
31
+ --spacing-29: var(--mr-ref-dimension-spacing-scale-29);
32
+ --spacing-30: var(--mr-ref-dimension-spacing-scale-30);
33
+ --spacing-1_5: var(--mr-ref-dimension-spacing-scale-1-5);
34
+ --spacing-2_5: var(--mr-ref-dimension-spacing-scale-2-5);
35
+ --spacing-3_5: var(--mr-ref-dimension-spacing-scale-3-5);
36
+ --spacing-4_5: var(--mr-ref-dimension-spacing-scale-4-5);
37
+ --spacing-5_5: var(--mr-ref-dimension-spacing-scale-5-5);
38
+ --spacing-6_5: var(--mr-ref-dimension-spacing-scale-6-5);
39
+ --spacing-7_5: var(--mr-ref-dimension-spacing-scale-7-5);
40
+ --spacing-0px: var(--mr-ref-dimension-spacing-px-0);
41
+ --spacing-1px: var(--mr-ref-dimension-spacing-px-1);
42
+ --spacing-2px: var(--mr-ref-dimension-spacing-px-2);
43
+ --spacing-3px: var(--mr-ref-dimension-spacing-px-3);
44
+ --spacing-5px: var(--mr-ref-dimension-spacing-px-5);
45
+ --spacing-6px: var(--mr-ref-dimension-spacing-px-6);
46
+ --spacing-7px: var(--mr-ref-dimension-spacing-px-7);
47
+ --spacing-8px: var(--mr-ref-dimension-spacing-px-8);
48
+ --spacing-9px: var(--mr-ref-dimension-spacing-px-9);
49
+ --spacing-10px: var(--mr-ref-dimension-spacing-px-10);
50
+ --color-canvas: var(--mr-color-canvas);
51
+ --color-surface: var(--mr-color-surface);
52
+ --color-subtle: var(--mr-color-subtle);
53
+ --color-text-primary: var(--mr-color-text-primary);
54
+ --color-text-secondary: var(--mr-color-text-secondary);
55
+ --color-text-tertiary: var(--mr-color-text-tertiary);
56
+ --color-text-inverse: var(--mr-color-text-inverse);
57
+ --color-text-warning: var(--mr-color-text-warning);
58
+ --color-text-danger: var(--mr-color-text-danger);
59
+ --color-text-success: var(--mr-color-text-success);
60
+ --color-text-link: var(--mr-color-text-link);
61
+ --color-brand-primary: var(--mr-color-brand-primary);
62
+ --color-brand-primaryAction: var(--mr-color-brand-primary-action);
63
+ --color-brand-onprimary: var(--mr-color-brand-onprimary);
64
+ --color-brand-primarySoft: var(--mr-color-brand-primary-soft);
65
+ --color-status-success: var(--mr-color-status-success);
66
+ --color-status-warning: var(--mr-color-status-warning);
67
+ --color-status-danger: var(--mr-color-status-danger);
68
+ --color-status-onstatus: var(--mr-color-status-onstatus);
69
+ --color-status-on-status: var(--mr-color-status-on-status);
70
+ --color-border-default: var(--mr-color-border-default);
71
+ --color-border-interactive: var(--mr-color-border-interactive);
72
+ --color-border-focus: var(--mr-color-border-focus);
73
+ --color-border-focusSoft: var(--mr-color-border-focus-soft);
74
+ --color-ai-tint: var(--mr-color-ai-tint);
75
+ --color-ai-ontint: var(--mr-color-ai-ontint);
76
+ --color-ai-gradient: var(--mr-color-ai-gradient);
77
+ --text-xs: var(--mr-typography-font-size-xs);
78
+ --text-sm: var(--mr-typography-font-size-sm);
79
+ --text-base: var(--mr-typography-font-size-base);
80
+ --text-md: var(--mr-typography-font-size-md);
81
+ --text-lg: var(--mr-typography-font-size-lg);
82
+ --text-xl: var(--mr-typography-font-size-xl);
83
+ --text-h1: var(--mr-typography-font-size-h1);
84
+ --font-weight-regular: var(--mr-typography-weight-regular);
85
+ --font-weight-medium: var(--mr-typography-weight-medium);
86
+ --font-weight-semibold: var(--mr-typography-weight-semibold);
87
+ --font-weight-bold: var(--mr-typography-weight-bold);
88
+ --leading-tight: var(--mr-typography-line-height-tight);
89
+ --leading-base: var(--mr-typography-line-height-base);
90
+ --leading-head: var(--mr-typography-line-height-head);
91
+ --tracking-normal: var(--mr-typography-letter-spacing-normal);
92
+ --tracking-tight: var(--mr-typography-letter-spacing-tight);
93
+ --radius-control: var(--mr-shape-radius-control);
94
+ --radius-card: var(--mr-shape-radius-card);
95
+ --shadow-raised: var(--mr-elevation-raised);
96
+ --shadow-overlay: var(--mr-elevation-overlay);
97
+ --duration-interactive: var(--mr-motion-duration-interactive);
98
+ --ease-interactive: var(--mr-motion-easing-interactive);
99
+ --opacity-disabled: var(--mr-opacity-disabled);
100
+ --z-dropdown: var(--mr-z-dropdown);
101
+ --z-modal: var(--mr-z-modal);
102
+ --z-tooltip: var(--mr-z-tooltip);
103
+ }
@@ -0,0 +1,119 @@
1
+ @utility text-style-heading-1 {
2
+ font-size: var(--mr-text-style-heading-1-font-size);
3
+ font-weight: var(--mr-text-style-heading-1-font-weight);
4
+ line-height: var(--mr-text-style-heading-1-line-height);
5
+ letter-spacing: var(--mr-text-style-heading-1-letter-spacing);
6
+ color: var(--mr-text-style-heading-1-color);
7
+ }
8
+
9
+ @utility text-style-heading-2 {
10
+ font-size: var(--mr-text-style-heading-2-font-size);
11
+ font-weight: var(--mr-text-style-heading-2-font-weight);
12
+ line-height: var(--mr-text-style-heading-2-line-height);
13
+ letter-spacing: var(--mr-text-style-heading-2-letter-spacing);
14
+ color: var(--mr-text-style-heading-2-color);
15
+ }
16
+
17
+ @utility text-style-heading-3 {
18
+ font-size: var(--mr-text-style-heading-3-font-size);
19
+ font-weight: var(--mr-text-style-heading-3-font-weight);
20
+ line-height: var(--mr-text-style-heading-3-line-height);
21
+ letter-spacing: var(--mr-text-style-heading-3-letter-spacing);
22
+ color: var(--mr-text-style-heading-3-color);
23
+ }
24
+
25
+ @utility text-style-body-lg {
26
+ font-size: var(--mr-text-style-body-lg-font-size);
27
+ font-weight: var(--mr-text-style-body-lg-font-weight);
28
+ line-height: var(--mr-text-style-body-lg-line-height);
29
+ letter-spacing: var(--mr-text-style-body-lg-letter-spacing);
30
+ color: var(--mr-text-style-body-lg-color);
31
+ }
32
+
33
+ @utility text-style-body {
34
+ font-size: var(--mr-text-style-body-font-size);
35
+ font-weight: var(--mr-text-style-body-font-weight);
36
+ line-height: var(--mr-text-style-body-line-height);
37
+ letter-spacing: var(--mr-text-style-body-letter-spacing);
38
+ color: var(--mr-text-style-body-color);
39
+ }
40
+
41
+ @utility text-style-body-sm {
42
+ font-size: var(--mr-text-style-body-sm-font-size);
43
+ font-weight: var(--mr-text-style-body-sm-font-weight);
44
+ line-height: var(--mr-text-style-body-sm-line-height);
45
+ letter-spacing: var(--mr-text-style-body-sm-letter-spacing);
46
+ color: var(--mr-text-style-body-sm-color);
47
+ }
48
+
49
+ @utility text-style-body-xs {
50
+ font-size: var(--mr-text-style-body-xs-font-size);
51
+ font-weight: var(--mr-text-style-body-xs-font-weight);
52
+ line-height: var(--mr-text-style-body-xs-line-height);
53
+ letter-spacing: var(--mr-text-style-body-xs-letter-spacing);
54
+ color: var(--mr-text-style-body-xs-color);
55
+ }
56
+
57
+ @utility text-style-label {
58
+ font-size: var(--mr-text-style-label-font-size);
59
+ font-weight: var(--mr-text-style-label-font-weight);
60
+ line-height: var(--mr-text-style-label-line-height);
61
+ letter-spacing: var(--mr-text-style-label-letter-spacing);
62
+ color: var(--mr-text-style-label-color);
63
+ }
64
+
65
+ @utility text-style-label-strong {
66
+ font-size: var(--mr-text-style-label-strong-font-size);
67
+ font-weight: var(--mr-text-style-label-strong-font-weight);
68
+ line-height: var(--mr-text-style-label-strong-line-height);
69
+ letter-spacing: var(--mr-text-style-label-strong-letter-spacing);
70
+ color: var(--mr-text-style-label-strong-color);
71
+ }
72
+
73
+ @utility text-style-label-sm {
74
+ font-size: var(--mr-text-style-label-sm-font-size);
75
+ font-weight: var(--mr-text-style-label-sm-font-weight);
76
+ line-height: var(--mr-text-style-label-sm-line-height);
77
+ letter-spacing: var(--mr-text-style-label-sm-letter-spacing);
78
+ color: var(--mr-text-style-label-sm-color);
79
+ }
80
+
81
+ @utility text-style-label-xs {
82
+ font-size: var(--mr-text-style-label-xs-font-size);
83
+ font-weight: var(--mr-text-style-label-xs-font-weight);
84
+ line-height: var(--mr-text-style-label-xs-line-height);
85
+ letter-spacing: var(--mr-text-style-label-xs-letter-spacing);
86
+ color: var(--mr-text-style-label-xs-color);
87
+ }
88
+
89
+ @utility text-style-caption {
90
+ font-size: var(--mr-text-style-caption-font-size);
91
+ font-weight: var(--mr-text-style-caption-font-weight);
92
+ line-height: var(--mr-text-style-caption-line-height);
93
+ letter-spacing: var(--mr-text-style-caption-letter-spacing);
94
+ color: var(--mr-text-style-caption-color);
95
+ }
96
+
97
+ @utility text-style-link {
98
+ font-size: var(--mr-text-style-link-font-size);
99
+ font-weight: var(--mr-text-style-link-font-weight);
100
+ line-height: var(--mr-text-style-link-line-height);
101
+ letter-spacing: var(--mr-text-style-link-letter-spacing);
102
+ color: var(--mr-text-style-link-color);
103
+ }
104
+
105
+ @utility text-style-link-strong {
106
+ font-size: var(--mr-text-style-link-strong-font-size);
107
+ font-weight: var(--mr-text-style-link-strong-font-weight);
108
+ line-height: var(--mr-text-style-link-strong-line-height);
109
+ letter-spacing: var(--mr-text-style-link-strong-letter-spacing);
110
+ color: var(--mr-text-style-link-strong-color);
111
+ }
112
+
113
+ @utility text-style-link-xs {
114
+ font-size: var(--mr-text-style-link-xs-font-size);
115
+ font-weight: var(--mr-text-style-link-xs-font-weight);
116
+ line-height: var(--mr-text-style-link-xs-line-height);
117
+ letter-spacing: var(--mr-text-style-link-xs-letter-spacing);
118
+ color: var(--mr-text-style-link-xs-color);
119
+ }
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@mediaradar/design-tokens",
3
+ "version": "2.0.0",
4
+ "main": "dist/js/tokens.js",
5
+ "types": "dist/js/tokens.d.ts",
6
+ "type": "module",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/js/tokens.d.ts",
13
+ "default": "./dist/js/tokens.js"
14
+ },
15
+ "./package.json": "./package.json",
16
+ "./*": "./dist/*"
17
+ },
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "scripts": {
22
+ "clean": "rm -rf build",
23
+ "clean-ds": "rm -rf dists",
24
+ "test": "echo \"Error: no test specified\" && exit 1",
25
+ "build": "node scripts/build-tokens.js --verbose"
26
+ },
27
+ "author": "",
28
+ "license": "Apache-2.0",
29
+ "devDependencies": {
30
+ "@types/node": "^25.3.0",
31
+ "eslint": "^10.0.1"
32
+ },
33
+ "dependencies": {
34
+ "@tokens-studio/sd-transforms": "^2.0.3",
35
+ "lodash": "^4.17.21",
36
+ "lodash-es": "^4.17.21",
37
+ "style-dictionary": "^5.0.1"
38
+ },
39
+ "keywords": [
40
+ "design-tokens",
41
+ "mediaradar"
42
+ ],
43
+ "description": "MediaRadar design tokens — CSS custom properties, Tailwind v4 theme, and JS/TS values, built by Style Dictionary."
44
+ }