jasmincss 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 (76) hide show
  1. package/README.md +524 -0
  2. package/bin/jasmin.js +45 -0
  3. package/dist/index.d.ts +62 -0
  4. package/dist/index.js +14568 -0
  5. package/dist/index.mjs +14524 -0
  6. package/dist/jasmin.css +63308 -0
  7. package/dist/jasmin.min.css +1 -0
  8. package/dist/plugins/nextjs.js +14777 -0
  9. package/dist/plugins/nextjs.mjs +14747 -0
  10. package/dist/plugins/vite.js +14889 -0
  11. package/dist/plugins/vite.mjs +14860 -0
  12. package/package.json +101 -0
  13. package/src/cli/add.js +83 -0
  14. package/src/cli/init.js +210 -0
  15. package/src/cli/run.js +142 -0
  16. package/src/components/accordion.js +309 -0
  17. package/src/components/alerts.js +357 -0
  18. package/src/components/avatars.js +331 -0
  19. package/src/components/badges.js +353 -0
  20. package/src/components/buttons.js +412 -0
  21. package/src/components/cards.js +342 -0
  22. package/src/components/carousel.js +495 -0
  23. package/src/components/chips.js +440 -0
  24. package/src/components/command-palette.js +434 -0
  25. package/src/components/datepicker.js +517 -0
  26. package/src/components/dropdown.js +411 -0
  27. package/src/components/forms.js +516 -0
  28. package/src/components/index.js +81 -0
  29. package/src/components/modals.js +349 -0
  30. package/src/components/navigation.js +463 -0
  31. package/src/components/offcanvas.js +390 -0
  32. package/src/components/popover.js +427 -0
  33. package/src/components/progress.js +396 -0
  34. package/src/components/rating.js +394 -0
  35. package/src/components/skeleton.js +408 -0
  36. package/src/components/spinner.js +453 -0
  37. package/src/components/stepper.js +389 -0
  38. package/src/components/tables.js +304 -0
  39. package/src/components/timeline.js +452 -0
  40. package/src/components/timepicker.js +529 -0
  41. package/src/components/tooltips.js +345 -0
  42. package/src/components/upload.js +490 -0
  43. package/src/config/defaults.js +263 -0
  44. package/src/config/loader.js +109 -0
  45. package/src/core/base.js +241 -0
  46. package/src/core/compiler.js +135 -0
  47. package/src/core/utilities/accessibility.js +290 -0
  48. package/src/core/utilities/animations.js +205 -0
  49. package/src/core/utilities/background.js +109 -0
  50. package/src/core/utilities/colors.js +234 -0
  51. package/src/core/utilities/columns.js +161 -0
  52. package/src/core/utilities/effects.js +261 -0
  53. package/src/core/utilities/filters.js +135 -0
  54. package/src/core/utilities/icons.js +806 -0
  55. package/src/core/utilities/index.js +239 -0
  56. package/src/core/utilities/layout.js +321 -0
  57. package/src/core/utilities/scroll.js +205 -0
  58. package/src/core/utilities/spacing.js +120 -0
  59. package/src/core/utilities/svg.js +191 -0
  60. package/src/core/utilities/transforms.js +116 -0
  61. package/src/core/utilities/typography.js +188 -0
  62. package/src/index.js +7 -0
  63. package/src/js/components/accordion.js +154 -0
  64. package/src/js/components/alert.js +198 -0
  65. package/src/js/components/carousel.js +226 -0
  66. package/src/js/components/dropdown.js +166 -0
  67. package/src/js/components/modal.js +169 -0
  68. package/src/js/components/offcanvas.js +175 -0
  69. package/src/js/components/popover.js +221 -0
  70. package/src/js/components/tabs.js +163 -0
  71. package/src/js/components/tooltip.js +200 -0
  72. package/src/js/index.js +79 -0
  73. package/src/js/types/config.d.ts +228 -0
  74. package/src/js/types/index.d.ts +439 -0
  75. package/src/plugins/nextjs.js +100 -0
  76. package/src/plugins/vite.js +133 -0
