@signosoft/signpad-js 0.6.0 → 0.7.1

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/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@signosoft/signpad-js",
3
3
  "private": false,
4
- "version": "0.6.0",
4
+ "version": "0.7.1",
5
+ "license": "SEE LICENSE IN LICENSE",
5
6
  "browser": {
6
7
  "fs": false
7
8
  },
@@ -22,9 +23,13 @@
22
23
  },
23
24
  "files": [
24
25
  "dist",
26
+ "src/i18n",
27
+ "src/styles/primitive.css",
28
+ "src/styles/semantic.css",
29
+ "src/styles/semantic-dark.css",
25
30
  "src/styles/styles-variables.css",
26
31
  "src/styles/signosoft-signpad.css",
27
- "docsVideo.gif",
32
+ "presentation.gif",
28
33
  "package.json",
29
34
  "README.md",
30
35
  "LICENSE"
@@ -32,15 +37,21 @@
32
37
  "scripts": {
33
38
  "dev": "vite",
34
39
  "build": "tsc && vite build",
35
- "preview": "vite preview"
40
+ "preview": "vite preview",
41
+ "test": "jest",
42
+ "test:watch": "jest --watch"
36
43
  },
37
44
  "dependencies": {
38
- "@signosoft/tablet-driver": "0.1.4",
45
+ "@signosoft/tablet-driver": "0.1.5",
39
46
  "lit": "^3.3.1"
40
47
  },
41
48
  "devDependencies": {
42
49
  "@rollup/plugin-replace": "^6.0.3",
50
+ "@types/jest": "^30.0.0",
43
51
  "@types/node": "^25.0.9",
52
+ "jest": "^30.5.2",
53
+ "jest-environment-jsdom": "^30.5.2",
54
+ "ts-jest": "^29.4.14",
44
55
  "typescript": "~5.9.3",
45
56
  "vite": "^7.2.4",
46
57
  "vite-plugin-dts": "^4.5.4"
Binary file
@@ -0,0 +1,38 @@
1
+ {
2
+ "OK": "OK",
3
+ "CLEAR": "Smazat",
4
+ "CANCEL": "Zrušit",
5
+ "CLEAR_SIGNATURE": "Smazat podpis",
6
+ "DISCONNECT": "Odpojit",
7
+ "CONNECT_SIGNPAD": "Připojit Signpad",
8
+ "MOUSE": "Myš",
9
+ "CONNECTED_UNKNOWN_DEVICE": "Připojeno (neznámé zařízení)",
10
+ "AUTO_CONNECTING": "Automatické připojování k zařízení...",
11
+ "CONNECTING_TO_DEVICE": "Připojování k vašemu zařízení...",
12
+ "REVERTING_TO_DEFAULT": "Přepínání na výchozí vstup...",
13
+ "DISCONNECTING_DEVICE": "Odpojování zařízení...",
14
+ "PREPARING_SESSION": "Připravuji podpisovou relaci...",
15
+ "PROCESSING_OK": "Zpracovávám potvrzení...",
16
+ "PROCESSING_CLEAR": "Mazání podpisu...",
17
+ "PROCESSING_CANCEL": "Rušení podpisu...",
18
+ "TEXT_START_SIGNING": "Připojte své zařízení.",
19
+ "TEXT_SIGN_WITH_PHYSICAL": "Podepište se perem zařízení.",
20
+ "TEXT_SIGN_WITH_MOUSE": "Podepište se pomocí myši.",
21
+ "TEXT_SIGN_GENERIC": "Podepište se v oblasti výše pomocí myši nebo pera.",
22
+ "TEXT_SIGNING_WITH_DEVICE": "Podepisování pomocí: {device}",
23
+ "TEXT_PRESS_START_SIGNING": "Pro pokračování zahajte nové podepisování.",
24
+ "CONNECTION_ERROR": "K podpisovému padu se nepodařilo připojit. Zkuste to znovu.",
25
+ "INSUFFICIENT_TOKENS": "Nedostatek podpisových kreditů.",
26
+ "ERROR_STARTING_SIGNING": "Podpisovou relaci se nepodařilo zahájit.",
27
+ "ERROR_PROCESSING_ACTION": "Akci se nepodařilo dokončit.",
28
+ "INVALID_LICENSE_KEY": "Licenční klíč byl odmítnut. Zkontrolujte, že je lease platný a vydaný pro tuto stránku.",
29
+ "READY_TO_SIGN_MOUSE": "Připraveno k podpisu. Použijte myš.",
30
+ "READY_TO_SIGN_PHYSICAL": "Připraveno k podpisu. Použijte pero zařízení.",
31
+ "INITIALIZING": "Připravuji podpisový pad...",
32
+ "LICENSE_MISSING": "Chybí licenční klíč. Předejte platný lease v konfiguraci komponenty.",
33
+ "ERROR_DRIVER_INIT": "Ovladač podpisového padu se nepodařilo spustit. Zkuste to znovu nebo obnovte stránku.",
34
+ "NETWORK_ERROR": "Chyba sítě. Zkontrolujte připojení k internetu a zkuste to znovu.",
35
+ "START_NEW_SIGNATURE": "Podepsat znovu",
36
+ "RESTART_SESSION": "Obnovit relaci",
37
+ "CANVAS_ARIA_LABEL": "Oblast pro podpis"
38
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "OK": "OK",
3
+ "CLEAR": "Clear",
4
+ "CANCEL": "Cancel",
5
+ "CLEAR_SIGNATURE": "Clear signature",
6
+ "DISCONNECT": "Disconnect",
7
+ "CONNECT_SIGNPAD": "Connect Signpad",
8
+ "MOUSE": "Mouse",
9
+ "CONNECTED_UNKNOWN_DEVICE": "Connected (Unknown Device)",
10
+ "AUTO_CONNECTING": "Auto-connecting to device...",
11
+ "CONNECTING_TO_DEVICE": "Connecting to your device...",
12
+ "REVERTING_TO_DEFAULT": "Reverting to default input...",
13
+ "DISCONNECTING_DEVICE": "Disconnecting device...",
14
+ "PREPARING_SESSION": "Preparing session...",
15
+ "PROCESSING_OK": "Processing OK...",
16
+ "PROCESSING_CLEAR": "Clearing...",
17
+ "PROCESSING_CANCEL": "Canceling...",
18
+ "TEXT_START_SIGNING": "Connect your device.",
19
+ "TEXT_SIGN_WITH_PHYSICAL": "Please sign using the device pen.",
20
+ "TEXT_SIGN_WITH_MOUSE": "Please sign using your mouse.",
21
+ "TEXT_SIGN_GENERIC": "Sign in the area above using mouse or pen.",
22
+ "TEXT_SIGNING_WITH_DEVICE": "Signing with {device}",
23
+ "TEXT_PRESS_START_SIGNING": "Start a new signing session to continue.",
24
+ "CONNECTION_ERROR": "Could not connect to the signature pad. Try again.",
25
+ "INSUFFICIENT_TOKENS": "Not enough signing credits.",
26
+ "ERROR_STARTING_SIGNING": "Could not start the signing session.",
27
+ "ERROR_PROCESSING_ACTION": "The action could not be completed.",
28
+ "INVALID_LICENSE_KEY": "The license key was rejected. Check that the lease is valid and issued for this website.",
29
+ "READY_TO_SIGN_MOUSE": "Ready to sign. Use your mouse.",
30
+ "READY_TO_SIGN_PHYSICAL": "Ready to sign. Use the device pen.",
31
+ "INITIALIZING": "Preparing signature pad...",
32
+ "LICENSE_MISSING": "License key is missing. Provide a valid lease in the component config.",
33
+ "ERROR_DRIVER_INIT": "The signature driver could not be started. Try again or reload the page.",
34
+ "NETWORK_ERROR": "Network error. Check your internet connection and try again.",
35
+ "START_NEW_SIGNATURE": "Start new signature",
36
+ "RESTART_SESSION": "Restart session",
37
+ "CANVAS_ARIA_LABEL": "Signature drawing area"
38
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "OK": "OK",
3
+ "CLEAR": "Limpar",
4
+ "CANCEL": "Cancelar",
5
+ "CLEAR_SIGNATURE": "Limpar assinatura",
6
+ "DISCONNECT": "Desconectar",
7
+ "CONNECT_SIGNPAD": "Conectar Signpad",
8
+ "MOUSE": "Mouse",
9
+ "CONNECTED_UNKNOWN_DEVICE": "Conectado (Dispositivo Desconhecido)",
10
+ "AUTO_CONNECTING": "Autoconectando ao dispositivo...",
11
+ "CONNECTING_TO_DEVICE": "Conectando ao seu dispositivo...",
12
+ "REVERTING_TO_DEFAULT": "Voltando para a entrada padrão...",
13
+ "DISCONNECTING_DEVICE": "Desconectando dispositivo...",
14
+ "PREPARING_SESSION": "Preparando a sessão...",
15
+ "PROCESSING_OK": "Processando OK...",
16
+ "PROCESSING_CLEAR": "Limpando...",
17
+ "PROCESSING_CANCEL": "Cancelando...",
18
+ "TEXT_START_SIGNING": "Conecte o seu dispositivo.",
19
+ "TEXT_SIGN_WITH_PHYSICAL": "Por favor, assine usando a caneta do dispositivo.",
20
+ "TEXT_SIGN_WITH_MOUSE": "Por favor, assine usando o mouse.",
21
+ "TEXT_SIGN_GENERIC": "Assine na área acima usando o mouse ou a caneta.",
22
+ "TEXT_SIGNING_WITH_DEVICE": "Assinando com {device}",
23
+ "TEXT_PRESS_START_SIGNING": "Inicie uma nova sessão de assinatura para continuar.",
24
+ "CONNECTION_ERROR": "Não foi possível conectar ao pad de assinatura. Tente novamente.",
25
+ "INSUFFICIENT_TOKENS": "Créditos de assinatura insuficientes.",
26
+ "ERROR_STARTING_SIGNING": "Não foi possível iniciar a sessão de assinatura.",
27
+ "ERROR_PROCESSING_ACTION": "Não foi possível concluir a ação.",
28
+ "INVALID_LICENSE_KEY": "A chave de licença foi rejeitada. Verifique se o lease é válido e emitido para este site.",
29
+ "READY_TO_SIGN_MOUSE": "Pronto para assinar. Use o mouse.",
30
+ "READY_TO_SIGN_PHYSICAL": "Pronto para assinar. Use a caneta do dispositivo.",
31
+ "INITIALIZING": "Preparando o pad de assinatura...",
32
+ "LICENSE_MISSING": "Falta a chave de licença. Forneça um lease válido na configuração do componente.",
33
+ "ERROR_DRIVER_INIT": "Não foi possível iniciar o driver de assinatura. Tente novamente ou recarregue a página.",
34
+ "NETWORK_ERROR": "Erro de rede. Verifique a sua ligação à internet e tente novamente.",
35
+ "START_NEW_SIGNATURE": "Assinar novamente",
36
+ "RESTART_SESSION": "Reiniciar sessão",
37
+ "CANVAS_ARIA_LABEL": "Área de assinatura"
38
+ }
@@ -0,0 +1,292 @@
1
+ /* Design system primitive tokens. Source of truth: the design system (Figma export) — edit here only to re-sync.
2
+ --unit-*, --spacing-* and --borderRadius-* are converted from px to rem (value / 16, original px in the comment)
3
+ so the component scales with the browser font size; re-apply this when re-syncing. Pill/circle radii and border widths stay px. */
4
+ :host {
5
+ --primary-black: #000000;
6
+ --primary-black50: #00000080;
7
+ --primary-white: #ffffff;
8
+ --primary-white50: #ffffff80;
9
+ }
10
+ :host {
11
+ --brand-50: #ebf7f1;
12
+ --brand-100: #d7efe2;
13
+ --brand-150: #c4e8d4;
14
+ --brand-200: #b0e0c5;
15
+ --brand-250: #9cd8b7;
16
+ --brand-300: #88d0a9;
17
+ --brand-350: #74c89a;
18
+ --brand-400: #61c18c;
19
+ --brand-450: #4db97d;
20
+ --brand-500: #39b16f;
21
+ --brand-550: #339f64;
22
+ --brand-600: #2e8e59;
23
+ --brand-650: #287c4e;
24
+ --brand-700: #226a43;
25
+ --brand-750: #1d5938;
26
+ --brand-800: #17472c;
27
+ --brand-850: #113521;
28
+ --brand-900: #0b2316;
29
+ --brand-950: #06120b;
30
+ }
31
+ :host {
32
+ --brandBeige-50: #fefefd;
33
+ --brandBeige-100: #fcfcfa;
34
+ --brandBeige-150: #fbfbf8;
35
+ --brandBeige-200: #faf9f5;
36
+ --brandBeige-250: #f9f8f3;
37
+ --brandBeige-300: #f7f7f1;
38
+ --brandBeige-350: #f6f5ee;
39
+ --brandBeige-400: #f5f4ec;
40
+ --brandBeige-450: #f3f2e9;
41
+ --brandBeige-500: #f2f1e7;
42
+ --brandBeige-550: #dad9d0;
43
+ --brandBeige-600: #c2c1b9;
44
+ --brandBeige-650: #a9a9a2;
45
+ --brandBeige-700: #91918b;
46
+ --brandBeige-750: #797974;
47
+ --brandBeige-800: #61605c;
48
+ --brandBeige-850: #494845;
49
+ --brandBeige-900: #30302e;
50
+ --brandBeige-950: #181817;
51
+ }
52
+ :host {
53
+ --neutral-0: #ffffff;
54
+ --neutral-50: #f2f2f2;
55
+ --neutral-100: #e5e5e5;
56
+ --neutral-150: #d9d9d9;
57
+ --neutral-200: #cccccc;
58
+ --neutral-250: #bfbfbf;
59
+ --neutral-300: #b2b2b2;
60
+ --neutral-350: #a6a6a6;
61
+ --neutral-400: #999999;
62
+ --neutral-450: #8c8c8c;
63
+ --neutral-500: #808080;
64
+ --neutral-550: #737373;
65
+ --neutral-600: #666666;
66
+ --neutral-650: #595959;
67
+ --neutral-700: #4d4d4d;
68
+ --neutral-750: #404040;
69
+ --neutral-800: #333333;
70
+ --neutral-850: #262626;
71
+ --neutral-900: #1a1a1a;
72
+ --neutral-950: #0d0d0d;
73
+ }
74
+ :host {
75
+ --blue-100: #d6ddff;
76
+ --blue-200: #adbbff;
77
+ --blue-300: #8599ff;
78
+ --blue-400: #5c77ff;
79
+ --blue-500: #3355ff;
80
+ --blue-600: #2944cc;
81
+ --blue-700: #1f3399;
82
+ --blue-800: #142266;
83
+ --blue-900: #0a1133;
84
+ }
85
+ :host {
86
+ --purple-100: #e4d6ff;
87
+ --purple-200: #c9adff;
88
+ --purple-300: #ad85ff;
89
+ --purple-400: #925cff;
90
+ --purple-500: #7733ff;
91
+ --purple-600: #5f29cc;
92
+ --purple-700: #471f99;
93
+ --purple-800: #301466;
94
+ --purple-900: #180a33;
95
+ }
96
+ :host {
97
+ --violet-100: #f1d6ff;
98
+ --violet-200: #e4adff;
99
+ --violet-300: #d685ff;
100
+ --violet-400: #c95cff;
101
+ --violet-500: #bb33ff;
102
+ --violet-600: #9629cc;
103
+ --violet-700: #701f99;
104
+ --violet-800: #4b1466;
105
+ --violet-900: #250a33;
106
+ }
107
+ :host {
108
+ --red-100: #ffd4d4;
109
+ --red-200: #ffa9a9;
110
+ --red-300: #ff7f7f;
111
+ --red-400: #ff5454;
112
+ --red-500: #ff2929;
113
+ --red-600: #cc2121;
114
+ --red-700: #991919;
115
+ --red-800: #661010;
116
+ --red-900: #330808;
117
+ }
118
+ :host {
119
+ --pink-100: #ffd6dd;
120
+ --pink-200: #ffadbb;
121
+ --pink-300: #ff8599;
122
+ --pink-400: #ff5c77;
123
+ --pink-500: #ff3355;
124
+ --pink-600: #cc2944;
125
+ --pink-700: #991f33;
126
+ --pink-800: #661422;
127
+ --pink-900: #330a11;
128
+ }
129
+ :host {
130
+ --orange-100: #ffead4;
131
+ --orange-200: #ffd5a9;
132
+ --orange-300: #ffc17f;
133
+ --orange-400: #ffac54;
134
+ --orange-500: #ff9729;
135
+ --orange-600: #cc7921;
136
+ --orange-700: #995b19;
137
+ --orange-800: #663c10;
138
+ --orange-900: #331e08;
139
+ }
140
+ :host {
141
+ --yellow-100: #fff5cc;
142
+ --yellow-200: #ffeb99;
143
+ --yellow-300: #ffe066;
144
+ --yellow-400: #ffd633;
145
+ --yellow-500: #ffcc00;
146
+ --yellow-600: #cca300;
147
+ --yellow-700: #997a00;
148
+ --yellow-800: #665200;
149
+ --yellow-900: #332900;
150
+ }
151
+ :host {
152
+ --green-100: #ccebd6;
153
+ --green-200: #99d6ad;
154
+ --green-300: #66c285;
155
+ --green-400: #33ad5c;
156
+ --green-500: #009933;
157
+ --green-600: #007a29;
158
+ --green-700: #005c1f;
159
+ --green-800: #003d14;
160
+ --green-900: #001f0a;
161
+ }
162
+ :host {
163
+ --teal-100: #ccf5f5;
164
+ --teal-200: #99ebeb;
165
+ --teal-300: #66e0e0;
166
+ --teal-400: #33d6d6;
167
+ --teal-500: #00cccc;
168
+ --teal-600: #00a3a3;
169
+ --teal-700: #007a7a;
170
+ --teal-800: #005252;
171
+ --teal-900: #002929;
172
+ }
173
+ :host {
174
+ --cyan-100: #cceeff;
175
+ --cyan-200: #99ddff;
176
+ --cyan-300: #66ccff;
177
+ --cyan-400: #33bbff;
178
+ --cyan-500: #00aaff;
179
+ --cyan-600: #0088cc;
180
+ --cyan-700: #006699;
181
+ --cyan-800: #004466;
182
+ --cyan-900: #002233;
183
+ }
184
+ :host {
185
+ --fontFamily-inter: Inter;
186
+ --fontFamily-newOrder: Inter Display;
187
+ --fontFamily-sfProText: SF Pro Text;
188
+ --fontFamily-roboto: Roboto;
189
+ }
190
+ :host {
191
+ --fontWeight-regular: 400;
192
+ --fontWeight-semiBold: 600;
193
+ }
194
+ :host {
195
+ --fontSize-xs: var(--unit-10);
196
+ --fontSize-s: var(--unit-12);
197
+ --fontSize-m: var(--unit-14);
198
+ --fontSize-l: var(--unit-16);
199
+ --fontSize-xl: var(--unit-18);
200
+ --fontSize-2xl: var(--unit-20);
201
+ --fontSize-3xl: var(--unit-24);
202
+ --fontSize-4xl: var(--unit-28);
203
+ --fontSize-5xl: var(--unit-32);
204
+ --fontSize-6xl: var(--unit-40);
205
+ --fontSize-7xl: var(--unit-48);
206
+ --fontSize-8xl: var(--unit-56);
207
+ --fontSize-9xl: var(--unit-64);
208
+ --fontSize-10xl: var(--unit-72);
209
+ }
210
+ :host {
211
+ --lineHeight-xs: var(--unit-14);
212
+ --lineHeight-s: var(--unit-16);
213
+ --lineHeight-m: var(--unit-20);
214
+ --lineHeight-l: var(--unit-24);
215
+ --lineHeight-xl: var(--unit-26);
216
+ --lineHeight-2xl: var(--unit-28);
217
+ --lineHeight-3xl: var(--unit-32);
218
+ --lineHeight-4xl: var(--unit-36);
219
+ --lineHeight-5xl: var(--unit-40);
220
+ --lineHeight-6xl: var(--unit-48);
221
+ --lineHeight-7xl: var(--unit-56);
222
+ --lineHeight-8xl: var(--unit-64);
223
+ --lineHeight-9xl: var(--unit-72);
224
+ --lineHeight-10xl: var(--unit-80);
225
+ }
226
+ :host {
227
+ --letterSpacing-xs: -1;
228
+ --letterSpacing-s: -0.5;
229
+ --letterSpacing-none: 0;
230
+ }
231
+ :host {
232
+ --unit-2: 0.125rem; /* 2px */
233
+ --unit-4: 0.25rem; /* 4px */
234
+ --unit-8: 0.5rem; /* 8px */
235
+ --unit-10: 0.625rem; /* 10px */
236
+ --unit-12: 0.75rem; /* 12px */
237
+ --unit-14: 0.875rem; /* 14px */
238
+ --unit-16: 1rem; /* 16px */
239
+ --unit-18: 1.125rem; /* 18px */
240
+ --unit-20: 1.25rem; /* 20px */
241
+ --unit-24: 1.5rem; /* 24px */
242
+ --unit-26: 1.625rem; /* 26px */
243
+ --unit-28: 1.75rem; /* 28px */
244
+ --unit-32: 2rem; /* 32px */
245
+ --unit-36: 2.25rem; /* 36px */
246
+ --unit-40: 2.5rem; /* 40px */
247
+ --unit-44: 2.75rem; /* 44px */
248
+ --unit-48: 3rem; /* 48px */
249
+ --unit-56: 3.5rem; /* 56px */
250
+ --unit-64: 4rem; /* 64px */
251
+ --unit-72: 4.5rem; /* 72px */
252
+ --unit-80: 5rem; /* 80px */
253
+ --unit-88: 5.5rem; /* 88px */
254
+ --unit-96: 6rem; /* 96px */
255
+ --unit-104: 6.5rem; /* 104px */
256
+ --unit-112: 7rem; /* 112px */
257
+ --unit-120: 7.5rem; /* 120px */
258
+ }
259
+ :host {
260
+ --spacing-2: 0.125rem; /* 2px */
261
+ --spacing-4: 0.25rem; /* 4px */
262
+ --spacing-8: 0.5rem; /* 8px */
263
+ --spacing-10: 0.625rem; /* 10px */
264
+ --spacing-12: 0.75rem; /* 12px */
265
+ --spacing-16: 1rem; /* 16px */
266
+ --spacing-24: 1.5rem; /* 24px */
267
+ --spacing-32: 2rem; /* 32px */
268
+ --spacing-40: 2.5rem; /* 40px */
269
+ --spacing-48: 3rem; /* 48px */
270
+ --spacing-56: 3.5rem; /* 56px */
271
+ --spacing-64: 4rem; /* 64px */
272
+ --spacing-72: 4.5rem; /* 72px */
273
+ --spacing-80: 5rem; /* 80px */
274
+ --spacing-88: 5.5rem; /* 88px */
275
+ --spacing-96: 6rem; /* 96px */
276
+ }
277
+ :host {
278
+ --borderRadius-circle: 50px;
279
+ --borderRadius-pill: 999px;
280
+ --borderRadius-l: 1rem; /* 16px */
281
+ --borderRadius-m: 0.75rem; /* 12px */
282
+ --borderRadius-s: 0.5rem; /* 8px */
283
+ --borderRadius-xs: 0.25rem; /* 4px */
284
+ }
285
+ :host {
286
+ --borderWidth-xl: 8px;
287
+ --borderWidth-l: 4px;
288
+ --borderWidth-m: 2px;
289
+ --borderWidth-s: 1.5px;
290
+ --borderWidth-xs: 1px;
291
+ --borderWidth-xxs: 0.5px;
292
+ }
@@ -0,0 +1,82 @@
1
+ /* Design system semantic tokens (dark). Source: dark.scss from the design system — edit there and re-sync. Applied when the host has data-theme="dark". Users tokens are not used by the component and are omitted. */
2
+ :host([data-theme="dark"]) {
3
+ --content-primary: var(--neutral-0);
4
+ --content-secondary: var(--neutral-100);
5
+ --content-tertiary: var(--neutral-300);
6
+ --content-quaternary: var(--neutral-300);
7
+ --content-primaryInverse: var(--neutral-900);
8
+ --content-secondaryInverse: var(--neutral-800);
9
+ --content-tertiaryInverse: var(--neutral-600);
10
+ --content-disabled: var(--neutral-700);
11
+ --content-brand: var(--brand-400);
12
+ --content-link: var(--blue-400);
13
+ --content-linkHover: var(--blue-300);
14
+ --content-linkPressed: var(--blue-200);
15
+ --content-info: var(--blue-400);
16
+ --content-infoBold: var(--blue-300);
17
+ --content-notice: var(--orange-400);
18
+ --content-noticeBold: var(--orange-300);
19
+ --content-negative: var(--red-400);
20
+ --content-negativeHover: var(--red-300);
21
+ --content-positive: var(--green-400);
22
+ --content-positiveBold: var(--green-300);
23
+ --content-brandHover: var(--brand-300);
24
+ --content-brandPressed: var(--brand-200);
25
+ --content-brandSubtle: var(--brand-800);
26
+ --content-negativePressed: var(--red-300);
27
+ --content-brandBold: var(--brand-50);
28
+ }
29
+ :host([data-theme="dark"]) {
30
+ --background-primary: var(--neutral-900);
31
+ --background-hover: var(--neutral-800);
32
+ --background-pressed: var(--neutral-700);
33
+ --background-selected: var(--brand-800);
34
+ --background-disabled: var(--neutral-800);
35
+ --background-inverse: var(--neutral-0);
36
+ --background-brand: var(--brand-400);
37
+ --background-brandHover: var(--brand-300);
38
+ --background-brandPressed: var(--brand-200);
39
+ --background-info: var(--blue-400);
40
+ --background-infoSubtle: var(--blue-800);
41
+ --background-notice: var(--orange-400);
42
+ --background-noticeSubtle: var(--orange-800);
43
+ --background-negative: var(--red-400);
44
+ --background-negativeHover: var(--red-300);
45
+ --background-negativePressed: var(--red-200);
46
+ --background-negativeSubtle: var(--red-800);
47
+ --background-positive: var(--green-400);
48
+ --background-positiveSubtle: var(--green-800);
49
+ --background-secondary: var(--neutral-800);
50
+ --background-secondaryPressed: var(--neutral-800);
51
+ --background-brandSubtle: var(--brand-800);
52
+ --background-brandBold: var(--brand-50);
53
+ --background-secondaryHover: var(--neutral-800);
54
+ --background-subtle: var(--neutral-800);
55
+ }
56
+ :host([data-theme="dark"]) {
57
+ --border-primary: var(--neutral-400);
58
+ --border-secondary: var(--neutral-600);
59
+ --border-tertiary: var(--neutral-800);
60
+ --border-disabled: var(--neutral-700);
61
+ --border-brand: var(--brand-400);
62
+ --border-inverse: var(--neutral-900);
63
+ --border-focus: var(--blue-400);
64
+ --border-info: var(--blue-400);
65
+ --border-notice: var(--orange-400);
66
+ --border-negative: var(--red-400);
67
+ --border-positive: var(--green-400);
68
+ --border-mono: var(--primary-white);
69
+ --border-negativeHover: var(--red-300);
70
+ --border-brandPressed: var(--brand-400);
71
+ --border-brandHover: var(--brand-400);
72
+ --border-brandSubtle: var(--brand-800);
73
+ --border-brandBold: var(--brand-50);
74
+ --border-negativePressed: var(--red-200);
75
+ }
76
+ :host([data-theme="dark"]) {
77
+ --surface-l0: var(--neutral-950);
78
+ }
79
+ :host([data-theme="dark"]) {
80
+ --overlay-50: var(--primary-black50);
81
+ --overlay-50Inverse: var(--primary-white50);
82
+ }
@@ -0,0 +1,144 @@
1
+ /* Design system semantic tokens (light). Source of truth: the design system (Figma export) — edit here only to re-sync. */
2
+ :host {
3
+ --content-primary: var(--neutral-800);
4
+ --content-secondary: var(--neutral-700);
5
+ --content-tertiary: var(--neutral-600);
6
+ --content-quaternary: var(--neutral-500);
7
+ --content-primaryInverse: var(--neutral-0);
8
+ --content-secondaryInverse: var(--neutral-100);
9
+ --content-tertiaryInverse: var(--neutral-300);
10
+ --content-disabled: var(--neutral-500);
11
+ --content-brand: var(--brand-500);
12
+ --content-link: var(--blue-500);
13
+ --content-linkHover: var(--blue-600);
14
+ --content-linkPressed: var(--blue-700);
15
+ --content-info: var(--blue-500);
16
+ --content-infoBold: var(--blue-600);
17
+ --content-notice: var(--orange-500);
18
+ --content-noticeBold: var(--orange-700);
19
+ --content-negative: var(--red-600);
20
+ --content-negativeHover: var(--red-700);
21
+ --content-positive: var(--brand-500);
22
+ --content-positiveBold: var(--brand-600);
23
+ --content-brandHover: var(--brand-600);
24
+ --content-brandPressed: var(--brand-750);
25
+ --content-brandSubtle: var(--brand-50);
26
+ --content-negativePressed: var(--red-800);
27
+ --content-brandBold: var(--brand-800);
28
+ }
29
+ :host {
30
+ --background-primary: var(--neutral-0);
31
+ --background-hover: var(--neutral-50);
32
+ --background-pressed: var(--neutral-100);
33
+ --background-selected: var(--neutral-50);
34
+ --background-disabled: var(--neutral-100);
35
+ --background-inverse: var(--neutral-900);
36
+ --background-brand: var(--brand-650);
37
+ --background-brandHover: var(--brand-700);
38
+ --background-brandPressed: var(--brand-750);
39
+ --background-info: var(--blue-500);
40
+ --background-infoSubtle: var(--blue-100);
41
+ --background-notice: var(--orange-500);
42
+ --background-noticeSubtle: var(--orange-100);
43
+ --background-negative: var(--red-500);
44
+ --background-negativeHover: var(--red-600);
45
+ --background-negativePressed: var(--red-700);
46
+ --background-negativeSubtle: var(--red-100);
47
+ --background-positive: var(--brand-500);
48
+ --background-positiveSubtle: var(--brand-100);
49
+ --background-secondary: var(--neutral-150);
50
+ --background-secondaryPressed: var(--neutral-250);
51
+ --background-brandSubtle: var(--brand-50);
52
+ --background-brandBold: var(--brand-800);
53
+ --background-secondaryHover: var(--neutral-200);
54
+ --background-subtle: var(--neutral-50);
55
+ }
56
+ :host {
57
+ --border-primary: var(--neutral-600);
58
+ --border-secondary: var(--neutral-400);
59
+ --border-tertiary: var(--neutral-150);
60
+ --border-disabled: var(--neutral-200);
61
+ --border-brand: var(--brand-500);
62
+ --border-inverse: var(--neutral-0);
63
+ --border-focus: var(--blue-500);
64
+ --border-info: var(--blue-500);
65
+ --border-notice: var(--orange-500);
66
+ --border-negative: var(--red-500);
67
+ --border-positive: var(--brand-500);
68
+ --border-mono: var(--neutral-900);
69
+ --border-negativeHover: var(--red-600);
70
+ --border-brandPressed: var(--brand-750);
71
+ --border-brandHover: var(--brand-600);
72
+ --border-brandSubtle: var(--brand-50);
73
+ --border-brandBold: var(--brand-800);
74
+ --border-negativePressed: var(--red-700);
75
+ }
76
+ :host {
77
+ --surface-l0: var(--neutral-0);
78
+ }
79
+ :host {
80
+ --overlay-50: var(--primary-black50);
81
+ --overlay-50Inverse: #2d2d2d;
82
+ }
83
+ :host {
84
+ --fontFamily-primary: var(--fontFamily-inter);
85
+ --fontFamily-secondary: var(--fontFamily-newOrder);
86
+ }
87
+ :host {
88
+ --text-3xl-regular-fontWeight: var(--fontWeight-regular);
89
+ --text-3xl-regular-fontSize: var(--fontSize-4xl);
90
+ --text-3xl-regular-lineHeight: var(--lineHeight-4xl);
91
+ --text-3xl-regular-letterSpacing: var(--letterSpacing-none);
92
+ --text-3xl-semibold-fontWeight: var(--fontWeight-semiBold);
93
+ --text-3xl-semibold-fontSize: var(--fontSize-4xl);
94
+ --text-3xl-semibold-lineHeight: var(--lineHeight-4xl);
95
+ --text-3xl-semibold-letterSpacing: var(--letterSpacing-none);
96
+ --text-2xl-regular-fontWeight: var(--fontWeight-regular);
97
+ --text-2xl-regular-fontSize: var(--fontSize-3xl);
98
+ --text-2xl-regular-lineHeight: var(--lineHeight-3xl);
99
+ --text-2xl-regular-letterSpacing: var(--letterSpacing-none);
100
+ --text-2xl-semibold-fontWeight: var(--fontWeight-semiBold);
101
+ --text-2xl-semibold-fontSize: var(--fontSize-3xl);
102
+ --text-2xl-semibold-lineHeight: var(--lineHeight-3xl);
103
+ --text-2xl-semibold-letterSpacing: var(--letterSpacing-none);
104
+ --text-xl-regular-fontWeight: var(--fontWeight-regular);
105
+ --text-xl-regular-fontSize: var(--fontSize-2xl);
106
+ --text-xl-regular-lineHeight: var(--lineHeight-2xl);
107
+ --text-xl-regular-letterSpacing: var(--letterSpacing-none);
108
+ --text-xl-semibold-fontWeight: var(--fontWeight-semiBold);
109
+ --text-xl-semibold-fontSize: var(--fontSize-2xl);
110
+ --text-xl-semibold-lineHeight: var(--lineHeight-2xl);
111
+ --text-xl-semibold-letterSpacing: var(--letterSpacing-none);
112
+ --text-l-regular-fontWeight: var(--fontWeight-regular);
113
+ --text-l-regular-fontSize: var(--fontSize-l);
114
+ --text-l-regular-lineHeight: var(--lineHeight-l);
115
+ --text-l-regular-letterSpacing: var(--letterSpacing-none);
116
+ --text-l-semibold-fontWeight: var(--fontWeight-semiBold);
117
+ --text-l-semibold-fontSize: var(--fontSize-l);
118
+ --text-l-semibold-lineHeight: var(--lineHeight-l);
119
+ --text-l-semibold-letterSpacing: var(--letterSpacing-none);
120
+ --text-m-regular-fontWeight: var(--fontWeight-regular);
121
+ --text-m-regular-fontSize: var(--fontSize-m);
122
+ --text-m-regular-lineHeight: var(--lineHeight-m);
123
+ --text-m-regular-letterSpacing: var(--letterSpacing-none);
124
+ --text-m-semibold-fontWeight: var(--fontWeight-semiBold);
125
+ --text-m-semibold-fontSize: var(--fontSize-m);
126
+ --text-m-semibold-lineHeight: var(--lineHeight-m);
127
+ --text-m-semibold-letterSpacing: var(--letterSpacing-none);
128
+ --text-s-regular-fontWeight: var(--fontWeight-regular);
129
+ --text-s-regular-fontSize: var(--fontSize-s);
130
+ --text-s-regular-lineHeight: var(--lineHeight-s);
131
+ --text-s-regular-letterSpacing: var(--letterSpacing-none);
132
+ --text-s-semibold-fontWeight: var(--fontWeight-semiBold);
133
+ --text-s-semibold-fontSize: var(--fontSize-s);
134
+ --text-s-semibold-lineHeight: var(--lineHeight-s);
135
+ --text-s-semibold-letterSpacing: var(--letterSpacing-none);
136
+ --text-xs-regular-fontWeight: var(--fontWeight-regular);
137
+ --text-xs-regular-fontSize: var(--fontSize-xs);
138
+ --text-xs-regular-lineHeight: var(--lineHeight-xs);
139
+ --text-xs-regular-letterSpacing: var(--letterSpacing-none);
140
+ --text-xs-semibold-fontWeight: var(--fontWeight-semiBold);
141
+ --text-xs-semibold-fontSize: var(--fontSize-xs);
142
+ --text-xs-semibold-lineHeight: var(--lineHeight-xs);
143
+ --text-xs-semibold-letterSpacing: var(--letterSpacing-none);
144
+ }