|
2 | 2 | // Base styles
|
3 | 3 | //
|
4 | 4 |
|
| 5 | +.accordion { |
| 6 | + // scss-docs-start accordion-css-vars |
| 7 | + --#{$prefix}accordion-color: #{$accordion-color}; |
| 8 | + --#{$prefix}accordion-bg: #{$accordion-bg}; |
| 9 | + --#{$prefix}accordion-transition: #{$accordion-transition}; |
| 10 | + --#{$prefix}accordion-border-color: #{$accordion-border-color}; |
| 11 | + --#{$prefix}accordion-border-width: #{$accordion-border-width}; |
| 12 | + --#{$prefix}accordion-border-radius: #{$accordion-border-radius}; |
| 13 | + --#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius}; |
| 14 | + --#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x}; |
| 15 | + --#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y}; |
| 16 | + --#{$prefix}accordion-btn-color: #{$accordion-button-color}; |
| 17 | + --#{$prefix}accordion-btn-bg: #{$accordion-button-bg}; |
| 18 | + --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)}; |
| 19 | + --#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width}; |
| 20 | + --#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform}; |
| 21 | + --#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition}; |
| 22 | + --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)}; |
| 23 | + --#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow}; |
| 24 | + --#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x}; |
| 25 | + --#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y}; |
| 26 | + --#{$prefix}accordion-active-color: #{$accordion-button-active-color}; |
| 27 | + --#{$prefix}accordion-active-bg: #{$accordion-button-active-bg}; |
| 28 | + // scss-docs-end accordion-css-vars |
| 29 | +} |
| 30 | + |
5 | 31 | .accordion-button {
|
6 | 32 | position: relative;
|
7 | 33 | display: flex;
|
8 | 34 | align-items: center;
|
9 | 35 | width: 100%;
|
10 |
| - padding: $accordion-button-padding-y $accordion-button-padding-x; |
| 36 | + padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-btn-padding-x); |
11 | 37 | @include font-size($font-size-base);
|
12 |
| - color: $accordion-button-color; |
| 38 | + color: var(--#{$prefix}accordion-btn-color); |
13 | 39 | text-align: left; // Reset button style
|
14 |
| - background-color: $accordion-button-bg; |
| 40 | + background-color: var(--#{$prefix}accordion-btn-bg); |
15 | 41 | border: 0;
|
16 | 42 | @include border-radius(0);
|
17 | 43 | overflow-anchor: none;
|
18 |
| - @include transition($accordion-transition); |
| 44 | + @include transition(var(--#{$prefix}accordion-transition)); |
19 | 45 |
|
20 | 46 | &:not(.collapsed) {
|
21 |
| - color: $accordion-button-active-color; |
22 |
| - background-color: $accordion-button-active-bg; |
23 |
| - box-shadow: inset 0 ($accordion-border-width * -1) 0 $accordion-border-color; |
| 47 | + color: var(--#{$prefix}accordion-active-color); |
| 48 | + background-color: var(--#{$prefix}accordion-active-bg); |
| 49 | + box-shadow: inset 0 calc(-1 * var(--#{$prefix}accordion-border-width)) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list |
24 | 50 |
|
25 | 51 | &::after {
|
26 |
| - background-image: escape-svg($accordion-button-active-icon); |
27 |
| - transform: $accordion-icon-transform; |
| 52 | + background-image: var(--#{$prefix}accordion-btn-active-icon); |
| 53 | + transform: var(--#{$prefix}accordion-btn-icon-transform); |
28 | 54 | }
|
29 | 55 | }
|
30 | 56 |
|
31 | 57 | // Accordion icon
|
32 | 58 | &::after {
|
33 | 59 | flex-shrink: 0;
|
34 |
| - width: $accordion-icon-width; |
35 |
| - height: $accordion-icon-width; |
| 60 | + width: var(--#{$prefix}accordion-btn-icon-width); |
| 61 | + height: var(--#{$prefix}accordion-btn-icon-width); |
36 | 62 | margin-left: auto;
|
37 | 63 | content: "";
|
38 |
| - background-image: escape-svg($accordion-button-icon); |
| 64 | + background-image: var(--#{$prefix}accordion-btn-icon); |
39 | 65 | background-repeat: no-repeat;
|
40 |
| - background-size: $accordion-icon-width; |
41 |
| - @include transition($accordion-icon-transition); |
| 66 | + background-size: var(--#{$prefix}accordion-btn-icon-width); |
| 67 | + @include transition(var(--#{$prefix}accordion-btn-icon-transition)); |
42 | 68 | }
|
43 | 69 |
|
44 | 70 | &:hover {
|
|
47 | 73 |
|
48 | 74 | &:focus {
|
49 | 75 | z-index: 3;
|
50 |
| - border-color: $accordion-button-focus-border-color; |
51 | 76 | outline: 0;
|
52 |
| - box-shadow: $accordion-button-focus-box-shadow; |
| 77 | + box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow); |
53 | 78 | }
|
54 | 79 | }
|
55 | 80 |
|
|
58 | 83 | }
|
59 | 84 |
|
60 | 85 | .accordion-item {
|
61 |
| - background-color: $accordion-bg; |
62 |
| - border: $accordion-border-width solid $accordion-border-color; |
| 86 | + color: var(--#{$prefix}accordion-color); |
| 87 | + background-color: var(--#{$prefix}accordion-bg); |
| 88 | + border: var(--#{$prefix}accordion-border-width) solid var(--#{$prefix}accordion-border-color); |
63 | 89 |
|
64 | 90 | &:first-of-type {
|
65 |
| - @include border-top-radius($accordion-border-radius); |
| 91 | + @include border-top-radius(var(--#{$prefix}accordion-border-radius)); |
66 | 92 |
|
67 |
| - .accordion-button { |
68 |
| - @include border-top-radius($accordion-inner-border-radius); |
| 93 | + > .accordion-header .accordion-button { |
| 94 | + @include border-top-radius(var(--#{$prefix}accordion-inner-border-radius)); |
69 | 95 | }
|
70 | 96 | }
|
71 | 97 |
|
|
75 | 101 |
|
76 | 102 | // Only set a border-radius on the last item if the accordion is collapsed
|
77 | 103 | &:last-of-type {
|
78 |
| - @include border-bottom-radius($accordion-border-radius); |
| 104 | + @include border-bottom-radius(var(--#{$prefix}accordion-border-radius)); |
79 | 105 |
|
80 |
| - .accordion-button { |
| 106 | + > .accordion-header .accordion-button { |
81 | 107 | &.collapsed {
|
82 |
| - @include border-bottom-radius($accordion-inner-border-radius); |
| 108 | + @include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius)); |
83 | 109 | }
|
84 | 110 | }
|
85 | 111 |
|
86 |
| - .accordion-collapse { |
87 |
| - @include border-bottom-radius($accordion-border-radius); |
| 112 | + > .accordion-collapse { |
| 113 | + @include border-bottom-radius(var(--#{$prefix}accordion-border-radius)); |
88 | 114 | }
|
89 | 115 | }
|
90 | 116 | }
|
91 | 117 |
|
92 | 118 | .accordion-body {
|
93 |
| - padding: $accordion-body-padding-y $accordion-body-padding-x; |
| 119 | + padding: var(--#{$prefix}accordion-body-padding-y) var(--#{$prefix}accordion-body-padding-x); |
94 | 120 | }
|
95 | 121 |
|
96 | 122 |
|
|
99 | 125 | // Remove borders and border-radius to keep accordion items edge-to-edge.
|
100 | 126 |
|
101 | 127 | .accordion-flush {
|
102 |
| - .accordion-collapse { |
103 |
| - border-width: 0; |
104 |
| - } |
105 |
| - |
106 |
| - .accordion-item { |
| 128 | + > .accordion-item { |
107 | 129 | border-right: 0;
|
108 | 130 | border-left: 0;
|
109 | 131 | @include border-radius(0);
|
110 | 132 |
|
111 | 133 | &:first-child { border-top: 0; }
|
112 | 134 | &:last-child { border-bottom: 0; }
|
113 | 135 |
|
114 |
| - .accordion-button { |
| 136 | + // stylelint-disable selector-max-class |
| 137 | + > .accordion-header .accordion-button { |
| 138 | + &, |
| 139 | + &.collapsed { |
| 140 | + @include border-radius(0); |
| 141 | + } |
| 142 | + } |
| 143 | + // stylelint-enable selector-max-class |
| 144 | + |
| 145 | + > .accordion-collapse { |
115 | 146 | @include border-radius(0);
|
116 | 147 | }
|
117 | 148 | }
|
118 | 149 | }
|
| 150 | + |
| 151 | +@if $enable-dark-mode { |
| 152 | + @include color-mode(dark) { |
| 153 | + .accordion-button::after { |
| 154 | + --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-dark)}; |
| 155 | + --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-dark)}; |
| 156 | + } |
| 157 | + } |
| 158 | +} |
0 commit comments