@dnanpm/ui-components 0.1.0 → 0.2.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.
Files changed (107) hide show
  1. package/README.md +2 -2
  2. package/dist/components/Accordion/Accordion.cjs +9 -3
  3. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  4. package/dist/components/Accordion/Accordion.d.ts +1 -1
  5. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  6. package/dist/components/Accordion/Accordion.js +10 -4
  7. package/dist/components/Accordion/Accordion.js.map +1 -1
  8. package/dist/components/Accordion/Accordion.types.d.ts +2 -2
  9. package/dist/components/Accordion/Accordion.types.d.ts.map +1 -1
  10. package/dist/components/AccordionItem/AccordionItem.cjs +43 -43
  11. package/dist/components/AccordionItem/AccordionItem.cjs.map +1 -1
  12. package/dist/components/AccordionItem/AccordionItem.css +19 -19
  13. package/dist/components/AccordionItem/AccordionItem.d.ts +1 -1
  14. package/dist/components/AccordionItem/AccordionItem.d.ts.map +1 -1
  15. package/dist/components/AccordionItem/AccordionItem.js +43 -43
  16. package/dist/components/AccordionItem/AccordionItem.js.map +1 -1
  17. package/dist/components/AccordionItem/AccordionItem.module.css.cjs +11 -11
  18. package/dist/components/AccordionItem/AccordionItem.module.css.js +11 -11
  19. package/dist/components/AccordionItem/AccordionItem.types.d.ts +2 -2
  20. package/dist/components/AccordionItem/AccordionItem.types.d.ts.map +1 -1
  21. package/dist/components/Breadcrumb/Breadcrumb.cjs +4 -5
  22. package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
  23. package/dist/components/Breadcrumb/Breadcrumb.css +15 -14
  24. package/dist/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  25. package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  26. package/dist/components/Breadcrumb/Breadcrumb.js +4 -5
  27. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
  28. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +6 -6
  29. package/dist/components/Breadcrumb/Breadcrumb.module.css.js +6 -6
  30. package/dist/components/Breadcrumb/Breadcrumb.types.d.ts +1 -5
  31. package/dist/components/Breadcrumb/Breadcrumb.types.d.ts.map +1 -1
  32. package/dist/components/Button/Button.cjs +104 -0
  33. package/dist/components/Button/Button.cjs.map +1 -0
  34. package/dist/components/Button/Button.css +182 -0
  35. package/dist/components/Button/Button.d.ts +3 -0
  36. package/dist/components/Button/Button.d.ts.map +1 -0
  37. package/dist/components/Button/Button.js +104 -0
  38. package/dist/components/Button/Button.js.map +1 -0
  39. package/dist/components/Button/Button.module.css.cjs +24 -0
  40. package/dist/components/Button/Button.module.css.cjs.map +1 -0
  41. package/dist/components/Button/Button.module.css.js +24 -0
  42. package/dist/components/Button/Button.module.css.js.map +1 -0
  43. package/dist/components/Button/Button.types.d.ts +84 -0
  44. package/dist/components/Button/Button.types.d.ts.map +1 -0
  45. package/dist/components/Button/index.d.ts +3 -0
  46. package/dist/components/Button/index.d.ts.map +1 -0
  47. package/dist/components/ColorScheme/ColorScheme.cjs +9 -0
  48. package/dist/components/ColorScheme/ColorScheme.cjs.map +1 -0
  49. package/dist/components/ColorScheme/ColorScheme.d.ts +3 -0
  50. package/dist/components/ColorScheme/ColorScheme.d.ts.map +1 -0
  51. package/dist/components/ColorScheme/ColorScheme.js +9 -0
  52. package/dist/components/ColorScheme/ColorScheme.js.map +1 -0
  53. package/dist/components/ColorScheme/ColorScheme.types.d.ts +10 -0
  54. package/dist/components/ColorScheme/ColorScheme.types.d.ts.map +1 -0
  55. package/dist/components/ColorScheme/index.d.ts +3 -0
  56. package/dist/components/ColorScheme/index.d.ts.map +1 -0
  57. package/dist/components/Label/Label.cjs +2 -4
  58. package/dist/components/Label/Label.cjs.map +1 -1
  59. package/dist/components/Label/Label.css +15 -17
  60. package/dist/components/Label/Label.d.ts +1 -1
  61. package/dist/components/Label/Label.d.ts.map +1 -1
  62. package/dist/components/Label/Label.js +2 -4
  63. package/dist/components/Label/Label.js.map +1 -1
  64. package/dist/components/Label/Label.module.css.cjs +7 -7
  65. package/dist/components/Label/Label.module.css.js +7 -7
  66. package/dist/components/Label/Label.types.d.ts +1 -5
  67. package/dist/components/Label/Label.types.d.ts.map +1 -1
  68. package/dist/components/Notification/Notification.cjs +5 -6
  69. package/dist/components/Notification/Notification.cjs.map +1 -1
  70. package/dist/components/Notification/Notification.css +18 -19
  71. package/dist/components/Notification/Notification.d.ts +1 -1
  72. package/dist/components/Notification/Notification.d.ts.map +1 -1
  73. package/dist/components/Notification/Notification.js +5 -6
  74. package/dist/components/Notification/Notification.js.map +1 -1
  75. package/dist/components/Notification/Notification.module.css.cjs +9 -9
  76. package/dist/components/Notification/Notification.module.css.js +9 -9
  77. package/dist/components/Notification/Notification.types.d.ts +1 -1
  78. package/dist/components/Notification/Notification.types.d.ts.map +1 -1
  79. package/dist/components/Spinner/Spinner.cjs +62 -0
  80. package/dist/components/Spinner/Spinner.cjs.map +1 -0
  81. package/dist/components/Spinner/Spinner.css +116 -0
  82. package/dist/components/Spinner/Spinner.d.ts +3 -0
  83. package/dist/components/Spinner/Spinner.d.ts.map +1 -0
  84. package/dist/components/Spinner/Spinner.js +62 -0
  85. package/dist/components/Spinner/Spinner.js.map +1 -0
  86. package/dist/components/Spinner/Spinner.module.css.cjs +26 -0
  87. package/dist/components/Spinner/Spinner.module.css.cjs.map +1 -0
  88. package/dist/components/Spinner/Spinner.module.css.js +26 -0
  89. package/dist/components/Spinner/Spinner.module.css.js.map +1 -0
  90. package/dist/components/Spinner/Spinner.types.d.ts +41 -0
  91. package/dist/components/Spinner/Spinner.types.d.ts.map +1 -0
  92. package/dist/components/Spinner/index.d.ts +3 -0
  93. package/dist/components/Spinner/index.d.ts.map +1 -0
  94. package/dist/index.cjs +6 -0
  95. package/dist/index.cjs.map +1 -1
  96. package/dist/index.d.ts +6 -0
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +6 -0
  99. package/dist/index.js.map +1 -1
  100. package/dist/styles/utils/elevation.css +7 -7
  101. package/dist/styles/utils/elevation.module.css.cjs +1 -1
  102. package/dist/styles/utils/elevation.module.css.js +1 -1
  103. package/dist/styles/utils/focus.css +34 -13
  104. package/dist/styles/utils/focus.module.css.cjs +3 -3
  105. package/dist/styles/utils/focus.module.css.js +3 -3
  106. package/dist/styles.css +330 -171
  107. package/package.json +3 -3
