zenkit-css 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +182 -0
  2. package/dist/zenkit.css +33721 -0
  3. package/dist/zenkit.css.map +1 -0
  4. package/dist/zenkit.min.css +1 -0
  5. package/dist/zenkit.min.css.map +1 -0
  6. package/package.json +41 -0
  7. package/scss/abstracts/_functions.scss +174 -0
  8. package/scss/abstracts/_mixins.scss +272 -0
  9. package/scss/abstracts/_variables.scss +216 -0
  10. package/scss/base/_reset.scss +130 -0
  11. package/scss/base/_root.scss +194 -0
  12. package/scss/base/_typography.scss +271 -0
  13. package/scss/components/_accordion.scss +200 -0
  14. package/scss/components/_affix.scss +278 -0
  15. package/scss/components/_alerts.scss +175 -0
  16. package/scss/components/_anchor.scss +438 -0
  17. package/scss/components/_autocomplete.scss +530 -0
  18. package/scss/components/_avatar.scss +256 -0
  19. package/scss/components/_backtop.scss +329 -0
  20. package/scss/components/_badges.scss +266 -0
  21. package/scss/components/_breadcrumb.scss +102 -0
  22. package/scss/components/_buttons.scss +340 -0
  23. package/scss/components/_calendar.scss +787 -0
  24. package/scss/components/_cards.scss +265 -0
  25. package/scss/components/_carousel.scss +306 -0
  26. package/scss/components/_cascader.scss +510 -0
  27. package/scss/components/_close-button.scss +106 -0
  28. package/scss/components/_colorpicker.scss +593 -0
  29. package/scss/components/_datepicker.scss +625 -0
  30. package/scss/components/_descriptions.scss +453 -0
  31. package/scss/components/_divider.scss +253 -0
  32. package/scss/components/_drawer.scss +485 -0
  33. package/scss/components/_dropdown.scss +323 -0
  34. package/scss/components/_empty.scss +321 -0
  35. package/scss/components/_floatbutton.scss +400 -0
  36. package/scss/components/_forms.scss +753 -0
  37. package/scss/components/_image.scss +497 -0
  38. package/scss/components/_inputnumber.scss +475 -0
  39. package/scss/components/_layout.scss +538 -0
  40. package/scss/components/_list-group.scss +227 -0
  41. package/scss/components/_list.scss +528 -0
  42. package/scss/components/_mentions.scss +479 -0
  43. package/scss/components/_menu.scss +510 -0
  44. package/scss/components/_message.scss +412 -0
  45. package/scss/components/_modal.scss +304 -0
  46. package/scss/components/_navbar.scss +329 -0
  47. package/scss/components/_notification.scss +499 -0
  48. package/scss/components/_offcanvas.scss +274 -0
  49. package/scss/components/_pagination.scss +176 -0
  50. package/scss/components/_placeholder.scss +237 -0
  51. package/scss/components/_popconfirm.scss +393 -0
  52. package/scss/components/_popover.scss +298 -0
  53. package/scss/components/_progress.scss +225 -0
  54. package/scss/components/_rating.scss +314 -0
  55. package/scss/components/_result.scss +383 -0
  56. package/scss/components/_segmented.scss +441 -0
  57. package/scss/components/_select.scss +412 -0
  58. package/scss/components/_spinners.scss +229 -0
  59. package/scss/components/_statistic.scss +336 -0
  60. package/scss/components/_steps.scss +343 -0
  61. package/scss/components/_tabs.scss +239 -0
  62. package/scss/components/_tag.scss +317 -0
  63. package/scss/components/_timeline.scss +341 -0
  64. package/scss/components/_timepicker.scss +468 -0
  65. package/scss/components/_toast.scss +279 -0
  66. package/scss/components/_tooltip.scss +305 -0
  67. package/scss/components/_tour.scss +488 -0
  68. package/scss/components/_transfer.scss +556 -0
  69. package/scss/components/_tree.scss +518 -0
  70. package/scss/components/_treeselect.scss +531 -0
  71. package/scss/components/_upload.scss +510 -0
  72. package/scss/components/_watermark.scss +314 -0
  73. package/scss/content/_figures.scss +38 -0
  74. package/scss/content/_images.scss +138 -0
  75. package/scss/content/_tables.scss +232 -0
  76. package/scss/layout/_container.scss +71 -0
  77. package/scss/layout/_grid.scss +258 -0
  78. package/scss/utilities/_animations.scss +494 -0
  79. package/scss/utilities/_borders.scss +246 -0
  80. package/scss/utilities/_colors.scss +194 -0
  81. package/scss/utilities/_display.scss +263 -0
  82. package/scss/utilities/_filters.scss +328 -0
  83. package/scss/utilities/_flex.scss +178 -0
  84. package/scss/utilities/_float.scss +70 -0
  85. package/scss/utilities/_grid-utils.scss +151 -0
  86. package/scss/utilities/_helpers.scss +479 -0
  87. package/scss/utilities/_interactions.scss +249 -0
  88. package/scss/utilities/_overflow.scss +204 -0
  89. package/scss/utilities/_position.scss +245 -0
  90. package/scss/utilities/_shadows.scss +67 -0
  91. package/scss/utilities/_sizing.scss +217 -0
  92. package/scss/utilities/_spacing.scss +207 -0
  93. package/scss/utilities/_text.scss +237 -0
  94. package/scss/utilities/_transforms.scss +368 -0
  95. package/scss/utilities/_visibility.scss +251 -0
  96. package/scss/zenkit.scss +121 -0
