Skip to content
This repository was archived by the owner on Apr 28, 2025. It is now read-only.

Commit dfda4a0

Browse files
authored
feat(accordion): new component (#2497)
1 parent 2ff5317 commit dfda4a0

File tree

7 files changed

+1355
-0
lines changed

7 files changed

+1355
-0
lines changed

.changeset/tidy-rockets-chew.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@ebay/skin": minor
3+
---
4+
5+
feat(accordion): new component

dist/accordion/accordion.css

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
ul.accordion {
2+
margin: 0;
3+
padding: 0;
4+
width: 100%;
5+
}
6+
ul.accordion ::marker {
7+
font-size: 0;
8+
}
9+
10+
ul.accordion li:not(:last-child) {
11+
border-bottom: 1px solid var(--color-stroke-subtle);
12+
}
13+
14+
ul.accordion summary.details__summary {
15+
border-radius: 0;
16+
display: flex;
17+
font-size: var(--font-size-medium);
18+
justify-content: space-between;
19+
min-height: 48px;
20+
padding: 12px 16px;
21+
}
22+
23+
ul.accordion details .details__content {
24+
margin: 0 16px 6px;
25+
opacity: 0;
26+
transform: scaleY(0);
27+
transform-origin: top;
28+
transition:
29+
opacity 0.5s cubic-bezier(0.3, 0, 0, 1),
30+
transform 0.5s cubic-bezier(0.3, 0, 0, 1);
31+
}
32+
33+
ul.accordion details[open] .details__content {
34+
opacity: 1;
35+
transform: scaleY(1);
36+
}
37+
38+
ul.accordion--large summary.details__summary {
39+
font-size: var(--font-size-large-1);
40+
min-height: 52px;
41+
}
42+
43+
ul.accordion details svg.details__expand,
44+
ul.accordion details[open] svg.details__collapse {
45+
display: block;
46+
}
47+
48+
ul.accordion details svg.details__collapse,
49+
ul.accordion details[open] svg.details__expand {
50+
display: none;
51+
}
52+
53+
@media (prefers-reduced-motion) {
54+
ul.accordion details .details__content,
55+
ul.accordion details[open] .details__content {
56+
transition: none;
57+
}
58+
}

src/modules/accordion.marko

Lines changed: 617 additions & 0 deletions
Large diffs are not rendered by default.

src/sass/accordion/accordion.scss

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
@import "../variables/variables";
2+
@import "../mixins/private/token-mixins";
3+
4+
ul.accordion {
5+
margin: 0;
6+
padding: 0;
7+
width: 100%;
8+
}
9+
10+
/*
11+
Safari does not recognize ordered or unordered lists as lists in the accessibility tree if they have a list-style value of none, unless the list is nested within the <nav> navigation element. This behavior is intentional and is not considered a bug. To work around this issue, use the use ::marker.
12+
*/
13+
ul.accordion ::marker {
14+
font-size: 0;
15+
}
16+
17+
ul.accordion li:not(:last-child) {
18+
border-bottom: 1px solid var(--color-stroke-subtle);
19+
}
20+
21+
ul.accordion summary.details__summary {
22+
border-radius: 0;
23+
display: flex;
24+
font-size: var(--font-size-medium);
25+
justify-content: space-between;
26+
min-height: 48px;
27+
padding: 12px 16px;
28+
}
29+
30+
ul.accordion details .details__content {
31+
margin: 0 16px 6px;
32+
opacity: 0;
33+
transform: scaleY(0);
34+
transform-origin: top;
35+
transition:
36+
opacity 500ms cubic-bezier(0.3, 0, 0, 1),
37+
transform 500ms cubic-bezier(0.3, 0, 0, 1);
38+
}
39+
40+
ul.accordion details[open] .details__content {
41+
opacity: 1;
42+
transform: scaleY(1);
43+
}
44+
45+
ul.accordion--large summary.details__summary {
46+
font-size: var(--font-size-large-1);
47+
min-height: 52px;
48+
}
49+
50+
ul.accordion details svg.details__expand,
51+
ul.accordion details[open] svg.details__collapse {
52+
display: block;
53+
}
54+
55+
ul.accordion details[open] svg.details__expand,
56+
ul.accordion details svg.details__collapse {
57+
display: none;
58+
}
59+
60+
@media (prefers-reduced-motion) {
61+
/* Remove animations */
62+
ul.accordion details .details__content,
63+
ul.accordion details[open] .details__content {
64+
transition: none;
65+
}
66+
}

0 commit comments

Comments
 (0)