Skip to content

Commit c88fcdc

Browse files
authored
feat(link): new typography tokens, focus color and design, WHCM focus state (#3570)
* chore(link): adding yarn file * feat(link): add new migration and changeset * chore(link): add changeset and revert template file * chore(link): updating lock file * chore(link): adding missing metadata files * feat(link): update inline story, template, inline style * feat(link): updating changeset, inline docs, stories * chore(link): update template layout and story * chore(link): adding search metadata * chore(link): adding reason for non quiet inline
1 parent 923bef2 commit c88fcdc

File tree

6 files changed

+231
-93
lines changed

6 files changed

+231
-93
lines changed

.changeset/tasty-eagles-draw.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
"@spectrum-css/link": major
3+
---
4+
5+
### Link S2 migration
6+
7+
The link component is updated with S2 specifications, colors, and typography. There is a new inline variant which uses the `.spectrum-Link--inline` modifier class and the default is the standalone variant.
8+
9+
#### Note
10+
11+
- Quiet styling does not apply to the inline variant so that it is distinguishable from the surrounding text and the underline indicator is clear
12+
- `--mod-spectrum-link-font-weight` can be used to adjust inline variant to match surrounding text. Apply font weights to this mod `inherit` does not apply.
13+
14+
## New tokens
15+
16+
### Color
17+
18+
`spectrum-link-focus-indicator-color`
19+
`spectrum-link-focus-indicator-thickness`
20+
`spectrum-link-focus-indicator-gap`
21+
`spectrum-link-corner-radius`
22+
23+
### Typography
24+
25+
`spectrum-link-line-height`
26+
`spectrum-link-line-height-cjk-100`
27+
`spectrum-link-font-size`
28+
`spectrum-link-font-style`
29+
`spectrum-link-font-weight`
30+
`spectrum-link-text-underline-thickness`
31+
`spectrum-link-text-underline-gap`

components/link/dist/metadata.json

+39-7
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,78 @@
22
"sourceFile": "index.css",
33
"selectors": [
44
".spectrum-Link",
5+
".spectrum-Link--inline",
56
".spectrum-Link--quiet",
67
".spectrum-Link--quiet:hover",
78
".spectrum-Link--secondary",
89
".spectrum-Link--staticBlack",
910
".spectrum-Link--staticWhite",
1011
".spectrum-Link:active",
1112
".spectrum-Link:focus-visible",
12-
".spectrum-Link:hover"
13+
".spectrum-Link:hover",
14+
".spectrum-Link:lang(ja)",
15+
".spectrum-Link:lang(ko)",
16+
".spectrum-Link:lang(zh)"
1317
],
1418
"modifiers": [
1519
"--mod-link-animation-duration",
20+
"--mod-link-inline-font-weight",
21+
"--mod-link-line-height-cjk",
1622
"--mod-link-text-color",
1723
"--mod-link-text-color-active",
1824
"--mod-link-text-color-black",
1925
"--mod-link-text-color-focus",
2026
"--mod-link-text-color-hover",
21-
"--mod-link-text-color-primary-active",
22-
"--mod-link-text-color-primary-default",
23-
"--mod-link-text-color-primary-focus",
24-
"--mod-link-text-color-primary-hover",
2527
"--mod-link-text-color-secondary-active",
2628
"--mod-link-text-color-secondary-default",
2729
"--mod-link-text-color-secondary-focus",
2830
"--mod-link-text-color-secondary-hover",
2931
"--mod-link-text-color-white"
3032
],
31-
"component": [],
33+
"component": [
34+
"--spectrum-link-corner-radius",
35+
"--spectrum-link-default-font-family",
36+
"--spectrum-link-focus-indicator-color",
37+
"--spectrum-link-focus-indicator-gap",
38+
"--spectrum-link-focus-indicator-thickness",
39+
"--spectrum-link-font-size",
40+
"--spectrum-link-font-style",
41+
"--spectrum-link-font-weight",
42+
"--spectrum-link-inline-font-weight",
43+
"--spectrum-link-line-height",
44+
"--spectrum-link-line-height-cjk",
45+
"--spectrum-link-text-underline-gap",
46+
"--spectrum-link-text-underline-thickness"
47+
],
3248
"global": [
3349
"--spectrum-accent-content-color-default",
3450
"--spectrum-accent-content-color-down",
3551
"--spectrum-accent-content-color-hover",
3652
"--spectrum-accent-content-color-key-focus",
3753
"--spectrum-animation-duration-100",
3854
"--spectrum-black",
55+
"--spectrum-cjk-line-height-100",
56+
"--spectrum-corner-radius-100",
57+
"--spectrum-default-font-style",
58+
"--spectrum-focus-indicator-color",
59+
"--spectrum-focus-indicator-gap",
60+
"--spectrum-focus-indicator-thickness",
61+
"--spectrum-font-size-100",
62+
"--spectrum-line-height-100",
63+
"--spectrum-medium-font-weight",
3964
"--spectrum-neutral-content-color-default",
4065
"--spectrum-neutral-content-color-down",
4166
"--spectrum-neutral-content-color-hover",
4267
"--spectrum-neutral-content-color-key-focus",
68+
"--spectrum-regular-font-weight",
69+
"--spectrum-sans-font-family-stack",
70+
"--spectrum-text-underline-gap",
71+
"--spectrum-text-underline-thickness",
4372
"--spectrum-white"
4473
],
4574
"passthroughs": [],
46-
"high-contrast": ["--highcontrast-link-text-color"]
75+
"high-contrast": [
76+
"--highcontrast-link-focus-indicator-color",
77+
"--highcontrast-link-text-color"
78+
]
4779
}