@@ -0,0 +1,510 @@
1
+ // ========================================
2
+ // ZenKit - Cascader Component
3
+ // Multi-level dropdown selection
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Cascader Wrapper
10
+ // ----------------------------------------
11
+ .cascader {
12
+ position: relative;
13
+ display: inline-block;
14
+ width: 100%;
15
+ }
16
+
17
+ // ----------------------------------------
18
+ // Cascader Trigger
19
+ // ----------------------------------------
20
+ .cascader-trigger {
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ width: 100%;
25
+ padding: 0.5rem 0.75rem;
26
+ font-size: 1rem;
27
+ font-weight: 400;
28
+ line-height: 1.5;
29
+ color: var(--text-primary);
30
+ background-color: var(--bg-primary);
31
+ border: 1px solid var(--border-color);
32
+ border-radius: $border-radius;
33
+ cursor: pointer;
34
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
35
+
36
+ &:hover {
37
+ border-color: var(--primary);
38
+ }
39
+
40
+ &:focus,
41
+ &.is-open {
42
+ border-color: var(--primary);
43
+ outline: 0;
44
+ box-shadow: 0 0 0 0.2rem rgba(var(--primary-rgb), 0.25);
45
+ }
46
+
47
+ &.is-disabled {
48
+ background-color: var(--bg-secondary);
49
+ cursor: not-allowed;
50
+ opacity: 0.65;
51
+ }
52
+ }
53
+
54
+ .cascader-trigger-text {
55
+ flex: 1;
56
+ display: flex;
57
+ align-items: center;
58
+ gap: 0.25rem;
59
+ overflow: hidden;
60
+ text-overflow: ellipsis;
61
+ white-space: nowrap;
62
+ text-align: left;
63
+ }
64
+
65
+ .cascader-trigger-placeholder {
66
+ color: var(--text-muted);
67
+ }
68
+
69
+ .cascader-trigger-separator {
70
+ color: var(--text-muted);
71
+ }
72
+
73
+ .cascader-trigger-icons {
74
+ display: flex;
75
+ align-items: center;
76
+ gap: 0.25rem;
77
+ margin-left: 0.5rem;
78
+ }
79
+
80
+ .cascader-trigger-clear {
81
+ display: flex;
82
+ align-items: center;
83
+ padding: 0.125rem;
84
+ color: var(--text-muted);
85
+ cursor: pointer;
86
+ border-radius: 50%;
87
+ transition: color 0.15s ease, background-color 0.15s ease;
88
+
89
+ &:hover {
90
+ color: var(--text-primary);
91
+ background-color: var(--bg-tertiary);
92
+ }
93
+ }
94
+
95
+ .cascader-trigger-arrow {
96
+ display: flex;
97
+ align-items: center;
98
+ color: var(--text-muted);
99
+ transition: transform 0.2s ease;
100
+
101
+ .is-open & {
102
+ transform: rotate(180deg);
103
+ }
104
+ }
105
+
106
+ // ----------------------------------------
107
+ // Cascader Dropdown
108
+ // ----------------------------------------
109
+ .cascader-dropdown {
110
+ position: absolute;
111
+ top: 100%;
112
+ left: 0;
113
+ z-index: $z-dropdown;
114
+ display: none;
115
+ margin-top: 4px;
116
+ background-color: var(--bg-primary);
117
+ border: 1px solid var(--border-color);
118
+ border-radius: $border-radius;
119
+ box-shadow: $shadow-lg;
120
+
121
+ &.is-open {
122
+ display: flex;
123
+ }
124
+
125
+ &.cascader-dropdown-up {
126
+ top: auto;
127
+ bottom: 100%;
128
+ margin-top: 0;
129
+ margin-bottom: 4px;
130
+ }
131
+ }
132
+
133
+ // ----------------------------------------
134
+ // Cascader Menus (Columns)
135
+ // ----------------------------------------
136
+ .cascader-menus {
137
+ display: flex;
138
+ }
139
+
140
+ .cascader-menu {
141
+ display: flex;
142
+ flex-direction: column;
143
+ min-width: 120px;
144
+ max-height: 256px;
145
+ overflow-y: auto;
146
+ border-right: 1px solid var(--border-color);
147
+
148
+ &:last-child {
149
+ border-right: none;
150
+ }
151
+ }
152
+
153
+ .cascader-menu-list {
154
+ padding: 0.25rem 0;
155
+ margin: 0;
156
+ list-style: none;
157
+ }
158
+
159
+ // ----------------------------------------
160
+ // Cascader Option
161
+ // ----------------------------------------
162
+ .cascader-option {
163
+ display: flex;
164
+ align-items: center;
165
+ justify-content: space-between;
166
+ padding: 0.5rem 0.75rem;
167
+ cursor: pointer;
168
+ transition: background-color 0.15s ease;
169
+
170
+ &:hover {
171
+ background-color: var(--bg-secondary);
172
+ }
173
+
174
+ &.is-selected {
175
+ color: var(--primary);
176
+ background-color: rgba(var(--primary-rgb), 0.1);
177
+ font-weight: 500;
178
+ }
179
+
180
+ &.is-active {
181
+ background-color: var(--bg-secondary);
182
+ }
183
+
184
+ &.is-disabled {
185
+ color: var(--text-muted);
186
+ cursor: not-allowed;
187
+ opacity: 0.5;
188
+
189
+ &:hover {
190
+ background-color: transparent;
191
+ }
192
+ }
193
+ }
194
+
195
+ .cascader-option-content {
196
+ display: flex;
197
+ align-items: center;
198
+ flex: 1;
199
+ overflow: hidden;
200
+ }
201
+
202
+ .cascader-option-checkbox {
203
+ margin-right: 0.5rem;
204
+ }
205
+
206
+ .cascader-option-icon {
207
+ display: flex;
208
+ align-items: center;
209
+ margin-right: 0.5rem;
210
+ }
211
+
212
+ .cascader-option-label {
213
+ flex: 1;
214
+ overflow: hidden;
215
+ text-overflow: ellipsis;
216
+ white-space: nowrap;
217
+ }
218
+
219
+ .cascader-option-arrow {
220
+ display: flex;
221
+ align-items: center;
222
+ margin-left: 0.5rem;
223
+ color: var(--text-muted);
224
+ }
225
+
226
+ .cascader-option-loading {
227
+ display: flex;
228
+ align-items: center;
229
+ margin-left: 0.5rem;
230
+ animation: spin 1s linear infinite;
231
+ }
232
+
233
+ @keyframes spin {
234
+ from { transform: rotate(0deg); }
235
+ to { transform: rotate(360deg); }
236
+ }
237
+
238
+ // ----------------------------------------
239
+ // Cascader Search
240
+ // ----------------------------------------
241
+ .cascader-search {
242
+ position: sticky;
243
+ top: 0;
244
+ padding: 0.5rem;
245
+ background-color: var(--bg-primary);
246
+ border-bottom: 1px solid var(--border-color);
247
+ }
248
+
249
+ .cascader-search-input {
250
+ width: 100%;
251
+ padding: 0.375rem 0.75rem;
252
+ font-size: 0.875rem;
253
+ border: 1px solid var(--border-color);
254
+ border-radius: $border-radius-sm;
255
+
256
+ &:focus {
257
+ border-color: var(--primary);
258
+ outline: 0;
259
+ box-shadow: 0 0 0 0.15rem rgba(var(--primary-rgb), 0.25);
260
+ }
261
+ }
262
+
263
+ // ----------------------------------------
264
+ // Cascader Search Results
265
+ // ----------------------------------------
266
+ .cascader-search-results {
267
+ min-width: 200px;
268
+ max-height: 256px;
269
+ overflow-y: auto;
270
+ }
271
+
272
+ .cascader-search-option {
273
+ display: flex;
274
+ flex-direction: column;
275
+ padding: 0.5rem 0.75rem;
276
+ cursor: pointer;
277
+ transition: background-color 0.15s ease;
278
+
279
+ &:hover {
280
+ background-color: var(--bg-secondary);
281
+ }
282
+
283
+ &.is-selected {
284
+ background-color: rgba(var(--primary-rgb), 0.1);
285
+ }
286
+ }
287
+
288
+ .cascader-search-option-path {
289
+ display: flex;
290
+ align-items: center;
291
+ gap: 0.25rem;
292
+ font-size: 0.875rem;
293
+ color: var(--text-primary);
294
+ }
295
+
296
+ .cascader-search-option-separator {
297
+ color: var(--text-muted);
298
+ }
299
+
300
+ .cascader-search-highlight {
301
+ color: var(--primary);
302
+ font-weight: 600;
303
+ }
304
+
305
+ // ----------------------------------------
306
+ // Cascader Empty
307
+ // ----------------------------------------
308
+ .cascader-empty {
309
+ padding: 1.5rem;
310
+ text-align: center;
311
+ color: var(--text-muted);
312
+ }
313
+
314
+ // ----------------------------------------
315
+ // Cascader Multiple
316
+ // ----------------------------------------
317
+ .cascader-multiple .cascader-trigger {
318
+ flex-wrap: wrap;
319
+ gap: 0.25rem;
320
+ min-height: calc(2.5rem + 2px);
321
+ padding: 0.25rem 0.5rem;
322
+ }
323
+
324
+ .cascader-tags {
325
+ display: flex;
326
+ flex-wrap: wrap;
327
+ gap: 0.25rem;
328
+ flex: 1;
329
+ }
330
+
331
+ .cascader-tag {
332
+ display: inline-flex;
333
+ align-items: center;
334
+ gap: 0.25rem;
335
+ padding: 0.125rem 0.5rem;
336
+ font-size: 0.875rem;
337
+ background-color: var(--bg-tertiary);
338
+ border-radius: $border-radius-sm;
339
+ }
340
+
341
+ .cascader-tag-path {
342
+ display: flex;
343
+ align-items: center;
344
+ gap: 0.125rem;
345
+ }
346
+
347
+ .cascader-tag-separator {
348
+ color: var(--text-muted);
349
+ font-size: 0.75rem;
350
+ }
351
+
352
+ .cascader-tag-remove {
353
+ display: flex;
354
+ align-items: center;
355
+ padding: 0.125rem;
356
+ margin-left: 0.125rem;
357
+ margin-right: -0.25rem;
358
+ color: var(--text-muted);
359
+ cursor: pointer;
360
+ border-radius: 50%;
361
+ transition: color 0.15s ease, background-color 0.15s ease;
362
+
363
+ &:hover {
364
+ color: var(--danger);
365
+ background-color: rgba(var(--danger-rgb), 0.1);
366
+ }
367
+ }
368
+
369
+ .cascader-max-tag {
370
+ display: inline-flex;
371
+ align-items: center;
372
+ padding: 0.125rem 0.5rem;
373
+ font-size: 0.875rem;
374
+ color: var(--text-muted);
375
+ background-color: var(--bg-secondary);
376
+ border-radius: $border-radius-sm;
377
+ }
378
+
379
+ // ----------------------------------------
380
+ // Cascader Footer
381
+ // ----------------------------------------
382
+ .cascader-footer {
383
+ display: flex;
384
+ align-items: center;
385
+ justify-content: flex-end;
386
+ gap: 0.5rem;
387
+ padding: 0.5rem 0.75rem;
388
+ border-top: 1px solid var(--border-color);
389
+ }
390
+
391
+ // ----------------------------------------
392
+ // Cascader Sizes
393
+ // ----------------------------------------
394
+ .cascader-sm .cascader-trigger {
395
+ padding: 0.25rem 0.5rem;
396
+ font-size: 0.875rem;
397
+ min-height: calc(1.875rem + 2px);
398
+ }
399
+
400
+ .cascader-sm .cascader-option {
401
+ padding: 0.375rem 0.5rem;
402
+ font-size: 0.875rem;
403
+ }
404
+
405
+ .cascader-sm .cascader-menu {
406
+ min-width: 100px;
407
+ }
408
+
409
+ .cascader-lg .cascader-trigger {
410
+ padding: 0.75rem 1rem;
411
+ font-size: 1.125rem;
412
+ min-height: calc(3rem + 2px);
413
+ }
414
+
415
+ .cascader-lg .cascader-option {
416
+ padding: 0.625rem 1rem;
417
+ font-size: 1.125rem;
418
+ }
419
+
420
+ .cascader-lg .cascader-menu {
421
+ min-width: 150px;
422
+ }
423
+
424
+ // ----------------------------------------
425
+ // Cascader States
426
+ // ----------------------------------------
427
+ .cascader-error .cascader-trigger {
428
+ border-color: var(--danger);
429
+
430
+ &:focus,
431
+ &.is-open {
432
+ box-shadow: 0 0 0 0.2rem rgba(var(--danger-rgb), 0.25);
433
+ }
434
+ }
435
+
436
+ .cascader-warning .cascader-trigger {
437
+ border-color: var(--warning);
438
+
439
+ &:focus,
440
+ &.is-open {
441
+ box-shadow: 0 0 0 0.2rem rgba(var(--warning-rgb), 0.25);
442
+ }
443
+ }
444
+
445
+ // ----------------------------------------
446
+ // Cascader Variants
447
+ // ----------------------------------------
448
+ // Borderless
449
+ .cascader-borderless .cascader-trigger {
450
+ border-color: transparent;
451
+ background-color: transparent;
452
+
453
+ &:hover,
454
+ &:focus,
455
+ &.is-open {
456
+ border-color: transparent;
457
+ background-color: var(--bg-secondary);
458
+ box-shadow: none;
459
+ }
460
+ }
461
+
462
+ // Filled
463
+ .cascader-filled .cascader-trigger {
464
+ border-color: transparent;
465
+ background-color: var(--bg-secondary);
466
+
467
+ &:hover {
468
+ background-color: var(--bg-tertiary);
469
+ }
470
+
471
+ &:focus,
472
+ &.is-open {
473
+ border-color: var(--primary);
474
+ background-color: var(--bg-primary);
475
+ }
476
+ }
477
+
478
+ // ----------------------------------------
479
+ // Cascader Panel (Inline)
480
+ // ----------------------------------------
481
+ .cascader-panel {
482
+ display: flex;
483
+ border: 1px solid var(--border-color);
484
+ border-radius: $border-radius;
485
+ background-color: var(--bg-primary);
486
+ }
487
+
488
+ .cascader-panel .cascader-menus {
489
+ width: 100%;
490
+ }
491
+
492
+ // ----------------------------------------
493
+ // Cascader Hover Expand
494
+ // ----------------------------------------
495
+ .cascader-hover-expand {
496
+ .cascader-option {
497
+ &:hover .cascader-option-arrow {
498
+ color: var(--primary);
499
+ }
500
+ }
501
+ }
502
+
503
+ // ----------------------------------------
504
+ // Cascader Click Expand
505
+ // ----------------------------------------
506
+ .cascader-click-expand {
507
+ .cascader-option {
508
+ cursor: pointer;
509
+ }
510
+ }
@@ -0,0 +1,106 @@
1
+ // ========================================
2
+ // ZenKit - Close Button
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Base Close Button
9
+ // ----------------------------------------
10
+ .btn-close {
11
+ --btn-close-color: var(--text);
12
+ --btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
13
+ --btn-close-opacity: 0.5;
14
+ --btn-close-hover-opacity: 0.75;
15
+ --btn-close-focus-shadow: 0 0 0 0.25rem #{rgba($primary, 0.25)};
16
+ --btn-close-focus-opacity: 1;
17
+ --btn-close-disabled-opacity: 0.25;
18
+
19
+ box-sizing: content-box;
20
+ width: 1em;
21
+ height: 1em;
22
+ padding: 0.25em;
23
+ color: var(--btn-close-color);
24
+ background: transparent var(--btn-close-bg) center / 1em auto no-repeat;
25
+ border: 0;
26
+ border-radius: var(--radius);
27
+ opacity: var(--btn-close-opacity);
28
+ cursor: pointer;
29
+ transition: opacity $transition-fast ease-in-out;
30
+
31
+ &:hover {
32
+ color: var(--btn-close-color);
33
+ text-decoration: none;
34
+ opacity: var(--btn-close-hover-opacity);
35
+ }
36
+
37
+ &:focus {
38
+ outline: 0;
39
+ box-shadow: var(--btn-close-focus-shadow);
40
+ opacity: var(--btn-close-focus-opacity);
41
+ }
42
+
43
+ &:disabled,
44
+ &.disabled {
45
+ pointer-events: none;
46
+ user-select: none;
47
+ opacity: var(--btn-close-disabled-opacity);
48
+ }
49
+ }
50
+
51
+ // ----------------------------------------
52
+ // White Close Button (for dark backgrounds)
53
+ // ----------------------------------------
54
+ .btn-close-white {
55
+ --btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
56
+ --btn-close-color: var(--white);
57
+ }
58
+
59
+ // ----------------------------------------
60
+ // Close Button Sizes
61
+ // ----------------------------------------
62
+ .btn-close-sm {
63
+ width: 0.75em;
64
+ height: 0.75em;
65
+ padding: 0.125em;
66
+ }
67
+
68
+ .btn-close-lg {
69
+ width: 1.25em;
70
+ height: 1.25em;
71
+ padding: 0.375em;
72
+ }
73
+
74
+ // ----------------------------------------
75
+ // Alternative Close Button (X text)
76
+ // ----------------------------------------
77
+ .close {
78
+ float: right;
79
+ font-size: 1.5rem;
80
+ font-weight: $font-weight-bold;
81
+ line-height: 1;
82
+ color: var(--text);
83
+ text-shadow: 0 1px 0 var(--white);
84
+ opacity: 0.5;
85
+ cursor: pointer;
86
+ background: transparent;
87
+ border: 0;
88
+ padding: 0;
89
+
90
+ &:hover {
91
+ color: var(--text);
92
+ text-decoration: none;
93
+ opacity: 0.75;
94
+ }
95
+
96
+ &:focus {
97
+ outline: 0;
98
+ }
99
+
100
+ &:not(:disabled):not(.disabled) {
101
+ &:hover,
102
+ &:focus {
103
+ opacity: 0.75;
104
+ }
105
+ }
106
+ }