@orsetra/shared-config 1.0.0 → 1.0.2

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.
package/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ // Shared configuration exports
2
+ export * from './theme'
package/package.json CHANGED
@@ -1,17 +1,24 @@
1
1
  {
2
2
  "name": "@orsetra/shared-config",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Shared configuration files for Orsetra platform",
5
5
  "main": "./index.ts",
6
6
  "types": "./index.ts",
7
7
  "exports": {
8
8
  ".": "./index.ts",
9
9
  "./tailwind": "./tailwind.config.ts",
10
+ "./tailwind/preset": "./tailwind/preset.js",
11
+ "./theme": "./theme/index.ts",
12
+ "./styles": "./styles/globals.css",
13
+ "./styles/*": "./styles/*",
10
14
  "./typescript": "./tsconfig.json"
11
15
  },
12
16
  "files": [
13
17
  "index.ts",
14
18
  "tailwind.config.ts",
19
+ "tailwind",
20
+ "theme",
21
+ "styles",
15
22
  "tsconfig.json",
16
23
  "README.md"
17
24
  ],
@@ -0,0 +1,265 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ /* ==============================================
6
+ VARIABLES CSS - Zitadel Login Theme
7
+ ============================================== */
8
+ @layer base {
9
+ :root {
10
+ /* Zitadel Theme Variables - Light Mode */
11
+ --theme-light-primary-500: #5469d4;
12
+ --theme-light-primary-600: #3c54ce;
13
+ --theme-light-primary-contrast-500: #ffffff;
14
+ --theme-light-background-100: #ffffff;
15
+ --theme-light-background-400: #ffffff;
16
+ --theme-light-background-500: #fafafa;
17
+ --theme-light-background-600: #ebebeb;
18
+ --theme-light-text: #000000;
19
+ --theme-light-secondary-text: #000000c7;
20
+ --theme-light-warn-500: #cd3d56;
21
+ --theme-light-warn-600: #bb3048;
22
+
23
+ /* Zitadel Theme Variables - Dark Mode */
24
+ --theme-dark-primary-500: #2073c4;
25
+ --theme-dark-primary-600: #1c64aa;
26
+ --theme-dark-primary-contrast-500: #ffffff;
27
+ --theme-dark-background-400: #1a253c;
28
+ --theme-dark-background-500: #111827;
29
+ --theme-dark-background-600: #080b12;
30
+ --theme-dark-text: #ffffff;
31
+ --theme-dark-secondary-text: #ffffffc7;
32
+ --theme-dark-warn-500: #ff3b5b;
33
+ --theme-dark-warn-600: #ff1c41;
34
+
35
+ /* Couleurs principales (compatibilité shadcn) */
36
+ --background: 0 0% 100%;
37
+ --foreground: 0 0% 9%;
38
+ --card: 0 0% 100%;
39
+ --card-foreground: 0 0% 9%;
40
+ --popover: 0 0% 100%;
41
+ --popover-foreground: 0 0% 9%;
42
+ --primary: 217 100% 53%; /* IBM Blue #0f62fe */
43
+ --primary-foreground: 0 0% 100%;
44
+ --secondary: 0 0% 96%;
45
+ --secondary-foreground: 0 0% 9%;
46
+ --muted: 0 0% 96%;
47
+ --muted-foreground: 0 0% 45%;
48
+ --accent: 0 0% 96%;
49
+ --accent-foreground: 0 0% 9%;
50
+ --destructive: 0 84% 60%;
51
+ --destructive-foreground: 0 0% 98%;
52
+ --border: 0 0% 89%;
53
+ --input: 0 0% 89%;
54
+ --ring: 217 100% 53%;
55
+ --radius: 0.25rem;
56
+
57
+ /* IBM Design System - Tokens de couleur */
58
+ --ibm-blue-60: #0f62fe;
59
+ --ibm-blue-70: #0043ce;
60
+ --ibm-gray-100: #161616;
61
+ --ibm-gray-70: #525252;
62
+ --ibm-gray-50: #8d8d8d;
63
+ --ibm-gray-30: #c6c6c6;
64
+ --ibm-gray-20: #e0e0e0;
65
+ --ibm-gray-10: #f4f4f4;
66
+ --ibm-green-60: #198038;
67
+ --ibm-red-60: #da1e28;
68
+ --ibm-purple-60: #8a3ffc;
69
+ --ibm-orange-60: #ff832b;
70
+ }
71
+
72
+ /* Configuration de base */
73
+ html {
74
+ color-scheme: light;
75
+ }
76
+
77
+ body {
78
+ font-feature-settings: "rlig" 1, "calt" 1;
79
+ background-color: var(--theme-light-background-600);
80
+ color: var(--ibm-gray-100);
81
+ }
82
+
83
+ /* Dark mode */
84
+ html.dark body {
85
+ background-color: var(--theme-dark-background-600);
86
+ color: var(--theme-dark-text);
87
+ }
88
+ }
89
+
90
+ /* ==============================================
91
+ COMPOSANTS - Badges
92
+ ============================================== */
93
+ @layer components {
94
+ .badge-green {
95
+ @apply bg-green-50 text-green-700 border-2 border-green-500 font-medium px-3 py-1;
96
+ }
97
+
98
+ .badge-blue {
99
+ @apply bg-blue-50 text-blue-700 border-2 border-blue-500 font-medium px-3 py-1;
100
+ }
101
+
102
+ .badge-red {
103
+ @apply bg-red-50 text-red-700 border-2 border-red-500 font-medium px-3 py-1;
104
+ }
105
+
106
+ .badge-yellow {
107
+ @apply bg-yellow-50 text-yellow-700 border-2 border-yellow-500 font-medium px-3 py-1;
108
+ }
109
+
110
+ .badge-purple {
111
+ @apply bg-purple-50 text-purple-700 border-2 border-purple-500 font-medium px-3 py-1;
112
+ }
113
+
114
+ .badge-orange {
115
+ @apply bg-orange-50 text-orange-700 border-2 border-orange-500 font-medium px-3 py-1;
116
+ }
117
+
118
+ .badge-gray {
119
+ @apply bg-gray-50 text-gray-700 border-2 border-gray-400 font-medium px-3 py-1;
120
+ }
121
+
122
+ /* Typographie IBM */
123
+ h1, h2, h3, h4, h5, h6 {
124
+ @apply font-normal;
125
+ color: var(--ibm-gray-100);
126
+ }
127
+
128
+ p {
129
+ color: var(--ibm-gray-70);
130
+ }
131
+
132
+ /* Boutons IBM */
133
+ .btn {
134
+ @apply font-normal transition-colors;
135
+ }
136
+
137
+ .btn-primary {
138
+ background-color: var(--ibm-blue-60);
139
+ @apply text-white;
140
+ }
141
+
142
+ .btn-primary:hover {
143
+ background-color: var(--ibm-blue-70);
144
+ }
145
+
146
+ .btn-secondary {
147
+ background-color: var(--ibm-gray-70);
148
+ @apply text-white;
149
+ }
150
+
151
+ .btn-secondary:hover {
152
+ background-color: var(--ibm-gray-100);
153
+ }
154
+
155
+ .btn-outline {
156
+ @apply border text-gray-700 hover:bg-gray-50;
157
+ border-color: var(--ibm-gray-20);
158
+ }
159
+
160
+ /* Inputs et formulaires */
161
+ input, select, textarea {
162
+ border-color: var(--ibm-gray-20);
163
+ }
164
+
165
+ input:focus, select:focus, textarea:focus {
166
+ border-color: var(--ibm-blue-60);
167
+ @apply ring-1;
168
+ --tw-ring-color: var(--ibm-blue-60);
169
+ }
170
+
171
+ /* Cartes */
172
+ .card {
173
+ border-color: var(--ibm-gray-20);
174
+ }
175
+
176
+ /* Tableaux IBM */
177
+ table {
178
+ @apply w-full text-left;
179
+ }
180
+
181
+ th {
182
+ @apply font-normal p-4;
183
+ background-color: var(--ibm-gray-10);
184
+ color: var(--ibm-gray-70);
185
+ border-bottom: 1px solid var(--ibm-gray-20);
186
+ }
187
+
188
+ td {
189
+ @apply p-4;
190
+ color: var(--ibm-gray-100);
191
+ border-bottom: 1px solid var(--ibm-gray-20);
192
+ }
193
+
194
+ /* Navigation */
195
+ nav a {
196
+ color: var(--ibm-gray-70);
197
+ @apply transition-colors;
198
+ }
199
+
200
+ nav a:hover {
201
+ color: var(--ibm-gray-100);
202
+ }
203
+ }
204
+
205
+ /* ==============================================
206
+ CLASSES UTILITAIRES IBM
207
+ ============================================== */
208
+ /* Couleurs de texte IBM */
209
+ .text-ibm-gray-100 { color: var(--ibm-gray-100); }
210
+ .text-ibm-gray-70 { color: var(--ibm-gray-70); }
211
+ .text-ibm-gray-50 { color: var(--ibm-gray-50); }
212
+ .text-ibm-gray-30 { color: var(--ibm-gray-30); }
213
+ .text-ibm-gray-20 { color: var(--ibm-gray-20); }
214
+ .text-ibm-gray-10 { color: var(--ibm-gray-10); }
215
+
216
+ /* Couleurs de fond IBM */
217
+ .bg-ibm-blue-60 { background-color: var(--ibm-blue-60); }
218
+ .bg-ibm-blue-70 { background-color: var(--ibm-blue-70); }
219
+ .bg-ibm-gray-100 { background-color: var(--ibm-gray-100); }
220
+ .bg-ibm-gray-70 { background-color: var(--ibm-gray-70); }
221
+ .bg-ibm-gray-50 { background-color: var(--ibm-gray-50); }
222
+ .bg-ibm-gray-30 { background-color: var(--ibm-gray-30); }
223
+ .bg-ibm-gray-20 { background-color: var(--ibm-gray-20); }
224
+ .bg-ibm-gray-10 { background-color: var(--ibm-gray-10); }
225
+ .bg-ibm-green-60 { background-color: var(--ibm-green-60); }
226
+ .bg-ibm-red-60 { background-color: var(--ibm-red-60); }
227
+ .bg-ibm-purple-60 { background-color: var(--ibm-purple-60); }
228
+ .bg-ibm-orange-60 { background-color: var(--ibm-orange-60); }
229
+
230
+ /* Couleurs de bordure IBM */
231
+ .border-ibm-gray-100 { border-color: var(--ibm-gray-100); }
232
+ .border-ibm-gray-70 { border-color: var(--ibm-gray-70); }
233
+ .border-ibm-gray-50 { border-color: var(--ibm-gray-50); }
234
+ .border-ibm-gray-30 { border-color: var(--ibm-gray-30); }
235
+ .border-ibm-gray-20 { border-color: var(--ibm-gray-20); }
236
+ .border-ibm-gray-10 { border-color: var(--ibm-gray-10); }
237
+ .border-ibm-blue-60 { border-color: var(--ibm-blue-60); }
238
+
239
+ /* Container IBM */
240
+ .ibm-container {
241
+ max-width: 1312px;
242
+ margin-left: auto;
243
+ margin-right: auto;
244
+ padding-left: 1rem;
245
+ padding-right: 1rem;
246
+ }
247
+
248
+ /* Typographie IBM */
249
+ .heading-01 {
250
+ font-size: 2rem;
251
+ line-height: 2.5rem;
252
+ font-weight: 700;
253
+ }
254
+
255
+ .body-long-01 {
256
+ font-size: 1rem;
257
+ line-height: 1.5rem;
258
+ font-weight: 400;
259
+ }
260
+
261
+ .label-01 {
262
+ font-size: 0.75rem;
263
+ line-height: 1rem;
264
+ font-weight: 600;
265
+ }
@@ -0,0 +1,59 @@
1
+ const { fontFamily, fontSize, colors, boxShadow, borderRadius, spacing } = require('../theme')
2
+
3
+ /** @type {import('tailwindcss').Config} */
4
+ module.exports = {
5
+ darkMode: 'class',
6
+ theme: {
7
+ extend: {
8
+ fontFamily,
9
+ fontSize,
10
+ colors: {
11
+ ...colors,
12
+ // Zitadel Theme Colors
13
+ 'background-light': {
14
+ 100: 'var(--theme-light-background-100)',
15
+ 400: 'var(--theme-light-background-400)',
16
+ 500: 'var(--theme-light-background-500)',
17
+ 600: 'var(--theme-light-background-600)',
18
+ },
19
+ 'background-dark': {
20
+ 400: 'var(--theme-dark-background-400)',
21
+ 500: 'var(--theme-dark-background-500)',
22
+ 600: 'var(--theme-dark-background-600)',
23
+ },
24
+ 'primary-light': {
25
+ 500: 'var(--theme-light-primary-500)',
26
+ 600: 'var(--theme-light-primary-600)',
27
+ },
28
+ 'primary-dark': {
29
+ 500: 'var(--theme-dark-primary-500)',
30
+ 600: 'var(--theme-dark-primary-600)',
31
+ },
32
+ 'text-light': {
33
+ normal: 'var(--theme-light-text)',
34
+ secondary: 'var(--theme-light-secondary-text)',
35
+ 'on-primary': 'var(--theme-light-primary-contrast-500)',
36
+ },
37
+ 'text-dark': {
38
+ normal: 'var(--theme-dark-text)',
39
+ secondary: 'var(--theme-dark-secondary-text)',
40
+ 'on-primary': 'var(--theme-dark-primary-contrast-500)',
41
+ },
42
+ 'error-light': {
43
+ 500: 'var(--theme-light-warn-500)',
44
+ 600: 'var(--theme-light-warn-600)',
45
+ },
46
+ 'error-dark': {
47
+ 500: 'var(--theme-dark-warn-500)',
48
+ 600: 'var(--theme-dark-warn-600)',
49
+ },
50
+ 'divider-light': 'var(--theme-light-background-600)',
51
+ 'divider-dark': 'var(--theme-dark-background-400)',
52
+ },
53
+ boxShadow,
54
+ borderRadius,
55
+ spacing
56
+ },
57
+ },
58
+ plugins: [],
59
+ }
package/theme/index.ts ADDED
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Thème Tailwind basé sur IBM Carbon Design System v11
3
+ */
4
+
5
+ export const colors = {
6
+ "carbon-bg": "#ffffff",
7
+ "carbon-bg-hover": "#e5e5e5",
8
+ "carbon-bg-active": "#c6c6c6",
9
+ "carbon-bg-selected": "#e0e0e0",
10
+ "carbon-bg-inverse": "#393939",
11
+ "carbon-layer-01": "#f4f4f4",
12
+ "carbon-layer-02": "#ffffff",
13
+ "carbon-layer-03": "#f4f4f4",
14
+ "carbon-layer-accent-01": "#e0e0e0",
15
+ "carbon-field-01": "#f4f4f4",
16
+ "carbon-field-02": "#ffffff",
17
+ "carbon-text-primary": "#161616",
18
+ "carbon-text-secondary": "#525252",
19
+ "carbon-text-placeholder": "#a8a8a8",
20
+ "carbon-text-helper": "#6f6f6f",
21
+ "carbon-text-error": "#da1e28",
22
+ "carbon-text-inverse": "#ffffff",
23
+ "carbon-text-on-color": "#ffffff",
24
+ "carbon-text-disabled": "#c6c6c6",
25
+ "carbon-link-primary": "#0f62fe",
26
+ "carbon-link-secondary": "#0043ce",
27
+ "carbon-link-visited": "#8a3ffc",
28
+ "carbon-link-inverse": "#78a9ff",
29
+ "carbon-icon-primary": "#161616",
30
+ "carbon-icon-secondary": "#525252",
31
+ "carbon-icon-disabled": "#c6c6c6",
32
+ "carbon-icon-inverse": "#ffffff",
33
+ "carbon-icon-on-color": "#ffffff",
34
+ "carbon-border-subtle": "#e0e0e0",
35
+ "carbon-border-strong": "#8d8d8d",
36
+ "carbon-border-inverse": "#161616",
37
+ "carbon-border-interactive": "#0f62fe",
38
+ "carbon-border-disabled": "#c6c6c6",
39
+ "carbon-support-error": "#da1e28",
40
+ "carbon-support-error-inverse": "#fa4d56",
41
+ "carbon-support-success": "#24a148",
42
+ "carbon-support-success-inverse": "#42be65",
43
+ "carbon-support-warning": "#f1c21b",
44
+ "carbon-support-warning-inverse": "#f1c21b",
45
+ "carbon-support-info": "#0043ce",
46
+ "carbon-support-info-inverse": "#4589ff",
47
+ "carbon-interactive": "#0f62fe",
48
+ "carbon-interactive-hover": "#0353e9",
49
+ "carbon-interactive-active": "#002d9c",
50
+ "carbon-focus": "#0f62fe",
51
+ "carbon-focus-inset": "#ffffff",
52
+ "carbon-focus-inverse": "#ffffff",
53
+ "carbon-button-primary": "#0f62fe",
54
+ "carbon-button-primary-hover": "#0353e9",
55
+ "carbon-button-primary-active": "#002d9c",
56
+ "carbon-button-secondary": "#393939",
57
+ "carbon-button-secondary-hover": "#4c4c4c",
58
+ "carbon-button-secondary-active": "#6f6f6f",
59
+ "carbon-button-tertiary": "#0f62fe",
60
+ "carbon-button-tertiary-hover": "#0353e9",
61
+ "carbon-button-tertiary-active": "#002d9c",
62
+ "carbon-button-danger-primary": "#da1e28",
63
+ "carbon-button-danger-secondary": "#da1e28",
64
+ "carbon-button-danger-hover": "#ba1b23",
65
+ "carbon-button-danger-active": "#750e13",
66
+ "carbon-button-disabled": "#c6c6c6",
67
+ "carbon-blue-10": "#edf5ff",
68
+ "carbon-blue-20": "#d0e2ff",
69
+ "carbon-blue-30": "#a6c8ff",
70
+ "carbon-blue-40": "#78a9ff",
71
+ "carbon-blue-50": "#4589ff",
72
+ "carbon-blue-60": "#0f62fe",
73
+ "carbon-blue-70": "#0043ce",
74
+ "carbon-blue-80": "#002d9c",
75
+ "carbon-blue-90": "#001d6c",
76
+ "carbon-blue-100": "#001141",
77
+ "carbon-green-10": "#defbe6",
78
+ "carbon-green-20": "#a7f0ba",
79
+ "carbon-green-30": "#6fdc8c",
80
+ "carbon-green-40": "#42be65",
81
+ "carbon-green-50": "#24a148",
82
+ "carbon-green-60": "#198038",
83
+ "carbon-green-70": "#0e6027",
84
+ "carbon-green-80": "#044317",
85
+ "carbon-green-90": "#022d0d",
86
+ "carbon-green-100": "#071908",
87
+ "carbon-red-10": "#fff1f1",
88
+ "carbon-red-20": "#ffd7d9",
89
+ "carbon-red-30": "#ffb3b8",
90
+ "carbon-red-40": "#ff8389",
91
+ "carbon-red-50": "#fa4d56",
92
+ "carbon-red-60": "#da1e28",
93
+ "carbon-red-70": "#a2191f",
94
+ "carbon-red-80": "#750e13",
95
+ "carbon-red-90": "#520408",
96
+ "carbon-red-100": "#2d0709",
97
+ "carbon-yellow-10": "#fcf4d6",
98
+ "carbon-yellow-20": "#fddc69",
99
+ "carbon-yellow-30": "#f1c21b",
100
+ "carbon-yellow-40": "#d2a106",
101
+ "carbon-yellow-50": "#b28600",
102
+ "carbon-yellow-60": "#8e6a00",
103
+ "carbon-yellow-70": "#684e00",
104
+ "carbon-yellow-80": "#483700",
105
+ "carbon-yellow-90": "#302400",
106
+ "carbon-yellow-100": "#1c1500",
107
+ "carbon-gray-10": "#f4f4f4",
108
+ "carbon-gray-20": "#e0e0e0",
109
+ "carbon-gray-30": "#c6c6c6",
110
+ "carbon-gray-40": "#a8a8a8",
111
+ "carbon-gray-50": "#8d8d8d",
112
+ "carbon-gray-60": "#6f6f6f",
113
+ "carbon-gray-70": "#525252",
114
+ "carbon-gray-80": "#393939",
115
+ "carbon-gray-90": "#262626",
116
+ "carbon-gray-100": "#161616"
117
+ }
118
+
119
+ export const spacing = {
120
+ "carbon-spacing-01": "0.125rem",
121
+ "carbon-spacing-02": "0.25rem",
122
+ "carbon-spacing-03": "0.5rem",
123
+ "carbon-spacing-04": "0.75rem",
124
+ "carbon-spacing-05": "1rem",
125
+ "carbon-spacing-06": "1.5rem",
126
+ "carbon-spacing-07": "2rem",
127
+ "carbon-spacing-08": "2.5rem",
128
+ "carbon-spacing-09": "3rem",
129
+ "carbon-spacing-10": "4rem",
130
+ "carbon-spacing-11": "5rem",
131
+ "carbon-spacing-12": "6rem",
132
+ "carbon-spacing-13": "10rem"
133
+ }
134
+
135
+ export const fontSize = {
136
+ "carbon-text-xs": ["0.75rem", { lineHeight: "1.34" }],
137
+ "carbon-text-sm": ["0.875rem", { lineHeight: "1.29" }],
138
+ "carbon-text-md": ["1rem", { lineHeight: "1.5" }],
139
+ "carbon-text-lg": ["1.125rem", { lineHeight: "1.4" }],
140
+ "carbon-text-xl": ["1.25rem", { lineHeight: "1.4" }],
141
+ "carbon-text-2xl": ["1.5rem", { lineHeight: "1.334" }],
142
+ "carbon-text-3xl": ["1.75rem", { lineHeight: "1.29" }],
143
+ "carbon-text-4xl": ["2rem", { lineHeight: "1.25" }],
144
+ "carbon-text-5xl": ["2.25rem", { lineHeight: "1.25" }],
145
+ "carbon-text-6xl": ["2.625rem", { lineHeight: "1.199" }],
146
+ "carbon-text-7xl": ["3.375rem", { lineHeight: "1.19" }]
147
+ }
148
+
149
+ export const fontFamily = {
150
+ "carbon-sans": [
151
+ "IBM Plex Sans",
152
+ "-apple-system",
153
+ "BlinkMacSystemFont",
154
+ "Segoe UI",
155
+ "Roboto",
156
+ "Helvetica Neue",
157
+ "Arial",
158
+ "sans-serif"
159
+ ],
160
+ "carbon-mono": [
161
+ "IBM Plex Mono",
162
+ "Menlo",
163
+ "DejaVu Sans Mono",
164
+ "Bitstream Vera Sans Mono",
165
+ "Courier",
166
+ "monospace"
167
+ ],
168
+ "carbon-serif": [
169
+ "IBM Plex Serif",
170
+ "Georgia",
171
+ "Times New Roman",
172
+ "serif"
173
+ ]
174
+ }
175
+
176
+ export const borderRadius = {
177
+ "carbon-none": "0",
178
+ "carbon-sm": "0.125rem",
179
+ "carbon-md": "0.25rem",
180
+ "carbon-lg": "0.5rem"
181
+ }
182
+
183
+ export const borderWidth = {
184
+ "carbon-sm": "1px",
185
+ "carbon-md": "2px",
186
+ "carbon-lg": "3px"
187
+ }
188
+
189
+ export const boxShadow = {
190
+ "carbon-none": "none",
191
+ "carbon-sm": "0 1px 2px 0 rgba(0, 0, 0, 0.3)",
192
+ "carbon-md": "0 2px 6px 0 rgba(0, 0, 0, 0.3)",
193
+ "carbon-lg": "0 4px 8px 0 rgba(0, 0, 0, 0.1)",
194
+ "carbon-xl": "0 8px 16px 0 rgba(0, 0, 0, 0.1)"
195
+ }
196
+
197
+ export const zIndex = {
198
+ "carbon-modal": "9000",
199
+ "carbon-overlay": "8000",
200
+ "carbon-dropdown": "7000",
201
+ "carbon-header": "6000",
202
+ "carbon-floating": "5000"
203
+ }
204
+
205
+ export const transitionDuration = {
206
+ "carbon-fast-01": "70ms",
207
+ "carbon-fast-02": "110ms",
208
+ "carbon-moderate-01": "150ms",
209
+ "carbon-moderate-02": "240ms",
210
+ "carbon-slow-01": "400ms",
211
+ "carbon-slow-02": "700ms"
212
+ }