components/link/index.css

+59-24
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,28 @@
1111
* governing permissions and limitations under the License.
1212
*/
1313

14-
/* Windows high contrast mode */
15-
@media (forced-colors: active) {
16-
.spectrum-Link {
17-
--highcontrast-link-text-color: LinkText;
18-
}
19-
}
14+
.spectrum-Link {
15+
/* Focus state */
16+
--spectrum-link-focus-indicator-color: var(--spectrum-focus-indicator-color);
17+
--spectrum-link-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness);
18+
--spectrum-link-focus-indicator-gap: var(--spectrum-focus-indicator-gap);
19+
--spectrum-link-corner-radius: var(--spectrum-corner-radius-100);
2020

21-
.spectrum-Link--secondary {
22-
--mod-link-text-color: var(--mod-link-text-color-secondary-default, var(--spectrum-neutral-content-color-default));
23-
--mod-link-text-color-hover: var(--mod-link-text-color-secondary-hover, var(--spectrum-neutral-content-color-hover));
24-
--mod-link-text-color-active: var(--mod-link-text-color-secondary-active, var(--spectrum-neutral-content-color-down));
25-
--mod-link-text-color-focus: var(--mod-link-text-color-secondary-focus, var(--spectrum-neutral-content-color-key-focus));
26-
}
21+
/* Typography */
22+
--spectrum-link-default-font-family: var(--spectrum-sans-font-family-stack);
23+
24+
/* Standalone */
25+
--spectrum-link-line-height: var(--spectrum-line-height-100);
26+
--spectrum-link-line-height-cjk: var(--spectrum-cjk-line-height-100);
27+
--spectrum-link-font-size: var(--spectrum-font-size-100);
28+
--spectrum-link-font-style: var(--spectrum-default-font-style);
29+
--spectrum-link-font-weight: var(--spectrum-medium-font-weight);
30+
--spectrum-link-text-underline-thickness: var(--spectrum-text-underline-thickness);
31+
--spectrum-link-text-underline-gap: var(--spectrum-text-underline-gap);
32+
33+
/* Inline */
34+
--spectrum-link-inline-font-weight: var(--spectrum-regular-font-weight);
2735