@@ -0,0 +1,529 @@
1
+ // Timepicker component for JasminCSS
2
+
3
+ export function generateTimepickerStyles(config) {
4
+ return `/* Timepicker Container */
5
+ .timepicker {
6
+ position: relative;
7
+ display: inline-block;
8
+ width: 100%;
9
+ }
10
+
11
+ /* Timepicker Input */
12
+ .timepicker-input {
13
+ width: 100%;
14
+ padding: 0.625rem 2.5rem 0.625rem 0.875rem;
15
+ font-size: 0.875rem;
16
+ line-height: 1.5;
17
+ color: var(--j-text);
18
+ background-color: var(--j-bg);
19
+ border: 1px solid var(--j-border);
20
+ border-radius: var(--j-radius-default, 0.5rem);
21
+ transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
22
+ }
23
+
24
+ .timepicker-input:focus {
25
+ border-color: var(--j-primary);
26
+ outline: none;
27
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--j-primary) 20%, transparent);
28
+ }
29
+
30
+ .timepicker-icon {
31
+ position: absolute;
32
+ right: 0.75rem;
33
+ top: 50%;
34
+ transform: translateY(-50%);
35
+ width: 1.25rem;
36
+ height: 1.25rem;
37
+ color: var(--j-text-muted);
38
+ pointer-events: none;
39
+ }
40
+
41
+ /* Timepicker Dropdown */
42
+ .timepicker-dropdown {
43
+ position: absolute;
44
+ top: 100%;
45
+ left: 0;
46
+ z-index: 1000;
47
+ min-width: 200px;
48
+ margin-top: 0.25rem;
49
+ background-color: var(--j-bg);
50
+ border: 1px solid var(--j-border);
51
+ border-radius: var(--j-radius-lg, 0.5rem);
52
+ box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
53
+ opacity: 0;
54
+ visibility: hidden;
55
+ transform: translateY(-0.5rem);
56
+ transition: opacity 150ms ease-in-out, transform 150ms ease-in-out, visibility 150ms;
57
+ }
58
+
59
+ .timepicker.open .timepicker-dropdown,
60
+ .timepicker-dropdown.show {
61
+ opacity: 1;
62
+ visibility: visible;
63
+ transform: translateY(0);
64
+ }
65
+
66
+ /* Time Columns */
67
+ .timepicker-columns {
68
+ display: flex;
69
+ height: 200px;
70
+ }
71
+
72
+ .timepicker-column {
73
+ flex: 1;
74
+ display: flex;
75
+ flex-direction: column;
76
+ overflow-y: auto;
77
+ border-right: 1px solid var(--j-border);
78
+ scrollbar-width: thin;
79
+ }
80
+
81
+ .timepicker-column:last-child {
82
+ border-right: none;
83
+ }
84
+
85
+ .timepicker-column::-webkit-scrollbar {
86
+ width: 4px;
87
+ }
88
+
89
+ .timepicker-column::-webkit-scrollbar-thumb {
90
+ background-color: var(--j-border);
91
+ border-radius: 4px;
92
+ }
93
+
94
+ /* Column Header */
95
+ .timepicker-column-header {
96
+ position: sticky;
97
+ top: 0;
98
+ padding: 0.5rem;
99
+ font-size: 0.6875rem;
100
+ font-weight: 600;
101
+ text-align: center;
102
+ text-transform: uppercase;
103
+ color: var(--j-text-muted);
104
+ background-color: var(--j-bg-subtle);
105
+ border-bottom: 1px solid var(--j-border);
106
+ }
107
+
108
+ /* Time Options */
109
+ .timepicker-option {
110
+ padding: 0.5rem 0.75rem;
111
+ font-size: 0.875rem;
112
+ text-align: center;
113
+ background: transparent;
114
+ border: none;
115
+ color: var(--j-text);
116
+ cursor: pointer;
117
+ transition: all 150ms ease-in-out;
118
+ }
119
+
120
+ .timepicker-option:hover {
121
+ background-color: var(--j-bg-subtle);
122
+ }
123
+
124
+ .timepicker-option.selected {
125
+ background-color: var(--j-primary);
126
+ color: white;
127
+ font-weight: 500;
128
+ }
129
+
130
+ .timepicker-option:disabled {
131
+ color: var(--j-text-muted);
132
+ opacity: 0.4;
133
+ cursor: not-allowed;
134
+ }
135
+
136
+ /* Inline Time Input */
137
+ .timepicker-inline {
138
+ display: flex;
139
+ align-items: center;
140
+ gap: 0.25rem;
141
+ }
142
+
143
+ .timepicker-segment {
144
+ width: 3rem;
145
+ padding: 0.625rem 0.5rem;
146
+ text-align: center;
147
+ font-size: 1rem;
148
+ font-weight: 500;
149
+ background-color: var(--j-bg);
150
+ border: 1px solid var(--j-border);
151
+ border-radius: var(--j-radius-default, 0.375rem);
152
+ color: var(--j-text);
153
+ transition: all 150ms ease-in-out;
154
+ }
155
+
156
+ .timepicker-segment:focus {
157
+ outline: none;
158
+ border-color: var(--j-primary);
159
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--j-primary) 20%, transparent);
160
+ }
161
+
162
+ .timepicker-separator {
163
+ font-size: 1.25rem;
164
+ font-weight: 600;
165
+ color: var(--j-text-muted);
166
+ }
167
+
168
+ /* AM/PM Toggle */
169
+ .timepicker-period {
170
+ display: flex;
171
+ flex-direction: column;
172
+ gap: 0.125rem;
173
+ margin-left: 0.5rem;
174
+ }
175
+
176
+ .timepicker-period-btn {
177
+ padding: 0.25rem 0.5rem;
178
+ font-size: 0.75rem;
179
+ font-weight: 500;
180
+ background-color: var(--j-bg-subtle);
181
+ border: 1px solid var(--j-border);
182
+ cursor: pointer;
183
+ transition: all 150ms ease-in-out;
184
+ }
185
+
186
+ .timepicker-period-btn:first-child {
187
+ border-radius: var(--j-radius-sm, 0.25rem) var(--j-radius-sm, 0.25rem) 0 0;
188
+ border-bottom: none;
189
+ }
190
+
191
+ .timepicker-period-btn:last-child {
192
+ border-radius: 0 0 var(--j-radius-sm, 0.25rem) var(--j-radius-sm, 0.25rem);
193
+ }
194
+
195
+ .timepicker-period-btn:hover {
196
+ background-color: var(--j-bg-muted);
197
+ }
198
+
199
+ .timepicker-period-btn.active {
200
+ background-color: var(--j-primary);
201
+ border-color: var(--j-primary);
202
+ color: white;
203
+ }
204
+
205
+ /* Timepicker Sizes */
206
+ .timepicker-sm .timepicker-input {
207
+ padding: 0.375rem 2rem 0.375rem 0.75rem;
208
+ font-size: 0.8125rem;
209
+ }
210
+
211
+ .timepicker-sm .timepicker-segment {
212
+ width: 2.5rem;
213
+ padding: 0.375rem;
214
+ font-size: 0.875rem;
215
+ }
216
+
217
+ .timepicker-lg .timepicker-input {
218
+ padding: 0.875rem 3rem 0.875rem 1rem;
219
+ font-size: 1rem;
220
+ }
221
+
222
+ .timepicker-lg .timepicker-segment {
223
+ width: 3.5rem;
224
+ padding: 0.75rem;
225
+ font-size: 1.125rem;
226
+ }
227
+
228
+ /* Clock Face Style */
229
+ .timepicker-clock {
230
+ padding: 1rem;
231
+ }
232
+
233
+ .timepicker-clock-face {
234
+ position: relative;
235
+ width: 200px;
236
+ height: 200px;
237
+ margin: 0 auto;
238
+ border-radius: 50%;
239
+ background-color: var(--j-bg-subtle);
240
+ border: 2px solid var(--j-border);
241
+ }
242
+
243
+ .timepicker-clock-center {
244
+ position: absolute;
245
+ top: 50%;
246
+ left: 50%;
247
+ transform: translate(-50%, -50%);
248
+ width: 0.5rem;
249
+ height: 0.5rem;
250
+ border-radius: 50%;
251
+ background-color: var(--j-primary);
252
+ }
253
+
254
+ .timepicker-clock-hand {
255
+ position: absolute;
256
+ bottom: 50%;
257
+ left: 50%;
258
+ width: 2px;
259
+ height: 35%;
260
+ background-color: var(--j-primary);
261
+ transform-origin: bottom center;
262
+ border-radius: 1px;
263
+ }
264
+
265
+ .timepicker-clock-number {
266
+ position: absolute;
267
+ width: 2rem;
268
+ height: 2rem;
269
+ display: flex;
270
+ align-items: center;
271
+ justify-content: center;
272
+ font-size: 0.875rem;
273
+ font-weight: 500;
274
+ color: var(--j-text);
275
+ cursor: pointer;
276
+ border-radius: 50%;
277
+ transition: all 150ms ease-in-out;
278
+ }
279
+
280
+ .timepicker-clock-number:hover {
281
+ background-color: var(--j-bg-muted);
282
+ }
283
+
284
+ .timepicker-clock-number.selected {
285
+ background-color: var(--j-primary);
286
+ color: white;
287
+ }
288
+
289
+ /* Timepicker Footer */
290
+ .timepicker-footer {
291
+ display: flex;
292
+ align-items: center;
293
+ justify-content: space-between;
294
+ padding: 0.75rem;
295
+ border-top: 1px solid var(--j-border);
296
+ }
297
+
298
+ .timepicker-now-btn {
299
+ padding: 0.375rem 0.75rem;
300
+ font-size: 0.8125rem;
301
+ color: var(--j-primary);
302
+ background: transparent;
303
+ border: none;
304
+ cursor: pointer;
305
+ }
306
+
307
+ .timepicker-now-btn:hover {
308
+ text-decoration: underline;
309
+ }
310
+
311
+ .timepicker-actions {
312
+ display: flex;
313
+ gap: 0.5rem;
314
+ }
315
+
316
+ /* Duration Picker */
317
+ .duration-picker {
318
+ display: flex;
319
+ align-items: center;
320
+ gap: 0.5rem;
321
+ }
322
+
323
+ .duration-segment {
324
+ display: flex;
325
+ flex-direction: column;
326
+ align-items: center;
327
+ gap: 0.25rem;
328
+ }
329
+
330
+ .duration-segment-label {
331
+ font-size: 0.6875rem;
332
+ font-weight: 500;
333
+ text-transform: uppercase;
334
+ color: var(--j-text-muted);
335
+ }
336
+
337
+ .duration-segment-input {
338
+ width: 3.5rem;
339
+ padding: 0.5rem;
340
+ text-align: center;
341
+ font-size: 1.25rem;
342
+ font-weight: 600;
343
+ background-color: var(--j-bg);
344
+ border: 1px solid var(--j-border);
345
+ border-radius: var(--j-radius-default, 0.375rem);
346
+ color: var(--j-text);
347
+ }
348
+
349
+ .duration-segment-input:focus {
350
+ outline: none;
351
+ border-color: var(--j-primary);
352
+ }
353
+
354
+ .duration-separator {
355
+ font-size: 1.5rem;
356
+ font-weight: 600;
357
+ color: var(--j-text-muted);
358
+ margin-top: 1rem;
359
+ }
360
+
361
+ /* Time Range */
362
+ .timerange-picker {
363
+ display: flex;
364
+ align-items: center;
365
+ gap: 0.75rem;
366
+ }
367
+
368
+ .timerange-picker .timepicker {
369
+ flex: 1;
370
+ }
371
+
372
+ .timerange-separator {
373
+ color: var(--j-text-muted);
374
+ font-weight: 500;
375
+ }
376
+
377
+ /* Quick Time Presets */
378
+ .timepicker-presets {
379
+ display: flex;
380
+ flex-wrap: wrap;
381
+ gap: 0.375rem;
382
+ padding: 0.75rem;
383
+ border-bottom: 1px solid var(--j-border);
384
+ }
385
+
386
+ .timepicker-preset {
387
+ padding: 0.375rem 0.625rem;
388
+ font-size: 0.75rem;
389
+ background-color: var(--j-bg-subtle);
390
+ border: 1px solid var(--j-border);
391
+ border-radius: var(--j-radius-full, 9999px);
392
+ color: var(--j-text);
393
+ cursor: pointer;
394
+ transition: all 150ms ease-in-out;
395
+ }
396
+
397
+ .timepicker-preset:hover {
398
+ background-color: var(--j-bg-muted);
399
+ }
400
+
401
+ .timepicker-preset.active {
402
+ background-color: var(--j-primary);
403
+ border-color: var(--j-primary);
404
+ color: white;
405
+ }
406
+
407
+ /* Timezone Selector */
408
+ .timepicker-timezone {
409
+ display: flex;
410
+ align-items: center;
411
+ gap: 0.5rem;
412
+ padding: 0.5rem 0.75rem;
413
+ font-size: 0.75rem;
414
+ color: var(--j-text-muted);
415
+ border-top: 1px solid var(--j-border);
416
+ }
417
+
418
+ .timepicker-timezone-select {
419
+ flex: 1;
420
+ padding: 0.25rem 0.5rem;
421
+ font-size: 0.75rem;
422
+ background-color: var(--j-bg);
423
+ border: 1px solid var(--j-border);
424
+ border-radius: var(--j-radius-sm, 0.25rem);
425
+ color: var(--j-text);
426
+ }
427
+
428
+ /* Dark Variant */
429
+ .timepicker-dark .timepicker-dropdown {
430
+ background-color: var(--j-bg-dark, #1f2937);
431
+ border-color: var(--j-border-dark, #374151);
432
+ }
433
+
434
+ .timepicker-dark .timepicker-column {
435
+ border-color: var(--j-border-dark, #374151);
436
+ }
437
+
438
+ .timepicker-dark .timepicker-column-header {
439
+ background-color: rgba(0, 0, 0, 0.2);
440
+ border-color: var(--j-border-dark, #374151);
441
+ }
442
+
443
+ .timepicker-dark .timepicker-option {
444
+ color: white;
445
+ }
446
+
447
+ .timepicker-dark .timepicker-option:hover {
448
+ background-color: rgba(255, 255, 255, 0.1);
449
+ }
450
+
451
+ .timepicker-dark .timepicker-footer {
452
+ border-color: var(--j-border-dark, #374151);
453
+ }
454
+
455
+ /* Glass Variant */
456
+ .timepicker-glass .timepicker-dropdown {
457
+ background: rgba(255, 255, 255, 0.85);
458
+ backdrop-filter: blur(12px);
459
+ -webkit-backdrop-filter: blur(12px);
460
+ border-color: rgba(255, 255, 255, 0.3);
461
+ }
462
+
463
+ /* 24-Hour Format */
464
+ .timepicker-24h .timepicker-period {
465
+ display: none;
466
+ }
467
+
468
+ /* Seconds Support */
469
+ .timepicker-with-seconds .timepicker-columns {
470
+ min-width: 250px;
471
+ }
472
+
473
+ /* Readonly Display */
474
+ .timepicker-display {
475
+ display: inline-flex;
476
+ align-items: baseline;
477
+ gap: 0.125rem;
478
+ font-family: ui-monospace, monospace;
479
+ font-size: 2rem;
480
+ font-weight: 600;
481
+ color: var(--j-text);
482
+ }
483
+
484
+ .timepicker-display-period {
485
+ font-size: 1rem;
486
+ font-weight: 500;
487
+ color: var(--j-text-muted);
488
+ margin-left: 0.25rem;
489
+ }
490
+
491
+ /* Countdown Timer Style */
492
+ .timer-display {
493
+ display: flex;
494
+ align-items: center;
495
+ gap: 0.5rem;
496
+ font-family: ui-monospace, monospace;
497
+ }
498
+
499
+ .timer-segment {
500
+ display: flex;
501
+ flex-direction: column;
502
+ align-items: center;
503
+ padding: 0.75rem 1rem;
504
+ background-color: var(--j-bg-subtle);
505
+ border-radius: var(--j-radius-lg, 0.5rem);
506
+ }
507
+
508
+ .timer-segment-value {
509
+ font-size: 2.5rem;
510
+ font-weight: 700;
511
+ line-height: 1;
512
+ color: var(--j-text);
513
+ }
514
+
515
+ .timer-segment-label {
516
+ font-size: 0.6875rem;
517
+ font-weight: 500;
518
+ text-transform: uppercase;
519
+ color: var(--j-text-muted);
520
+ margin-top: 0.25rem;
521
+ }
522
+
523
+ .timer-separator {
524
+ font-size: 2rem;
525
+ font-weight: 700;
526
+ color: var(--j-text-muted);
527
+ }
528
+ `;
529
+ }