osi-cards-lib 1.5.30 → 1.5.32

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 (88) hide show
  1. package/README.md +58 -20
  2. package/package.json +13 -25
  3. package/postcss.config.js +81 -0
  4. package/section-registry.json +3864 -0
  5. package/section-registry.schema.json +264 -0
  6. package/fesm2022/osi-cards-lib.mjs +0 -31878
  7. package/fesm2022/osi-cards-lib.mjs.map +0 -1
  8. package/index.d.ts +0 -11522
  9. package/scripts/setup-angular-styles.js +0 -169
  10. package/styles/_components.scss +0 -38
  11. package/styles/_index.scss +0 -25
  12. package/styles/_osi-cards-mixins.scss +0 -459
  13. package/styles/_osi-cards-tokens.scss +0 -333
  14. package/styles/_styles-scoped.scss +0 -81
  15. package/styles/_styles.scss +0 -26
  16. package/styles/bundles/_ai-card.scss +0 -245
  17. package/styles/bundles/_all.scss +0 -68
  18. package/styles/bundles/_base.scss +0 -60
  19. package/styles/bundles/_card-skeleton.scss +0 -290
  20. package/styles/bundles/_index.scss +0 -25
  21. package/styles/bundles/_sections.scss +0 -48
  22. package/styles/bundles/_tokens-only.scss +0 -139
  23. package/styles/components/_ai-card-renderer.scss +0 -104
  24. package/styles/components/_badges.scss +0 -317
  25. package/styles/components/_card-actions.scss +0 -169
  26. package/styles/components/_card-footer.scss +0 -47
  27. package/styles/components/_component-styles.scss +0 -205
  28. package/styles/components/_empty-state.scss +0 -630
  29. package/styles/components/_hero-card.scss +0 -422
  30. package/styles/components/_image-fallback.scss +0 -28
  31. package/styles/components/_streaming-effects.scss +0 -518
  32. package/styles/components/cards/_ai-card.scss +0 -718
  33. package/styles/components/sections/_all-sections.generated.scss +0 -41
  34. package/styles/components/sections/_all-sections.scss +0 -1086
  35. package/styles/components/sections/_balanced-compact-system.scss +0 -186
  36. package/styles/components/sections/_compact-mixins.scss +0 -180
  37. package/styles/components/sections/_component-mixins.scss +0 -454
  38. package/styles/components/sections/_design-system.scss +0 -477
  39. package/styles/components/sections/_design-tokens.scss +0 -308
  40. package/styles/components/sections/_enhanced-design-variables.scss +0 -147
  41. package/styles/components/sections/_master-compact-system.scss +0 -302
  42. package/styles/components/sections/_master-dense-system.scss +0 -239
  43. package/styles/components/sections/_minimalistic-design.scss +0 -268
  44. package/styles/components/sections/_modern-effects.scss +0 -392
  45. package/styles/components/sections/_modern-sections.scss +0 -351
  46. package/styles/components/sections/_perfect-system.scss +0 -204
  47. package/styles/components/sections/_section-animations.scss +0 -331
  48. package/styles/components/sections/_section-shell.scss +0 -337
  49. package/styles/components/sections/_section-types.generated.scss +0 -30
  50. package/styles/components/sections/_sections-all.scss +0 -26
  51. package/styles/components/sections/_sections-base.scss +0 -334
  52. package/styles/components/sections/_typography-system.scss +0 -327
  53. package/styles/components/sections/_ultra-compact-tokens.scss +0 -375
  54. package/styles/components/sections/_unified-section-style.scss +0 -157
  55. package/styles/components/sections/_utility-classes.scss +0 -567
  56. package/styles/components/sections/_visual-effects-library.scss +0 -374
  57. package/styles/core/_animations.scss +0 -1498
  58. package/styles/core/_bootstrap-reset.scss +0 -445
  59. package/styles/core/_color-helpers.scss +0 -46
  60. package/styles/core/_global-unified.scss +0 -118
  61. package/styles/core/_global.scss +0 -73
  62. package/styles/core/_mixins.scss +0 -491
  63. package/styles/core/_surface-layers.scss +0 -76
  64. package/styles/core/_utilities.scss +0 -326
  65. package/styles/core/_variables-unified.scss +0 -57
  66. package/styles/core/_variables.scss +0 -36
  67. package/styles/core/variables/_colors-source.scss +0 -34
  68. package/styles/core/variables/_colors-unified.scss +0 -26
  69. package/styles/core/variables/_colors.scss +0 -21
  70. package/styles/critical.scss +0 -353
  71. package/styles/design-system/_compact-theme.scss +0 -159
  72. package/styles/design-system/_section-base.scss +0 -426
  73. package/styles/design-system/_tokens.scss +0 -237
  74. package/styles/design-system/_unified-sections.scss +0 -215
  75. package/styles/layout/_feature-grid.scss +0 -322
  76. package/styles/layout/_masonry.scss +0 -734
  77. package/styles/layout/_tilt.scss +0 -244
  78. package/styles/micro-interactions.scss +0 -583
  79. package/styles/mixins/_section-mixins.scss +0 -280
  80. package/styles/non-critical.scss +0 -643
  81. package/styles/reset/_framework-reset.scss +0 -457
  82. package/styles/reset/_index.scss +0 -14
  83. package/styles/reset/_shadow-reset.scss +0 -383
  84. package/styles/responsive.scss +0 -326
  85. package/styles/themes.scss +0 -573
  86. package/styles/tokens/_index.scss +0 -92
  87. package/styles/tokens/_master.scss +0 -1404
  88. package/styles/tokens/_section-tokens.generated.scss +0 -140