28-
.spectrum-Link {
2936
/* Remove the gray background on active links in IE 10. */
3037
background-color: transparent;
3138

@@ -36,29 +43,45 @@
3643
outline: none;
3744
cursor: pointer;
3845

39-
/* @deprecated --mod-link-text-color-primary-default in favor of --mod-link-text-color */
40-
color: var(--highcontrast-link-text-color, var(--mod-link-text-color, var(--mod-link-text-color-primary-default, var(--spectrum-accent-content-color-default))));
46+
color: var(--highcontrast-link-text-color, var(--mod-link-text-color, var(--spectrum-accent-content-color-default)));
47+
font-family: var(--spectrum-link-default-font-family);
48+
font-weight: var(--spectrum-link-font-weight);
49+
font-size: var(--spectrum-link-font-size);
50+
font-style: var(--spectrum-link-font-style);
51+
line-height: var(--spectrum-link-line-height);
52+
text-decoration-thickness: var(--spectrum-link-text-underline-thickness);
53+
text-underline-offset: var(--spectrum-link-text-underline-gap);
4154

4255
&:hover {
43-
/* @deprecated --mod-link-text-color-primary-hover in favor of --mod-link-text-color-hover */
44-
--mod-link-text-color: var(--mod-link-text-color-hover, var(--mod-link-text-color-primary-hover, var(--spectrum-accent-content-color-hover)));
56+
--mod-link-text-color: var(--mod-link-text-color-hover, var(--spectrum-accent-content-color-hover));
4557
}
4658

4759
&:active {
48-
/* @deprecated --mod-link-text-color-primary-active in favor of --mod-link-text-color-active */
49-
--mod-link-text-color: var(--mod-link-text-color-active, var(--mod-link-text-color-primary-active, var(--spectrum-accent-content-color-down)));
60+
--mod-link-text-color: var(--mod-link-text-color-active, var(--spectrum-accent-content-color-down));
5061
}
5162

5263
&:focus-visible {
53-
/* @deprecated --mod-link-text-color-primary-focus in favor of --mod-link-text-color-focus */
54-
--mod-link-text-color: var(--mod-link-text-color-focus, var(--mod-link-text-color-primary-focus, var(--spectrum-accent-content-color-key-focus)));
64+
--mod-link-text-color: var(--mod-link-text-color-focus, var(--spectrum-accent-content-color-key-focus));
5565

56-
text-decoration: underline;
57-
text-decoration-style: double;
58-
text-decoration-color: inherit;
66+
outline: var(--spectrum-link-focus-indicator-thickness) solid var(--highcontrast-link-focus-indicator-color, var(--spectrum-link-focus-indicator-color));
67+
padding: var(--spectrum-link-focus-indicator-gap);
68+
border-radius: var(--spectrum-link-corner-radius);
69+
}
70+
71+
&:lang(ja),
72+
&:lang(zh),
73+
&:lang(ko) {
74+
line-height: var(--mod-link-line-height-cjk, var(--spectrum-link-line-height-cjk));
5975
}
6076
}
6177

78+
.spectrum-Link--secondary {
79+
--mod-link-text-color: var(--mod-link-text-color-secondary-default, var(--spectrum-neutral-content-color-default));
80+
--mod-link-text-color-hover: var(--mod-link-text-color-secondary-hover, var(--spectrum-neutral-content-color-hover));
81+
--mod-link-text-color-active: var(--mod-link-text-color-secondary-active, var(--spectrum-neutral-content-color-down));
82+
--mod-link-text-color-focus: var(--mod-link-text-color-secondary-focus, var(--spectrum-neutral-content-color-key-focus));
83+
}
84+
6285
.spectrum-Link--quiet {
6386
text-decoration: none;
6487

@@ -67,6 +90,10 @@
6790
}
6891
}
6992

93+
.spectrum-Link--inline {
94+
--spectrum-link-font-weight: var(--mod-link-inline-font-weight, var(--spectrum-link-inline-font-weight));
95+
}
96+
7097
.spectrum-Link--staticWhite {
7198
--mod-link-text-color: var(--mod-link-text-color-white, var(--spectrum-white));
7299
--mod-link-text-color-hover: var(--mod-link-text-color-white, var(--spectrum-white));
@@ -80,3 +107,11 @@
80107
--mod-link-text-color-active: var(--mod-link-text-color-black, var(--spectrum-black));
81108
--mod-link-text-color-focus: var(--mod-link-text-color-black, var(--spectrum-black));
82109
}
110+
111+
/* Windows high contrast mode */
112+
@media (forced-colors: active) {
113+
.spectrum-Link {
114+
--highcontrast-link-text-color: LinkText;
115+
--highcontrast-link-focus-indicator-color: LinkText;
116+
}
117+
}

0 commit comments

Comments
 (0)