@vanduo-oss/framework 1.2.5 → 1.2.7

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 (53) hide show
  1. package/README.md +31 -5
  2. package/css/components/affix.css +53 -0
  3. package/css/components/bubble.css +165 -0
  4. package/css/components/datepicker.css +216 -0
  5. package/css/components/fab.css +225 -0
  6. package/css/components/flow.css +265 -0
  7. package/css/components/rating.css +112 -0
  8. package/css/components/ripple.css +63 -0
  9. package/css/components/sidenav.css +70 -0
  10. package/css/components/spotlight.css +119 -0
  11. package/css/components/stepper.css +176 -0
  12. package/css/components/suggest.css +119 -0
  13. package/css/components/timeline.css +201 -0
  14. package/css/components/timepicker.css +80 -0
  15. package/css/components/transfer.css +165 -0
  16. package/css/components/tree.css +173 -0
  17. package/css/components/waypoint.css +59 -0
  18. package/css/utilities/color-utilities.css +352 -0
  19. package/css/vanduo.css +20 -0
  20. package/dist/build-info.json +3 -3
  21. package/dist/vanduo.cjs.js +2152 -4
  22. package/dist/vanduo.cjs.js.map +4 -4
  23. package/dist/vanduo.cjs.min.js +5 -5
  24. package/dist/vanduo.cjs.min.js.map +4 -4
  25. package/dist/vanduo.css +3253 -271
  26. package/dist/vanduo.css.map +1 -1
  27. package/dist/vanduo.esm.js +2152 -4
  28. package/dist/vanduo.esm.js.map +4 -4
  29. package/dist/vanduo.esm.min.js +5 -5
  30. package/dist/vanduo.esm.min.js.map +4 -4
  31. package/dist/vanduo.js +2152 -4
  32. package/dist/vanduo.js.map +4 -4
  33. package/dist/vanduo.min.css +2 -2
  34. package/dist/vanduo.min.css.map +1 -1
  35. package/dist/vanduo.min.js +5 -5
  36. package/dist/vanduo.min.js.map +4 -4
  37. package/js/components/affix.js +129 -0
  38. package/js/components/bubble.js +203 -0
  39. package/js/components/datepicker.js +287 -0
  40. package/js/components/flow.js +264 -0
  41. package/js/components/rating.js +160 -0
  42. package/js/components/ripple.js +74 -0
  43. package/js/components/sidenav.js +9 -2
  44. package/js/components/spotlight.js +295 -0
  45. package/js/components/stepper.js +97 -0
  46. package/js/components/suggest.js +219 -0
  47. package/js/components/timepicker.js +142 -0
  48. package/js/components/transfer.js +206 -0
  49. package/js/components/tree.js +191 -0
  50. package/js/components/validate.js +185 -0
  51. package/js/components/waypoint.js +120 -0
  52. package/js/index.js +16 -0
  53. package/package.json +1 -1
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Vanduo Framework - Stepper
3
+ * Multi-step progress indicator with states
4
+ */
5
+
6
+ :root {
7
+ /* Stepper Colors */
8
+ --stepper-active-color: var(--color-primary, #0d6efd);
9
+ --stepper-completed-color: var(--color-success, #198754);
10
+ --stepper-error-color: var(--color-danger, #dc3545);
11
+ --stepper-pending-color: var(--color-gray-400, #ced4da);
12
+ --stepper-text-color: var(--text-primary, #212529);
13
+ --stepper-line-color: var(--border-color, #dee2e6);
14
+
15
+ /* Stepper Dimensions (Fibonacci) */
16
+ --stepper-circle-size: 2.125rem; /* 34px ~ fib */
17
+ --stepper-line-width: 2px;
18
+ --stepper-gap: 0.5rem; /* 8px - fib */
19
+ --stepper-connector-gap: 0.8125rem; /* 13px - fib */
20
+ }
21
+
22
+ [data-theme="dark"] {
23
+ --stepper-pending-color: var(--color-gray-600, #6c757d);
24
+ --stepper-line-color: var(--color-gray-600, #6c757d);
25
+ }
26
+
27
+ @media (prefers-color-scheme: dark) {
28
+ :root:not([data-theme]) {
29
+ --stepper-pending-color: var(--color-gray-600, #6c757d);
30
+ --stepper-line-color: var(--color-gray-600, #6c757d);
31
+ }
32
+ }
33
+
34
+ /* ========== Horizontal (default) ========== */
35
+
36
+ .vd-stepper {
37
+ display: flex;
38
+ align-items: flex-start;
39
+ width: 100%;
40
+ counter-reset: step;
41
+ }
42
+
43
+ .vd-stepper-item {
44
+ display: flex;
45
+ flex-direction: column;
46
+ align-items: center;
47
+ flex: 1;
48
+ position: relative;
49
+ text-align: center;
50
+ }
51
+
52
+ /* Connector line */
53
+ .vd-stepper-item:not(:last-child)::after {
54
+ content: '';
55
+ position: absolute;
56
+ top: calc(var(--stepper-circle-size) / 2);
57
+ left: calc(50% + var(--stepper-circle-size) / 2 + var(--stepper-connector-gap));
58
+ right: calc(-50% + var(--stepper-circle-size) / 2 + var(--stepper-connector-gap));
59
+ height: var(--stepper-line-width);
60
+ background: var(--stepper-line-color);
61
+ z-index: 0;
62
+ }
63
+
64
+ /* Circle indicator */
65
+ .vd-stepper-circle {
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ width: var(--stepper-circle-size);
70
+ height: var(--stepper-circle-size);
71
+ border-radius: 50%;
72
+ border: var(--stepper-line-width) solid var(--stepper-pending-color);
73
+ background: var(--bg-primary, #fff);
74
+ font-weight: 600;
75
+ font-size: 0.875rem;
76
+ z-index: 1;
77
+ transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
78
+ counter-increment: step;
79
+ }
80
+
81
+ .vd-stepper-label {
82
+ margin-top: var(--stepper-gap);
83
+ font-size: 0.8125rem;
84
+ font-weight: 500;
85
+ color: var(--text-muted, #6c757d);
86
+ }
87
+
88
+ .vd-stepper-description {
89
+ font-size: 0.75rem;
90
+ color: var(--text-muted, #6c757d);
91
+ margin-top: 0.125rem;
92
+ }
93
+
94
+ /* ========== States ========== */
95
+
96
+ .vd-stepper-item.is-active .vd-stepper-circle {
97
+ border-color: var(--stepper-active-color);
98
+ background: var(--stepper-active-color);
99
+ color: #fff;
100
+ }
101
+
102
+ .vd-stepper-item.is-active .vd-stepper-label {
103
+ color: var(--stepper-active-color);
104
+ font-weight: 600;
105
+ }
106
+
107
+ .vd-stepper-item.is-completed .vd-stepper-circle {
108
+ border-color: var(--stepper-completed-color);
109
+ background: var(--stepper-completed-color);
110
+ color: #fff;
111
+ }
112
+
113
+ .vd-stepper-item.is-completed::after {
114
+ background: var(--stepper-completed-color);
115
+ }
116
+
117
+ .vd-stepper-item.is-completed .vd-stepper-label {
118
+ color: var(--stepper-text-color);
119
+ }
120
+
121
+ .vd-stepper-item.is-error .vd-stepper-circle {
122
+ border-color: var(--stepper-error-color);
123
+ background: var(--stepper-error-color);
124
+ color: #fff;
125
+ }
126
+
127
+ .vd-stepper-item.is-error .vd-stepper-label {
128
+ color: var(--stepper-error-color);
129
+ }
130
+
131
+ /* ========== Vertical ========== */
132
+
133
+ .vd-stepper-vertical {
134
+ flex-direction: column;
135
+ align-items: flex-start;
136
+ }
137
+
138
+ .vd-stepper-vertical .vd-stepper-item {
139
+ flex-direction: row;
140
+ align-items: flex-start;
141
+ flex: none;
142
+ text-align: left;
143
+ padding-bottom: 1.3125rem; /* 21px - fib */
144
+ }
145
+
146
+ .vd-stepper-vertical .vd-stepper-item:not(:last-child)::after {
147
+ top: calc(var(--stepper-circle-size) + var(--stepper-connector-gap));
148
+ left: calc(var(--stepper-circle-size) / 2);
149
+ right: auto;
150
+ bottom: 0;
151
+ width: var(--stepper-line-width);
152
+ height: auto;
153
+ }
154
+
155
+ .vd-stepper-vertical .vd-stepper-label,
156
+ .vd-stepper-vertical .vd-stepper-description {
157
+ margin-top: 0;
158
+ margin-left: 0.8125rem; /* 13px - fib */
159
+ }
160
+
161
+ .vd-stepper-vertical .vd-stepper-content {
162
+ display: flex;
163
+ flex-direction: column;
164
+ margin-left: 0.8125rem;
165
+ }
166
+
167
+ /* ========== Clickable ========== */
168
+
169
+ .vd-stepper-clickable .vd-stepper-item {
170
+ cursor: pointer;
171
+ }
172
+
173
+ .vd-stepper-clickable .vd-stepper-circle:hover {
174
+ transform: scale(1.1);
175
+ transition: transform 0.15s ease;
176
+ }
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Vanduo Framework - Suggest (Autocomplete)
3
+ * Dropdown suggestion list for text inputs
4
+ * Primary: .vd-suggest | Alias: .vd-autocomplete
5
+ */
6
+
7
+ :root {
8
+ /* Suggest Colors */
9
+ --suggest-bg: var(--card-bg, #fff);
10
+ --suggest-border-color: var(--border-color, #dee2e6);
11
+ --suggest-shadow: 0 0.25rem 0.8125rem rgba(0, 0, 0, 0.1); /* 4px 13px - fib */
12
+ --suggest-item-hover-bg: var(--bg-secondary, #f8f9fa);
13
+ --suggest-item-active-bg: var(--color-primary, #0d6efd);
14
+ --suggest-item-active-color: #fff;
15
+ --suggest-highlight-color: var(--color-primary, #0d6efd);
16
+
17
+ /* Suggest Spacing (Fibonacci) */
18
+ --suggest-padding: 0.3125rem 0; /* 5px - fib */
19
+ --suggest-item-padding: 0.5rem 0.8125rem; /* 8px 13px - fib */
20
+ --suggest-max-height: 15rem;
21
+ --suggest-border-radius: var(--border-radius, 0.5rem);
22
+
23
+ /* Suggest Z-index */
24
+ --suggest-z-index: 1050;
25
+ }
26
+
27
+ [data-theme="dark"] {
28
+ --suggest-bg: var(--card-bg, #2d2d44);
29
+ --suggest-border-color: var(--border-color, #3d3d5c);
30
+ --suggest-item-hover-bg: var(--bg-primary, #1a1a2e);
31
+ --suggest-shadow: 0 0.25rem 0.8125rem rgba(0, 0, 0, 0.3);
32
+ }
33
+
34
+ @media (prefers-color-scheme: dark) {
35
+ :root:not([data-theme]) {
36
+ --suggest-bg: var(--card-bg, #2d2d44);
37
+ --suggest-border-color: var(--border-color, #3d3d5c);
38
+ --suggest-item-hover-bg: var(--bg-primary, #1a1a2e);
39
+ --suggest-shadow: 0 0.25rem 0.8125rem rgba(0, 0, 0, 0.3);
40
+ }
41
+ }
42
+
43
+ /* ========== Wrapper ========== */
44
+
45
+ .vd-suggest-wrapper,
46
+ .vd-autocomplete-wrapper {
47
+ position: relative;
48
+ display: inline-block;
49
+ width: 100%;
50
+ }
51
+
52
+ /* ========== Dropdown List ========== */
53
+
54
+ .vd-suggest-list {
55
+ position: absolute;
56
+ top: 100%;
57
+ left: 0;
58
+ right: 0;
59
+ z-index: var(--suggest-z-index);
60
+ margin-top: 2px;
61
+ padding: var(--suggest-padding);
62
+ max-height: var(--suggest-max-height);
63
+ overflow-y: auto;
64
+ background: var(--suggest-bg);
65
+ border: 1px solid var(--suggest-border-color);
66
+ border-radius: var(--suggest-border-radius);
67
+ box-shadow: var(--suggest-shadow);
68
+ list-style: none;
69
+ display: none;
70
+ }
71
+
72
+ .vd-suggest-list.is-open {
73
+ display: block;
74
+ }
75
+
76
+ /* ========== Items ========== */
77
+
78
+ .vd-suggest-item {
79
+ padding: var(--suggest-item-padding);
80
+ cursor: pointer;
81
+ transition: background 0.15s ease;
82
+ font-size: var(--font-size-base, 1rem);
83
+ }
84
+
85
+ .vd-suggest-item:hover,
86
+ .vd-suggest-item.is-highlighted {
87
+ background: var(--suggest-item-hover-bg);
88
+ }
89
+
90
+ .vd-suggest-item.is-active {
91
+ background: var(--suggest-item-active-bg);
92
+ color: var(--suggest-item-active-color);
93
+ }
94
+
95
+ /* Match highlight */
96
+ .vd-suggest-match {
97
+ font-weight: 600;
98
+ color: var(--suggest-highlight-color);
99
+ }
100
+
101
+ .vd-suggest-item.is-active .vd-suggest-match {
102
+ color: inherit;
103
+ }
104
+
105
+ /* ========== No Results ========== */
106
+
107
+ .vd-suggest-empty {
108
+ padding: var(--suggest-item-padding);
109
+ color: var(--text-muted, #6c757d);
110
+ font-style: italic;
111
+ }
112
+
113
+ /* ========== Loading ========== */
114
+
115
+ .vd-suggest-loading {
116
+ padding: var(--suggest-item-padding);
117
+ text-align: center;
118
+ color: var(--text-muted, #6c757d);
119
+ }
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Vanduo Framework - Timeline
3
+ * CSS-only vertical timeline layout
4
+ */
5
+
6
+ :root {
7
+ /* Timeline Colors */
8
+ --timeline-line-color: var(--border-color, #dee2e6);
9
+ --timeline-marker-bg: var(--color-primary, #0d6efd);
10
+ --timeline-marker-color: #fff;
11
+ --timeline-content-bg: var(--card-bg, #fff);
12
+ --timeline-content-border: var(--border-color, #dee2e6);
13
+
14
+ /* Timeline Dimensions (Fibonacci) */
15
+ --timeline-line-width: 2px;
16
+ --timeline-marker-size: 0.8125rem; /* 13px - fib */
17
+ --timeline-marker-size-lg: 2.125rem; /* 34px ~ fib */
18
+ --timeline-spacing: 1.3125rem; /* 21px - fib */
19
+ --timeline-content-padding: 0.8125rem; /* 13px - fib */
20
+ --timeline-border-radius: var(--border-radius, 0.5rem);
21
+ }
22
+
23
+ [data-theme="dark"] {
24
+ --timeline-line-color: var(--color-gray-600, #6c757d);
25
+ --timeline-content-bg: var(--card-bg, #2d2d44);
26
+ --timeline-content-border: var(--border-color, #3d3d5c);
27
+ }
28
+
29
+ @media (prefers-color-scheme: dark) {
30
+ :root:not([data-theme]) {
31
+ --timeline-line-color: var(--color-gray-600, #6c757d);
32
+ --timeline-content-bg: var(--card-bg, #2d2d44);
33
+ --timeline-content-border: var(--border-color, #3d3d5c);
34
+ }
35
+ }
36
+
37
+ /* ========== Base (Vertical Left) ========== */
38
+
39
+ .vd-timeline {
40
+ position: relative;
41
+ padding-left: calc(var(--timeline-marker-size) / 2 + var(--timeline-spacing));
42
+ list-style: none;
43
+ margin: 0;
44
+ }
45
+
46
+ /* Vertical line */
47
+ .vd-timeline::before {
48
+ content: '';
49
+ position: absolute;
50
+ top: 0;
51
+ bottom: 0;
52
+ left: calc(var(--timeline-marker-size) / 2 - var(--timeline-line-width) / 2);
53
+ width: var(--timeline-line-width);
54
+ background: var(--timeline-line-color);
55
+ }
56
+
57
+ /* ========== Item ========== */
58
+
59
+ .vd-timeline-item {
60
+ position: relative;
61
+ padding-bottom: var(--timeline-spacing);
62
+ }
63
+
64
+ .vd-timeline-item:last-child {
65
+ padding-bottom: 0;
66
+ }
67
+
68
+ /* ========== Marker ========== */
69
+
70
+ .vd-timeline-marker {
71
+ position: absolute;
72
+ left: calc(-1 * var(--timeline-spacing) - var(--timeline-marker-size) / 2);
73
+ top: 0.25rem;
74
+ width: var(--timeline-marker-size);
75
+ height: var(--timeline-marker-size);
76
+ border-radius: 50%;
77
+ background: var(--timeline-marker-bg);
78
+ border: 2px solid var(--timeline-content-bg);
79
+ box-shadow: 0 0 0 2px var(--timeline-marker-bg);
80
+ }
81
+
82
+ /* Large marker with icon/text */
83
+ .vd-timeline-marker-lg {
84
+ width: var(--timeline-marker-size-lg);
85
+ height: var(--timeline-marker-size-lg);
86
+ left: calc(-1 * var(--timeline-spacing) - var(--timeline-marker-size-lg) / 2);
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ color: var(--timeline-marker-color);
91
+ font-size: 0.875rem;
92
+ }
93
+
94
+ /* ========== Content ========== */
95
+
96
+ .vd-timeline-content {
97
+ background: var(--timeline-content-bg);
98
+ border: 1px solid var(--timeline-content-border);
99
+ border-radius: var(--timeline-border-radius);
100
+ padding: var(--timeline-content-padding);
101
+ }
102
+
103
+ .vd-timeline-title {
104
+ margin: 0 0 0.3125rem; /* 5px - fib */
105
+ font-weight: 600;
106
+ font-size: 1rem;
107
+ }
108
+
109
+ .vd-timeline-date {
110
+ font-size: 0.75rem;
111
+ color: var(--text-muted, #6c757d);
112
+ margin-bottom: 0.3125rem;
113
+ }
114
+
115
+ .vd-timeline-text {
116
+ margin: 0;
117
+ font-size: 0.875rem;
118
+ }
119
+
120
+ /* ========== Color Variants ========== */
121
+
122
+ .vd-timeline-item.vd-timeline-success .vd-timeline-marker {
123
+ background: var(--color-success, #198754);
124
+ box-shadow: 0 0 0 2px var(--color-success, #198754);
125
+ }
126
+
127
+ .vd-timeline-item.vd-timeline-warning .vd-timeline-marker {
128
+ background: var(--color-warning, #ffc107);
129
+ box-shadow: 0 0 0 2px var(--color-warning, #ffc107);
130
+ }
131
+
132
+ .vd-timeline-item.vd-timeline-danger .vd-timeline-marker {
133
+ background: var(--color-danger, #dc3545);
134
+ box-shadow: 0 0 0 2px var(--color-danger, #dc3545);
135
+ }
136
+
137
+ /* ========== Alternating Mode ========== */
138
+
139
+ .vd-timeline-alternating {
140
+ padding-left: 0;
141
+ }
142
+
143
+ .vd-timeline-alternating::before {
144
+ left: 50%;
145
+ transform: translateX(-50%);
146
+ }
147
+
148
+ .vd-timeline-alternating .vd-timeline-item {
149
+ width: 50%;
150
+ padding-right: var(--timeline-spacing);
151
+ padding-left: 0;
152
+ }
153
+
154
+ .vd-timeline-alternating .vd-timeline-item:nth-child(odd) {
155
+ margin-left: 0;
156
+ text-align: right;
157
+ }
158
+
159
+ .vd-timeline-alternating .vd-timeline-item:nth-child(odd) .vd-timeline-marker {
160
+ left: auto;
161
+ right: calc(-1 * var(--timeline-marker-size) / 2 - 1px);
162
+ }
163
+
164
+ .vd-timeline-alternating .vd-timeline-item:nth-child(even) {
165
+ margin-left: 50%;
166
+ padding-left: var(--timeline-spacing);
167
+ padding-right: 0;
168
+ }
169
+
170
+ .vd-timeline-alternating .vd-timeline-item:nth-child(even) .vd-timeline-marker {
171
+ left: calc(-1 * var(--timeline-marker-size) / 2 - 1px);
172
+ }
173
+
174
+ /* ========== Responsive ========== */
175
+
176
+ @media (max-width: 768px) {
177
+ .vd-timeline-alternating {
178
+ padding-left: calc(var(--timeline-marker-size) / 2 + var(--timeline-spacing));
179
+ }
180
+
181
+ .vd-timeline-alternating::before {
182
+ left: calc(var(--timeline-marker-size) / 2 - var(--timeline-line-width) / 2);
183
+ transform: none;
184
+ }
185
+
186
+ .vd-timeline-alternating .vd-timeline-item,
187
+ .vd-timeline-alternating .vd-timeline-item:nth-child(odd),
188
+ .vd-timeline-alternating .vd-timeline-item:nth-child(even) {
189
+ width: 100%;
190
+ margin-left: 0;
191
+ padding-left: 0;
192
+ padding-right: 0;
193
+ text-align: left;
194
+ }
195
+
196
+ .vd-timeline-alternating .vd-timeline-item:nth-child(odd) .vd-timeline-marker,
197
+ .vd-timeline-alternating .vd-timeline-item:nth-child(even) .vd-timeline-marker {
198
+ left: calc(-1 * var(--timeline-spacing) - var(--timeline-marker-size) / 2);
199
+ right: auto;
200
+ }
201
+ }
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Vanduo Framework - Timepicker
3
+ * Dropdown time selection with 12h/24h format
4
+ */
5
+
6
+ :root {
7
+ --tp-bg: var(--card-bg, #fff);
8
+ --tp-border-color: var(--border-color, #dee2e6);
9
+ --tp-shadow: 0 0.25rem 0.8125rem rgba(0, 0, 0, 0.12);
10
+ --tp-item-hover-bg: var(--bg-secondary, #f8f9fa);
11
+ --tp-item-selected-bg: var(--color-primary, #0d6efd);
12
+ --tp-item-selected-color: #fff;
13
+ --tp-padding: 0.5rem;
14
+ --tp-item-padding: 0.3125rem 0.8125rem; /* 5px 13px - fib */
15
+ --tp-max-height: 15rem;
16
+ --tp-border-radius: var(--border-radius, 0.5rem);
17
+ --tp-z-index: 1055;
18
+ }
19
+
20
+ [data-theme="dark"] {
21
+ --tp-bg: var(--card-bg, #2d2d44);
22
+ --tp-border-color: var(--border-color, #3d3d5c);
23
+ --tp-item-hover-bg: var(--bg-primary, #1a1a2e);
24
+ --tp-shadow: 0 0.25rem 0.8125rem rgba(0, 0, 0, 0.3);
25
+ }
26
+
27
+ @media (prefers-color-scheme: dark) {
28
+ :root:not([data-theme]) {
29
+ --tp-bg: var(--card-bg, #2d2d44);
30
+ --tp-border-color: var(--border-color, #3d3d5c);
31
+ --tp-item-hover-bg: var(--bg-primary, #1a1a2e);
32
+ --tp-shadow: 0 0.25rem 0.8125rem rgba(0, 0, 0, 0.3);
33
+ }
34
+ }
35
+
36
+ /* ========== Popup ========== */
37
+
38
+ .vd-timepicker-popup {
39
+ position: absolute;
40
+ z-index: var(--tp-z-index);
41
+ background: var(--tp-bg);
42
+ border: 1px solid var(--tp-border-color);
43
+ border-radius: var(--tp-border-radius);
44
+ box-shadow: var(--tp-shadow);
45
+ max-height: var(--tp-max-height);
46
+ overflow-y: auto;
47
+ display: none;
48
+ min-width: 8rem;
49
+ }
50
+
51
+ .vd-timepicker-popup.is-open {
52
+ display: block;
53
+ }
54
+
55
+ /* ========== Time Items ========== */
56
+
57
+ .vd-timepicker-item {
58
+ padding: var(--tp-item-padding);
59
+ cursor: pointer;
60
+ font-size: 0.875rem;
61
+ text-align: center;
62
+ transition: background 0.15s ease;
63
+ font-variant-numeric: tabular-nums;
64
+ }
65
+
66
+ .vd-timepicker-item:hover {
67
+ background: var(--tp-item-hover-bg);
68
+ }
69
+
70
+ .vd-timepicker-item.is-selected {
71
+ background: var(--tp-item-selected-bg);
72
+ color: var(--tp-item-selected-color);
73
+ font-weight: 600;
74
+ }
75
+
76
+ .vd-timepicker-item.is-disabled {
77
+ opacity: 0.4;
78
+ cursor: not-allowed;
79
+ pointer-events: none;
80
+ }