package/dist/styles.css CHANGED
@@ -5,118 +5,85 @@
5
5
  */
6
6
 
7
7
  :root {
8
- --colors-primitive-neutral-100: #ffffff;
9
- --colors-primitive-neutral-200: #f7f7f7;
10
- --colors-primitive-neutral-300: #efeeed;
11
- --colors-primitive-neutral-400: #e7e5e3;
12
- --colors-primitive-neutral-500: #d4d2ce;
13
- --colors-primitive-neutral-600: #948b89;
14
- --colors-primitive-neutral-700: #505050;
15
- --colors-primitive-neutral-800: #121212;
16
- --colors-primitive-neutral-900: #000000;
17
- --colors-primitive-pink-200: #ffbfe0;
18
- --colors-primitive-pink-300: #ff82c1;
19
- --colors-primitive-pink-400: #f7007f;
20
- --colors-primitive-pink-500: #da0070;
21
- --colors-primitive-pink-600: #ae005a;
22
- --colors-primitive-plum-200: #792a59;
23
- --colors-primitive-plum-300: #732654;
24
- --colors-primitive-plum-400: #69214c;
25
- --colors-primitive-plum-500: #551c3e;
26
- --colors-primitive-plum-600: #441632;
27
- --colors-primitive-sand-200: #fdfbfa;
28
- --colors-primitive-sand-300: #f8f4f1;
29
- --colors-primitive-sand-400: #efeae4;
30
- --colors-primitive-sand-500: #ede8e1;
31
- --colors-primitive-sand-600: #cabca7;
32
- --colors-primitive-lemon-300: #fffaba;
33
- --colors-primitive-lemon-400: #fff9a3;
34
- --colors-primitive-lemon-500: #fff347;
35
- --colors-primitive-orange-300: #ffdbad;
36
- --colors-primitive-orange-400: #ffca85;
37
- --colors-primitive-orange-500: #ffa633;
38
- --colors-primitive-orange-600: #eb6600;
39
- --colors-primitive-sky-300: #96e4f8;
40
- --colors-primitive-sky-400: #77dcf5;
41
- --colors-primitive-sky-500: #2ecaf0;
42
- --colors-primitive-blue-400: #d8e9ff;
43
- --colors-primitive-blue-500: #0064e2;
44
- --colors-primitive-red-500: #dd0a0a;
45
- --colors-primitive-green-500: #008500;
46
- --colors-primitive-teal-500: #0b7c99;
47
- --colors-semantic-foreground-default: #121212;
48
- --colors-semantic-foreground-muted: #505050;
49
- --colors-semantic-foreground-inverse: #ffffff;
50
- --colors-semantic-foreground-primary-strong: #da0070;
51
- --colors-semantic-foreground-primary-mid: #ff82c1;
52
- --colors-semantic-foreground-primary-soft: #ffbfe0;
53
- --colors-semantic-foreground-secondary-strong: #551c3e;
54
- --colors-semantic-foreground-secondary-mid: #69214c;
55
- --colors-semantic-foreground-secondary-soft: #792a59;
56
- --colors-semantic-foreground-status-error: #dd0a0a;
57
- --colors-semantic-foreground-status-warning: #eb6600;
58
- --colors-semantic-foreground-status-success: #008500;
59
- --colors-semantic-foreground-status-info: #0b7c99;
60
- --colors-semantic-foreground-link: #da0070;
61
- --colors-semantic-foreground-link-inverse: #ffffff;
62
- --colors-semantic-foreground-link-hover: #ae005a;
63
- --colors-semantic-foreground-link-inverse-hover: rgba(255, 255, 255, 0.8);
64
- --colors-semantic-surface-base: #ffffff;
65
- --colors-semantic-surface-neutral-soft: #fdfbfa;
66
- --colors-semantic-surface-neutral-mid: #f8f4f1;
67
- --colors-semantic-surface-neutral-strong: #ede8e1;
68
- --colors-semantic-surface-primary-strong: #da0070;
69
- --colors-semantic-surface-primary-mid: #ff82c1;
70
- --colors-semantic-surface-primary-soft: #ffbfe0;
71
- --colors-semantic-surface-secondary-strong: #551c3e;
72
- --colors-semantic-surface-secondary-mid: #69214c;
73
- --colors-semantic-surface-secondary-soft: #792a59;
74
- --colors-semantic-border-neutral-mid: #d4d2ce;
75
- --colors-semantic-border-neutral-soft: #e7e5e3;
76
- --colors-semantic-border-neutral-base: #efeeed;
77
- --colors-semantic-border-neutral-strong: #948b89;
78
- --colors-semantic-border-secondary: #551c3e;
79
- --colors-semantic-border-primary: #da0070;
80
- --colors-semantic-border-focus: #0064e2;
81
- --colors-semantic-border-inverse: #ffffff;
82
- --colors-semantic-border-error: #dd0a0a;
83
- --colors-semantic-border-warning: #eb6600;
84
- --colors-semantic-border-success: #008500;
85
- --colors-semantic-border-info: #0b7c99;
86
- --colors-semantic-utility-focus-soft: #d8e9ff;
87
- --colors-semantic-utility-focus-strong: #0064e2;
88
- --colors-semantic-utility-overlay-strong: rgba(85, 28, 62, 0.4);
89
- --colors-semantic-utility-overlay-soft: rgba(85, 28, 62, 0.1);
90
- --colors-semantic-status-info: #0b7c99;
91
- --colors-semantic-status-success: #008500;
92
- --colors-semantic-status-warning: #eb6600;
93
- --colors-semantic-status-error: #dd0a0a;
94
- --colors-semantic-accent-lemon-300: #fffaba;
95
- --colors-semantic-accent-lemon-400: #fff9a3;
96
- --colors-semantic-accent-lemon-500: #fff347;
97
- --colors-semantic-accent-orange-300: #ffdbad;
98
- --colors-semantic-accent-orange-400: #ffca85;
99
- --colors-semantic-accent-orange-500: #ffa633;
100
- --colors-semantic-accent-sky-300: #96e4f8;
101
- --colors-semantic-accent-sky-400: #77dcf5;
102
- --colors-semantic-accent-sky-500: #2ecaf0;
103
- --colors-semantic-interactive-primary-default: #da0070;
104
- --colors-semantic-interactive-primary-hover: #ae005a;
105
- --colors-semantic-interactive-primary-active: #f7007f;
106
- --colors-semantic-interactive-primary-disabled: rgba(218, 0, 112, 0.3);
107
- --colors-semantic-interactive-primary-focus: #ae005a;
108
- --colors-semantic-interactive-secondary-default: #551c3e;
109
- --colors-semantic-interactive-secondary-hover: #441632;
110
- --colors-semantic-interactive-secondary-focus: #441632;
111
- --colors-semantic-interactive-secondary-active: #732654;
112
- --colors-semantic-interactive-secondary-disabled: rgba(85, 28, 62, 0.3);
113
- --colors-semantic-interactive-neutral-default: #ede8e1;
114
- --colors-semantic-interactive-neutral-hover: #cabca7;
115
- --colors-semantic-interactive-neutral-focus: #cabca7;
116
- --colors-semantic-interactive-neutral-active: #efeae4;
117
- --colors-semantic-interactive-neutral-disabled: rgba(237, 232, 225, 0.3);
118
- --colors-semantic-interactive-focus-ring: #0064e2;
119
- --colors-semantic-interactive-focus-ring-weak: #d8e9ff;
8
+ --color-semantic-foreground-default: #121212;
9
+ --color-semantic-foreground-muted: #505050;
10
+ --color-semantic-foreground-inverse: #ffffff;
11
+ --color-semantic-foreground-primary-strong: #da0070;
12
+ --color-semantic-foreground-primary-mid: #ff82c1;
13
+ --color-semantic-foreground-primary-soft: #ffbfe0;
14
+ --color-semantic-foreground-secondary-strong: #551c3e;
15
+ --color-semantic-foreground-secondary-mid: #69214c;
16
+ --color-semantic-foreground-secondary-soft: #792a59;
17
+ --color-semantic-foreground-status-error: #dd0a0a;
18
+ --color-semantic-foreground-status-warning: #eb6600;
19
+ --color-semantic-foreground-status-success: #008500;
20
+ --color-semantic-foreground-status-info: #0b7c99;
21
+ --color-semantic-foreground-link: #da0070;
22
+ --color-semantic-foreground-link-inverse: #ffffff;
23
+ --color-semantic-foreground-link-hover: #ae005a;
24
+ --color-semantic-foreground-link-inverse-hover: rgba(255, 255, 255, 0.8);
25
+ --color-semantic-foreground-inverse-muted: rgba(255, 255, 255, 0.7);
26
+ --color-semantic-surface-base: #ffffff;
27
+ --color-semantic-surface-neutral-soft: #fdfbfa;
28
+ --color-semantic-surface-neutral-mid: #f8f4f1;
29
+ --color-semantic-surface-neutral-strong: #ede8e1;
30
+ --color-semantic-surface-primary-strong: #da0070;
31
+ --color-semantic-surface-primary-mid: #ff82c1;
32
+ --color-semantic-surface-primary-soft: #ffbfe0;
33
+ --color-semantic-surface-secondary-strong: #551c3e;
34
+ --color-semantic-surface-secondary-mid: #69214c;
35
+ --color-semantic-surface-secondary-soft: #792a59;
36
+ --color-semantic-border-neutral-mid: #d4d2ce;
37
+ --color-semantic-border-neutral-soft: #e7e5e3;
38
+ --color-semantic-border-neutral-base: #efeeed;
39
+ --color-semantic-border-neutral-strong: #948b89;
40
+ --color-semantic-border-secondary: #551c3e;
41
+ --color-semantic-border-primary: #da0070;
42
+ --color-semantic-border-focus: #0064e2;
43
+ --color-semantic-border-inverse: #ffffff;
44
+ --color-semantic-border-error: #dd0a0a;
45
+ --color-semantic-border-warning: #eb6600;
46
+ --color-semantic-border-success: #008500;
47
+ --color-semantic-border-info: #0b7c99;
48
+ --color-semantic-utility-focus-soft: #d8e9ff;
49
+ --color-semantic-utility-focus-strong: #0064e2;
50
+ --color-semantic-utility-overlay-strong: rgba(85, 28, 62, 0.4);
51
+ --color-semantic-utility-overlay-soft: rgba(85, 28, 62, 0.1);
52
+ --color-semantic-status-info: #0b7c99;
53
+ --color-semantic-status-success: #008500;
54
+ --color-semantic-status-warning: #eb6600;
55
+ --color-semantic-status-error: #dd0a0a;
56
+ --color-semantic-accent-lemon-strong: #fff347;
57
+ --color-semantic-accent-lemon-mid: #fff9a3;
58
+ --color-semantic-accent-lemon-soft: #fffaba;
59
+ --color-semantic-accent-orange-strong: #ffa633;
60
+ --color-semantic-accent-orange-mid: #ffca85;
61
+ --color-semantic-accent-orange-soft: #ffdbad;
62
+ --color-semantic-accent-sky-strong: #2ecaf0;
63
+ --color-semantic-accent-sky-mid: #77dcf5;
64
+ --color-semantic-accent-sky-soft: #96e4f8;
65
+ --color-semantic-interactive-primary-default: #da0070;
66
+ --color-semantic-interactive-primary-hover: #ae005a;
67
+ --color-semantic-interactive-primary-active: #f7007f;
68
+ --color-semantic-interactive-primary-disabled: rgba(218, 0, 112, 0.3);
69
+ --color-semantic-interactive-primary-focus: #ae005a;
70
+ --color-semantic-interactive-secondary-default: #551c3e;
71
+ --color-semantic-interactive-secondary-hover: #441632;
72
+ --color-semantic-interactive-secondary-focus: #441632;
73
+ --color-semantic-interactive-secondary-active: #732654;
74
+ --color-semantic-interactive-secondary-disabled: rgba(85, 28, 62, 0.3);
75
+ --color-semantic-interactive-neutral-default: #ede8e1;
76
+ --color-semantic-interactive-neutral-hover: #cabca7;
77
+ --color-semantic-interactive-neutral-focus: #cabca7;
78
+ --color-semantic-interactive-neutral-active: #efeae4;
79
+ --color-semantic-interactive-neutral-disabled: rgba(237, 232, 225, 0.3);
80
+ --color-semantic-interactive-focus-ring: #0064e2;
81
+ --color-semantic-interactive-focus-ring-weak: #d8e9ff;
82
+ --color-semantic-interactive-inverse-default: #ffffff;
83
+ --color-semantic-interactive-inverse-hover: #ffffff;
84
+ --color-semantic-interactive-inverse-focus: #ffffff;
85
+ --color-semantic-interactive-inverse-active: rgba(255, 255, 255, 0.9);
86
+ --color-semantic-interactive-inverse-disabled: rgba(255, 255, 255, 0.3);
120
87
  --spacing-ui-md: 16px;
121
88
  --spacing-ui-lg: 20px;
122
89
  --spacing-ui-sm: 12px;
@@ -125,31 +92,7 @@
125
92
  --spacing-ui-xxs: 4px;
126
93
  --spacing-ui-xxl: 32px;
127
94
  --spacing-ui-none: 0px;
128
- --spacing-primitive-size0: 0px;
129
- --spacing-primitive-size8: 8px;
130
- --spacing-primitive-size16: 16px;
131
- --spacing-primitive-size24: 24px;
132
- --spacing-primitive-size32: 32px;
133
- --spacing-primitive-size40: 40px;
134
- --spacing-primitive-size12: 12px;
135
- --spacing-primitive-size20: 20px;
136
- --spacing-primitive-size4: 4px;
137
- --spacing-primitive-size2: 2px;
138
- --spacing-primitive-size48: 48px;
139
- --spacing-primitive-size56: 56px;
140
- --spacing-primitive-size64: 64px;
141
- --spacing-primitive-size72: 72px;
142
- --spacing-primitive-size80: 80px;
143
- --spacing-primitive-size88: 88px;
144
- --spacing-primitive-size96: 96px;
145
- --spacing-primitive-size104: 104px;
146
- --spacing-primitive-size112: 112px;
147
- --spacing-primitive-size120: 120px;
148
- --spacing-primitive-size128: 128px;
149
- --spacing-primitive-size136: 136px;
150
- --spacing-primitive-size144: 144px;
151
- --spacing-primitive-size152: 152px;
152
- --spacing-primitive-size160: 160px;
95
+ --spacing-ui-xxxl: 40px;
153
96
  --spacing-layout-none: 0px;
154
97
  --spacing-layout-xxs: 16px;
155
98
  --spacing-layout-xs: 32px;
@@ -163,11 +106,6 @@
163
106
  --radius-semantic-md: 8px;
164
107
  --radius-semantic-lg: 12px;
165
108
  --radius-semantic-full: 1000px;
166
- --radius-primitive-size0: 0px;
167
- --radius-primitive-size4: 4px;
168
- --radius-primitive-size8: 8px;
169
- --radius-primitive-size12: 12px;
170
- --radius-primitive-size1000: 1000px;
171
109
  --borderwidth-semantic-none: 0px;
172
110
  --borderwidth-semantic-xs: 1px;
173
111
  --borderwidth-semantic-md: 3px;
@@ -175,13 +113,31 @@
175
113
  --borderwidth-semantic-xl: 5px;
176
114
  --borderwidth-semantic-xxl: 6px;
177
115
  --borderwidth-semantic-sm: 2px;
178
- --borderwidth-primitive-size0: 0px;
179
- --borderwidth-primitive-size1: 1px;
180
- --borderwidth-primitive-size2: 2px;
181
- --borderwidth-primitive-size3: 3px;
182
- --borderwidth-primitive-size4: 4px;
183
- --borderwidth-primitive-size5: 5px;
184
- --borderwidth-primitive-size6: 6px;
116
+ --typography-font-size-heading-xxxl: 64px;
117
+ --typography-font-size-heading-xxl: 48px;
118
+ --typography-font-size-heading-xl: 36px;
119
+ --typography-font-size-heading-lg: 28px;
120
+ --typography-font-size-heading-md: 24px;
121
+ --typography-font-size-heading-sm: 20px;
122
+ --typography-font-size-heading-xs: 18px;
123
+ --typography-font-size-text-lg: 20px;
124
+ --typography-font-size-text-md: 16px;
125
+ --typography-font-size-text-sm: 14px;
126
+ --typography-font-size-text-xs: 12px;
127
+ --typography-font-weight-regular: 400;
128
+ --typography-font-weight-medium: 500;
129
+ --typography-font-weight-bold: 700;
130
+ --typography-font-weight-black: 900;
131
+ --typography-font-weight-demi-bold: 600;
132
+ --typography-line-height-xs: 1;
133
+ --typography-line-height-sm: 1.1;
134
+ --typography-line-height-md: 1.25;
135
+ --typography-line-height-lg: 1.5;
136
+ --typography-letter-spacing-tight: -0.02em;
137
+ --typography-letter-spacing-normal: 0em;
138
+ --typography-letter-spacing-wide: 0.02em;
139
+ --typography-font-family-heading: DNA Heading;
140
+ --typography-font-family-text: DNA Text;
185
141
  }