@@ -1,583 +0,0 @@
1
- /**
2
- * OSI Cards - Micro-Interactions
3
- *
4
- * Delightful micro-animations and interactions for enhanced UX.
5
- */
6
-
7
- // ============================================
8
- // Animation Variables
9
- // ============================================
10
-
11
- :root {
12
- --osi-ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
13
- --osi-ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
14
- --osi-ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);
15
- --osi-ease-in-out-circ: cubic-bezier(0.85, 0, 0.15, 1);
16
- --osi-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
17
-
18
- --osi-duration-instant: 50ms;
19
- --osi-duration-fast: 150ms;
20
- --osi-duration-normal: 250ms;
21
- --osi-duration-slow: 400ms;
22
- --osi-duration-slower: 600ms;
23
- }
24
-
25
- // Respect reduced motion preference
26
- @media (prefers-reduced-motion: reduce) {
27
- :root {
28
- --osi-duration-instant: 0ms;
29
- --osi-duration-fast: 0ms;
30
- --osi-duration-normal: 0ms;
31
- --osi-duration-slow: 0ms;
32
- --osi-duration-slower: 0ms;
33
- }
34
- }
35
-
36
- // ============================================
37
- // Button Interactions
38
- // ============================================
39
-
40
- .osi-action-button {
41
- position: relative;
42
- overflow: hidden;
43
- transition:
44
- transform var(--osi-duration-fast) var(--osi-ease-out-quart),
45
- box-shadow var(--osi-duration-fast) var(--osi-ease-out-quart),
46
- background-color var(--osi-duration-fast) var(--osi-ease-out-quart);
47
-
48
- // Ripple effect container
49
- &::before {
50
- content: "";
51
- position: absolute;
52
- inset: 0;
53
- background: radial-gradient(
54
- circle at var(--ripple-x, 50%) var(--ripple-y, 50%),
55
- rgba(255, 255, 255, 0.3) 0%,
56
- transparent 70%
57
- );
58
- opacity: 0;
59
- transform: scale(0);
60
- transition:
61
- opacity var(--osi-duration-normal) var(--osi-ease-out-quart),
62
- transform var(--osi-duration-slow) var(--osi-ease-out-expo);
63
- }
64
-
65
- &:hover {
66
- transform: translateY(-2px);
67
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
68
- }
69
-
70
- &:active {
71
- transform: translateY(0) scale(0.98);
72
-
73
- &::before {
74
- opacity: 1;
75
- transform: scale(2);
76
- }
77
- }
78
-
79
- &:focus-visible {
80
- outline: none;
81
- box-shadow:
82
- 0 0 0 2px var(--osi-card-background, #fff),
83
- 0 0 0 4px var(--osi-card-accent, #6366f1);
84
- }
85
- }
86
-
87
- // ============================================
88
- // Card Hover Effects
89
- // ============================================
90
-
91
- .osi-card-container {
92
- transition:
93
- box-shadow var(--osi-duration-normal) var(--osi-ease-out-quart),
94
- background var(--osi-duration-normal) var(--osi-ease-out-quart);
95
-
96
- &:hover {
97
- box-shadow:
98
- 0 12px 40px rgba(0, 0, 0, 0.12),
99
- 0 4px 8px rgba(0, 0, 0, 0.08);
100
- background: var(--osi-section-item-background-hover, var(--osi-card-background));
101
- }
102
-
103
- // Subtle glow on hover
104
- &::after {
105
- content: "";
106
- position: absolute;
107
- inset: -2px;
108
- border-radius: inherit;
109
- background: linear-gradient(
110
- 135deg,
111
- rgba(var(--osi-card-accent-rgb, 99, 102, 241), 0.1),
112
- transparent 60%
113
- );
114
- opacity: 0;
115
- z-index: -1;
116
- transition: opacity var(--osi-duration-normal) var(--osi-ease-out-quart);
117
- }
118
-
119
- &:hover::after {
120
- opacity: 1;
121
- }
122
- }
123
-
124
- // ============================================
125
- // Section Entrance Animations
126
- // ============================================
127
-
128
- @keyframes section-enter {
129
- from {
130
- opacity: 0;
131
- transform: translate3d(0, 20px, 0) scale(0.96);
132
- }
133
- to {
134
- opacity: 1;
135
- transform: translate3d(0, 0, 0) scale(1);
136
- }
137
- }
138
-
139
- @keyframes section-enter-left {
140
- from {
141
- opacity: 0;
142
- transform: translate3d(-20px, 0, 0);
143
- }
144
- to {
145
- opacity: 1;
146
- transform: translate3d(0, 0, 0);
147
- }
148
- }
149
-
150
- @keyframes section-enter-scale {
151
- from {
152
- opacity: 0;
153
- transform: translate3d(0, 0, 0) scale(0.9);
154
- }
155
- to {
156
- opacity: 1;
157
- transform: translate3d(0, 0, 0) scale(1);
158
- }
159
- }
160
-
161
- .ai-section {
162
- animation: section-enter var(--osi-duration-slow) var(--osi-ease-out-expo) both;
163
-
164
- @for $i from 1 through 10 {
165
- &:nth-child(#{$i}) {
166
- animation-delay: #{$i * 80}ms;
167
- }
168
- }
169
- }
170
-
171
- // ============================================
172
- // Field Value Reveal
173
- // ============================================
174
-
175
- @keyframes value-reveal {
176
- from {
177
- opacity: 0;
178
- transform: translate3d(0, 8px, 0);
179
- filter: blur(4px);
180
- }
181
- to {
182
- opacity: 1;
183
- transform: translate3d(0, 0, 0);
184
- filter: blur(0);
185
- }
186
- }
187
-
188
- .field-value {
189
- animation: value-reveal var(--osi-duration-normal) var(--osi-ease-out-quart) both;
190
- }
191
-
192
- // ============================================
193
- // Metric Counter Animation
194
- // ============================================
195
-
196
- @keyframes metric-pop {
197
- 0% {
198
- transform: translate3d(0, 0, 0) scale(0.8);
199
- opacity: 0;
200
- }
201
- 50% {
202
- transform: translate3d(0, 0, 0) scale(1.05);
203
- }
204
- 100% {
205
- transform: translate3d(0, 0, 0) scale(1);
206
- opacity: 1;
207
- }
208
- }
209
-
210
- .metric-value {
211
- animation: metric-pop var(--osi-duration-slow) var(--osi-spring) both;
212
- }
213
-
214
- // ============================================
215
- // Trend Indicator Animation
216
- // ============================================
217
-
218
- @keyframes trend-up {
219
- 0% {
220
- transform: translate3d(0, 4px, 0);
221
- opacity: 0;
222
- }
223
- 100% {
224
- transform: translate3d(0, 0, 0);
225
- opacity: 1;
226
- }
227
- }
228
-
229
- @keyframes trend-down {
230
- 0% {
231
- transform: translate3d(0, -4px, 0);
232
- opacity: 0;
233
- }
234
- 100% {
235
- transform: translate3d(0, 0, 0);
236
- opacity: 1;
237
- }
238
- }
239
-
240
- .trend-indicator {
241
- &--up {
242
- animation: trend-up var(--osi-duration-normal) var(--osi-ease-out-back) both;
243
- color: var(--osi-card-success, #22c55e);
244
- }
245
-
246
- &--down {
247
- animation: trend-down var(--osi-duration-normal) var(--osi-ease-out-back) both;
248
- color: var(--osi-card-destructive, #ef4444);
249
- }
250
- }
251
-
252
- // ============================================
253
- // Progress Bar Animation
254
- // ============================================
255
-
256
- @keyframes progress-fill {
257
- from {
258
- transform: scaleX(0);
259
- }
260
- to {
261
- transform: scaleX(var(--progress, 0));
262
- }
263
- }
264
-
265
- .progress-bar {
266
- position: relative;
267
- height: 8px;
268
- background: var(--osi-card-border, #e5e7eb);
269
- border-radius: 4px;
270
- overflow: hidden;
271
-
272
- &__fill {
273
- position: absolute;
274
- inset: 0;
275
- background: var(--osi-card-accent, #6366f1);
276
- transform-origin: left;
277
- animation: progress-fill var(--osi-duration-slower) var(--osi-ease-out-expo) both;
278
- animation-delay: var(--osi-duration-fast);
279
- }
280
-
281
- // Shimmer effect
282
- &::after {
283
- content: "";
284
- position: absolute;
285
- inset: 0;
286
- background: linear-gradient(
287
- 90deg,
288
- transparent 0%,
289
- rgba(255, 255, 255, 0.4) 50%,
290
- transparent 100%
291
- );
292
- transform: translateX(-100%);
293
- animation: shimmer 2s infinite;
294
- }
295
- }
296
-
297
- @keyframes shimmer {
298
- to {
299
- transform: translateX(100%);
300
- }
301
- }
302
-
303
- // ============================================
304
- // Skeleton Loading
305
- // ============================================
306
-
307
- @keyframes skeleton-pulse {
308
- 0%,
309
- 100% {
310
- opacity: 1;
311
- }
312
- 50% {
313
- opacity: 0.5;
314
- }
315
- }
316
-
317
- @keyframes skeleton-wave {
318
- 0% {
319
- background-position: -200% 0;
320
- }
321
- 100% {
322
- background-position: 200% 0;
323
- }
324
- }
325
-
326
- .skeleton {
327
- background: linear-gradient(
328
- 90deg,
329
- var(--osi-card-border, #e5e7eb) 0%,
330
- #f3f4f6 50%,
331
- var(--osi-card-border, #e5e7eb) 100%
332
- );
333
- background-size: 200% 100%;
334
- animation: skeleton-wave 1.5s ease-in-out infinite;
335
- border-radius: 4px;
336
- }
337
-
338
- // ============================================
339
- // Icon Interactions
340
- // ============================================
341
-
342
- .icon-interactive {
343
- transition:
344
- transform var(--osi-duration-fast) var(--osi-ease-out-back),
345
- color var(--osi-duration-fast) var(--osi-ease-out-quart);
346
-
347
- &:hover {
348
- transform: scale(1.15);
349
- color: var(--osi-card-accent, #6366f1);
350
- }
351
-
352
- &:active {
353
- transform: scale(0.95);
354
- }
355
- }
356
-
357
- // Rotating refresh icon
358
- .icon-spin {
359
- animation: icon-rotate 1s linear infinite;
360
- }
361
-
362
- @keyframes icon-rotate {
363
- to {
364
- transform: rotate(360deg);
365
- }
366
- }
367
-
368
- // ============================================
369
- // Checkbox/Toggle Animations
370
- // ============================================
371
-
372
- @keyframes check-mark {
373
- 0% {
374
- stroke-dashoffset: 24;
375
- }
376
- 100% {
377
- stroke-dashoffset: 0;
378
- }
379
- }
380
-
381
- .checkbox-icon {
382
- stroke-dasharray: 24;
383
- stroke-dashoffset: 24;
384
-
385
- .checkbox:checked ~ & {
386
- animation: check-mark var(--osi-duration-normal) var(--osi-ease-out-quart) forwards;
387
- }
388
- }
389
-
390
- // ============================================
391
- // Tooltip Animation
392
- // ============================================
393
-
394
- @keyframes tooltip-enter {
395
- from {
396
- opacity: 0;
397
- transform: translate3d(0, 4px, 0) scale(0.95);
398
- }
399
- to {
400
- opacity: 1;
401
- transform: translate3d(0, 0, 0) scale(1);
402
- }
403
- }
404
-
405
- .tooltip {
406
- animation: tooltip-enter var(--osi-duration-fast) var(--osi-ease-out-quart) both;
407
- }
408
-
409
- // ============================================
410
- // Card Actions Stagger
411
- // ============================================
412
-
413
- .osi-card-actions {
414
- .osi-action-button {
415
- @for $i from 1 through 5 {
416
- &:nth-child(#{$i}) {
417
- animation: section-enter var(--osi-duration-normal) var(--osi-ease-out-quart) both;
418
- animation-delay: #{300 + ($i * 50)}ms;
419
- }
420
- }
421
- }
422
- }
423
-
424
- // ============================================
425
- // Streaming Effect
426
- // ============================================
427
-
428
- @keyframes typing-cursor {
429
- 0%,
430
- 100% {
431
- opacity: 1;
432
- }
433
- 50% {
434
- opacity: 0;
435
- }
436
- }
437
-
438
- .streaming-cursor {
439
- display: inline-block;
440
- width: 2px;
441
- height: 1em;
442
- background: var(--osi-card-accent, #6366f1);
443
- animation: typing-cursor 0.8s ease-in-out infinite;
444
- vertical-align: text-bottom;
445
- margin-left: 2px;
446
- }
447
-
448
- // ============================================
449
- // Focus Ring Animation
450
- // ============================================
451
-
452
- @keyframes focus-ring-pulse {
453
- 0%,
454
- 100% {
455
- box-shadow:
456
- 0 0 0 2px var(--osi-card-background, #fff),
457
- 0 0 0 4px var(--osi-card-accent, #6366f1);
458
- }
459
- 50% {
460
- box-shadow:
461
- 0 0 0 2px var(--osi-card-background, #fff),
462
- 0 0 0 6px rgba(var(--osi-card-accent-rgb, 99, 102, 241), 0.5);
463
- }
464
- }
465
-
466
- .focus-animated:focus-visible {
467
- outline: none;
468
- animation: focus-ring-pulse 1.5s ease-in-out infinite;
469
- }
470
-
471
- // ============================================
472
- // Shake Animation (for errors)
473
- // ============================================
474
-
475
- @keyframes shake {
476
- 0%,
477
- 100% {
478
- transform: translate3d(0, 0, 0);
479
- }
480
- 10%,
481
- 30%,
482
- 50%,
483
- 70%,
484
- 90% {
485
- transform: translate3d(-4px, 0, 0);
486
- }
487
- 20%,
488
- 40%,
489
- 60%,
490
- 80% {
491
- transform: translate3d(4px, 0, 0);
492
- }
493
- }
494
-
495
- .shake {
496
- animation: shake var(--osi-duration-slow) var(--osi-ease-out-quart);
497
- }
498
-
499
- // ============================================
500
- // Success Animation
501
- // ============================================
502
-
503
- @keyframes success-pop {
504
- 0% {
505
- transform: translate3d(0, 0, 0) scale(0);
506
- opacity: 0;
507
- }
508
- 50% {
509
- transform: translate3d(0, 0, 0) scale(1.2);
510
- }
511
- 100% {
512
- transform: translate3d(0, 0, 0) scale(1);
513
- opacity: 1;
514
- }
515
- }
516
-
517
- .success-icon {
518
- animation: success-pop var(--osi-duration-normal) var(--osi-spring) both;
519
- }
520
-
521
- // ============================================
522
- // Fade In/Out Utilities
523
- // ============================================
524
-
525
- @keyframes fade-in {
526
- from {
527
- opacity: 0;
528
- }
529
- to {
530
- opacity: 1;
531
- }
532
- }
533
-
534
- @keyframes fade-out {
535
- from {
536
- opacity: 1;
537
- }
538
- to {
539
- opacity: 0;
540
- }
541
- }
542
-
543
- .fade-in {
544
- animation: fade-in var(--osi-duration-normal) var(--osi-ease-out-quart) both;
545
- }
546
-
547
- .fade-out {
548
- animation: fade-out var(--osi-duration-normal) var(--osi-ease-out-quart) both;
549
- }
550
-
551
- // ============================================
552
- // Slide Utilities
553
- // ============================================
554
-
555
- @keyframes slide-in-up {
556
- from {
557
- opacity: 0;
558
- transform: translate3d(0, 16px, 0);
559
- }
560
- to {
561
- opacity: 1;
562
- transform: translate3d(0, 0, 0);
563
- }
564
- }
565
-
566
- @keyframes slide-in-down {
567
- from {
568
- opacity: 0;
569
- transform: translate3d(0, -16px, 0);
570
- }
571
- to {
572
- opacity: 1;
573
- transform: translate3d(0, 0, 0);
574
- }
575
- }
576
-
577
- .slide-in-up {
578
- animation: slide-in-up var(--osi-duration-normal) var(--osi-ease-out-quart) both;
579
- }
580
-
581
- .slide-in-down {
582
- animation: slide-in-down var(--osi-duration-normal) var(--osi-ease-out-quart) both;
583
- }