@nuralyui/timepicker 0.1.1

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 (43) hide show
  1. package/controllers/formatting.controller.d.ts +93 -0
  2. package/controllers/formatting.controller.d.ts.map +1 -0
  3. package/controllers/formatting.controller.js +195 -0
  4. package/controllers/formatting.controller.js.map +1 -0
  5. package/controllers/index.d.ts +9 -0
  6. package/controllers/index.d.ts.map +1 -0
  7. package/controllers/index.js +9 -0
  8. package/controllers/index.js.map +1 -0
  9. package/controllers/selection.controller.d.ts +72 -0
  10. package/controllers/selection.controller.d.ts.map +1 -0
  11. package/controllers/selection.controller.js +175 -0
  12. package/controllers/selection.controller.js.map +1 -0
  13. package/controllers/validation.controller.d.ts +88 -0
  14. package/controllers/validation.controller.d.ts.map +1 -0
  15. package/controllers/validation.controller.js +200 -0
  16. package/controllers/validation.controller.js.map +1 -0
  17. package/index.d.ts +12 -0
  18. package/index.js +12 -0
  19. package/interfaces/timepicker.interface.d.ts +103 -0
  20. package/interfaces/timepicker.interface.d.ts.map +1 -0
  21. package/interfaces/timepicker.interface.js +7 -0
  22. package/interfaces/timepicker.interface.js.map +1 -0
  23. package/package.json +63 -0
  24. package/test/timepicker.test.d.ts +7 -0
  25. package/test/timepicker.test.d.ts.map +1 -0
  26. package/test/timepicker.test.js +218 -0
  27. package/test/timepicker.test.js.map +1 -0
  28. package/timepicker.component.backup.d.ts +165 -0
  29. package/timepicker.component.backup.js +890 -0
  30. package/timepicker.component.clean.d.ts +95 -0
  31. package/timepicker.component.clean.js +471 -0
  32. package/timepicker.component.d.ts +117 -0
  33. package/timepicker.component.js +747 -0
  34. package/timepicker.constants.d.ts +85 -0
  35. package/timepicker.constants.js +85 -0
  36. package/timepicker.style.d.ts +7 -0
  37. package/timepicker.style.js +646 -0
  38. package/timepicker.types.d.ts +161 -0
  39. package/timepicker.types.js +125 -0
  40. package/utils/time.utils.d.ts +87 -0
  41. package/utils/time.utils.d.ts.map +1 -0
  42. package/utils/time.utils.js +235 -0
  43. package/utils/time.utils.js.map +1 -0
