podo-ui 0.8.0 → 0.8.2

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.
@@ -0,0 +1,481 @@
1
+ /**
2
+ * Podo UI DatePicker - Vanilla CSS
3
+ * @version 0.8.0
4
+ * @license MIT
5
+ */
6
+
7
+ /* ============================================
8
+ CSS Variables
9
+ - Uses podo-ui.css variables if available (--color-*)
10
+ - Falls back to standalone values if podo-ui.css is not loaded
11
+ ============================================ */
12
+ .podo-datepicker {
13
+ /* Colors from podo-ui.css with fallbacks */
14
+ --podo-bg-block: var(--color-bg-block, #ffffff);
15
+ --podo-bg-modal: var(--color-bg-modal, #ffffff);
16
+ --podo-bg-disabled: var(--color-bg-disabled, #f5f5f5);
17
+ --podo-border: var(--color-border, #e0e0e0);
18
+ --podo-border-hover: var(--color-border-hover, #bdbdbd);
19
+ --podo-text-body: var(--color-text-body, #212121);
20
+ --podo-text-sub: var(--color-text-sub, #757575);
21
+ --podo-text-disabled: var(--color-text-disabled, #9e9e9e);
22
+ --podo-primary: var(--color-primary, #7c3aed);
23
+ --podo-primary-hover: var(--color-primary-hover, #6d28d9);
24
+ --podo-primary-fill: var(--color-primary-fill, rgba(124, 58, 237, 0.1));
25
+ --podo-primary-reverse: var(--color-primary-reverse, #ffffff);
26
+ --podo-default: var(--color-default, #f5f5f5);
27
+ --podo-default-fill: var(--color-default-fill, #eeeeee);
28
+ --podo-default-hover: var(--color-default-hover, #e0e0e0);
29
+ --podo-default-reverse: var(--color-default-reverse, #212121);
30
+ --podo-radius-sm: var(--radius-2, 4px);
31
+ --podo-radius-md: var(--radius-3, 8px);
32
+ --podo-spacing-1: var(--spacing-1, 4px);
33
+ --podo-spacing-2: var(--spacing-2, 8px);
34
+ --podo-spacing-3: var(--spacing-3, 12px);
35
+ --podo-spacing-4: var(--spacing-4, 16px);
36
+ --podo-spacing-5: var(--spacing-5, 20px);
37
+ --podo-font-size-sm: 13px;
38
+ --podo-font-size-md: 14px;
39
+ --podo-font-size-lg: 16px;
40
+ }
41
+
42
+ /* ============================================
43
+ Container
44
+ ============================================ */
45
+ .podo-datepicker {
46
+ position: relative;
47
+ display: inline-block;
48
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
49
+ font-size: var(--podo-font-size-md);
50
+ line-height: 1.5;
51
+ }
52
+
53
+ /* ============================================
54
+ Input
55
+ ============================================ */
56
+ .podo-datepicker__input {
57
+ display: flex;
58
+ align-items: center;
59
+ gap: var(--podo-spacing-2);
60
+ padding: var(--podo-spacing-3) var(--podo-spacing-4);
61
+ background: var(--podo-bg-block);
62
+ border: 1px solid var(--podo-border);
63
+ border-radius: var(--podo-radius-md);
64
+ cursor: pointer;
65
+ transition: border-color 0.2s;
66
+ }
67
+
68
+ .podo-datepicker__input:hover {
69
+ border-color: var(--podo-border-hover);
70
+ }
71
+
72
+ .podo-datepicker__input--active {
73
+ border-color: var(--podo-primary);
74
+ }
75
+
76
+ .podo-datepicker__input--disabled {
77
+ background: var(--podo-bg-disabled);
78
+ cursor: not-allowed;
79
+ opacity: 0.6;
80
+ }
81
+
82
+ .podo-datepicker__input-content {
83
+ flex: 1;
84
+ display: flex;
85
+ align-items: center;
86
+ gap: var(--podo-spacing-2);
87
+ }
88
+
89
+ /* ============================================
90
+ Input Parts
91
+ ============================================ */
92
+ .podo-datepicker__part {
93
+ display: flex;
94
+ flex: 1;
95
+ align-items: center;
96
+ justify-content: center;
97
+ padding: 0 var(--podo-spacing-2);
98
+ background: none;
99
+ border: none;
100
+ border-radius: var(--podo-radius-sm);
101
+ cursor: pointer;
102
+ transition: background 0.2s;
103
+ color: var(--podo-text-body);
104
+ white-space: nowrap;
105
+ font-variant-numeric: tabular-nums;
106
+ font-family: inherit;
107
+ font-size: var(--podo-font-size-md);
108
+ }
109
+
110
+ .podo-datepicker__part:hover {
111
+ background: var(--podo-default);
112
+ }
113
+
114
+ .podo-datepicker__part--active {
115
+ background: var(--podo-default-fill);
116
+ }
117
+
118
+ .podo-datepicker__part--placeholder {
119
+ color: var(--podo-text-disabled);
120
+ }
121
+
122
+ .podo-datepicker__separator {
123
+ color: var(--podo-text-body);
124
+ padding: 0 var(--podo-spacing-1);
125
+ font-size: var(--podo-font-size-md);
126
+ }
127
+
128
+ /* ============================================
129
+ Time Section
130
+ ============================================ */
131
+ .podo-datepicker__time-section {
132
+ display: flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ gap: 0;
136
+ }
137
+
138
+ .podo-datepicker__time-select {
139
+ appearance: none;
140
+ -webkit-appearance: none;
141
+ -moz-appearance: none;
142
+ background: none;
143
+ border: none;
144
+ padding: 0 var(--podo-spacing-2);
145
+ flex: 1;
146
+ text-align: center;
147
+ text-align-last: center;
148
+ color: var(--podo-text-body);
149
+ cursor: pointer;
150
+ border-radius: var(--podo-radius-sm);
151
+ transition: background 0.2s;
152
+ font-variant-numeric: tabular-nums;
153
+ font-family: inherit;
154
+ font-size: var(--podo-font-size-md);
155
+ }
156
+
157
+ .podo-datepicker__time-select:hover {
158
+ background: var(--podo-default);
159
+ }
160
+
161
+ .podo-datepicker__time-select:focus {
162
+ outline: none;
163
+ background: var(--podo-default-fill);
164
+ }
165
+
166
+ .podo-datepicker__time-select--placeholder {
167
+ color: var(--podo-text-disabled);
168
+ }
169
+
170
+ .podo-datepicker__time-select:disabled {
171
+ cursor: not-allowed;
172
+ opacity: 0.6;
173
+ }
174
+
175
+ .podo-datepicker__time-separator {
176
+ color: var(--podo-text-body);
177
+ font-size: var(--podo-font-size-md);
178
+ }
179
+
180
+ /* ============================================
181
+ Icon
182
+ ============================================ */
183
+ .podo-datepicker__icon {
184
+ display: flex;
185
+ align-items: center;
186
+ justify-content: center;
187
+ width: 20px;
188
+ height: 20px;
189
+ font-size: 20px;
190
+ line-height: 1;
191
+ color: var(--podo-text-sub);
192
+ flex-shrink: 0;
193
+ }
194
+
195
+ /* ============================================
196
+ Dropdown
197
+ ============================================ */
198
+ .podo-datepicker__dropdown {
199
+ position: absolute;
200
+ top: calc(100% + var(--podo-spacing-2));
201
+ left: 0;
202
+ z-index: 1000;
203
+ display: flex;
204
+ flex-direction: column;
205
+ gap: 10px;
206
+ padding: var(--podo-spacing-5);
207
+ background: var(--podo-bg-modal);
208
+ border-radius: var(--podo-radius-md);
209
+ box-shadow: 0 6px 18px -3px rgba(50, 50, 50, 0.12);
210
+ }
211
+
212
+ .podo-datepicker__dropdown--right {
213
+ left: auto;
214
+ right: 0;
215
+ }
216
+
217
+ /* ============================================
218
+ Calendar
219
+ ============================================ */
220
+ .podo-datepicker__calendar {
221
+ display: flex;
222
+ flex-direction: column;
223
+ gap: 10px;
224
+ min-width: 280px;
225
+ }
226
+
227
+ /* Navigation */
228
+ .podo-datepicker__calendar-nav {
229
+ display: flex;
230
+ align-items: center;
231
+ gap: var(--podo-spacing-4);
232
+ height: 40px;
233
+ }
234
+
235
+ .podo-datepicker__nav-button {
236
+ display: flex;
237
+ align-items: center;
238
+ justify-content: center;
239
+ width: 40px;
240
+ height: 40px;
241
+ background: var(--podo-default);
242
+ border: none;
243
+ border-radius: var(--podo-radius-md);
244
+ cursor: pointer;
245
+ transition: background 0.2s;
246
+ }
247
+
248
+ .podo-datepicker__nav-button:hover {
249
+ background: var(--podo-default-hover);
250
+ }
251
+
252
+ .podo-datepicker__nav-button:disabled {
253
+ opacity: 0.5;
254
+ cursor: not-allowed;
255
+ }
256
+
257
+ .podo-datepicker__nav-button i {
258
+ font-size: 20px;
259
+ color: var(--podo-text-body);
260
+ }
261
+
262
+ .podo-datepicker__nav-title {
263
+ flex: 1;
264
+ display: flex;
265
+ align-items: center;
266
+ justify-content: center;
267
+ gap: var(--podo-spacing-1);
268
+ }
269
+
270
+ .podo-datepicker__nav-select-wrapper {
271
+ position: relative;
272
+ display: flex;
273
+ align-items: center;
274
+ }
275
+
276
+ .podo-datepicker__nav-select-wrapper::after {
277
+ content: '';
278
+ position: absolute;
279
+ right: var(--podo-spacing-2);
280
+ top: 50%;
281
+ transform: translateY(-50%);
282
+ width: 0;
283
+ height: 0;
284
+ border-left: 4px solid transparent;
285
+ border-right: 4px solid transparent;
286
+ border-top: 5px solid var(--podo-text-body);
287
+ pointer-events: none;
288
+ }
289
+
290
+ .podo-datepicker__nav-select {
291
+ appearance: none;
292
+ -webkit-appearance: none;
293
+ -moz-appearance: none;
294
+ background: none;
295
+ border: none;
296
+ padding: var(--podo-spacing-2) 24px var(--podo-spacing-2) var(--podo-spacing-2);
297
+ border-radius: var(--podo-radius-sm);
298
+ cursor: pointer;
299
+ transition: background 0.2s;
300
+ color: var(--podo-text-body);
301
+ font-family: inherit;
302
+ font-size: var(--podo-font-size-lg);
303
+ font-weight: 600;
304
+ }
305
+
306
+ .podo-datepicker__nav-select:hover {
307
+ background: var(--podo-default);
308
+ }
309
+
310
+ .podo-datepicker__nav-select:focus {
311
+ outline: none;
312
+ background: var(--podo-default-fill);
313
+ }
314
+
315
+ /* Calendar Grid */
316
+ .podo-datepicker__calendar-grid {
317
+ display: flex;
318
+ flex-direction: column;
319
+ gap: var(--podo-spacing-2);
320
+ padding-top: var(--podo-spacing-3);
321
+ border-top: 1px solid var(--podo-border);
322
+ }
323
+
324
+ .podo-datepicker__calendar-row {
325
+ display: flex;
326
+ width: 100%;
327
+ }
328
+
329
+ .podo-datepicker__calendar-cell {
330
+ flex: 1;
331
+ display: flex;
332
+ align-items: center;
333
+ justify-content: center;
334
+ height: 40px;
335
+ font-size: var(--podo-font-size-md);
336
+ background: none;
337
+ border: none;
338
+ border-radius: var(--podo-radius-md);
339
+ cursor: pointer;
340
+ transition: background 0.2s;
341
+ font-family: inherit;
342
+ color: var(--podo-text-body);
343
+ }
344
+
345
+ .podo-datepicker__calendar-cell--header {
346
+ color: var(--podo-text-sub);
347
+ cursor: default;
348
+ font-weight: 500;
349
+ }
350
+
351
+ .podo-datepicker__calendar-cell--other {
352
+ color: var(--podo-text-disabled);
353
+ }
354
+
355
+ .podo-datepicker__calendar-cell--today {
356
+ font-weight: 600;
357
+ color: var(--podo-primary);
358
+ }
359
+
360
+ .podo-datepicker__calendar-cell--selected {
361
+ background: var(--podo-primary);
362
+ color: var(--podo-primary-reverse);
363
+ font-weight: 600;
364
+ }
365
+
366
+ .podo-datepicker__calendar-cell--in-range {
367
+ background: var(--podo-primary-fill);
368
+ border-radius: 0;
369
+ }
370
+
371
+ .podo-datepicker__calendar-cell--range-start {
372
+ background: var(--podo-primary);
373
+ color: var(--podo-primary-reverse);
374
+ font-weight: 600;
375
+ border-radius: var(--podo-radius-md);
376
+ }
377
+
378
+ .podo-datepicker__calendar-cell--range-end {
379
+ background: var(--podo-primary);
380
+ color: var(--podo-primary-reverse);
381
+ font-weight: 600;
382
+ border-radius: var(--podo-radius-md);
383
+ }
384
+
385
+ .podo-datepicker__calendar-cell--disabled {
386
+ color: var(--podo-text-disabled);
387
+ background: var(--podo-default);
388
+ border: none;
389
+ border-radius: 0;
390
+ outline: none;
391
+ cursor: not-allowed;
392
+ }
393
+
394
+ .podo-datepicker__calendar-cell--disabled:hover {
395
+ background: var(--podo-default);
396
+ }
397
+
398
+ .podo-datepicker__calendar-cell:not(.podo-datepicker__calendar-cell--header):not(.podo-datepicker__calendar-cell--selected):not(.podo-datepicker__calendar-cell--disabled):not(.podo-datepicker__calendar-cell--range-start):not(.podo-datepicker__calendar-cell--range-end):not(.podo-datepicker__calendar-cell--in-range):hover {
399
+ background: var(--podo-default);
400
+ }
401
+
402
+ /* ============================================
403
+ Period Calendars
404
+ ============================================ */
405
+ .podo-datepicker__period-calendars {
406
+ display: flex;
407
+ gap: var(--podo-spacing-4);
408
+ }
409
+
410
+ .podo-datepicker__period-calendar-left,
411
+ .podo-datepicker__period-calendar-right {
412
+ flex: 1;
413
+ }
414
+
415
+ /* ============================================
416
+ Actions
417
+ ============================================ */
418
+ .podo-datepicker__actions {
419
+ display: flex;
420
+ align-items: center;
421
+ justify-content: space-between;
422
+ gap: var(--podo-spacing-3);
423
+ padding-top: var(--podo-spacing-3);
424
+ border-top: 1px solid var(--podo-border);
425
+ }
426
+
427
+ .podo-datepicker__period-text {
428
+ font-size: var(--podo-font-size-md);
429
+ color: var(--podo-primary);
430
+ flex: 1;
431
+ }
432
+
433
+ .podo-datepicker__action-buttons {
434
+ display: flex;
435
+ gap: var(--podo-spacing-3);
436
+ flex-shrink: 0;
437
+ }
438
+
439
+ .podo-datepicker__action-button {
440
+ display: inline-flex;
441
+ align-items: center;
442
+ justify-content: center;
443
+ gap: var(--podo-spacing-2);
444
+ padding: var(--podo-spacing-3) var(--podo-spacing-4);
445
+ border-radius: var(--podo-radius-md);
446
+ cursor: pointer;
447
+ transition: background 0.2s;
448
+ white-space: nowrap;
449
+ font-family: inherit;
450
+ font-size: var(--podo-font-size-md);
451
+ }
452
+
453
+ .podo-datepicker__action-button i {
454
+ display: flex;
455
+ align-items: center;
456
+ justify-content: center;
457
+ width: 18px;
458
+ height: 18px;
459
+ font-size: 18px;
460
+ line-height: 1;
461
+ }
462
+
463
+ .podo-datepicker__action-button--reset {
464
+ background: var(--podo-default-fill);
465
+ border: 1px solid var(--podo-border);
466
+ color: var(--podo-default-reverse);
467
+ }
468
+
469
+ .podo-datepicker__action-button--reset:hover {
470
+ background: var(--podo-default-hover);
471
+ }
472
+
473
+ .podo-datepicker__action-button--apply {
474
+ background: var(--podo-primary);
475
+ border: none;
476
+ color: var(--podo-primary-reverse);
477
+ }
478
+
479
+ .podo-datepicker__action-button--apply:hover {
480
+ background: var(--podo-primary-hover);
481
+ }