|
10 | 10 | --settings-indicator-bg: transparent; |
11 | 11 | --settings-item-color: var(--settings-color); |
12 | 12 | --settings-item-bg: var(--settings-bg); |
| 13 | + --settings-search-height: 80px; |
| 14 | + --settings-nav-height-correction: 100px; |
| 15 | + --settings-nav-item-padding-x: var(--typo3-list-item-padding-x); |
| 16 | + --settings-nav-item-padding-y: var(--typo3-list-item-padding-y); |
13 | 17 | } |
14 | 18 |
|
15 | 19 | .settings-container { |
16 | 20 | container-type: inline-size; |
17 | | - margin-top: 1.5rem; |
18 | 21 | } |
19 | 22 |
|
20 | 23 | .settings { |
21 | | - display: flex; |
22 | | - align-items: flex-start; |
23 | | - flex-wrap: wrap; |
| 24 | + display: grid; |
| 25 | + grid-template-columns: 1fr; |
24 | 26 | color: var(--settings-color); |
25 | 27 | box-shadow: var(--settings-box-shadow); |
| 28 | + border: var(--settings-border-width) solid var(--settings-border-color); |
| 29 | + background-color: var(--settings-bg); |
| 30 | + gap: var(--settings-border-width); |
| 31 | + padding: var(--settings-border-width); |
| 32 | + border-radius: var(--settings-border-radius); |
| 33 | + |
| 34 | + &-search { |
| 35 | + position: sticky; |
| 36 | + top: calc(var(--module-body-padding-y) * -1); |
| 37 | + z-index: 2; |
| 38 | + height: var(--settings-search-height); |
| 39 | + display: flex; |
| 40 | + align-items: center; |
| 41 | + border-start-start-radius: calc(var(--settings-border-radius) - var(--settings-border-width)); |
| 42 | + border-start-end-radius: calc(var(--settings-border-radius) - var(--settings-border-width)); |
| 43 | + background-color: color-mix(in srgb, var(--settings-bg), currentColor 1%); |
| 44 | + padding-inline: calc(var(--settings-padding) - .3rem); |
26 | 45 |
|
27 | | - &-navigation, |
28 | | - &-body { |
29 | | - padding: var(--settings-padding); |
| 46 | + &:has(+ :not([hidden])) { |
| 47 | + border-bottom: var(--settings-border-width) solid var(--settings-border-color); |
| 48 | + } |
30 | 49 | } |
31 | 50 |
|
32 | | - &-body { |
33 | | - background: var(--settings-bg); |
34 | | - border: var(--settings-border-width) solid var(--settings-border-color); |
35 | | - border-radius: var(--settings-border-radius); |
| 51 | + &-navigation { |
| 52 | + display: none; |
| 53 | + position: relative; |
36 | 54 | } |
37 | 55 |
|
38 | | - &-navigation { |
39 | | - border-inline-start: var(--settings-border-width) solid var(--settings-border-color); |
40 | | - border-inline-end: var(--settings-border-width) solid var(--settings-border-color); |
41 | | - border-top: var(--settings-border-width) solid var(--settings-border-color); |
42 | | - border-bottom: 0; |
43 | | - flex: 1 1 auto; |
| 56 | + &-navigation-inner { |
| 57 | + padding: calc(var(--settings-padding) - .3rem); |
| 58 | + } |
| 59 | + |
| 60 | + &-body-inner { |
| 61 | + padding: var(--settings-padding); |
44 | 62 | } |
45 | 63 | } |
46 | 64 |
|
47 | 65 | @container (min-width: 780px) { |
48 | 66 | .settings { |
49 | | - flex-wrap: nowrap; |
50 | | - box-shadow: none; |
51 | | - |
52 | | - &-body { |
53 | | - flex: 1 1 auto; |
54 | | - border-inline-start: var(--settings-border-width) solid var(--settings-border-color); |
55 | | - border-start-start-radius: 0; |
56 | | - box-shadow: var(--settings-box-shadow); |
| 67 | + grid-template-columns: 300px 1fr; |
| 68 | + |
| 69 | + &-search { |
| 70 | + grid-column: span 2; |
57 | 71 | } |
58 | 72 |
|
59 | 73 | &-navigation { |
60 | | - box-shadow: var(--settings-box-shadow); |
61 | | - flex: 0 0 300px; |
62 | | - position: sticky; |
63 | | - top: 0; |
64 | | - border-inline-end: 0; |
65 | | - border-inline-start: var(--settings-border-width) solid var(--settings-border-color); |
66 | | - border-top: var(--settings-border-width) solid var(--settings-border-color); |
67 | | - border-bottom: var(--settings-border-width) solid var(--settings-border-color); |
| 74 | + display: flex; |
| 75 | + flex-direction: column; |
| 76 | + |
| 77 | + &-inner { |
| 78 | + position: sticky; |
| 79 | + top: calc(var(--settings-search-height) - var(--module-body-padding-y)); |
| 80 | + overflow-y: auto; |
| 81 | + scrollbar-gutter: stable; |
| 82 | + flex-grow: 1; |
| 83 | + } |
68 | 84 | } |
69 | 85 | } |
70 | 86 | } |
|
75 | 91 | margin: 0; |
76 | 92 | padding: 0; |
77 | 93 |
|
| 94 | + li { |
| 95 | + margin-top: 1px; |
| 96 | + } |
| 97 | + |
78 | 98 | ul { |
79 | 99 | padding-inline-start: 1rem; |
80 | 100 | } |
81 | 101 | } |
| 102 | + |
| 103 | + > ul:first-child > li:first-child { |
| 104 | + margin-top: 0; |
| 105 | + } |
| 106 | + |
| 107 | + [identifier="actions-chevron-left"], |
| 108 | + [identifier="actions-chevron-right"] { |
| 109 | + opacity: .5; |
| 110 | + } |
82 | 111 | } |
83 | 112 |
|
84 | 113 | .settings-navigation-item { |
85 | 114 | color: var(--typo3-component-color); |
86 | 115 | position: relative; |
87 | 116 | display: flex; |
| 117 | + width: 100%; |
| 118 | + background-color: transparent; |
88 | 119 | border-radius: calc(var(--typo3-component-border-radius) - var(--typo3-component-border-width)); |
89 | 120 | gap: .5em; |
90 | | - padding: var(--typo3-list-item-padding-y) var(--typo3-list-item-padding-x); |
| 121 | + padding: var(--settings-nav-item-padding-y) var(--settings-nav-item-padding-x); |
91 | 122 | cursor: pointer; |
92 | 123 | text-decoration: none; |
| 124 | + border: none; |
| 125 | + text-align: start; |
93 | 126 |
|
94 | 127 | &.active, |
95 | 128 | &:hover, |
96 | 129 | &:focus { |
97 | 130 | z-index: 1; |
98 | 131 | outline-offset: -1px; |
| 132 | + text-decoration: none; |
99 | 133 | } |
100 | 134 |
|
101 | 135 | &:hover { |
|
104 | 138 | outline: 1px solid var(--typo3-component-hover-border-color); |
105 | 139 | } |
106 | 140 |
|
107 | | - &.active, |
108 | | - &:focus { |
| 141 | + &:focus-visible { |
| 142 | + outline: 1px solid var(--typo3-component-focus-border-color); |
| 143 | + } |
| 144 | + |
| 145 | + &.active { |
109 | 146 | color: var(--typo3-component-focus-color); |
110 | 147 | background-color: var(--typo3-component-focus-bg); |
111 | 148 | outline: 1px solid var(--typo3-component-focus-border-color); |
|
125 | 162 | } |
126 | 163 |
|
127 | 164 | .settings-category { |
128 | | - max-width: 600px; |
129 | 165 | text-wrap: balance; |
| 166 | + z-index: 10; |
| 167 | + |
| 168 | + &-headline { |
| 169 | + display: flex; |
| 170 | + align-items: center; |
| 171 | + gap: .5em; |
| 172 | + |
| 173 | + > typo3-backend-icon { |
| 174 | + color: var(--typo3-text-color-primary); |
| 175 | + } |
| 176 | + } |
| 177 | + |
| 178 | + &-headline, |
| 179 | + &-description { |
| 180 | + max-width: 600px; |
| 181 | + } |
130 | 182 |
|
131 | 183 | &-list + &-list { |
132 | 184 | margin-top: calc(var(--typo3-spacing) * 2); |
|
135 | 187 |
|
136 | 188 | .settings-item { |
137 | 189 | position: relative; |
| 190 | + contain: inline-size; |
138 | 191 | color: var(--settings-item-color); |
139 | 192 | background: var(--settings-item-bg); |
140 | | - border-radius: calc(var(--settings-border-radius) / 2); |
| 193 | + border-radius: var(--settings-border-radius); |
141 | 194 | padding-block: var(--typo3-component-padding-y); |
142 | 195 | padding-inline-start: calc(var(--typo3-component-padding-x) + 4px); |
143 | 196 | padding-inline-end: calc(var(--typo3-component-padding-x) + 3rem); |
|
166 | 219 | &-indicator { |
167 | 220 | position: absolute; |
168 | 221 | background: var(--settings-indicator-bg); |
169 | | - inset-inline-start: 1px; |
170 | | - inset-block-start: 1px; |
171 | | - inset-block-end: 1px; |
172 | | - width: 4px; |
173 | | - border-radius: 0; |
| 222 | + inset-inline-start: var(--settings-border-width); |
| 223 | + inset-block-start: var(--settings-border-width); |
| 224 | + inset-block-end: var(--settings-border-width); |
| 225 | + border-start-start-radius: calc(var(--settings-border-radius) - var(--settings-border-width)); |
| 226 | + border-end-start-radius: calc(var(--settings-border-radius) - var(--settings-border-width)); |
| 227 | + width: .3rem; |
174 | 228 | } |
175 | 229 |
|
176 | 230 | &[data-status="modified"], |
177 | 231 | &[data-status="modified"] * { |
178 | | - --settings-indicator-bg: #{$info}; |
| 232 | + --settings-indicator-bg: var(--typo3-state-info-bg); |
179 | 233 | } |
180 | 234 |
|
181 | 235 | &[data-status="error"], |
182 | 236 | &[data-status="error"] * { |
183 | | - --settings-indicator-bg: #{$danger}; |
| 237 | + --settings-indicator-bg: var(--typo3-state-danger-bg); |
184 | 238 | } |
185 | 239 |
|
186 | 240 | &-actions { |
|
0 commit comments