@repobit/dex-system-design 0.12.0 → 0.15.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.15.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.14.0...@repobit/dex-system-design@0.15.0) (2025-09-11)
7
+
8
+
9
+ ### Features
10
+
11
+ * **DEX-1001:** add tokens.js and fonts.css ([6430c2d](https://github.com/bitdefender/dex-core/commit/6430c2db459b3d64ef933ab96ad041c10ea32acb))
12
+ * **DEX-1001:** update tokens.css - previous was outdated ([6a8139a](https://github.com/bitdefender/dex-core/commit/6a8139ac40db3d411780566aa1307a8c9e9b46b4))
13
+
14
+
15
+
16
+ ## [0.14.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.12.0...@repobit/dex-system-design@0.14.0) (2025-09-09)
17
+
18
+
19
+ ### Features
20
+
21
+ * **DEX-999:** added footer components in storybook ([848ae39](https://github.com/bitdefender/dex-core/commit/848ae392aff5f59ab800b6bf54de45adbaffc70a))
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * **DEX-1000:** update Storybook for custom-form ([1b0d539](https://github.com/bitdefender/dex-core/commit/1b0d5393230d89a7f4afc59efc11f1ed0d1d80a5))
27
+ * **DEX-999:** added missing files ([566952b](https://github.com/bitdefender/dex-core/commit/566952b98df5d95307cdb9df8296f685c545fd9e))
28
+ * **DEX-999:** modified files for PR review ([f6e4cec](https://github.com/bitdefender/dex-core/commit/f6e4cec3b1f6043c988b35f5a86a9d22c3509225))
29
+ * **DEX-999:** wrong import for input-clipboard ([893c5d1](https://github.com/bitdefender/dex-core/commit/893c5d1210cd41a70be1d3a7b742a1dbe2f66045))
30
+
31
+
32
+
6
33
  ## [0.12.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.11.0...@repobit/dex-system-design@0.12.0) (2025-09-03)
7
34
 
8
35
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@repobit/dex-system-design",
3
- "version": "0.12.0",
3
+ "version": "0.15.0",
4
4
  "description": "Design system based on Web Components.",
5
5
  "author": "Iordache Matei Cezar <miordache@bitdefender.com>",
6
6
  "homepage": "https://github.com/bitdefender/dex-core#readme",
@@ -68,5 +68,5 @@
68
68
  "volta": {
69
69
  "node": "22.14.0"
70
70
  },
71
- "gitHead": "60551ca051b44ffc8d4b34a6b948e2d9db0c6e0d"
71
+ "gitHead": "6fb6a153ad3a68ec8a5729e97b469b607dce4ed3"
72
72
  }
@@ -1,9 +1,9 @@
1
1
  import { html } from 'lit';
2
2
 
3
- // Importăm componentele, ca să se înregistreze
4
- import '../../components/dropdown/dropdown.js';
5
- import '../../components/input/input-clipboard.js';
6
- import '../../components/input/input.js';
3
+ import '../dropdown/dropdown.js';
4
+ import './input-clipboard.js';
5
+ import './Input.js';
6
+
7
7
 
8
8
  export default {
9
9
  title: 'Components/Form Inputs and Dropdown'
File without changes
@@ -8,6 +8,7 @@ import '/src/components/divider/divider-horizontal.js';
8
8
  import '/src/components/divider/divider-vertical.js';
9
9
  import '/src/components/FAQ/faq.js';
10
10
  import '/src/components/header/header.js';
11
+ import '/src/components/highlight/highlight-s.js';
11
12
  import '/src/components/highlight/highlight.js';
12
13
  import '/src/components/input/input.js';
13
14
  import '/src/components/light-carousel/light-carousel.js';
@@ -20,11 +21,9 @@ import '/src/components/termsOfUse/terms.js';
20
21
  export default {
21
22
  title : 'Design System/Demo full page',
22
23
  parameters: {
23
- // eventuale parametri Storybook (ex: backgrounds, viewport etc)
24
24
  },
25
25
  decorators: [
26
26
  (Story) => {
27
- // injectează token-urile CSS global în Storybook (dacă nu sunt deja)
28
27
  return `
29
28
  <link rel="stylesheet" href="/src/tokens/tokens.css" />
30
29
  <link rel="stylesheet" href="/src/tokens/layout.css" />
@@ -48,7 +47,7 @@ export const FullPage = () => `
48
47
  <div class="bd-header-right">
49
48
  <img
50
49
  class="bd-header-image"
51
- src="/assets/bd-header-us.jpg"
50
+ src="images/bd-header-us.jpg"
52
51
  alt="Security illustration"
53
52
  />
54
53
  </div>
@@ -62,16 +61,16 @@ export const FullPage = () => `
62
61
 
63
62
  <p>Let’s Secure Your Digital Life</p>
64
63
 
65
- <bd-highlight-text highlight-text="next generation of digital security">
64
+ <bd-highlight-text-s highlight-text="next generation of digital security">
66
65
  Introducing the next generation of digital security: your personalized shield for a worry-free online experience.
67
- </bd-highlight-text>
66
+ </bd-highlight-text-s>
68
67
 
69
68
  <bd-light-carousel-section
70
69
  title="Our AI-powered platform that detects and fights scams. In real time."
71
70
  >
72
71
  <bd-light-carousel-item
73
72
  title="Scam Copilot Chatbot"
74
- icon="/assets/light-carousel-img1.png"
73
+ icon="src/assets/icons/light-carousel-img1.png"
75
74
  badge="NEW"
76
75
  >
77
76
  <p>
@@ -81,7 +80,7 @@ export const FullPage = () => `
81
80
 
82
81
  <bd-light-carousel-item
83
82
  title="Scam Wave Alerts"
84
- icon="/assets/light-carousel-img1.png"
83
+ icon="src/assets/icons/light-carousel-img1.png"
85
84
  badge="NEW"
86
85
  >
87
86
  <p>
@@ -91,7 +90,7 @@ export const FullPage = () => `
91
90
 
92
91
  <bd-light-carousel-item
93
92
  title="Online Scam Protection"
94
- icon="/assets/light-carousel-img1.png"
93
+ icon="src/assets/icons/light-carousel-img1.png"
95
94
  badge="NEW"
96
95
  >
97
96
  <p>Focused on browsing activities, it specializes in detecting the newest scam patterns and tactics.</p>
@@ -99,7 +98,7 @@ export const FullPage = () => `
99
98
 
100
99
  <bd-light-carousel-item
101
100
  title="Remote Access Protection"
102
- icon="/assets/light-carousel-img1.png"
101
+ icon="src/assets/icons/light-carousel-img1.png"
103
102
  badge="NEW"
104
103
  >
105
104
  <p>Detects patterns of behavior typical of scammers seeking to access your data remotely.</p>
@@ -107,7 +106,7 @@ export const FullPage = () => `
107
106
 
108
107
  <bd-light-carousel-item
109
108
  title="SMS Protection"
110
- icon="/assets/light-carousel-img1.png"
109
+ icon="src/assets/icons/light-carousel-img1.png"
111
110
  badge="IMPROVED"
112
111
  >
113
112
  <p>Detects scams and harmful links in SMS messages3 using advanced AI for fast, real-time protection.</p>
@@ -115,28 +114,28 @@ export const FullPage = () => `
115
114
 
116
115
  <bd-light-carousel-item
117
116
  title="Email Protection"
118
- icon="/assets/light-carousel-img1.png"
117
+ icon="src/assets/icons/light-carousel-img1.png"
119
118
  >
120
119
  <p>Detects scams and harmful links in SMS messages3 using advanced AI for fast, real-time protection.</p>
121
120
  </bd-light-carousel-item>
122
121
 
123
122
  <bd-light-carousel-item
124
123
  title="Scam Notification Protection"
125
- icon="/assets/light-carousel-img1.png"
124
+ icon="src/assets/icons/light-carousel-img1.png"
126
125
  >
127
126
  <p>Scans and detects scam attempts directly in push notifications4 before you even tap or interact.</p>
128
127
  </bd-light-carousel-item>
129
128
 
130
129
  <bd-light-carousel-item
131
130
  title="Chat Protection"
132
- icon="/assets/light-carousel-img1.png"
131
+ icon="src/assets/icons/light-carousel-img1.png"
133
132
  >
134
133
  <p>Identifies scam messages in WhatsApp, Messenger, Telegram and Discord chats4 before they reach your attention.</p>
135
134
  </bd-light-carousel-item>
136
135
 
137
136
  <bd-light-carousel-item
138
137
  title="Calendar Invites Protection"
139
- icon="/assets/light-carousel-img1.png"
138
+ icon="src/assets/icons/light-carousel-img1.png"
140
139
  >
141
140
  <p>Finds and blocks scam calendar events5 before they can trick you with fake links or misleading invites.</p>
142
141
  </bd-light-carousel-item>
@@ -174,7 +173,7 @@ export const FullPage = () => `
174
173
  title="Scam Copilot Bot"
175
174
  subTitle="Specialized AI chatbot that helps you identify suspicious online interactions so you don’t become a victim"
176
175
  modalText="Specialized AI chatbot that helps you identify suspicious online interactions so you don’t become a victim"
177
- icon="/assets/light-carousel-img1.png"
176
+ icon="src/assets/icons/light-carousel-img1.png"
178
177
  >
179
178
  <h3>Scam Copilot Bot</h3>
180
179
  <p>Specialized AI chatbot that helps you identify suspicious online interactions so you don’t become a victim.</p>
@@ -187,7 +186,7 @@ export const FullPage = () => `
187
186
  title="Scam Wave Alerts"
188
187
  subTitle="Proactively informs you about scam outbreaks in your region"
189
188
  modalText="Proactively informs you about scam outbreaks in your region"
190
- icon="/assets/light-carousel-img1.png"
189
+ icon="src/assets/icons/light-carousel-img1.png"
191
190
  >
192
191
  <h3>Scam Wave Alerts</h3>
193
192
  <p>Proactively informs you about scam outbreaks in your region.</p>
@@ -197,7 +196,7 @@ export const FullPage = () => `
197
196
  title="AI-Powered Scam Check"
198
197
  subTitle="AI-driven tool that instantly evaluates the legitimacy of any link, message, or online interaction"
199
198
  modalText="AI-driven tool that instantly evaluates the legitimacy of any link, message, or online interaction"
200
- icon="/assets/light-carousel-img1.png"
199
+ icon="src/assets/icons/light-carousel-img1.png"
201
200
  >
202
201
  <h3>AI-Powered Scam Check</h3>
203
202
  <p>AI-driven tool that instantly evaluates the legitimacy of any link, message, or online interaction.</p>
@@ -207,7 +206,7 @@ export const FullPage = () => `
207
206
  title="Educational Resources"
208
207
  subTitle="Access a wealth of information and best practices to stay informed and vigilant against scams"
209
208
  modalText="Access a wealth of information and best practices to stay informed and vigilant against scams"
210
- icon="/assets/light-carousel-img1.png"
209
+ icon="src/assets/icons/light-carousel-img1.png"
211
210
  >
212
211
  <h3>Educational Resources</h3>
213
212
  <p>Access a wealth of information and best practices to stay informed and vigilant against scams.</p>
@@ -217,7 +216,7 @@ export const FullPage = () => `
217
216
  title="Phishing Simulator"
218
217
  subTitle="Simulates phishing attacks to help you recognize and respond appropriately to real threats"
219
218
  modalText="Simulates phishing attacks to help you recognize and respond appropriately to real threats"
220
- icon="/assets/light-carousel-img1.png"
219
+ icon="src/assets/icons/light-carousel-img1.png"
221
220
  >
222
221
  <h3>Phishing Simulator</h3>
223
222
  <p>Simulates phishing attacks to help you recognize and respond appropriately to real threats.</p>
@@ -227,7 +226,7 @@ export const FullPage = () => `
227
226
  title="Real-Time Scam Updates"
228
227
  subTitle="Stay ahead with up-to-the-minute alerts on the latest scams targeting your region or industry"
229
228
  modalText="Stay ahead with up-to-the-minute alerts on the latest scams targeting your region or industry"
230
- icon="/assets/light-carousel-img1.png"
229
+ icon="src/assets/icons/light-carousel-img1.png"
231
230
  >
232
231
  <h3>Real-Time Scam Updates</h3>
233
232
  <p>Stay ahead with up-to-the-minute alerts on the latest scams targeting your region or industry.</p>
@@ -237,7 +236,7 @@ export const FullPage = () => `
237
236
  title="Community Reporting Hub"
238
237
  subTitle="A platform where users can report scams and share experiences to help protect others"
239
238
  modalText="A platform where users can report scams and share experiences to help protect others"
240
- icon="/assets/light-carousel-img1.png"
239
+ icon="src/assets/icons/light-carousel-img1.png"
241
240
  >
242
241
  <h3>Community Reporting Hub</h3>
243
242
  <p>A platform where users can report scams and share experiences to help protect others.</p>
@@ -247,7 +246,7 @@ export const FullPage = () => `
247
246
  title="Fraud Prevention Workshops"
248
247
  subTitle="Interactive workshops that educate users on identifying and avoiding scams"
249
248
  modalText="Interactive workshops that educate users on identifying and avoiding scams"
250
- icon="/assets/light-carousel-img1.png"
249
+ icon="src/assets/icons/light-carousel-img1.png"
251
250
  >
252
251
  <h3>Fraud Prevention Workshops</h3>
253
252
  <p>Interactive workshops that educate users on identifying and avoiding scams.</p>
@@ -83,34 +83,34 @@ export const colors = `
83
83
  /* Heading default */
84
84
  --heading-xxsmall: 18pt;
85
85
  --heading-xsmall: 20pt;
86
- --typography-heading-h4-fontSize: 24pt;
86
+ --heading-small: 24pt;
87
87
  --heading-medium: 28pt;
88
- --typography-fontSize-3xl: 32pt;
88
+ --heading-large: 32pt;
89
89
  --heading-xlarge: 36pt;
90
90
  --heading-xxlarge: 40pt;
91
91
 
92
92
  /* Heading mobile */
93
93
  --heading-xxsmall-mobile: 18pt;
94
94
  --heading-xsmall-mobile: 20pt;
95
- --typography-heading-h4-fontSize-mobile: 24pt;
95
+ --heading-small-mobile: 24pt;
96
96
  --heading-medium-mobile: 26pt;
97
- --typography-fontSize-3xl-mobile: 28pt;
97
+ --heading-large-mobile: 28pt;
98
98
  --heading-xlarge-mobile: 30pt;
99
99
  --heading-xxlarge-mobile: 32pt;
100
100
 
101
101
  /* Body default */
102
102
  --body-small: 13pt;
103
- --typography-body-small-fontSize: 14pt;
104
- --typography-body-regular-fontSize: 16pt;
103
+ --body-medium: 14pt;
104
+ --body-large: 16pt;
105
105
  --body-xlarge: 18pt;
106
106
 
107
107
  /* Caption default */
108
- --typography-label-extra-small-fontSize: 11pt;
109
- --typography-label-small-fontSize: 12pt;
108
+ --caption-small: 11pt;
109
+ --caption-large: 12pt;
110
110
 
111
111
  /* Caption mobile */
112
- --typography-label-extra-small-fontSize-mobile: 11pt;
113
- --typography-label-small-fontSize-mobile: 12pt;
112
+ --caption-small-mobile: 11pt;
113
+ --caption-large-mobile: 12pt;
114
114
  }
115
115
  `;
116
116
 
@@ -10,7 +10,7 @@ export const FontFace = () => html`
10
10
  margin-bottom: 24px;
11
11
  }
12
12
  h3 {
13
- font-family: var(--typography-fontFamily-sans, 'IBM Plex Sans', Arial, sans-serif);
13
+ font-family: var(--font-family-sans, 'IBM Plex Sans', Arial, sans-serif);
14
14
  font-weight: 600;
15
15
  font-size: 1.2rem;
16
16
  margin-bottom: 12px;
@@ -20,22 +20,22 @@ export const FontFace = () => html`
20
20
  font-size: 1.1rem;
21
21
  }
22
22
  .sans-normal {
23
- font-family: var(--typography-fontFamily-sans, 'IBM Plex Sans', Arial, sans-serif);
23
+ font-family: var(--font-family-sans, 'IBM Plex Sans', Arial, sans-serif);
24
24
  font-weight: 400;
25
25
  font-style: normal;
26
26
  }
27
27
  .sans-semibold {
28
- font-family: var(--typography-fontFamily-sans, 'IBM Plex Sans', Arial, sans-serif);
28
+ font-family: var(--font-family-sans, 'IBM Plex Sans', Arial, sans-serif);
29
29
  font-weight: 600;
30
30
  font-style: normal;
31
31
  }
32
32
  .sans-bold {
33
- font-family: var(--typography-fontFamily-sans, 'IBM Plex Sans', Arial, sans-serif);
33
+ font-family: var(--font-family-sans, 'IBM Plex Sans', Arial, sans-serif);
34
34
  font-weight: 700;
35
35
  font-style: normal;
36
36
  }
37
37
  .sans-italic {
38
- font-family: var(--typography-fontFamily-sans, 'IBM Plex Sans', Arial, sans-serif);
38
+ font-family: var(--font-family-sans, 'IBM Plex Sans', Arial, sans-serif);
39
39
  font-weight: 400;
40
40
  font-style: italic;
41
41
  }
@@ -25,15 +25,15 @@
25
25
  .bd-container {
26
26
  max-width: 1200px;
27
27
  margin: 0 auto;
28
- padding: var(--spacing-16);
28
+ padding: var(--size-16);
29
29
  display: flex;
30
30
  flex-direction: column;
31
- gap: var(--spacing-8);
31
+ gap: var(--size-8);
32
32
  }
33
33
 
34
34
  .bd-container-fluid {
35
35
  width: 100%;
36
- padding: var(--spacing-16);
36
+ padding: var(--size-16);
37
37
  }
38
38
 
39
39
  .pricing-container {
@@ -40,7 +40,7 @@ export const AllSpacings = (args) => html`
40
40
  background-color: var(--color-neutral-200, #eee);
41
41
  margin-bottom: 16px;
42
42
  border-radius: 4px;
43
- font-family: var(--typography-fontFamily-sans, sans-serif);
43
+ font-family: var(--font-family-sans, sans-serif);
44
44
  font-weight: 600;
45
45
  border: 1px dashed #ccc;
46
46
  }
@@ -2,7 +2,6 @@ import { css } from 'lit';
2
2
 
3
3
  export const tokens = css`
4
4
  :host {
5
-
6
5
  /* =====================
7
6
  COLORS
8
7
  ====================== */
@@ -18,7 +18,7 @@ export const Colors = () => html`
18
18
  margin-bottom: 32px;
19
19
  }
20
20
  .color-group-title {
21
- font-family: var(--typography-fontFamily-sans);
21
+ font-family: var(--font-family-sans);
22
22
  font-weight: 600;
23
23
  font-size: var(--heading-medium);
24
24
  margin-bottom: 16px;
@@ -32,7 +32,7 @@ export const Colors = () => html`
32
32
  width: 80px;
33
33
  height: 80px;
34
34
  margin: 6px;
35
- border-radius: var(--radius-lg);
35
+ border-radius: 8px;
36
36
  box-shadow: 0 0 4px rgba(0,0,0,0.1);
37
37
  color: white;
38
38
  font-family: var(--font-family-mono);
@@ -44,7 +44,7 @@ export const Colors = () => html`
44
44
  margin-top: 6px;
45
45
  color: var(--color-neutral-900);
46
46
  font-weight: 600;
47
- font-family: var(--typography-fontFamily-sans);
47
+ font-family: var(--font-family-sans);
48
48
  font-size: 10px;
49
49
  white-space: nowrap;
50
50
  }
@@ -2,8 +2,12 @@ import { css } from "lit";
2
2
 
3
3
  export default css`
4
4
 
5
+ /*<!-- typography -->*/
5
6
 
6
7
 
8
+
9
+ /* <!-- display -->/
10
+ /* <!-- desktop -->*/
7
11
  .text-display-xlarge {
8
12
  font-family: 'Arial',sans-serif;
9
13
  font-size: 4em;
@@ -6,7 +6,7 @@ export default {
6
6
 
7
7
  const typographyTokens = {
8
8
  families: {
9
- 'Sans': 'var(--typography-fontFamily-sans, "IBM Plex Sans", Arial, sans-serif)',
9
+ 'Sans': 'var(--font-family-sans, "IBM Plex Sans", Arial, sans-serif)',
10
10
  'Mono': 'var(--font-family-mono, "IBM Plex Mono", monospace)',
11
11
  },
12
12
  sizes: {
@@ -26,7 +26,7 @@ const typographyTokens = {
26
26
  export const Typography = () => html`
27
27
  <style>
28
28
  h3 {
29
- font-family: var(--typography-fontFamily-sans);
29
+ font-family: var(--font-family-sans);
30
30
  font-weight: 600;
31
31
  font-size: var(--heading-medium);
32
32
  margin-bottom: 16px;
Binary file
Binary file
@@ -1,698 +0,0 @@
1
- /* Design System Tokens - CSS Custom Properties */
2
- /* Generated from design token files */
3
-
4
- :root {
5
- /* ================================
6
- CORE TYPOGRAPHY TOKENS
7
- ================================ */
8
-
9
- --typography-fontFamily-sans: 'IBM Plex Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
10
- --typography-fontFamily-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
11
-
12
- --typography-fontSize-xs: 0.75rem; /* 12px */
13
- --typography-fontSize-sm: 0.875rem; /* 14px */
14
- --typography-fontSize-base: 1rem; /* 16px */
15
- --typography-fontSize-lg: 1.125rem; /* 18px */
16
- --typography-fontSize-xl: 1.25rem; /* 20px */
17
- --typography-fontSize-2xl: 1.5rem; /* 24px */
18
- --typography-fontSize-3xl: 1.875rem; /* 30px */
19
- --typography-fontSize-4xl: 2.25rem; /* 36px */
20
- --typography-fontSize-5xl: 3rem; /* 48px */
21
- --typography-fontSize-6xl: 3.75rem; /* 60px */
22
- --typography-fontSize-7xl: 4.5rem; /* 72px */
23
- --typography-fontSize-8xl: 6rem; /* 96px */
24
- --typography-fontSize-9xl: 8rem; /* 128px */
25
-
26
- --typography-fontWeight-light: 300;
27
- --typography-fontWeight-normal: 400;
28
- --typography-fontWeight-medium: 500;
29
- --typography-fontWeight-semibold: 600;
30
- --typography-fontWeight-bold: 700;
31
-
32
- --typography-lineHeight-none: 1;
33
- --typography-lineHeight-tight: 1.25;
34
- --typography-lineHeight-snug: 1.375;
35
- --typography-lineHeight-normal: 1.5;
36
- --typography-lineHeight-relaxed: 1.625;
37
- --typography-lineHeight-loose: 2;
38
-
39
- --typography-letterSpacing-tighter: -0.05em;
40
- --typography-letterSpacing-tight: -0.025em;
41
- --typography-letterSpacing-normal: 0em;
42
- --typography-letterSpacing-wide: 0.025em;
43
- --typography-letterSpacing-wider: 0.05em;
44
- --typography-letterSpacing-widest: 0.1em;
45
-
46
- /* ================================
47
- CORE COLOR TOKENS
48
- ================================ */
49
-
50
- /* Neutral Colors */
51
- --color-neutral-0: #ffffff;
52
- --color-neutral-25: #fafafa;
53
- --color-neutral-50: #f5f5f5;
54
- --color-neutral-100: #e5e5e5;
55
- --color-neutral-200: #d4d4d4;
56
- --color-neutral-300: #a3a3a3;
57
- --color-neutral-400: #737373;
58
- --color-neutral-500: #6c7580;
59
- --color-neutral-600: #525252;
60
- --color-neutral-700: #404040;
61
- --color-neutral-800: #262626;
62
- --color-neutral-900: #171717;
63
-
64
- /* Blue Colors */
65
- --color-blue-50: #eff6ff;
66
- --color-blue-100: #dbeafe;
67
- --color-blue-200: #bfdbfe;
68
- --color-blue-300: #93c5fd;
69
- --color-blue-400: #60a5fa;
70
- --color-blue-500: #006dff;
71
- --color-blue-600: #0059d6;
72
- --color-blue-700: #1d4ed8;
73
- --color-blue-800: #1e40af;
74
- --color-blue-900: #1e3a8a;
75
-
76
- /* Red Colors */
77
- --color-red-50: #fef2f2;
78
- --color-red-100: #fee2e2;
79
- --color-red-200: #fecaca;
80
- --color-red-300: #fca5a5;
81
- --color-red-400: #f87171;
82
- --color-red-500: #ef4444;
83
- --color-red-600: #dc2626;
84
- --color-red-700: #b91c1c;
85
- --color-red-800: #991b1b;
86
- --color-red-900: #7f1d1d;
87
-
88
- /* Green Colors */
89
- --color-green-50: #f0fdf4;
90
- --color-green-100: #dcfce7;
91
- --color-green-200: #bbf7d0;
92
- --color-green-300: #86efac;
93
- --color-green-400: #4ade80;
94
- --color-green-500: #22c55e;
95
- --color-green-600: #16a34a;
96
- --color-green-700: #15803d;
97
- --color-green-800: #166534;
98
- --color-green-900: #14532d;
99
-
100
- /* Yellow Colors */
101
- --color-yellow-50: #fefce8;
102
- --color-yellow-100: #fef3c7;
103
- --color-yellow-200: #fde68a;
104
- --color-yellow-300: #fcd34d;
105
- --color-yellow-400: #fbbf24;
106
- --color-yellow-500: #f59e0b;
107
- --color-yellow-600: #d97706;
108
- --color-yellow-700: #b45309;
109
- --color-yellow-800: #92400e;
110
- --color-yellow-900: #78350f;
111
-
112
- /* ================================
113
- CORE SPACING TOKENS
114
- ================================ */
115
-
116
- --spacing-0: 0;
117
- --spacing-4: 0.25rem; /* 4px */
118
- --spacing-8: 0.5rem; /* 8px */
119
- --spacing-12: 0.75rem; /* 12px */
120
- --spacing-16: 1rem; /* 16px */
121
- --spacing-20: 1.25rem; /* 20px */
122
- --spacing-24: 1.5rem; /* 24px */
123
- --spacing-28: 1.75rem; /* 28px */
124
- --spacing-32: 2rem; /* 32px */
125
- --spacing-36: 2.25rem; /* 36px */
126
- --spacing-40: 2.5rem; /* 40px */
127
- --spacing-44: 2.75rem; /* 44px */
128
- --spacing-48: 3rem; /* 48px */
129
- --spacing-56: 3.5rem; /* 56px */
130
- --spacing-64: 4rem; /* 64px */
131
- --spacing-80: 5rem; /* 80px */
132
- --spacing-96: 6rem; /* 96px */
133
- --spacing-112: 7rem; /* 112px */
134
- --spacing-128: 8rem; /* 128px */
135
-
136
- /* ================================
137
- CORE BORDER TOKENS
138
- ================================ */
139
-
140
- --border-width-0: 0;
141
- --border-width-1: 1px;
142
- --border-width-2: 2px;
143
- --border-width-3: 3px;
144
- --border-width-4: 4px;
145
- --border-width-8: 8px;
146
-
147
- --radius-none: 0;
148
- --radius-sm: 0.25rem; /* 4px */
149
- --radius-md: 0.375rem; /* 6px */
150
- --radius-lg: 0.5rem; /* 8px */
151
- --radius-xl: 0.75rem; /* 12px */
152
- --radius-2xl: 1rem; /* 16px */
153
- --radius-3xl: 1.5rem; /* 24px */
154
- --radius-full: 9999px;
155
-
156
- /* ================================
157
- CORE DIMENSION TOKENS
158
- ================================ */
159
-
160
- --dimension-2px: 2px;
161
- --dimension-4px: 4px;
162
- --dimension-8px: 8px;
163
- --dimension-12px: 12px;
164
- --dimension-16px: 16px;
165
- --dimension-20px: 20px;
166
- --dimension-24px: 24px;
167
- --dimension-32px: 32px;
168
- --dimension-34px: 34px;
169
- --dimension-40px: 40px;
170
- --dimension-45px: 45px;
171
- --dimension-48px: 48px;
172
- --dimension-55px: 55px;
173
- --dimension-64px: 64px;
174
-
175
- /* ================================
176
- CORE TRANSITION TOKENS
177
- ================================ */
178
-
179
- --transition-duration-fast: 150ms;
180
- --transition-duration-normal: 200ms;
181
- --transition-duration-slow: 300ms;
182
- --transition-duration-slower: 500ms;
183
-
184
- --transition-easing-linear: linear;
185
- --transition-easing-smooth: ease-in-out;
186
- --transition-easing-ease-in: ease-in;
187
- --transition-easing-ease-out: ease-out;
188
- --transition-easing-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
189
-
190
- /* ================================
191
- CORE SHADOW TOKENS
192
- ================================ */
193
-
194
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
195
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
196
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
197
- --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
198
- --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
199
- --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
200
-
201
- /* Focus Shadows - Box Shadow Version */
202
- --shadow-focus-outline-blue: 0 0 0 3px rgba(6, 109, 255, 0.15);
203
- --shadow-focus-outline-red: 0 0 0 3px rgba(239, 68, 68, 0.15);
204
- --shadow-focus-outline-green: 0 0 0 3px rgba(34, 197, 94, 0.15);
205
-
206
- /* Focus Outlines - Two-Color System for Universal Visibility */
207
- --focus-outline-primary: 0 0 0 2px var(--color-neutral-0), 0 0 0 4px var(--color-blue-500);
208
- --focus-outline-secondary: 0 0 0 2px var(--color-neutral-0), 0 0 0 4px var(--color-neutral-600);
209
- --focus-outline-error: 0 0 0 2px var(--color-neutral-0), 0 0 0 4px var(--color-red-500);
210
- --focus-outline-success: 0 0 0 2px var(--color-neutral-0), 0 0 0 4px var(--color-green-500);
211
-
212
- /* Traditional Outline Values for Fallback */
213
- --focus-outline-traditional: 2px solid var(--color-blue-500);
214
- --focus-outline-offset: 2px;
215
-
216
- /* ================================
217
- COMPONENT TOKENS - TYPOGRAPHY
218
- ================================ */
219
-
220
- /* Heading Tokens */
221
- --typography-heading-h1-fontSize: var(--typography-fontSize-5xl);
222
- --typography-heading-h1-fontWeight: var(--typography-fontWeight-bold);
223
- --typography-heading-h1-lineHeight: var(--typography-lineHeight-snug);
224
- --typography-heading-h1-letterSpacing: var(--typography-letterSpacing-normal);
225
- --typography-heading-h1-fontFamily: var(--typography-fontFamily-sans);
226
-
227
- --typography-heading-h2-fontSize: var(--typography-fontSize-4xl);
228
- --typography-heading-h2-fontWeight: var(--typography-fontWeight-bold);
229
- --typography-heading-h2-lineHeight: var(--typography-lineHeight-snug);
230
- --typography-heading-h2-letterSpacing: var(--typography-letterSpacing-normal);
231
- --typography-heading-h2-fontFamily: var(--typography-fontFamily-sans);
232
-
233
- --typography-heading-h3-fontSize: var(--typography-fontSize-3xl);
234
- --typography-heading-h3-fontWeight: var(--typography-fontWeight-semibold);
235
- --typography-heading-h3-lineHeight: var(--typography-lineHeight-snug);
236
- --typography-heading-h3-letterSpacing: var(--typography-letterSpacing-normal);
237
- --typography-heading-h3-fontFamily: var(--typography-fontFamily-sans);
238
-
239
- --typography-heading-h4-fontSize: var(--typography-fontSize-2xl);
240
- --typography-heading-h4-fontWeight: var(--typography-fontWeight-semibold);
241
- --typography-heading-h4-lineHeight: var(--typography-lineHeight-snug);
242
- --typography-heading-h4-letterSpacing: var(--typography-letterSpacing-normal);
243
- --typography-heading-h4-fontFamily: var(--typography-fontFamily-sans);
244
-
245
- --typography-heading-h5-fontSize: var(--typography-fontSize-xl);
246
- --typography-heading-h5-fontWeight: var(--typography-fontWeight-medium);
247
- --typography-heading-h5-lineHeight: var(--typography-lineHeight-normal);
248
- --typography-heading-h5-letterSpacing: var(--typography-letterSpacing-normal);
249
- --typography-heading-h5-fontFamily: var(--typography-fontFamily-sans);
250
-
251
- --typography-heading-h6-fontSize: var(--typography-fontSize-lg);
252
- --typography-heading-h6-fontWeight: var(--typography-fontWeight-medium);
253
- --typography-heading-h6-lineHeight: var(--typography-lineHeight-normal);
254
- --typography-heading-h6-letterSpacing: var(--typography-letterSpacing-normal);
255
- --typography-heading-h6-fontFamily: var(--typography-fontFamily-sans);
256
-
257
- /* Body Text Tokens */
258
- --typography-body-large-fontSize: var(--typography-fontSize-lg);
259
- --typography-body-large-fontWeight: var(--typography-fontWeight-normal);
260
- --typography-body-large-lineHeight: var(--typography-lineHeight-relaxed);
261
- --typography-body-large-letterSpacing: var(--typography-letterSpacing-normal);
262
- --typography-body-large-fontFamily: var(--typography-fontFamily-sans);
263
-
264
- --typography-body-regular-fontSize: var(--typography-fontSize-base);
265
- --typography-body-regular-fontWeight: var(--typography-fontWeight-normal);
266
- --typography-body-regular-lineHeight: var(--typography-lineHeight-normal);
267
- --typography-body-regular-letterSpacing: var(--typography-letterSpacing-normal);
268
- --typography-body-regular-fontFamily: var(--typography-fontFamily-sans);
269
-
270
- --typography-body-small-fontSize: var(--typography-fontSize-sm);
271
- --typography-body-small-fontWeight: var(--typography-fontWeight-normal);
272
- --typography-body-small-lineHeight: var(--typography-lineHeight-normal);
273
- --typography-body-small-letterSpacing: var(--typography-letterSpacing-normal);
274
- --typography-body-small-fontFamily: var(--typography-fontFamily-sans);
275
-
276
- --typography-body-lead-fontSize: var(--typography-fontSize-xl);
277
- --typography-body-lead-fontWeight: var(--typography-fontWeight-normal);
278
- --typography-body-lead-lineHeight: var(--typography-lineHeight-relaxed);
279
- --typography-body-lead-letterSpacing: var(--typography-letterSpacing-normal);
280
- --typography-body-lead-fontFamily: var(--typography-fontFamily-sans);
281
-
282
- /* Label Tokens */
283
- --typography-label-default-fontSize: var(--typography-fontSize-sm);
284
- --typography-label-default-fontWeight: var(--typography-fontWeight-medium);
285
- --typography-label-default-lineHeight: var(--typography-lineHeight-normal);
286
- --typography-label-default-letterSpacing: var(--typography-letterSpacing-normal);
287
- --typography-label-default-fontFamily: var(--typography-fontFamily-sans);
288
-
289
- --typography-label-small-fontSize: var(--typography-fontSize-xs);
290
- --typography-label-small-fontWeight: var(--typography-fontWeight-medium);
291
- --typography-label-small-lineHeight: var(--typography-lineHeight-normal);
292
- --typography-label-small-letterSpacing: var(--typography-letterSpacing-wide);
293
- --typography-label-small-fontFamily: var(--typography-fontFamily-sans);
294
-
295
- --typography-label-large-fontSize: var(--typography-fontSize-base);
296
- --typography-label-large-fontWeight: var(--typography-fontWeight-medium);
297
- --typography-label-large-lineHeight: var(--typography-lineHeight-normal);
298
- --typography-label-large-letterSpacing: var(--typography-letterSpacing-normal);
299
- --typography-label-large-fontFamily: var(--typography-fontFamily-sans);
300
-
301
- --typography-label-xl-fontSize: var(--typography-fontSize-lg);
302
- --typography-label-xl-fontWeight: var(--typography-fontWeight-medium);
303
- --typography-label-xl-lineHeight: var(--typography-lineHeight-normal);
304
- --typography-label-xl-letterSpacing: var(--typography-letterSpacing-normal);
305
- --typography-label-xl-fontFamily: var(--typography-fontFamily-sans);
306
-
307
- /* Caption Tokens */
308
- --typography-caption-default-fontSize: var(--typography-fontSize-xs);
309
- --typography-caption-default-fontWeight: var(--typography-fontWeight-normal);
310
- --typography-caption-default-lineHeight: var(--typography-lineHeight-normal);
311
- --typography-caption-default-letterSpacing: var(--typography-letterSpacing-normal);
312
- --typography-caption-default-fontFamily: var(--typography-fontFamily-sans);
313
-
314
- --typography-caption-small-fontSize: var(--typography-fontSize-xs);
315
- --typography-caption-small-fontWeight: var(--typography-fontWeight-normal);
316
- --typography-caption-small-lineHeight: var(--typography-lineHeight-normal);
317
- --typography-caption-small-letterSpacing: var(--typography-letterSpacing-wide);
318
- --typography-caption-small-fontFamily: var(--typography-fontFamily-sans);
319
-
320
- /* Link Tokens */
321
- --typography-link-default-fontSize: inherit;
322
- --typography-link-default-fontWeight: var(--typography-fontWeight-normal);
323
- --typography-link-default-lineHeight: inherit;
324
- --typography-link-default-letterSpacing: inherit;
325
- --typography-link-default-fontFamily: inherit;
326
- --typography-link-default-textDecoration-default: underline;
327
- --typography-link-default-textDecoration-hover: none;
328
-
329
- --typography-link-standalone-fontSize: var(--typography-fontSize-base);
330
- --typography-link-standalone-fontWeight: var(--typography-fontWeight-medium);
331
- --typography-link-standalone-lineHeight: var(--typography-lineHeight-normal);
332
- --typography-link-standalone-letterSpacing: var(--typography-letterSpacing-normal);
333
- --typography-link-standalone-fontFamily: var(--typography-fontFamily-sans);
334
- --typography-link-standalone-textDecoration-default: underline;
335
- --typography-link-standalone-textDecoration-hover: none;
336
-
337
- /* Code Tokens */
338
- --typography-code-inline-fontSize: 0.875em;
339
- --typography-code-inline-fontWeight: var(--typography-fontWeight-normal);
340
- --typography-code-inline-lineHeight: inherit;
341
- --typography-code-inline-letterSpacing: var(--typography-letterSpacing-normal);
342
- --typography-code-inline-fontFamily: var(--typography-fontFamily-mono);
343
-
344
- --typography-code-block-fontSize: var(--typography-fontSize-sm);
345
- --typography-code-block-fontWeight: var(--typography-fontWeight-normal);
346
- --typography-code-block-lineHeight: var(--typography-lineHeight-relaxed);
347
- --typography-code-block-letterSpacing: var(--typography-letterSpacing-normal);
348
- --typography-code-block-fontFamily: var(--typography-fontFamily-mono);
349
-
350
- /* Display Typography Tokens */
351
- --typography-display-3xl-fontSize: var(--typography-fontSize-9xl);
352
- --typography-display-3xl-fontWeight: var(--typography-fontWeight-bold);
353
- --typography-display-3xl-lineHeight: var(--typography-lineHeight-tight);
354
- --typography-display-3xl-letterSpacing: var(--typography-letterSpacing-tight);
355
- --typography-display-3xl-fontFamily: var(--typography-fontFamily-sans);
356
-
357
- --typography-display-2xl-fontSize: var(--typography-fontSize-8xl);
358
- --typography-display-2xl-fontWeight: var(--typography-fontWeight-bold);
359
- --typography-display-2xl-lineHeight: var(--typography-lineHeight-tight);
360
- --typography-display-2xl-letterSpacing: var(--typography-letterSpacing-tight);
361
- --typography-display-2xl-fontFamily: var(--typography-fontFamily-sans);
362
-
363
- --typography-display-xl-fontSize: var(--typography-fontSize-7xl);
364
- --typography-display-xl-fontWeight: var(--typography-fontWeight-bold);
365
- --typography-display-xl-lineHeight: var(--typography-lineHeight-tight);
366
- --typography-display-xl-letterSpacing: var(--typography-letterSpacing-tight);
367
- --typography-display-xl-fontFamily: var(--typography-fontFamily-sans);
368
-
369
- --typography-display-lg-fontSize: var(--typography-fontSize-6xl);
370
- --typography-display-lg-fontWeight: var(--typography-fontWeight-bold);
371
- --typography-display-lg-lineHeight: var(--typography-lineHeight-tight);
372
- --typography-display-lg-letterSpacing: var(--typography-letterSpacing-tight);
373
- --typography-display-lg-fontFamily: var(--typography-fontFamily-sans);
374
-
375
- --typography-display-md-fontSize: var(--typography-fontSize-5xl);
376
- --typography-display-md-fontWeight: var(--typography-fontWeight-bold);
377
- --typography-display-md-lineHeight: var(--typography-lineHeight-tight);
378
- --typography-display-md-letterSpacing: var(--typography-letterSpacing-tight);
379
- --typography-display-md-fontFamily: var(--typography-fontFamily-sans);
380
-
381
- --typography-display-sm-fontSize: var(--typography-fontSize-4xl);
382
- --typography-display-sm-fontWeight: var(--typography-fontWeight-bold);
383
- --typography-display-sm-lineHeight: var(--typography-lineHeight-tight);
384
- --typography-display-sm-letterSpacing: var(--typography-letterSpacing-tight);
385
- --typography-display-sm-fontFamily: var(--typography-fontFamily-sans);
386
-
387
- /* ================================
388
- COMPONENT TOKENS - FORM
389
- ================================ */
390
-
391
- /* Form Label Tokens */
392
- --form-label-default-fontSize: var(--typography-fontSize-sm);
393
- --form-label-default-fontWeight: var(--typography-fontWeight-medium);
394
- --form-label-default-lineHeight: var(--typography-lineHeight-normal);
395
- --form-label-default-letterSpacing: var(--typography-letterSpacing-normal);
396
- --form-label-default-fontFamily: var(--typography-fontFamily-sans);
397
- --form-label-default-color: var(--color-neutral-900);
398
- --form-label-default-marginBottom: var(--spacing-1);
399
-
400
- --form-label-large-fontSize: var(--typography-fontSize-lg);
401
- --form-label-large-fontWeight: var(--typography-fontWeight-medium);
402
- --form-label-large-lineHeight: var(--typography-lineHeight-normal);
403
- --form-label-large-letterSpacing: var(--typography-letterSpacing-normal);
404
- --form-label-large-fontFamily: var(--typography-fontFamily-sans);
405
- --form-label-large-color: var(--color-neutral-900);
406
- --form-label-large-marginBottom: var(--spacing-2);
407
-
408
- --form-label-small-fontSize: var(--typography-fontSize-xs);
409
- --form-label-small-fontWeight: var(--typography-fontWeight-medium);
410
- --form-label-small-lineHeight: var(--typography-lineHeight-normal);
411
- --form-label-small-letterSpacing: var(--typography-letterSpacing-wide);
412
- --form-label-small-fontFamily: var(--typography-fontFamily-sans);
413
- --form-label-small-color: var(--color-neutral-900);
414
- --form-label-small-marginBottom: var(--spacing-1);
415
-
416
- --form-label-required-color: var(--color-red-500);
417
- --form-label-required-marginLeft: var(--spacing-1);
418
-
419
- /* Form Input Tokens */
420
- --form-input-small-height: var(--dimension-34px);
421
- --form-input-small-fontSize: var(--typography-fontSize-sm);
422
- --form-input-small-padding: var(--spacing-2) var(--spacing-3);
423
- --form-input-small-borderRadius: var(--radius-sm);
424
-
425
- --form-input-medium-height: var(--dimension-45px);
426
- --form-input-medium-fontSize: var(--typography-fontSize-base);
427
- --form-input-medium-padding: var(--spacing-3) var(--spacing-4);
428
- --form-input-medium-borderRadius: var(--radius-md);
429
-
430
- --form-input-large-height: var(--dimension-55px);
431
- --form-input-large-fontSize: var(--typography-fontSize-lg);
432
- --form-input-large-padding: var(--spacing-4) var(--spacing-5);
433
- --form-input-large-borderRadius: var(--radius-lg);
434
-
435
- --form-input-default-backgroundColor: var(--color-neutral-0);
436
- --form-input-default-borderColor: var(--color-neutral-300);
437
- --form-input-default-borderWidth: var(--border-width-1);
438
- --form-input-default-color: var(--color-neutral-900);
439
- --form-input-default-fontFamily: var(--typography-fontFamily-sans);
440
- --form-input-default-lineHeight: var(--typography-lineHeight-normal);
441
-
442
- --form-input-focus-borderColor: var(--color-blue-500);
443
- --form-input-focus-boxShadow: var(--shadow-focus-outline-blue);
444
-
445
- --form-input-error-backgroundColor: var(--color-red-50);
446
- --form-input-error-borderColor: var(--color-red-500);
447
- --form-input-error-placeholderColor: var(--color-red-400);
448
-
449
- --form-input-success-backgroundColor: var(--color-green-50);
450
- --form-input-success-borderColor: var(--color-green-500);
451
- --form-input-success-placeholderColor: var(--color-green-400);
452
-
453
- --form-input-disabled-backgroundColor: var(--color-neutral-100);
454
- --form-input-disabled-borderColor: var(--color-neutral-300);
455
- --form-input-disabled-color: var(--color-neutral-500);
456
- --form-input-disabled-placeholderColor: var(--color-neutral-400);
457
-
458
- /* Form Help Text Tokens */
459
- --form-help-text-default-fontSize: var(--typography-fontSize-xs);
460
- --form-help-text-default-fontWeight: var(--typography-fontWeight-normal);
461
- --form-help-text-default-lineHeight: var(--typography-lineHeight-normal);
462
- --form-help-text-default-letterSpacing: var(--typography-letterSpacing-normal);
463
- --form-help-text-default-fontFamily: var(--typography-fontFamily-sans);
464
- --form-help-text-default-color: var(--color-neutral-600);
465
- --form-help-text-default-marginTop: var(--spacing-1);
466
-
467
- --form-help-text-error-color: var(--color-red-600);
468
- --form-help-text-success-color: var(--color-green-600);
469
-
470
- /* Form Layout Tokens */
471
- --form-fieldSpacing: var(--spacing-6);
472
- --form-sectionSpacing: var(--spacing-8);
473
- --form-labelSpacing: var(--spacing-1);
474
- --form-helpTextSpacing: var(--spacing-1);
475
-
476
- /* ================================
477
- COMPONENT TOKENS - BUTTON
478
- ================================ */
479
-
480
- /* Button Size Tokens */
481
- --button-small-height: var(--dimension-34px);
482
- --button-small-fontSize: var(--typography-fontSize-sm);
483
- --button-small-padding: var(--spacing-2) var(--spacing-3);
484
- --button-small-borderRadius: var(--radius-sm);
485
-
486
- --button-medium-height: var(--dimension-45px);
487
- --button-medium-fontSize: var(--typography-fontSize-base);
488
- --button-medium-padding: var(--spacing-3) var(--spacing-4);
489
- --button-medium-borderRadius: var(--radius-md);
490
-
491
- --button-large-height: var(--dimension-55px);
492
- --button-large-fontSize: var(--typography-fontSize-lg);
493
- --button-large-padding: var(--spacing-4) var(--spacing-5);
494
- --button-large-borderRadius: var(--radius-lg);
495
-
496
- /* Button Default State */
497
- --button-default-backgroundColor: var(--color-neutral-0);
498
- --button-default-borderColor: var(--color-neutral-300);
499
- --button-default-borderWidth: var(--border-width-1);
500
- --button-default-color: var(--color-neutral-900);
501
- --button-default-fontFamily: var(--typography-fontFamily-sans);
502
- --button-default-fontWeight: var(--typography-fontWeight-medium);
503
- --button-default-lineHeight: var(--typography-lineHeight-normal);
504
-
505
- /* Button Shared Tokens */
506
- --button-shared-fontFamily: var(--typography-fontFamily-sans);
507
- --button-shared-fontWeight: var(--typography-fontWeight-medium);
508
- --button-shared-lineHeight: var(--typography-lineHeight-tight);
509
- --button-shared-letterSpacing: var(--typography-letterSpacing-normal);
510
- --button-shared-borderWidth: var(--border-width-1);
511
- --button-shared-transition-properties: background-color, border-color, color, box-shadow;
512
- --button-shared-transition-duration: var(--transition-duration-normal);
513
- --button-shared-transition-easing: var(--transition-easing-smooth);
514
- --button-shared-focus-outline: var(--focus-outline-traditional);
515
- --button-shared-focus-outlineOffset: var(--focus-outline-offset);
516
- --button-shared-focus-boxShadow: var(--focus-outline-primary);
517
- --button-shared-disabled-opacity: 0.6;
518
- --button-shared-disabled-cursor: not-allowed;
519
-
520
- /* Button Size Tokens */
521
- --button-size-small-padding-vertical: var(--spacing-2);
522
- --button-size-small-padding-horizontal: var(--spacing-4);
523
- --button-size-small-fontSize: var(--typography-fontSize-sm);
524
- --button-size-small-height: var(--dimension-34px);
525
- --button-size-small-borderRadius: var(--radius-sm);
526
- --button-size-small-gap: var(--spacing-1);
527
-
528
- --button-size-medium-padding-vertical: var(--spacing-3);
529
- --button-size-medium-padding-horizontal: var(--spacing-5);
530
- --button-size-medium-fontSize: var(--typography-fontSize-base);
531
- --button-size-medium-height: var(--dimension-45px);
532
- --button-size-medium-borderRadius: var(--radius-md);
533
- --button-size-medium-gap: var(--spacing-2);
534
-
535
- --button-size-large-padding-vertical: var(--spacing-4);
536
- --button-size-large-padding-horizontal: var(--spacing-6);
537
- --button-size-large-fontSize: var(--typography-fontSize-lg);
538
- --button-size-large-height: var(--dimension-55px);
539
- --button-size-large-borderRadius: var(--radius-lg);
540
- --button-size-large-gap: var(--spacing-2);
541
-
542
- /* Button Primary State */
543
- --button-primary-background-default: var(--color-blue-500);
544
- --button-primary-text-default: var(--color-neutral-0);
545
- --button-primary-border-default: var(--color-blue-500);
546
- --button-primary-background-hover: var(--color-blue-600);
547
- --button-primary-border-hover: var(--color-blue-600);
548
- --button-primary-background-active: var(--color-blue-700);
549
- --button-primary-border-active: var(--color-blue-700);
550
- --button-primary-border-focus: var(--color-blue-500);
551
- --button-primary-background-disabled: var(--color-neutral-300);
552
- --button-primary-text-disabled: var(--color-neutral-500);
553
- --button-primary-border-disabled: var(--color-neutral-300);
554
-
555
- /* Button Secondary State */
556
- --button-secondary-background-default: var(--color-neutral-950);
557
- --button-secondary-text-default: var(--color-neutral-0);
558
- --button-secondary-border-default: var(--color-neutral-950);
559
- --button-secondary-background-hover: var(--color-neutral-900);
560
- --button-secondary-text-hover: var(--color-neutral-0);
561
- --button-secondary-border-hover: var(--color-neutral-900);
562
- --button-secondary-background-active: var(--color-neutral-800);
563
- --button-secondary-text-active: var(--color-neutral-0);
564
- --button-secondary-border-active: var(--color-neutral-800);
565
- --button-secondary-border-focus: var(--color-neutral-950);
566
- --button-secondary-background-disabled: var(--color-neutral-300);
567
- --button-secondary-text-disabled: var(--color-neutral-500);
568
- --button-secondary-border-disabled: var(--color-neutral-300);
569
-
570
- /* Button Tertiary Primary State */
571
- --button-tertiaryPrimary-background-default: transparent;
572
- --button-tertiaryPrimary-text-default: var(--color-blue-500);
573
- --button-tertiaryPrimary-border-default: var(--color-blue-500);
574
- --button-tertiaryPrimary-borderWidth: var(--border-width-2);
575
- --button-tertiaryPrimary-background-hover: var(--color-blue-50);
576
- --button-tertiaryPrimary-text-hover: var(--color-blue-500);
577
- --button-tertiaryPrimary-border-hover: var(--color-blue-500);
578
- --button-tertiaryPrimary-background-active: var(--color-blue-500);
579
- --button-tertiaryPrimary-text-active: var(--color-neutral-0);
580
- --button-tertiaryPrimary-border-active: var(--color-blue-500);
581
- --button-tertiaryPrimary-border-focus: var(--color-blue-500);
582
- --button-tertiaryPrimary-background-disabled: transparent;
583
- --button-tertiaryPrimary-text-disabled: var(--color-neutral-400);
584
- --button-tertiaryPrimary-border-disabled: var(--color-neutral-300);
585
-
586
- /* Button Tertiary Secondary State */
587
- --button-tertiarySecondary-background-default: transparent;
588
- --button-tertiarySecondary-text-default: var(--color-neutral-900);
589
- --button-tertiarySecondary-border-default: var(--color-neutral-900);
590
- --button-tertiarySecondary-borderWidth: var(--border-width-2);
591
- --button-tertiarySecondary-background-hover: var(--color-neutral-100);
592
- --button-tertiarySecondary-text-hover: var(--color-neutral-900);
593
- --button-tertiarySecondary-border-hover: var(--color-neutral-900);
594
- --button-tertiarySecondary-background-active: var(--color-neutral-900);
595
- --button-tertiarySecondary-text-active: var(--color-neutral-0);
596
- --button-tertiarySecondary-border-active: var(--color-neutral-900);
597
- --button-tertiarySecondary-border-focus: var(--color-neutral-900);
598
- --button-tertiarySecondary-background-disabled: transparent;
599
- --button-tertiarySecondary-text-disabled: var(--color-neutral-400);
600
- --button-tertiarySecondary-border-disabled: var(--color-neutral-300);
601
-
602
- /* Button CTA State */
603
- --button-cta-background-default: var(--color-red-500);
604
- --button-cta-text-default: var(--color-neutral-0);
605
- --button-cta-border-default: var(--color-red-500);
606
- --button-cta-background-hover: var(--color-red-600);
607
- --button-cta-border-hover: var(--color-red-600);
608
- --button-cta-background-active: var(--color-red-700);
609
- --button-cta-border-active: var(--color-red-700);
610
- --button-cta-border-focus: var(--color-red-500);
611
- --button-cta-background-disabled: var(--color-neutral-300);
612
- --button-cta-text-disabled: var(--color-neutral-500);
613
- --button-cta-border-disabled: var(--color-neutral-300);
614
-
615
- /* Button Empty State */
616
- --button-empty-background-default: var(--color-neutral-200);
617
- --button-empty-text-default: transparent;
618
- --button-empty-border-default: var(--color-neutral-200);
619
-
620
- /* Button Disabled State */
621
- --button-disabled-backgroundColor: var(--color-neutral-100);
622
- --button-disabled-borderColor: var(--color-neutral-300);
623
- --button-disabled-color: var(--color-neutral-500);
624
-
625
- /* Button Focus State */
626
- --button-focus-boxShadow: var(--shadow-focus-outline-blue);
627
-
628
- /* ================================
629
- COMPONENT TOKENS - ANNOTATION
630
- ================================ */
631
-
632
- /* Footnote Tokens */
633
- --footnote-reference-fontSize: 0.75em;
634
- --footnote-reference-fontWeight: var(--typography-fontWeight-normal);
635
- --footnote-reference-lineHeight: 1;
636
- --footnote-reference-verticalAlign: super;
637
- --footnote-reference-color: inherit;
638
- --footnote-reference-marginLeft: 0.1em;
639
- --footnote-reference-marginRight: 0.2em;
640
-
641
- /* Citation Tokens */
642
- --citation-reference-fontSize: inherit;
643
- --citation-reference-fontWeight: var(--typography-fontWeight-normal);
644
- --citation-reference-lineHeight: inherit;
645
- --citation-reference-color: var(--color-blue-600);
646
- --citation-reference-textDecoration: underline;
647
- --citation-reference-hover-color: var(--color-blue-700);
648
- --citation-reference-hover-textDecoration: none;
649
-
650
- /* Mathematical Notation Tokens */
651
- --math-superscript-fontSize: 0.75em;
652
- --math-superscript-fontWeight: var(--typography-fontWeight-normal);
653
- --math-superscript-lineHeight: 1;
654
- --math-superscript-verticalAlign: super;
655
- --math-superscript-marginLeft: 0.05em;
656
-
657
- --math-subscript-fontSize: 0.75em;
658
- --math-subscript-fontWeight: var(--typography-fontWeight-normal);
659
- --math-subscript-lineHeight: 1;
660
- --math-subscript-verticalAlign: sub;
661
- --math-subscript-marginLeft: 0.05em;
662
-
663
- /* ================================
664
- COMPONENT TOKENS - ICON
665
- ================================ */
666
-
667
- /* Icon Size Tokens */
668
- --icon-xs-size: var(--dimension-12px);
669
- --icon-sm-size: var(--dimension-16px);
670
- --icon-md-size: var(--dimension-20px);
671
- --icon-lg-size: var(--dimension-24px);
672
- --icon-xl-size: var(--dimension-32px);
673
- --icon-2xl-size: var(--dimension-48px);
674
- --icon-3xl-size: var(--dimension-64px);
675
-
676
- /* Icon Context Tokens */
677
- --icon-button-small-size: var(--dimension-16px);
678
- --icon-button-medium-size: var(--dimension-20px);
679
- --icon-button-large-size: var(--dimension-24px);
680
-
681
- --icon-form-small-size: var(--dimension-16px);
682
- --icon-form-medium-size: var(--dimension-20px);
683
- --icon-form-large-size: var(--dimension-24px);
684
-
685
- /* Icon State Tokens */
686
- --icon-default-color: var(--color-neutral-600);
687
- --icon-hover-color: var(--color-neutral-700);
688
- --icon-active-color: var(--color-neutral-800);
689
- --icon-disabled-color: var(--color-neutral-400);
690
-
691
- --icon-primary-color: var(--color-blue-500);
692
- --icon-primary-hover-color: var(--color-blue-600);
693
- --icon-primary-active-color: var(--color-blue-700);
694
-
695
- --icon-success-color: var(--color-green-500);
696
- --icon-warning-color: var(--color-yellow-500);
697
- --icon-error-color: var(--color-red-500);
698
- }