1
1
:host {
2
- --_background : var (--sl-color-accordion-default-header );
3
- --_background-hover : var (--sl-color-accordion-hover-header );
4
- --_background-active : var (--sl-color-accordion-active-header );
5
- --_border-color : var (--sl-color-accordion-default-border );
6
- --_border-width : var (--sl-border-width-divider );
7
- --_focus-outline : var (--sl-color-focusring-default ) solid var (--sl-border-width-focusring-default );
8
- --_focus-outline-offset : var (--sl-border-width-focusring-offset );
9
- --_focus-radius : var (--sl-border-radius-focusring-default );
10
- --_icon-size : var (--sl-size-accordion-icon-height );
11
- --_padding-block : var (--sl-space-accordion-content-block );
12
- --_panel-color : var (--sl-color-accordion-default-foreground );
13
- --_panel-font : var (--sl-text-accordion-body );
14
- --_panel-padding-block : var (--sl-space-accordion-content-block );
15
- --_panel-padding-inline : var (--sl-space-accordion-content-inline );
16
- --_title-color : var (--sl-color-accordion-default-foreground );
17
- --_title-color-active : var (--sl-color-accordion-active-foreground );
18
- --_title-color-disabled : var (--sl-color-accordion-disabled-foreground );
19
- --_title-color-hover : var (--sl-color-accordion-hover-foreground );
20
- --_title-font : var (--sl-text-accordion-title );
21
- --_title-gap : var (--sl-space-accordion-title-gap );
22
- --_title-padding : var (--sl-space-accordion-title-inline );
23
- --_transition-duration : 300ms ;
2
+ --_transition-duration : 0.3s ; // This is used in JavaScript as well
24
3
25
4
display : flex ;
26
5
outline : 0 ;
30
9
pointer-events : none ;
31
10
32
11
summary {
33
- --_title-color : var (--_title-color-disabled );
12
+ color : var (--sl-color-foreground-disabled );
13
+ }
14
+ }
15
+
16
+ :host ([icon-type = ' chevron' ]) {
17
+ details [open ],
18
+ details .opening {
19
+ sl-icon {
20
+ transform : rotate (-180deg );
21
+ }
22
+ }
23
+
24
+ details [open ].closing sl-icon {
25
+ transform : rotate (0deg );
34
26
}
35
27
}
36
28
37
29
details {
38
- border-block-end : var (--_border-width ) solid var (--_border -color );
30
+ border-block-end : var (--sl-size-borderWidth-subtle ) solid var (--sl -color-border-plain );
39
31
flex : 1 ;
40
32
41
33
& [open ] summary ::after {
42
- background : var (--_border -color );
43
- block-size : var (--_border-width );
34
+ background : var (--sl -color-border-plain );
35
+ block-size : var (--sl-size-borderWidth-subtle );
44
36
content : ' ' ;
45
- inline-size : calc (100% - 2 * var (--_panel-padding-inline ));
37
+ inline-size : calc (100% - 2 * var (--sl-size-500 ));
46
38
inset-block-end : 0 ;
47
39
inset-inline-start : 0 ;
48
- margin-inline : var (--_panel-padding-inline );
40
+ margin-inline : var (--sl-size-500 );
49
41
position : absolute ;
50
42
}
51
43
@@ -81,14 +73,23 @@ details {
81
73
}
82
74
83
75
summary {
84
- background : var (--_background );
85
- color : var (--_title-color );
76
+ --_bg-opacity : var (--sl-opacity-interactive-bold-idle );
77
+
78
+ // align-items: center;
79
+ background : color-mix (
80
+ in srgb ,
81
+ var (--sl-elevation-surface-base-default ),
82
+ var (--sl-color-background-secondary-interactive-plain ) calc (100% * var (--_bg-opacity ))
83
+ );
84
+ color : var (--sl-color-foreground-plain );
86
85
cursor : pointer ;
87
86
display : flex ;
88
- font : var (--_title-font );
89
- gap : var (--_title-gap );
90
- padding-block : var (--_padding-block );
91
- padding-inline : var (--_title-padding );
87
+ font-size : calc ((16 / 14 ) * 1em );
88
+ gap : var (--sl-size-100 );
89
+ line-height : calc ((24 / 16 ) * 1em );
90
+ outline : transparent solid var (--sl-size-borderWidth-focusRing );
91
+ outline-offset : var (--sl-size-outlineOffset-default );
92
+ padding : var (--sl-size-200 );
92
93
position : relative ;
93
94
z-index : 1 ; /* To work properly with sticky */
94
95
@@ -97,31 +98,50 @@ summary {
97
98
}
98
99
99
100
& :hover {
100
- background : var (--_background-hover );
101
- color : var (--_title-color-hover );
101
+ --_bg-opacity : var (--sl-opacity-interactive-bold-hover );
102
102
}
103
103
104
104
& :active {
105
- background : var (--_background-active );
106
- color : var (--_title-color-active );
105
+ --_bg-opacity : var (--sl-opacity-interactive-bold-active );
107
106
}
108
107
109
108
& :focus-visible {
110
- border-radius : var (--_focus-radius );
111
- outline : var (--_focus-outline );
112
- outline-offset : var (--_focus-outline-offset );
109
+ border-radius : var (--sl-size-borderRadius-default );
110
+ outline-color : var (--sl-color-border-focused );
113
111
position : relative ;
114
112
z-index : 2 ; // Make sure the outline is not clipped by the next accordion item
115
113
}
116
114
117
115
@media (prefers-reduced-motion : no- preference) {
118
- transition : background var (--_transition-duration );
116
+ transition-duration : var (--_transition-duration );
117
+ transition-property : background , outline-color ;
119
118
}
120
119
}
121
120
122
- svg {
123
- block-size : var (--_icon-size );
121
+ slot [name = ' summary' ] {
122
+ display : block ;
123
+ inline-size : 100% ;
124
+ text-box : trim- both cap alphabetic ;
125
+ }
126
+
127
+ svg ,
128
+ sl-icon {
129
+ align-self : start ;
124
130
flex-shrink : 0 ;
131
+ margin-block-start : round (up , 1ex - 1 cap , 1px );
132
+ }
133
+
134
+ sl-icon {
135
+ block-size : var (--sl-size-200 );
136
+
137
+ @media (prefers-reduced-motion : no- preference) {
138
+ transition : transform var (--_transition-duration ) ease-in-out ;
139
+ }
140
+ }
141
+
142
+ svg {
143
+ aspect-ratio : 1 ;
144
+ block-size : var (--sl-size-200 );
125
145
}
126
146
127
147
g {
131
151
transform : rotate (90deg );
132
152
}
133
153
134
- /* stylelint-disable-next-line max-nesting-depth */
135
154
@media (prefers-reduced-motion : no- preference) {
136
155
transition : transform var (--_transition-duration ) cubic-bezier (0.6 , 2 , 0.6 , 1 );
137
156
}
142
161
animation-fill-mode : both ;
143
162
animation-iteration-count : 1 ;
144
163
animation-timing-function : linear ;
145
- background : var (--_background );
164
+ background : var (--sl-elevation-surface-base-default );
146
165
display : grid ;
147
166
overflow : hidden ;
148
167
157
176
}
158
177
159
178
[part = ' panel' ] {
160
- color : var (--_panel-color );
161
- font : var (--_panel-font );
162
- padding : var (--_panel-padding-block ) var (--_panel-padding-inline );
179
+ color : var (--sl-color-foreground-plain );
180
+ padding : var (--sl-size-200 ) var (--sl-size-500 );
163
181
position : relative ;
164
182
}
165
183
0 commit comments