186
142
  }
187
143
 
@@ -219,32 +175,98 @@ video {
219
175
 
220
176
  @layer dna-design-system {
221
177
 
178
+ /* ==========================================================================
179
+ Typography shorthand variables
180
+
181
+ Each variable holds a complete CSS font shorthand value:
182
+ weight size/line-height family
183
+
184
+ Usage: font: var(--typography-heading-xxl);
185
+
186
+ Figma doesn't support composing typography tokens from multiple
187
+ design token categories, so we need to define these shorthands in CSS.
188
+ This also allows us to use the clamp() function for fluid typography,
189
+ which isn't possible to do in Figma tokens.
190
+ ========================================================================== */
191
+
222
192
  :root {
223
- /* Example variables for fonts, these will be replaced with actual design tokens */
224
- --font-family-text: 'DNA Text', 'Helvetica Neue', Helvetica, Arial, sans-serif;
225
- --font-family-heading: 'DNA Heading', 'Helvetica Neue', Helvetica, Arial, sans-serif;
226
-
227
- --font-size-xxs: 0.625rem; /* 10px */
228
- --font-size-xs: 0.75rem; /* 12px */
229
- --font-size-sm: 0.875rem; /* 14px */
230
- --font-size-default: 1rem;
231
- --font-size-lg: 1.125rem; /* 18px */
232
- --font-size-xl: 1.25rem; /* 20px */
233
-
234
- --font-weight-regular: 400;
235
- --font-weight-medium: 500;
236
- --font-weight-semi-bold: 600;
237
- --font-weight-bold: 700;
238
- --font-weight-black: 900;
239
-
240
- --line-height-default: 1.25;
241
- --line-height-text: 1.5;
193
+ /* TODO (DDS-14): Remove these two overrides once the design-tokens font-family tokens include fallbacks. */
194
+ --typography-font-family-heading: 'DNA Heading', 'Helvetica Neue', Helvetica, Arial, sans-serif;
195
+ --typography-font-family-text: 'DNA Text', 'Helvetica Neue', Helvetica, Arial, sans-serif;
196
+
197
+ /* Headings */
198
+ --typography-heading-xxl: var(--typography-font-weight-black)
199
+ clamp(2.25rem, 2rem + 1.25cqw, 3rem)/var(--typography-line-height-sm)
200
+ var(--typography-font-family-heading);
201
+ --typography-heading-xl: var(--typography-font-weight-black)
202
+ clamp(2rem, 1.833rem + 0.833cqw, 2.5rem)/var(--typography-line-height-sm)
203
+ var(--typography-font-family-heading);
204
+ --typography-heading-lg: var(--typography-font-weight-black)
205
+ clamp(1.625rem, 1.458rem + 0.833cqw, 2.125rem)/var(--typography-line-height-sm)
206
+ var(--typography-font-family-heading);
207
+ --typography-heading-md: var(--typography-font-weight-bold)
208
+ clamp(1.375rem, 1.25rem + 0.625cqw, 1.75rem)/var(--typography-line-height-md)
209
+ var(--typography-font-family-heading);
210
+ --typography-heading-sm: var(--typography-font-weight-bold)
211
+ clamp(1.25rem, 1.167rem + 0.417cqw, 1.5rem)/var(--typography-line-height-md)
212
+ var(--typography-font-family-text);
213
+ --typography-heading-xs: var(--typography-font-weight-bold)
214
+ clamp(1.125rem, 1.083rem + 0.208cqw, 1.25rem)/var(--typography-line-height-md)
215
+ var(--typography-font-family-text);
216
+ --typography-heading-xxs: var(--typography-font-weight-bold)
217
+ clamp(1.0625rem, 1.042rem + 0.104cqw, 1.125rem)/var(--typography-line-height-md)
218
+ var(--typography-font-family-text);
219
+
220
+ /* Body */
221
+ --typography-body-lg: var(--typography-font-weight-medium)
222
+ clamp(1.125rem, 1.083rem + 0.208cqw, 1.25rem)/var(--typography-line-height-lg)
223
+ var(--typography-font-family-text);
224
+ --typography-body-md: var(--typography-font-weight-regular)
225
+ var(--typography-font-size-text-md)/var(--typography-line-height-lg)
226
+ var(--typography-font-family-text);
227
+ --typography-body-md-bold: var(--typography-font-weight-bold)
228
+ var(--typography-font-size-text-md)/var(--typography-line-height-lg)
229
+ var(--typography-font-family-text);
230
+ --typography-body-sm: var(--typography-font-weight-regular)
231
+ var(--typography-font-size-text-sm)/var(--typography-line-height-lg)
232
+ var(--typography-font-family-text);
233
+ --typography-body-sm-medium: var(--typography-font-weight-medium)
234
+ var(--typography-font-size-text-sm)/var(--typography-line-height-lg)
235
+ var(--typography-font-family-text);
236
+ --typography-body-xs: var(--typography-font-weight-medium)
237
+ var(--typography-font-size-text-xs)/var(--typography-line-height-lg)
238
+ var(--typography-font-family-text);
239
+
240
+ /* Labels */
241
+ --typography-label-lg: var(--typography-font-weight-medium)
242
+ var(--typography-font-size-text-md)/var(--typography-line-height-xs)
243
+ var(--typography-font-family-text);
244
+ --typography-label-lg-bold: var(--typography-font-weight-bold)
245
+ var(--typography-font-size-text-md)/var(--typography-line-height-xs)
246
+ var(--typography-font-family-text);
247
+ --typography-label-md: var(--typography-font-weight-medium)
248
+ var(--typography-font-size-text-sm)/var(--typography-line-height-xs)
249
+ var(--typography-font-family-text);
250
+ --typography-label-md-bold: var(--typography-font-weight-bold)
251
+ var(--typography-font-size-text-sm)/var(--typography-line-height-xs)
252
+ var(--typography-font-family-text);
253
+ --typography-label-sm: var(--typography-font-weight-medium)
254
+ var(--typography-font-size-text-xs)/var(--typography-line-height-xs)
255
+ var(--typography-font-family-text);
242
256
  }
243
257
 
258
+ /* ==========================================================================
259
+ Base typography styles
260
+
261
+ These styles apply to native HTML elements and provide a baseline for
262
+ typography across the design system. They ensure that basic typographic
263
+ properties are set consistently, and they can be overridden by utility
264
+ classes for specific use cases.
265
+
266
+ ========================================================================== */
267
+
244
268
  html {
245
- font-family: var(--font-family-text);
246
- font-size: var(--font-size-default);
247
- line-height: var(--line-height-default);
269
+ font: var(--typography-body-md);
248
270
  }
249
271
 
250
272
  h1,
@@ -254,5 +276,142 @@ h4,
254
276
  h5,
255
277
  h6 {
256
278
  text-wrap: balance;
279
+ margin: 1em 0;
280
+ }
281
+ p {
282
+ margin: 1em 0;
283
+ }
284
+
285
+ h1 {
286
+ font: var(--typography-heading-xxl);
287
+ }
288
+ h2 {
289
+ font: var(--typography-heading-lg);
290
+ }
291
+ h3 {
292
+ font: var(--typography-heading-md);
293
+ }
294
+ h4 {
295
+ font: var(--typography-heading-sm);
296
+ }
297
+ h5 {
298
+ font: var(--typography-heading-xs);
299
+ }
300
+ h6 {
301
+ font: var(--typography-heading-xxs);
302
+ }
303
+
304
+ b,
305
+ strong {
306
+ font-weight: var(--typography-font-weight-bold);
307
+ }
308
+
309
+ /*
310
+ * Design decision (ADR-003): discard italic rendering for em/i.
311
+ * Keep semantic tags in markup, but render without slanted glyphs.
312
+ */
313
+ i,
314
+ em {
315
+ font-style: normal;
316
+ }
317
+ small {
318
+ font-size: var(--typography-font-size-text-sm);
319
+ }
320
+
321
+ /*
322
+ * Design decision (ADR-003): base links are color-driven, not underlined.
323
+ * Long-form content uses .dds-prose which adds underline + external link icon.
324
+ */
325
+ a {
326
+ color: var(--color-semantic-foreground-link);
327
+ text-decoration: none;
328
+ cursor: pointer;
329
+ transition: color 0.2s ease-in-out;
330
+ &:hover {
331
+ color: var(--color-semantic-foreground-link-hover);
332
+ text-decoration: none;
333
+ }
334
+ }
335
+
336
+ ul {
337
+ list-style-type: disc;
338
+ li::marker {
339
+ color: var(--color-semantic-foreground-primary-strong);
340
+ }
341
+ }
342
+ ul,
343
+ ol {
344
+ margin: 1em 0;
345
+ padding: 0;
346
+
347
+ li {
348
+ margin: 0.5em 0 0.5em 1.5em;
349
+ }
350
+ }
351
+ :is(ul, ol) :is(ul, ol) {
352
+ margin: 0;
353
+ }
354
+
355
+ /* ==========================================================================
356
+ Prose — long-form content scope
357
+
358
+ Apply .dds-prose to a container to enable rich typographic styles for
359
+ article/editorial content (underlined links, paragraph spacing, etc.).
360
+
361
+ Usage: <article class="dds-prose">...</article>
362
+ ========================================================================== */
363
+
364
+ .dds-prose {
365
+ /* Icon uses mask-image + background-color: currentColor so it inherits
366
+ the link color automatically in all color schemes. */
367
+ --icon-external-link: url('data:image/svg+xml;utf8,<svg aria-hidden="true" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2.004 12c0 4.402 0 6.203.002 4.002V7.998c-.001-2.201-.002-.4-.002 4.002" clip-rule="evenodd"/><path d="M2.628 2.628a2.14 2.14 0 0 1 1.305-.619c.04-.004 1.58-.006 3.425-.006 3.217.001 3.356.002 3.401.016a.75.75 0 0 1 .51.513c.012.049.017.09.018.172a.64.64 0 0 1-.053.29.74.74 0 0 1-.501.42c-.05.012-.32.014-3.387.018-3.014.004-3.337.006-3.373.017a.76.76 0 0 0-.332.191.76.76 0 0 0-.193.344c-.017.066-.017 15.966 0 16.032a.73.73 0 0 0 .537.537c.066.017 15.972.017 16.038 0a.76.76 0 0 0 .344-.193.76.76 0 0 0 .191-.332c.012-.036.014-.36.017-3.376l.005-3.336.017-.063a.7.7 0 0 1 .192-.329.66.66 0 0 1 .515-.207c.12.001.196.017.286.059a.74.74 0 0 1 .41.527l-.004 6.776a2.14 2.14 0 0 1-1.945 1.913c-.075.006-2.309.008-8.115.006-7.66-.002-8.015-.003-8.095-.017a2.15 2.15 0 0 1-1.832-1.925c-.012-.13-.012-15.982 0-16.112.046-.498.263-.96.62-1.316"/><path d="M21.416 2.008c.205.034.469.155.58.344v5.501a.73.73 0 0 1-.51.551.75.75 0 0 1-.51-.048.72.72 0 0 1-.392-.56 82 82 0 0 1-.008-1.712v-1.64l-4.06 4.057c-2.233 2.231-4.078 4.07-4.1 4.085a.8.8 0 0 1-.218.104.6.6 0 0 1-.194.018.6.6 0 0 1-.194-.018.73.73 0 0 1-.496-.496.6.6 0 0 1-.018-.194.6.6 0 0 1 .018-.194.8.8 0 0 1 .103-.217c.016-.023 1.856-1.867 4.088-4.099l4.058-4.058h-1.64a81 81 0 0 1-1.713-.008.7.7 0 0 1-.499-.292.73.73 0 0 1-.11-.612.72.72 0 0 1 .385-.452c.144-.07-.154-.063 2.777-.066 1.825-.002 2.616 0 2.653.006"/></svg>');
368
+
369
+ a {
370
+ text-decoration: underline;
371
+ text-underline-offset: 0.2em;
372
+ text-decoration-skip-ink: auto;
373
+ text-decoration-thickness: from-font;
374
+
375
+ &[target='_blank'] {
376
+ &::after {
377
+ content: '';
378
+ display: inline-block;
379
+ width: 1em;
380
+ height: 1em;
381
+ margin-left: 0.25em;
382
+ vertical-align: text-top;
383
+ background-color: currentColor;
384
+ mask-image: var(--icon-external-link);
385
+ mask-size: contain;
386
+ mask-repeat: no-repeat;
387
+ }
388
+ }
389
+ }
390
+
391
+ h1,
392
+ h2,
393
+ h3,
394
+ h4,
395
+ h5,
396
+ h6 {
397
+ margin: 1.25em 0 1rem 0;
398
+ }
399
+ p {
400
+ text-wrap: pretty;
401
+ }
402
+ }
403
+
404
+ /* ─── Dark color scheme ─── */
405
+
406
+ @scope ([data-color-scheme='dark']) to ([data-color-scheme='light']) {
407
+ .dds-prose {
408
+ a {
409
+ color: var(--color-semantic-foreground-link-inverse);
410
+
411
+ &:hover {
412
+ color: var(--color-semantic-foreground-link-inverse-hover);
413
+ }
414
+ }
415
+ }
257
416
  }
258
417
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnanpm/ui-components",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "DNA Design System - React UI Components",
5
5
  "author": "DNA Oy",
6
6
  "license": "ISC",
@@ -56,8 +56,8 @@
56
56
  "clsx": "^2.1.1"
57
57
  },
58
58
  "peerDependencies": {
59
- "react": "^18.0.0 || ^19.0.0",
60
- "react-dom": "^18.0.0 || ^19.0.0"
59
+ "react": "^19.0.0",
60
+ "react-dom": "^19.0.0"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@dnanpm/design-tokens": "workspace:*",