@@ -0,0 +1,646 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { css } from 'lit';
7
+ export const styles = css `
8
+ :host {
9
+ /* Ant Design inspired color palette - matching select component */
10
+ --timepicker-font-family: var(--hybrid-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif);
11
+ --timepicker-font-size: var(--hybrid-font-size-medium, 14px);
12
+ --timepicker-line-height: var(--hybrid-line-height-medium, 1.5715);
13
+
14
+ /* Color system matching select component exactly */
15
+ --timepicker-background-color: var(--hybrid-background-color, #ffffff);
16
+ --timepicker-text-color: var(--hybrid-text-color, #262626);
17
+ --timepicker-text-color-secondary: var(--hybrid-text-color-secondary, #8c8c8c);
18
+ --timepicker-text-color-disabled: var(--hybrid-text-color-disabled, #8c8c8c);
19
+ --timepicker-border-color: var(--hybrid-border-color, #d9d9d9);
20
+ --timepicker-border-color-hover: var(--hybrid-border-color-hover, #1677ff);
21
+ --timepicker-focus-color: var(--hybrid-focus-color, #1677ff);
22
+ --timepicker-error-color: var(--hybrid-error-color, #ff4d4f);
23
+ --timepicker-warning-color: var(--hybrid-warning-color, #faad14);
24
+ --timepicker-success-color: var(--hybrid-success-color, #52c41a);
25
+ --timepicker-disabled-bg: var(--hybrid-disabled-bg, #f5f5f5);
26
+
27
+ /* Select component matching colors */
28
+ --timepicker-primary-color: #1677ff;
29
+ --timepicker-primary-color-hover: #1677ff;
30
+ --timepicker-primary-color-active: #1677ff;
31
+ --timepicker-control-item-bg-hover: #f5f5f5;
32
+ --timepicker-control-item-bg-active: #e6f7ff;
33
+
34
+ /* Sizes following Ant Design */
35
+ --timepicker-border-radius: var(--hybrid-border-radius, 6px);
36
+ --timepicker-padding: var(--hybrid-padding-medium, 4px 11px);
37
+ --timepicker-height: var(--hybrid-input-height, 32px);
38
+ --timepicker-font-weight: 400;
39
+
40
+ /* Clock specific - Ant Design inspired */
41
+ --timepicker-clock-size: 224px;
42
+ --timepicker-clock-background: var(--hybrid-background-color, #ffffff);
43
+ --timepicker-clock-border: var(--hybrid-border-color, #f0f0f0);
44
+ --timepicker-clock-face-color: var(--hybrid-text-color-muted, rgba(0, 0, 0, 0.65));
45
+ --timepicker-clock-hand-color: var(--timepicker-primary-color);
46
+ --timepicker-clock-number-color: var(--hybrid-text-color, rgba(0, 0, 0, 0.88));
47
+
48
+ /* Shadows */
49
+ --timepicker-box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
50
+ --timepicker-box-shadow-secondary: 0 2px 8px rgba(0, 0, 0, 0.15);
51
+
52
+ display: block;
53
+ font-family: var(--timepicker-font-family);
54
+ font-size: var(--timepicker-font-size);
55
+ line-height: var(--timepicker-line-height);
56
+ font-weight: var(--timepicker-font-weight);
57
+ }
58
+
59
+ /* Light theme styles using data-theme attribute */
60
+ .time-picker[data-theme="light"] {
61
+ /* Override colors for light theme */
62
+ --timepicker-background-color: #ffffff;
63
+ --timepicker-text-color: #262626;
64
+ --timepicker-text-color-secondary: #8c8c8c;
65
+ --timepicker-border-color: #d9d9d9;
66
+ --timepicker-border-color-hover: #1677ff;
67
+ --timepicker-focus-color: #1677ff;
68
+ --timepicker-primary-color: #1677ff;
69
+ --timepicker-control-item-bg-hover: #f5f5f5;
70
+ --timepicker-control-item-bg-active: #e6f7ff;
71
+ }
72
+
73
+ /* Dark theme styles using data-theme attribute */
74
+ .time-picker[data-theme="dark"] {
75
+ /* Override colors for dark theme */
76
+ --timepicker-background-color: #262626;
77
+ --timepicker-text-color: #ffffff;
78
+ --timepicker-text-color-secondary: #8c8c8c;
79
+ --timepicker-border-color: #424242;
80
+ --timepicker-border-color-hover: #4096ff;
81
+ --timepicker-focus-color: #4096ff;
82
+ --timepicker-primary-color: #4096ff;
83
+ --timepicker-control-item-bg-hover: #393939;
84
+ --timepicker-control-item-bg-active: #1e3a5f;
85
+ }
86
+
87
+ .time-picker {
88
+ position: relative;
89
+ display: inline-block;
90
+ width: 100%;
91
+ }
92
+
93
+ /* Input wrapper hover and focus states matching select component */
94
+ .time-picker__input-wrapper:hover:not(.time-picker--disabled) nr-input {
95
+ --hybrid-input-border-color: var(--timepicker-border-color-hover);
96
+ }
97
+
98
+ .time-picker__input-wrapper:focus-within nr-input,
99
+ .time-picker--open .time-picker__input-wrapper nr-input,
100
+ .time-picker__input-wrapper nr-input:focus {
101
+ --hybrid-input-border-color: var(--timepicker-focus-color);
102
+ --hybrid-input-box-shadow: 0 0 0 2px var(--timepicker-focus-color)33;
103
+ }
104
+
105
+ /* Disabled state styling */
106
+ .time-picker--disabled .time-picker__input-wrapper nr-input {
107
+ --hybrid-input-background-color: var(--timepicker-disabled-bg);
108
+ --hybrid-input-border-color: var(--timepicker-border-color);
109
+ --hybrid-input-text-color: var(--timepicker-text-color-disabled);
110
+ cursor: not-allowed;
111
+ opacity: 0.6;
112
+ }
113
+
114
+ .time-picker__input-wrapper {
115
+ position: relative;
116
+ width: 100%;
117
+ }
118
+
119
+ /* Style the nr-input component */
120
+ .time-picker__input-wrapper nr-input {
121
+ width: 100%;
122
+ }
123
+
124
+ /* Style the trigger button inside nr-input */
125
+ .time-picker__trigger {
126
+ padding: 4px !important;
127
+ min-width: auto !important;
128
+ width: 24px !important;
129
+ height: 24px !important;
130
+ border-radius: 4px !important;
131
+ }
132
+
133
+ .time-picker__trigger svg {
134
+ width: 16px;
135
+ height: 16px;
136
+ color: var(--timepicker-text-color-secondary);
137
+ transition: color 0.2s ease;
138
+ }
139
+
140
+ .time-picker__trigger:hover svg {
141
+ color: var(--timepicker-primary-color);
142
+ }
143
+
144
+ .time-picker__trigger:hover {
145
+ color: var(--timepicker-primary-color);
146
+ }
147
+
148
+ .time-picker__trigger:disabled {
149
+ color: var(--timepicker-text-color-disabled);
150
+ cursor: not-allowed;
151
+ }
152
+
153
+ .time-picker__trigger svg {
154
+ width: 14px;
155
+ height: 14px;
156
+ }
157
+
158
+ .time-picker__dropdown {
159
+ position: absolute;
160
+ z-index: 1000;
161
+ background-color: var(--timepicker-background-color);
162
+ backdrop-filter: blur(12px);
163
+ -webkit-backdrop-filter: blur(12px);
164
+ border: 1px solid var(--timepicker-border-color);
165
+ border-radius: 8px;
166
+ box-shadow:
167
+ 0 6px 16px 0 rgba(0, 0, 0, 0.08),
168
+ 0 3px 6px -4px rgba(0, 0, 0, 0.12),
169
+ 0 9px 28px 8px rgba(0, 0, 0, 0.05);
170
+ width: 100%;
171
+ min-width: 180px;
172
+ /* Animation and positioning - simplified to match select */
173
+ opacity: 1;
174
+ visibility: visible;
175
+ transform: translateY(0);
176
+ transition: all 0.2s ease-in-out;
177
+ /* Create new stacking context to prevent layering issues */
178
+ isolation: isolate;
179
+ /* Ensure solid background to prevent visual bleed-through */
180
+ backdrop-filter: blur(12px);
181
+ -webkit-backdrop-filter: blur(12px);
182
+ /* Force above other elements */
183
+ transform: translateZ(0);
184
+ animation: dropdown-enter 0.15s ease-out;
185
+ overflow: hidden;
186
+ }
187
+
188
+ .time-picker__dropdown.placement-top {
189
+ animation: dropdown-enter-top 0.15s ease-out;
190
+ }
191
+
192
+ @keyframes dropdown-enter {
193
+ from {
194
+ opacity: 0;
195
+ transform: translateY(-8px);
196
+ }
197
+ to {
198
+ opacity: 1;
199
+ transform: translateY(0);
200
+ }
201
+ }
202
+
203
+ @keyframes dropdown-enter-top {
204
+ from {
205
+ opacity: 0;
206
+ transform: translateY(8px);
207
+ }
208
+ to {
209
+ opacity: 1;
210
+ transform: translateY(0);
211
+ }
212
+ }
213
+
214
+ .time-picker__columns {
215
+ display: flex;
216
+ max-height: 216px;
217
+ overflow: hidden;
218
+ border-radius: 8px;
219
+ background: var(--timepicker-background-color);
220
+ padding: 4px 0;
221
+ }
222
+
223
+ .time-picker__column {
224
+ flex: 1;
225
+ border-right: 1px solid rgba(0, 0, 0, 0.06);
226
+ background: transparent;
227
+ overflow: hidden;
228
+ position: relative;
229
+ min-width: 60px;
230
+ }
231
+
232
+ .time-picker__column:last-child {
233
+ border-right: none;
234
+ }
235
+
236
+ .time-picker__column-list {
237
+ max-height: 216px;
238
+ overflow-y: scroll;
239
+ overflow-x: hidden;
240
+ scrollbar-width: thin;
241
+ scrollbar-color: rgba(0, 0, 0, 0.06) transparent;
242
+ /* Custom scrollbar styling to match modern design */
243
+ padding: 4px 2px;
244
+ scroll-behavior: smooth;
245
+ /* Force scrollbar to always be visible */
246
+ -webkit-overflow-scrolling: touch;
247
+ }
248
+
249
+ .time-picker__column-list::-webkit-scrollbar {
250
+ width: 6px;
251
+ /* Always show scrollbar */
252
+ -webkit-appearance: none;
253
+ }
254
+
255
+ .time-picker__column-list::-webkit-scrollbar-track {
256
+ background: rgba(0, 0, 0, 0.04);
257
+ margin: 8px 0;
258
+ border-radius: 3px;
259
+ }
260
+
261
+ .time-picker__column-list::-webkit-scrollbar-thumb {
262
+ background-color: rgba(0, 0, 0, 0.2);
263
+ border-radius: 3px;
264
+ transition: background-color 0.2s ease;
265
+ /* Ensure thumb is always visible */
266
+ min-height: 20px;
267
+ }
268
+
269
+ .time-picker__column-list::-webkit-scrollbar-thumb:hover {
270
+ background-color: rgba(0, 0, 0, 0.3);
271
+ }
272
+
273
+ .time-picker__column-list {
274
+ scrollbar-width: thin;
275
+ scrollbar-color: rgba(0, 0, 0, 0.2) rgba(0, 0, 0, 0.04);
276
+ scroll-behavior: smooth;
277
+ }
278
+
279
+ .time-picker__column-item {
280
+ display: flex;
281
+ align-items: center;
282
+ justify-content: center;
283
+ padding: 4px 8px;
284
+ color: var(--timepicker-text-color);
285
+ font-size: 14px;
286
+ font-weight: 400;
287
+ cursor: pointer;
288
+ transition: all 0.2s ease-in-out;
289
+ border-radius: 4px;
290
+ position: relative;
291
+ user-select: none;
292
+ line-height: 1.5715;
293
+ min-height: 28px;
294
+ margin: 1px 2px;
295
+ }
296
+
297
+ .time-picker__column-item:hover {
298
+ background-color: var(--timepicker-control-item-bg-hover);
299
+ color: var(--timepicker-primary-color);
300
+ }
301
+
302
+ .time-picker__column-item:active {
303
+ background-color: var(--timepicker-control-item-bg-active);
304
+ color: var(--timepicker-primary-color);
305
+ }
306
+
307
+ .time-picker__column-item--selected {
308
+ background-color: #e6f7ff;
309
+ color: #1677ff;
310
+ font-weight: 600;
311
+ border-radius: 4px;
312
+ }
313
+
314
+ .time-picker__column-item--selected:hover {
315
+ background-color: #bae7ff;
316
+ color: #1677ff;
317
+ }
318
+
319
+ .time-picker__column-item--focused {
320
+ background-color: var(--timepicker-control-item-bg-hover);
321
+ outline: 2px solid var(--timepicker-focus-color);
322
+ outline-offset: -2px;
323
+ border-radius: 4px;
324
+ color: var(--timepicker-primary-color);
325
+ }
326
+
327
+ .time-picker__column-item--disabled {
328
+ opacity: 0.4;
329
+ cursor: not-allowed;
330
+ color: var(--timepicker-text-color-disabled);
331
+ }
332
+
333
+ .time-picker__column-item--disabled:hover {
334
+ background-color: transparent;
335
+ color: var(--timepicker-text-color-disabled);
336
+ }
337
+
338
+ .time-picker__dropdown--top {
339
+ top: auto;
340
+ bottom: 100%;
341
+ margin-top: 0;
342
+ margin-bottom: 4px;
343
+ }
344
+
345
+ .time-picker__clock-container {
346
+ padding: 12px;
347
+ display: flex;
348
+ flex-direction: column;
349
+ gap: 12px;
350
+ background: var(--timepicker-background-color);
351
+ }
352
+
353
+ .time-picker__digital-inputs {
354
+ display: flex;
355
+ align-items: center;
356
+ gap: 8px;
357
+ justify-content: center;
358
+ padding: 8px 12px;
359
+ border-bottom: 1px solid var(--timepicker-border-color);
360
+ }
361
+
362
+ .time-picker__time-input {
363
+ width: 56px;
364
+ height: 32px;
365
+ text-align: center;
366
+ padding: 4px 8px;
367
+ border: 1px solid var(--timepicker-border-color);
368
+ border-radius: var(--timepicker-border-radius);
369
+ font-size: 14px;
370
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
371
+ color: var(--timepicker-text-color);
372
+ background-color: var(--timepicker-background-color);
373
+ transition: all 0.3s;
374
+ outline: none;
375
+ }
376
+
377
+ .time-picker__time-input:hover {
378
+ border-color: var(--timepicker-primary-color-hover);
379
+ }
380
+
381
+ .time-picker__time-input:focus {
382
+ border-color: var(--timepicker-primary-color);
383
+ box-shadow: 0 0 0 2px var(--timepicker-primary-color-active);
384
+ }
385
+
386
+ .time-picker__separator {
387
+ font-weight: 600;
388
+ color: var(--timepicker-text-color);
389
+ }
390
+
391
+ .time-picker__period-toggle {
392
+ display: flex;
393
+ flex-direction: column;
394
+ border: 1px solid var(--timepicker-border-color);
395
+ border-radius: var(--timepicker-border-radius);
396
+ overflow: hidden;
397
+ margin-left: 8px;
398
+ }
399
+
400
+ .time-picker__period-button {
401
+ background: var(--timepicker-background-color);
402
+ border: none;
403
+ padding: 6px 12px;
404
+ font-size: 12px;
405
+ color: var(--timepicker-text-color);
406
+ cursor: pointer;
407
+ transition: all 0.3s;
408
+ min-width: 44px;
409
+ height: 24px;
410
+ display: flex;
411
+ align-items: center;
412
+ justify-content: center;
413
+ }
414
+
415
+ .time-picker__period-button:hover {
416
+ background-color: var(--timepicker-item-hover-bg);
417
+ color: var(--timepicker-text-color);
418
+ }
419
+
420
+ .time-picker__period-button--active {
421
+ background-color: var(--timepicker-primary-color);
422
+ color: #fff;
423
+ }
424
+
425
+ .time-picker__period-button + .time-picker__period-button {
426
+ border-top: 1px solid var(--timepicker-border-color);
427
+ }
428
+
429
+ .time-picker__clock {
430
+ width: var(--timepicker-clock-size);
431
+ height: var(--timepicker-clock-size);
432
+ border: 1px solid var(--timepicker-border-color);
433
+ border-radius: 50%;
434
+ background-color: var(--timepicker-background-color);
435
+ position: relative;
436
+ margin: 0 auto;
437
+ user-select: none;
438
+ }
439
+
440
+ .time-picker__clock-face {
441
+ width: 100%;
442
+ height: 100%;
443
+ position: relative;
444
+ }
445
+
446
+ .time-picker__clock-number {
447
+ position: absolute;
448
+ color: var(--timepicker-text-color);
449
+ font-size: 14px;
450
+ font-weight: 400;
451
+ width: 24px;
452
+ height: 24px;
453
+ display: flex;
454
+ align-items: center;
455
+ justify-content: center;
456
+ cursor: pointer;
457
+ border-radius: 50%;
458
+ transition: all 0.3s;
459
+ transform: translate(-50%, -50%);
460
+ }
461
+
462
+ .time-picker__clock-number:hover {
463
+ background-color: var(--timepicker-item-hover-bg);
464
+ color: var(--timepicker-text-color);
465
+ }
466
+
467
+ .time-picker__clock-number--selected {
468
+ background-color: var(--timepicker-primary-color);
469
+ color: #fff;
470
+ }
471
+
472
+ .time-picker__clock-hand {
473
+ position: absolute;
474
+ background-color: var(--timepicker-primary-color);
475
+ transform-origin: bottom center;
476
+ border-radius: 2px 2px 0 0;
477
+ }
478
+
479
+ .time-picker__clock-center {
480
+ position: absolute;
481
+ top: 50%;
482
+ left: 50%;
483
+ transform: translate(-50%, -50%);
484
+ width: 6px;
485
+ height: 6px;
486
+ background-color: var(--timepicker-primary-color);
487
+ border-radius: 50%;
488
+ z-index: 10;
489
+ }
490
+
491
+ .time-picker__mode-buttons {
492
+ display: flex;
493
+ gap: 8px;
494
+ justify-content: center;
495
+ margin-bottom: 8px;
496
+ }
497
+
498
+ .time-picker__mode-button {
499
+ padding: 6px 16px;
500
+ border: 1px solid var(--timepicker-border-color);
501
+ background: var(--timepicker-background-color);
502
+ color: var(--timepicker-text-color);
503
+ border-radius: var(--timepicker-border-radius);
504
+ cursor: pointer;
505
+ font-size: 14px;
506
+ transition: all 0.3s;
507
+ outline: none;
508
+ }
509
+
510
+ .time-picker__mode-button:hover {
511
+ background-color: var(--timepicker-item-hover-bg);
512
+ border-color: var(--timepicker-primary-color-hover);
513
+ }
514
+
515
+ .time-picker__mode-button--active {
516
+ background-color: var(--timepicker-primary-color);
517
+ color: #fff;
518
+ border-color: var(--timepicker-primary-color);
519
+ }
520
+
521
+ .time-picker__actions {
522
+ display: flex;
523
+ gap: 8px;
524
+ justify-content: flex-end;
525
+ padding: 8px 12px;
526
+ border-top: 1px solid rgba(0, 0, 0, 0.06);
527
+ background: var(--timepicker-background-color);
528
+ border-bottom-left-radius: 8px;
529
+ border-bottom-right-radius: 8px;
530
+ }
531
+
532
+ /* Style nr-button components in actions */
533
+ .time-picker__actions nr-button {
534
+ border-radius: 6px;
535
+ font-weight: 400;
536
+ font-size: 14px;
537
+ height: 28px;
538
+ }
539
+
540
+
541
+
542
+ .time-picker__label {
543
+ display: block;
544
+ margin-bottom: 8px;
545
+ font-weight: 400;
546
+ color: var(--timepicker-text-color);
547
+ font-size: 14px;
548
+ }
549
+
550
+ .time-picker__helper-text {
551
+ font-size: 14px;
552
+ margin-top: 4px;
553
+ color: var(--timepicker-text-color-secondary);
554
+ }
555
+
556
+ .time-picker__helper-text--error {
557
+ color: var(--timepicker-error-color);
558
+ }
559
+
560
+ /* Size variants */
561
+ :host([size="small"]) {
562
+ --timepicker-height: 32px;
563
+ --timepicker-font-size: 12px;
564
+ --timepicker-padding: 4px 8px;
565
+ --timepicker-clock-size: 240px;
566
+ }
567
+
568
+ :host([size="large"]) {
569
+ --timepicker-height: 48px;
570
+ --timepicker-font-size: 16px;
571
+ --timepicker-padding: 12px 16px;
572
+ --timepicker-clock-size: 320px;
573
+ }
574
+
575
+ /* Variant styles */
576
+ :host([variant="outlined"]) .time-picker__input {
577
+ background-color: transparent;
578
+ }
579
+
580
+ :host([variant="filled"]) .time-picker__input {
581
+ border: none;
582
+ background-color: var(--timepicker-border-color)33;
583
+ border-bottom: 2px solid var(--timepicker-border-color);
584
+ border-radius: var(--timepicker-border-radius) var(--timepicker-border-radius) 0 0;
585
+ }
586
+
587
+ :host([variant="filled"]) .time-picker__input:focus {
588
+ border-bottom-color: var(--timepicker-focus-color);
589
+ box-shadow: none;
590
+ }
591
+
592
+ /* Disabled state */
593
+ :host([disabled]) .time-picker {
594
+ pointer-events: none;
595
+ opacity: 0.6;
596
+ }
597
+
598
+ /* Dark theme */
599
+ :host([data-theme="dark"]) {
600
+ --timepicker-background-color: var(--hybrid-dark-background-color, #1f2937);
601
+ --timepicker-text-color: var(--hybrid-dark-text-color, #f9fafb);
602
+ --timepicker-border-color: var(--hybrid-dark-border-color, #374151);
603
+ --timepicker-clock-background: var(--hybrid-dark-background-color, #1f2937);
604
+ --timepicker-clock-border: var(--hybrid-dark-border-color, #4b5563);
605
+ --timepicker-clock-face-color: var(--hybrid-dark-text-color-muted, #9ca3af);
606
+ --timepicker-clock-number-color: var(--hybrid-dark-text-color, #f9fafb);
607
+ }
608
+
609
+ /* Animation classes */
610
+ .time-picker__dropdown {
611
+ opacity: 0;
612
+ transform: translateY(-8px);
613
+ transition: opacity 0.2s, transform 0.2s;
614
+ }
615
+
616
+ .time-picker__dropdown--open {
617
+ opacity: 1;
618
+ transform: translateY(0);
619
+ }
620
+
621
+ /* Hide scrollbars on time inputs */
622
+ .time-picker__time-input::-webkit-outer-spin-button,
623
+ .time-picker__time-input::-webkit-inner-spin-button {
624
+ -webkit-appearance: none;
625
+ margin: 0;
626
+ }
627
+
628
+ .time-picker__time-input[type="number"] {
629
+ -moz-appearance: textfield;
630
+ }
631
+
632
+ /* Responsive adjustments */
633
+ @media (max-width: 480px) {
634
+ .time-picker__clock {
635
+ --timepicker-clock-size: 240px;
636
+ }
637
+
638
+ .time-picker__dropdown {
639
+ left: 50%;
640
+ transform: translateX(-50%);
641
+ width: 90vw;
642
+ max-width: 320px;
643
+ }
644
+ }
645
+ `;
646
+ //# sourceMappingURL=timepicker.style.js.map