|
| 1 | +:root { |
| 2 | + // Layout |
| 3 | + --vdp-width: 300px; |
| 4 | + --vdp-border-width: 1px; |
| 5 | + --vdp-header-height: 40px; |
| 6 | + --vdp-day-header-height: 40px; |
| 7 | + --vdp-cell-height: 40px; |
| 8 | + |
| 9 | + // Light mode |
| 10 | + --vdp-bg: #fff; |
| 11 | + --vdp-text: #000; |
| 12 | + --vdp-text-disabled: #ddd; |
| 13 | + --vdp-border: #ccc; |
| 14 | + --vdp-today-bg: #eee; |
| 15 | + --vdp-button-hover-bg: #eee; |
| 16 | + --vdp-cell-selected-bg: #4bd; |
| 17 | + --vdp-cell-selected-text: #06262d; |
| 18 | + --vdp-cell-hover-border: #4bd; |
| 19 | + --vdp-cell-focus-outline: #000; |
| 20 | + --vdp-cell-highlighted-bg: #cae5ed; |
| 21 | + --vdp-cell-highlighted-text: #104756; |
| 22 | + --vdp-cell-highlighted-disabled-text: #accad2; |
| 23 | + --vdp-cell-edge-dates-text: #757575; |
| 24 | + --vdp-cell-edge-dates-selected-text: #104756; |
| 25 | + --vdp-cell-edge-dates-highlighted-text: #196676; |
| 26 | +} |
| 27 | + |
| 28 | +html.dark { |
| 29 | + // Dark mode |
| 30 | + --vdp-bg: #121212; |
| 31 | + --vdp-text: #eee; |
| 32 | + --vdp-text-disabled: #666; |
| 33 | + --vdp-border: #333; |
| 34 | + --vdp-today-bg: #333; |
| 35 | + --vdp-button-hover-bg: #333; |
| 36 | + --vdp-cell-selected-bg: #24a0c4; |
| 37 | + --vdp-cell-selected-text: #092831; |
| 38 | + --vdp-cell-hover-border: #24a0c4; |
| 39 | + --vdp-cell-focus-outline: #fff; |
| 40 | + --vdp-cell-highlighted-bg: #092831; |
| 41 | + --vdp-cell-highlighted-text: #ecf8fc; |
| 42 | + --vdp-cell-highlighted-disabled-text: #16647a; |
| 43 | + --vdp-cell-edge-dates-text: #aaa; |
| 44 | + --vdp-cell-edge-dates-selected-text: #ecf8fc; |
| 45 | + --vdp-cell-edge-dates-highlighted-text: #9db8c2; |
| 46 | +} |
| 47 | + |
1 | 48 | .rtl { |
2 | 49 | direction: rtl; |
3 | 50 | } |
|
10 | 57 | } |
11 | 58 |
|
12 | 59 | .vdp-datepicker__calendar { |
13 | | - background: #fff; |
14 | | - border: 1px solid #ccc; |
| 60 | + background: var(--vdp-bg); |
| 61 | + border: var(--vdp-border-width) solid var(--vdp-border); |
15 | 62 | position: absolute; |
16 | | - width: 300px; |
17 | | - z-index: 10000; |
| 63 | + width: var(--vdp-width); |
| 64 | + z-index: 10; |
18 | 65 |
|
19 | 66 | > div { |
20 | | - background: #fff; |
21 | | - width: 298px; |
| 67 | + background: var(--vdp-bg); |
| 68 | + width: calc(var(--vdp-width) - (2 * var(--vdp-border-width))); |
22 | 69 | } |
23 | 70 |
|
24 | 71 | .today { |
25 | | - background-color: #eee; |
| 72 | + background-color: var(--vdp-today-bg); |
26 | 73 | } |
27 | 74 |
|
28 | 75 | * { |
29 | 76 | box-sizing: border-box; |
30 | 77 | } |
31 | 78 |
|
32 | 79 | &.vdp-datepicker__calendar--inline { |
33 | | - position: static; |
| 80 | + position: relative; |
34 | 81 | } |
35 | 82 |
|
36 | 83 | button { |
37 | 84 | background: inherit; |
| 85 | + color: var(--vdp-text); |
38 | 86 | text-align: center; |
39 | 87 |
|
40 | 88 | &:disabled { |
41 | | - color: #ddd; |
| 89 | + color: var(--vdp-text-disabled); |
42 | 90 | } |
43 | 91 | } |
44 | 92 |
|
45 | 93 | header { |
46 | 94 | display: flex; |
47 | | - height: 40px; |
| 95 | + height: var(--vdp-header-height); |
48 | 96 | justify-content: space-between; |
49 | 97 |
|
50 | 98 | button { |
51 | 99 | border: none; |
52 | 100 |
|
53 | 101 | &:hover:not(:disabled) { |
54 | | - background: #eee; |
| 102 | + background: var(--vdp-button-hover-bg); |
55 | 103 | cursor: pointer; |
56 | 104 | } |
57 | 105 |
|
58 | 106 | &.vdp-datepicker__up { |
59 | | - color: #000; |
| 107 | + color: var(--vdp-text); |
60 | 108 | flex-grow: 5; |
61 | 109 | } |
62 | 110 | } |
63 | 111 |
|
64 | 112 | .prev, |
65 | 113 | .next { |
66 | 114 | flex-grow: 1; |
67 | | - max-height: 40px; |
68 | 115 | position: relative; |
69 | 116 |
|
70 | 117 | .default { |
|
89 | 136 | .prev { |
90 | 137 | .default { |
91 | 138 | &:after { |
92 | | - border-right: 10px solid #000; |
| 139 | + border-right: 10px solid var(--vdp-text); |
93 | 140 | margin-left: -5px; |
94 | 141 | } |
95 | 142 | } |
96 | 143 |
|
97 | 144 | &:disabled { |
98 | 145 | .default { |
99 | 146 | &:after { |
100 | | - border-right: 10px solid #ddd; |
| 147 | + border-right: 10px solid var(--vdp-text-disabled); |
101 | 148 | } |
102 | 149 | } |
103 | 150 | } |
|
106 | 153 | .next { |
107 | 154 | .default { |
108 | 155 | &:after { |
109 | | - border-left: 10px solid #000; |
| 156 | + border-left: 10px solid var(--vdp-text); |
110 | 157 | margin-left: 5px; |
111 | 158 | } |
112 | 159 | } |
113 | 160 |
|
114 | 161 | &:disabled { |
115 | 162 | .default { |
116 | 163 | &:after { |
117 | | - border-left: 10px solid #ddd; |
| 164 | + border-left: 10px solid var(--vdp-text-disabled); |
118 | 165 | } |
119 | 166 | } |
120 | 167 | } |
|
124 | 171 | .cell { |
125 | 172 | border: 1px solid transparent; |
126 | 173 | display: inline-block; |
127 | | - height: 40px; |
| 174 | + font-size: 100%; |
| 175 | + height: var(--vdp-cell-height); |
128 | 176 | padding: 0 5px; |
129 | 177 | position: relative; |
130 | 178 | text-align: center; |
|
137 | 185 | cursor: pointer; |
138 | 186 |
|
139 | 187 | &:hover { |
140 | | - border: 1px solid #4bd; |
| 188 | + border: 0.1em solid var(--vdp-cell-hover-border); |
141 | 189 | } |
142 | 190 |
|
143 | | - &:focus { |
144 | | - z-index: 1; |
| 191 | + // Default 'non-bootstrap' focus style... |
| 192 | + &:not(.btn):focus { |
| 193 | + outline: 0.1em solid var(--vdp-cell-focus-outline); |
| 194 | + outline-offset: -0.1em; |
145 | 195 | } |
146 | 196 | } |
147 | 197 |
|
148 | | - &.selected { |
149 | | - background: #4bd; |
150 | | - color: #104756; |
| 198 | + &:hover { |
| 199 | + outline: 0.1em solid var(--vdp-cell-hover-outline) !important; |
| 200 | + } |
151 | 201 |
|
152 | | - &:hover { |
153 | | - background: #4bd; |
154 | | - } |
| 202 | + &.selected, |
| 203 | + &.selected:hover { |
| 204 | + background: var(--vdp-cell-selected-bg); |
| 205 | + color: var(--vdp-cell-selected-text); |
155 | 206 |
|
156 | 207 | &.highlighted { |
157 | | - background: #4bd; |
| 208 | + background: var(--vdp-cell-selected-bg); |
| 209 | + color: var(--vdp-cell-selected-text); |
158 | 210 | } |
159 | 211 | } |
160 | 212 |
|
161 | 213 | &.highlighted { |
162 | | - background: #cae5ed; |
163 | | - color: #104756; |
| 214 | + background: var(--vdp-cell-highlighted-bg); |
| 215 | + color: var(--vdp-cell-highlighted-text); |
164 | 216 |
|
165 | 217 | &.disabled { |
166 | | - color: #accad2; |
| 218 | + color: var(--vdp-cell-highlighted-disabled-text); |
167 | 219 | } |
168 | 220 | } |
169 | 221 |
|
170 | 222 | &.muted { |
171 | | - color: #757575; |
| 223 | + color: var(--vdp-cell-edge-dates-text); |
172 | 224 |
|
173 | 225 | &.selected { |
174 | | - color: #104756; |
| 226 | + color: var(--vdp-cell-edge-dates-selected-text); |
| 227 | + } |
| 228 | + |
| 229 | + &.highlighted { |
| 230 | + color: var(--vdp-cell-edge-dates-highlighted-text); |
175 | 231 | } |
176 | 232 |
|
177 | 233 | &.disabled:not(.selected) { |
178 | | - color: #ddd; |
| 234 | + color: var(--vdp-text-disabled); |
179 | 235 |
|
180 | 236 | &.highlighted { |
181 | | - color: #accad2; |
| 237 | + color: var(--vdp-cell-highlighted-disabled-text); |
182 | 238 | } |
183 | 239 | } |
184 | 240 | } |
185 | 241 | } |
186 | 242 |
|
187 | 243 | .day-header span { |
| 244 | + color: var(--vdp-text); |
188 | 245 | display: inline-block; |
189 | 246 | font-size: 75%; |
190 | | - height: 40px; |
191 | | - line-height: 40px; |
| 247 | + height: var(--vdp-day-header-height); |
| 248 | + line-height: var(--vdp-day-header-height); |
192 | 249 | padding: 0 5px; |
193 | 250 | text-align: center; |
194 | 251 | vertical-align: middle; |
|
269 | 326 |
|
270 | 327 | .vdp-datepicker__clear-button, |
271 | 328 | .vdp-datepicker__calendar-button { |
272 | | - border: none; |
273 | | - font-style: normal; |
| 329 | + background: var(--vdp-today-bg); |
| 330 | + border: 1px solid var(--vdp-border); |
| 331 | + cursor: pointer; |
| 332 | + padding: 0.5em; |
274 | 333 |
|
275 | 334 | &.input-group-prepend, |
276 | 335 | &.input-group-append { |
|
0 commit comments