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,453 @@
1
+ // Spinner/Loader component for JasminCSS
2
+
3
+ export function generateSpinnerStyles(config) {
4
+ return `/* Spinner Base */
5
+ .spinner {
6
+ display: inline-block;
7
+ width: 2rem;
8
+ height: 2rem;
9
+ border: 3px solid var(--j-border);
10
+ border-top-color: var(--j-primary);
11
+ border-radius: 50%;
12
+ animation: spinner-rotate 0.75s linear infinite;
13
+ }
14
+
15
+ @keyframes spinner-rotate {
16
+ to {
17
+ transform: rotate(360deg);
18
+ }
19
+ }
20
+
21
+ /* Spinner Sizes */
22
+ .spinner-xs {
23
+ width: 1rem;
24
+ height: 1rem;
25
+ border-width: 2px;
26
+ }
27
+
28
+ .spinner-sm {
29
+ width: 1.5rem;
30
+ height: 1.5rem;
31
+ border-width: 2px;
32
+ }
33
+
34
+ .spinner-lg {
35
+ width: 3rem;
36
+ height: 3rem;
37
+ border-width: 4px;
38
+ }
39
+
40
+ .spinner-xl {
41
+ width: 4rem;
42
+ height: 4rem;
43
+ border-width: 5px;
44
+ }
45
+
46
+ /* Spinner Colors */
47
+ .spinner-primary {
48
+ border-top-color: var(--j-primary);
49
+ }
50
+
51
+ .spinner-secondary {
52
+ border-top-color: var(--j-secondary);
53
+ }
54
+
55
+ .spinner-success {
56
+ border-top-color: var(--j-success);
57
+ }
58
+
59
+ .spinner-warning {
60
+ border-top-color: var(--j-warning);
61
+ }
62
+
63
+ .spinner-error {
64
+ border-top-color: var(--j-error);
65
+ }
66
+
67
+ .spinner-info {
68
+ border-top-color: var(--j-info);
69
+ }
70
+
71
+ .spinner-white {
72
+ border-color: rgba(255, 255, 255, 0.3);
73
+ border-top-color: white;
74
+ }
75
+
76
+ .spinner-dark {
77
+ border-color: rgba(0, 0, 0, 0.1);
78
+ border-top-color: var(--j-text);
79
+ }
80
+
81
+ /* Spinner Growing */
82
+ .spinner-grow {
83
+ width: 2rem;
84
+ height: 2rem;
85
+ border: none;
86
+ border-radius: 50%;
87
+ background-color: var(--j-primary);
88
+ animation: spinner-grow 0.75s ease-in-out infinite;
89
+ }
90
+
91
+ @keyframes spinner-grow {
92
+ 0% {
93
+ transform: scale(0);
94
+ opacity: 1;
95
+ }
96
+ 50% {
97
+ opacity: 0.5;
98
+ }
99
+ 100% {
100
+ transform: scale(1);
101
+ opacity: 0;
102
+ }
103
+ }
104
+
105
+ .spinner-grow.spinner-xs { width: 1rem; height: 1rem; }
106
+ .spinner-grow.spinner-sm { width: 1.5rem; height: 1.5rem; }
107
+ .spinner-grow.spinner-lg { width: 3rem; height: 3rem; }
108
+ .spinner-grow.spinner-xl { width: 4rem; height: 4rem; }
109
+
110
+ .spinner-grow.spinner-primary { background-color: var(--j-primary); }
111
+ .spinner-grow.spinner-secondary { background-color: var(--j-secondary); }
112
+ .spinner-grow.spinner-success { background-color: var(--j-success); }
113
+ .spinner-grow.spinner-warning { background-color: var(--j-warning); }
114
+ .spinner-grow.spinner-error { background-color: var(--j-error); }
115
+ .spinner-grow.spinner-white { background-color: white; }
116
+
117
+ /* Dots Spinner */
118
+ .spinner-dots {
119
+ display: inline-flex;
120
+ align-items: center;
121
+ gap: 0.25rem;
122
+ width: auto;
123
+ height: auto;
124
+ border: none;
125
+ animation: none;
126
+ }
127
+
128
+ .spinner-dots::before,
129
+ .spinner-dots::after,
130
+ .spinner-dot {
131
+ content: "";
132
+ width: 0.5rem;
133
+ height: 0.5rem;
134
+ border-radius: 50%;
135
+ background-color: var(--j-primary);
136
+ animation: spinner-dots-bounce 1.4s ease-in-out infinite both;
137
+ }
138
+
139
+ .spinner-dots::before {
140
+ animation-delay: -0.32s;
141
+ }
142
+
143
+ .spinner-dot {
144
+ animation-delay: -0.16s;
145
+ }
146
+
147
+ @keyframes spinner-dots-bounce {
148
+ 0%, 80%, 100% {
149
+ transform: scale(0.6);
150
+ opacity: 0.5;
151
+ }
152
+ 40% {
153
+ transform: scale(1);
154
+ opacity: 1;
155
+ }
156
+ }
157
+
158
+ .spinner-dots.spinner-sm::before,
159
+ .spinner-dots.spinner-sm::after,
160
+ .spinner-dots.spinner-sm .spinner-dot {
161
+ width: 0.375rem;
162
+ height: 0.375rem;
163
+ }
164
+
165
+ .spinner-dots.spinner-lg::before,
166
+ .spinner-dots.spinner-lg::after,
167
+ .spinner-dots.spinner-lg .spinner-dot {
168
+ width: 0.75rem;
169
+ height: 0.75rem;
170
+ }
171
+
172
+ /* Pulse Spinner */
173
+ .spinner-pulse {
174
+ width: 2rem;
175
+ height: 2rem;
176
+ border: none;
177
+ border-radius: 50%;
178
+ background-color: var(--j-primary);
179
+ animation: spinner-pulse 1.5s ease-in-out infinite;
180
+ }
181
+
182
+ @keyframes spinner-pulse {
183
+ 0% {
184
+ transform: scale(0.8);
185
+ opacity: 0.5;
186
+ }
187
+ 50% {
188
+ transform: scale(1);
189
+ opacity: 1;
190
+ }
191
+ 100% {
192
+ transform: scale(0.8);
193
+ opacity: 0.5;
194
+ }
195
+ }
196
+
197
+ /* Ring Spinner */
198
+ .spinner-ring {
199
+ width: 2rem;
200
+ height: 2rem;
201
+ border: none;
202
+ position: relative;
203
+ animation: none;
204
+ }
205
+
206
+ .spinner-ring::before,
207
+ .spinner-ring::after {
208
+ content: "";
209
+ position: absolute;
210
+ inset: 0;
211
+ border: 3px solid var(--j-primary);
212
+ border-radius: 50%;
213
+ animation: spinner-ring 1.5s ease-in-out infinite;
214
+ }
215
+
216
+ .spinner-ring::after {
217
+ animation-delay: 0.75s;
218
+ }
219
+
220
+ @keyframes spinner-ring {
221
+ 0% {
222
+ transform: scale(0.5);
223
+ opacity: 1;
224
+ }
225
+ 100% {
226
+ transform: scale(1.2);
227
+ opacity: 0;
228
+ }
229
+ }
230
+
231
+ /* Bars Spinner */
232
+ .spinner-bars {
233
+ display: inline-flex;
234
+ align-items: flex-end;
235
+ gap: 0.125rem;
236
+ width: auto;
237
+ height: 1.5rem;
238
+ border: none;
239
+ animation: none;
240
+ }
241
+
242
+ .spinner-bars::before,
243
+ .spinner-bars::after,
244
+ .spinner-bar {
245
+ content: "";
246
+ width: 0.25rem;
247
+ height: 100%;
248
+ background-color: var(--j-primary);
249
+ animation: spinner-bars 1.2s ease-in-out infinite;
250
+ }
251
+
252
+ .spinner-bars::before {
253
+ animation-delay: -0.24s;
254
+ }
255
+
256
+ .spinner-bar {
257
+ animation-delay: -0.12s;
258
+ }
259
+
260
+ @keyframes spinner-bars {
261
+ 0%, 40%, 100% {
262
+ transform: scaleY(0.4);
263
+ }
264
+ 20% {
265
+ transform: scaleY(1);
266
+ }
267
+ }
268
+
269
+ /* Spinner with Text */
270
+ .spinner-text {
271
+ display: inline-flex;
272
+ align-items: center;
273
+ gap: 0.75rem;
274
+ }
275
+
276
+ .spinner-label {
277
+ font-size: 0.875rem;
278
+ color: var(--j-text-muted);
279
+ }
280
+
281
+ /* Spinner Overlay */
282
+ .spinner-overlay {
283
+ position: fixed;
284
+ inset: 0;
285
+ display: flex;
286
+ flex-direction: column;
287
+ align-items: center;
288
+ justify-content: center;
289
+ gap: 1rem;
290
+ background-color: rgba(255, 255, 255, 0.9);
291
+ z-index: 9999;
292
+ }
293
+
294
+ .dark .spinner-overlay {
295
+ background-color: rgba(0, 0, 0, 0.8);
296
+ }
297
+
298
+ .spinner-overlay-inline {
299
+ position: absolute;
300
+ }
301
+
302
+ .spinner-overlay-blur {
303
+ backdrop-filter: blur(4px);
304
+ -webkit-backdrop-filter: blur(4px);
305
+ }
306
+
307
+ /* Spinner in Container */
308
+ .spinner-container {
309
+ display: flex;
310
+ align-items: center;
311
+ justify-content: center;
312
+ padding: 2rem;
313
+ }
314
+
315
+ .spinner-container-sm {
316
+ padding: 1rem;
317
+ }
318
+
319
+ .spinner-container-lg {
320
+ padding: 4rem;
321
+ }
322
+
323
+ /* Button Spinner */
324
+ .spinner-button {
325
+ width: 1rem;
326
+ height: 1rem;
327
+ border-width: 2px;
328
+ margin-right: 0.5rem;
329
+ }
330
+
331
+ /* Skeleton Spinner (for content loading) */
332
+ .spinner-skeleton {
333
+ position: relative;
334
+ width: 100%;
335
+ height: 1rem;
336
+ background-color: var(--j-bg-muted);
337
+ border-radius: var(--j-radius-default, 0.375rem);
338
+ overflow: hidden;
339
+ border: none;
340
+ animation: none;
341
+ }
342
+
343
+ .spinner-skeleton::after {
344
+ content: "";
345
+ position: absolute;
346
+ inset: 0;
347
+ background: linear-gradient(
348
+ 90deg,
349
+ transparent,
350
+ rgba(255, 255, 255, 0.4),
351
+ transparent
352
+ );
353
+ animation: spinner-skeleton 1.5s infinite;
354
+ }
355
+
356
+ @keyframes spinner-skeleton {
357
+ 0% {
358
+ transform: translateX(-100%);
359
+ }
360
+ 100% {
361
+ transform: translateX(100%);
362
+ }
363
+ }
364
+
365
+ /* Circular Progress Spinner */
366
+ .spinner-progress {
367
+ width: 2rem;
368
+ height: 2rem;
369
+ border: none;
370
+ animation: none;
371
+ position: relative;
372
+ }
373
+
374
+ .spinner-progress svg {
375
+ width: 100%;
376
+ height: 100%;
377
+ transform: rotate(-90deg);
378
+ }
379
+
380
+ .spinner-progress-track {
381
+ fill: none;
382
+ stroke: var(--j-border);
383
+ stroke-width: 3;
384
+ }
385
+
386
+ .spinner-progress-fill {
387
+ fill: none;
388
+ stroke: var(--j-primary);
389
+ stroke-width: 3;
390
+ stroke-linecap: round;
391
+ stroke-dasharray: 100;
392
+ stroke-dashoffset: 75;
393
+ transition: stroke-dashoffset 300ms ease-in-out;
394
+ }
395
+
396
+ /* Glow Spinner (Futuristic) */
397
+ .spinner-glow {
398
+ border-color: transparent;
399
+ border-top-color: var(--j-primary);
400
+ box-shadow: 0 0 15px var(--j-primary);
401
+ }
402
+
403
+ .spinner-glow-grow {
404
+ box-shadow: 0 0 20px var(--j-primary);
405
+ }
406
+
407
+ /* Loading Dots Animation */
408
+ .loading-dots::after {
409
+ content: ".";
410
+ animation: loading-dots 1.5s steps(4, end) infinite;
411
+ }
412
+
413
+ @keyframes loading-dots {
414
+ 0% { content: ""; }
415
+ 25% { content: "."; }
416
+ 50% { content: ".."; }
417
+ 75% { content: "..."; }
418
+ 100% { content: ""; }
419
+ }
420
+
421
+ /* Spinner with Progress Text */
422
+ .spinner-with-percent {
423
+ position: relative;
424
+ display: inline-flex;
425
+ align-items: center;
426
+ justify-content: center;
427
+ }
428
+
429
+ .spinner-percent {
430
+ position: absolute;
431
+ font-size: 0.625rem;
432
+ font-weight: 600;
433
+ color: var(--j-text);
434
+ }
435
+
436
+ .spinner-lg .spinner-percent {
437
+ font-size: 0.75rem;
438
+ }
439
+
440
+ .spinner-xl .spinner-percent {
441
+ font-size: 0.875rem;
442
+ }
443
+
444
+ /* Inline Spinner */
445
+ .spinner-inline {
446
+ display: inline-block;
447
+ width: 1em;
448
+ height: 1em;
449
+ border-width: 0.15em;
450
+ vertical-align: -0.125em;
451
+ }
452
+ `;
453
+ }