@bsginstitute/bsg-integra 0.0.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.
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@bsginstitute/bsg-integra",
3
+ "version": "0.0.1",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "description": "Angular UI component library inspired by shadcn/ui. Built with standalone components, Tailwind CSS v4, and class-variance-authority (CVA).",
8
+ "keywords": [
9
+ "angular",
10
+ "components",
11
+ "ui",
12
+ "design-system",
13
+ "tailwind",
14
+ "shadcn",
15
+ "cva",
16
+ "standalone"
17
+ ],
18
+ "author": "BSG Institute",
19
+ "license": "MIT",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/BSGInstitute/LibreriaIntegra.git"
23
+ },
24
+ "homepage": "https://github.com/BSGInstitute/LibreriaIntegra#readme",
25
+ "bugs": {
26
+ "url": "https://github.com/BSGInstitute/LibreriaIntegra/issues"
27
+ },
28
+ "peerDependencies": {
29
+ "@angular/common": "^20.0.0",
30
+ "@angular/core": "^20.0.0"
31
+ },
32
+ "dependencies": {
33
+ "tslib": "^2.3.0",
34
+ "class-variance-authority": "^0.7.1",
35
+ "clsx": "^2.1.1"
36
+ },
37
+ "sideEffects": [
38
+ "*.css"
39
+ ],
40
+ "module": "fesm2022/bsginstitute-bsg-integra.mjs",
41
+ "typings": "index.d.ts",
42
+ "exports": {
43
+ "./package.json": {
44
+ "default": "./package.json"
45
+ },
46
+ ".": {
47
+ "types": "./index.d.ts",
48
+ "default": "./fesm2022/bsginstitute-bsg-integra.mjs"
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,650 @@
1
+ @theme {
2
+ /* ============================================
3
+ Animation Durations
4
+ Basado en investigación UX de Material Design
5
+ ============================================ */
6
+
7
+ /* Micro animations - Cambios instantáneos */
8
+ --duration-instant: 0ms;
9
+ --duration-fastest: 50ms;
10
+
11
+ /* Fast - Feedback inmediato */
12
+ --duration-fast: 100ms;
13
+ --duration-faster: 150ms;
14
+
15
+ /* Normal - Transiciones estándar */
16
+ --duration-normal: 200ms;
17
+ --duration-default: 250ms;
18
+ --duration-medium: 300ms;
19
+
20
+ /* Slow - Animaciones complejas */
21
+ --duration-slow: 400ms;
22
+ --duration-slower: 500ms;
23
+
24
+ /* Very slow - Animaciones dramáticas */
25
+ --duration-slowest: 700ms;
26
+ --duration-glacial: 1000ms;
27
+
28
+ /* Alias semánticos */
29
+ --duration-hover: var(--duration-faster);
30
+ --duration-tooltip: var(--duration-normal);
31
+ --duration-dropdown: var(--duration-default);
32
+ --duration-modal: var(--duration-medium);
33
+ --duration-page-transition: var(--duration-slow);
34
+ --duration-skeleton: 1500ms;
35
+
36
+ /* ============================================
37
+ Animation Delays
38
+ Para animaciones escalonadas (staggered)
39
+ ============================================ */
40
+ --delay-none: 0ms;
41
+ --delay-xs: 50ms;
42
+ --delay-sm: 100ms;
43
+ --delay-md: 150ms;
44
+ --delay-lg: 200ms;
45
+ --delay-xl: 300ms;
46
+ --delay-2xl: 500ms;
47
+
48
+ /* ============================================
49
+ Easing Functions - Curvas de Animación
50
+ ============================================ */
51
+
52
+ /* Linear */
53
+ --ease-linear: linear;
54
+
55
+ /* Standard CSS easings */
56
+ --ease-in: cubic-bezier(0.4, 0, 1, 1);
57
+ --ease-out: cubic-bezier(0, 0, 0.2, 1);
58
+ --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
59
+
60
+ /* Material Design easings */
61
+ --ease-standard: cubic-bezier(0.4, 0, 0.2, 1); /* Entrada y salida */
62
+ --ease-decelerate: cubic-bezier(0, 0, 0.2, 1); /* Solo salida */
63
+ --ease-accelerate: cubic-bezier(0.4, 0, 1, 1); /* Solo entrada */
64
+ --ease-sharp: cubic-bezier(
65
+ 0.4,
66
+ 0,
67
+ 0.6,
68
+ 1
69
+ ); /* Objetos que salen de pantalla */
70
+
71
+ /* Custom easings - Más naturales */
72
+ --ease-smooth: cubic-bezier(0.25, 0.1, 0.25, 1);
73
+ --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
74
+ --ease-elastic: cubic-bezier(0.68, -0.6, 0.32, 1.6);
75
+
76
+ /* Easings específicos por dirección */
77
+ --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
78
+ --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
79
+ --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
80
+
81
+ --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);
82
+ --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
83
+ --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
84
+
85
+ --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22);
86
+ --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
87
+ --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
88
+
89
+ --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035);
90
+ --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
91
+ --ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
92
+
93
+ --ease-in-back: cubic-bezier(0.6, -0.28, 0.735, 0.045);
94
+ --ease-out-back: cubic-bezier(0.175, 0.885, 0.32, 1.275);
95
+ --ease-in-out-back: cubic-bezier(0.68, -0.55, 0.265, 1.55);
96
+
97
+ /* Alias para uso común */
98
+ --ease-default: var(--ease-out);
99
+ --ease-emphasized: var(--ease-out-cubic);
100
+
101
+ /* ============================================
102
+ Transition Properties
103
+ Configuraciones completas de transición
104
+ ============================================ */
105
+
106
+ /* All properties - Usar con precaución (performance) */
107
+ --transition-all-fast: all var(--duration-fast) var(--ease-default);
108
+ --transition-all: all var(--duration-default) var(--ease-default);
109
+ --transition-all-slow: all var(--duration-slow) var(--ease-default);
110
+
111
+ /* Colors */
112
+ --transition-colors-fast:
113
+ color var(--duration-fast) var(--ease-default),
114
+ background-color var(--duration-fast) var(--ease-default),
115
+ border-color var(--duration-fast) var(--ease-default);
116
+
117
+ --transition-colors:
118
+ color var(--duration-default) var(--ease-default),
119
+ background-color var(--duration-default) var(--ease-default),
120
+ border-color var(--duration-default) var(--ease-default);
121
+
122
+ /* Opacity */
123
+ --transition-opacity-fast: opacity var(--duration-fast) var(--ease-default);
124
+ --transition-opacity: opacity var(--duration-default) var(--ease-default);
125
+ --transition-opacity-slow: opacity var(--duration-slow) var(--ease-default);
126
+
127
+ /* Transform */
128
+ --transition-transform-fast: transform var(--duration-fast)
129
+ var(--ease-default);
130
+ --transition-transform: transform var(--duration-default) var(--ease-default);
131
+ --transition-transform-slow: transform var(--duration-slow)
132
+ var(--ease-out-cubic);
133
+ --transition-transform-bounce: transform var(--duration-default)
134
+ var(--ease-bounce);
135
+
136
+ /* Shadow */
137
+ --transition-shadow-fast: box-shadow var(--duration-fast) var(--ease-default);
138
+ --transition-shadow: box-shadow var(--duration-default) var(--ease-default);
139
+ --transition-shadow-slow: box-shadow var(--duration-slow) var(--ease-default);
140
+
141
+ /* Combinaciones comunes */
142
+ --transition-base:
143
+ background-color var(--duration-default) var(--ease-default),
144
+ border-color var(--duration-default) var(--ease-default),
145
+ color var(--duration-default) var(--ease-default),
146
+ box-shadow var(--duration-default) var(--ease-default);
147
+
148
+ --transition-interactive:
149
+ transform var(--duration-faster) var(--ease-out),
150
+ box-shadow var(--duration-faster) var(--ease-out),
151
+ background-color var(--duration-faster) var(--ease-out);
152
+
153
+ /* ============================================
154
+ Component Transitions
155
+ ============================================ */
156
+
157
+ /* Button */
158
+ --transition-button:
159
+ background-color var(--duration-faster) var(--ease-out),
160
+ color var(--duration-faster) var(--ease-out),
161
+ border-color var(--duration-faster) var(--ease-out),
162
+ box-shadow var(--duration-faster) var(--ease-out),
163
+ transform var(--duration-faster) var(--ease-out);
164
+
165
+ /* Input */
166
+ --transition-input:
167
+ border-color var(--duration-normal) var(--ease-out),
168
+ box-shadow var(--duration-normal) var(--ease-out),
169
+ background-color var(--duration-normal) var(--ease-out);
170
+
171
+ /* Card */
172
+ --transition-card:
173
+ box-shadow var(--duration-default) var(--ease-out),
174
+ transform var(--duration-default) var(--ease-out),
175
+ border-color var(--duration-default) var(--ease-out);
176
+
177
+ /* Link */
178
+ --transition-link:
179
+ color var(--duration-fast) var(--ease-out),
180
+ text-decoration-color var(--duration-fast) var(--ease-out);
181
+
182
+ /* Modal/Dialog */
183
+ --transition-modal:
184
+ opacity var(--duration-medium) var(--ease-out),
185
+ transform var(--duration-medium) var(--ease-out-cubic);
186
+
187
+ /* Dropdown */
188
+ --transition-dropdown:
189
+ opacity var(--duration-default) var(--ease-out),
190
+ transform var(--duration-default) var(--ease-out-back);
191
+
192
+ /* Tooltip */
193
+ --transition-tooltip: opacity var(--duration-normal) var(--ease-out);
194
+
195
+ /* Toast */
196
+ --transition-toast:
197
+ transform var(--duration-default) var(--ease-out-back),
198
+ opacity var(--duration-default) var(--ease-out);
199
+
200
+ /* ============================================
201
+ Accordion Animations - Based on shadcn/ui
202
+ ============================================ */
203
+ --animate-accordion-down: accordion-down 0.2s ease-out;
204
+ --animate-accordion-up: accordion-up 0.2s ease-out;
205
+ }
206
+
207
+ /* ============================================
208
+ Keyframe Animations
209
+ Animaciones reutilizables predefinidas
210
+ ============================================ */
211
+
212
+ /* Accordion animations - Based on shadcn/ui */
213
+ @keyframes accordion-down {
214
+ from {
215
+ height: 0;
216
+ }
217
+ to {
218
+ height: var(--accordion-content-height);
219
+ }
220
+ }
221
+
222
+ @keyframes accordion-up {
223
+ from {
224
+ height: var(--accordion-content-height);
225
+ }
226
+ to {
227
+ height: 0;
228
+ }
229
+ }
230
+
231
+ /* Fade animations */
232
+ @keyframes fade-in {
233
+ from {
234
+ opacity: 0;
235
+ }
236
+ to {
237
+ opacity: 1;
238
+ }
239
+ }
240
+
241
+ @keyframes fade-out {
242
+ from {
243
+ opacity: 1;
244
+ }
245
+ to {
246
+ opacity: 0;
247
+ }
248
+ }
249
+
250
+ /* Slide animations */
251
+ @keyframes slide-in-up {
252
+ from {
253
+ transform: translateY(16px);
254
+ opacity: 0;
255
+ }
256
+ to {
257
+ transform: translateY(0);
258
+ opacity: 1;
259
+ }
260
+ }
261
+
262
+ @keyframes slide-in-down {
263
+ from {
264
+ transform: translateY(-16px);
265
+ opacity: 0;
266
+ }
267
+ to {
268
+ transform: translateY(0);
269
+ opacity: 1;
270
+ }
271
+ }
272
+
273
+ @keyframes slide-in-left {
274
+ from {
275
+ transform: translateX(-16px);
276
+ opacity: 0;
277
+ }
278
+ to {
279
+ transform: translateX(0);
280
+ opacity: 1;
281
+ }
282
+ }
283
+
284
+ @keyframes slide-in-right {
285
+ from {
286
+ transform: translateX(16px);
287
+ opacity: 0;
288
+ }
289
+ to {
290
+ transform: translateX(0);
291
+ opacity: 1;
292
+ }
293
+ }
294
+
295
+ @keyframes slide-out-up {
296
+ from {
297
+ transform: translateY(0);
298
+ opacity: 1;
299
+ }
300
+ to {
301
+ transform: translateY(-16px);
302
+ opacity: 0;
303
+ }
304
+ }
305
+
306
+ @keyframes slide-out-down {
307
+ from {
308
+ transform: translateY(0);
309
+ opacity: 1;
310
+ }
311
+ to {
312
+ transform: translateY(16px);
313
+ opacity: 0;
314
+ }
315
+ }
316
+
317
+ /* Scale animations */
318
+ @keyframes scale-in {
319
+ from {
320
+ transform: scale(0.95);
321
+ opacity: 0;
322
+ }
323
+ to {
324
+ transform: scale(1);
325
+ opacity: 1;
326
+ }
327
+ }
328
+
329
+ @keyframes scale-out {
330
+ from {
331
+ transform: scale(1);
332
+ opacity: 1;
333
+ }
334
+ to {
335
+ transform: scale(0.95);
336
+ opacity: 0;
337
+ }
338
+ }
339
+
340
+ @keyframes scale-bounce {
341
+ 0% {
342
+ transform: scale(1);
343
+ }
344
+ 50% {
345
+ transform: scale(1.05);
346
+ }
347
+ 100% {
348
+ transform: scale(1);
349
+ }
350
+ }
351
+
352
+ /* Zoom animations */
353
+ @keyframes zoom-in {
354
+ from {
355
+ transform: scale(0);
356
+ opacity: 0;
357
+ }
358
+ to {
359
+ transform: scale(1);
360
+ opacity: 1;
361
+ }
362
+ }
363
+
364
+ @keyframes zoom-out {
365
+ from {
366
+ transform: scale(1);
367
+ opacity: 1;
368
+ }
369
+ to {
370
+ transform: scale(0);
371
+ opacity: 0;
372
+ }
373
+ }
374
+
375
+ /* Rotation animations */
376
+ @keyframes rotate {
377
+ from {
378
+ transform: rotate(0deg);
379
+ }
380
+ to {
381
+ transform: rotate(360deg);
382
+ }
383
+ }
384
+
385
+ @keyframes rotate-reverse {
386
+ from {
387
+ transform: rotate(360deg);
388
+ }
389
+ to {
390
+ transform: rotate(0deg);
391
+ }
392
+ }
393
+
394
+ /* Spin (loading) */
395
+ @keyframes spin {
396
+ from {
397
+ transform: rotate(0deg);
398
+ }
399
+ to {
400
+ transform: rotate(360deg);
401
+ }
402
+ }
403
+
404
+ /* Pulse animations */
405
+ @keyframes pulse {
406
+ 0%,
407
+ 100% {
408
+ opacity: 1;
409
+ }
410
+ 50% {
411
+ opacity: 0.5;
412
+ }
413
+ }
414
+
415
+ @keyframes pulse-scale {
416
+ 0%,
417
+ 100% {
418
+ transform: scale(1);
419
+ opacity: 1;
420
+ }
421
+ 50% {
422
+ transform: scale(1.05);
423
+ opacity: 0.8;
424
+ }
425
+ }
426
+
427
+ /* Ping (notification indicator) */
428
+ @keyframes ping {
429
+ 0% {
430
+ transform: scale(1);
431
+ opacity: 1;
432
+ }
433
+ 75%,
434
+ 100% {
435
+ transform: scale(2);
436
+ opacity: 0;
437
+ }
438
+ }
439
+
440
+ /* Bounce animations */
441
+ @keyframes bounce {
442
+ 0%,
443
+ 100% {
444
+ transform: translateY(0);
445
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
446
+ }
447
+ 50% {
448
+ transform: translateY(-25%);
449
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
450
+ }
451
+ }
452
+
453
+ @keyframes bounce-horizontal {
454
+ 0%,
455
+ 100% {
456
+ transform: translateX(0);
457
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
458
+ }
459
+ 50% {
460
+ transform: translateX(25%);
461
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
462
+ }
463
+ }
464
+
465
+ /* Shake animation */
466
+ @keyframes shake {
467
+ 0%,
468
+ 100% {
469
+ transform: translateX(0);
470
+ }
471
+ 10%,
472
+ 30%,
473
+ 50%,
474
+ 70%,
475
+ 90% {
476
+ transform: translateX(-8px);
477
+ }
478
+ 20%,
479
+ 40%,
480
+ 60%,
481
+ 80% {
482
+ transform: translateX(8px);
483
+ }
484
+ }
485
+
486
+ @keyframes shake-vertical {
487
+ 0%,
488
+ 100% {
489
+ transform: translateY(0);
490
+ }
491
+ 10%,
492
+ 30%,
493
+ 50%,
494
+ 70%,
495
+ 90% {
496
+ transform: translateY(-8px);
497
+ }
498
+ 20%,
499
+ 40%,
500
+ 60%,
501
+ 80% {
502
+ transform: translateY(8px);
503
+ }
504
+ }
505
+
506
+ /* Wiggle animation */
507
+ @keyframes wiggle {
508
+ 0%,
509
+ 100% {
510
+ transform: rotate(0deg);
511
+ }
512
+ 25% {
513
+ transform: rotate(-5deg);
514
+ }
515
+ 75% {
516
+ transform: rotate(5deg);
517
+ }
518
+ }
519
+
520
+ /* Swing animation */
521
+ @keyframes swing {
522
+ 20% {
523
+ transform: rotate(15deg);
524
+ }
525
+ 40% {
526
+ transform: rotate(-10deg);
527
+ }
528
+ 60% {
529
+ transform: rotate(5deg);
530
+ }
531
+ 80% {
532
+ transform: rotate(-5deg);
533
+ }
534
+ 100% {
535
+ transform: rotate(0deg);
536
+ }
537
+ }
538
+
539
+ /* Flip animations */
540
+ @keyframes flip-horizontal {
541
+ from {
542
+ transform: rotateY(0deg);
543
+ }
544
+ to {
545
+ transform: rotateY(360deg);
546
+ }
547
+ }
548
+
549
+ @keyframes flip-vertical {
550
+ from {
551
+ transform: rotateX(0deg);
552
+ }
553
+ to {
554
+ transform: rotateX(360deg);
555
+ }
556
+ }
557
+
558
+ /* Skeleton loading */
559
+ @keyframes skeleton-loading {
560
+ 0% {
561
+ background-position: 200% 0;
562
+ }
563
+ 100% {
564
+ background-position: -200% 0;
565
+ }
566
+ }
567
+
568
+ @keyframes shimmer {
569
+ 0% {
570
+ transform: translateX(-100%);
571
+ }
572
+ 100% {
573
+ transform: translateX(100%);
574
+ }
575
+ }
576
+
577
+ /* Progress bar */
578
+ @keyframes progress-indeterminate {
579
+ 0% {
580
+ transform: translateX(-100%);
581
+ }
582
+ 100% {
583
+ transform: translateX(400%);
584
+ }
585
+ }
586
+
587
+ /* Ripple effect */
588
+ @keyframes ripple {
589
+ 0% {
590
+ transform: scale(0);
591
+ opacity: 1;
592
+ }
593
+ 100% {
594
+ transform: scale(4);
595
+ opacity: 0;
596
+ }
597
+ }
598
+
599
+ /* Heartbeat */
600
+ @keyframes heartbeat {
601
+ 0%,
602
+ 100% {
603
+ transform: scale(1);
604
+ }
605
+ 10%,
606
+ 30% {
607
+ transform: scale(1.1);
608
+ }
609
+ 20%,
610
+ 40% {
611
+ transform: scale(1);
612
+ }
613
+ }
614
+
615
+ /* Blink */
616
+ @keyframes blink {
617
+ 0%,
618
+ 100% {
619
+ opacity: 1;
620
+ }
621
+ 50% {
622
+ opacity: 0;
623
+ }
624
+ }
625
+
626
+ /* Float */
627
+ @keyframes float {
628
+ 0%,
629
+ 100% {
630
+ transform: translateY(0);
631
+ }
632
+ 50% {
633
+ transform: translateY(-10px);
634
+ }
635
+ }
636
+
637
+ /* ============================================
638
+ Accessibility - Reduced Motion
639
+ Respeta prefers-reduced-motion
640
+ ============================================ */
641
+ @media (prefers-reduced-motion: reduce) {
642
+ *,
643
+ *::before,
644
+ *::after {
645
+ animation-duration: 0.01ms !important;
646
+ animation-iteration-count: 1 !important;
647
+ transition-duration: 0.01ms !important;
648
+ scroll-behavior: auto !important;
649
+ }
650
+ }