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,630 +0,0 @@
1
- // ============================================
2
- // EMPTY STATE ANIMATION
3
- // ============================================
4
- //
5
- // Animated empty state for AI Card Renderer
6
- // Shows while waiting for content during "thinking" phase
7
- //
8
- // ============================================
9
-
10
- /* Card container wrapper */
11
- .card-container-wrapper {
12
- width: 100%;
13
- }
14
-
15
- .glow-container {
16
- width: 100%;
17
- }
18
-
19
- .tilt-container {
20
- width: 100%;
21
- }
22
-
23
- /* Utility classes for Shadow DOM (Tailwind not available) */
24
- .w-full {
25
- width: 100%;
26
- }
27
- .h-full {
28
- height: 100%;
29
- }
30
- .flex-1 {
31
- flex: 1 1 0%;
32
- }
33
- .min-h-0 {
34
- min-height: 0;
35
- }
36
- .max-w-none {
37
- max-width: none;
38
- }
39
-
40
- /* Animated Empty State */
41
- .card-empty-state {
42
- position: relative;
43
- display: flex;
44
- flex-direction: column;
45
- align-items: center;
46
- justify-content: center;
47
- min-height: 100%;
48
- height: 100%;
49
- padding: 4rem 2rem;
50
- border-radius: 1.5rem;
51
- overflow: hidden;
52
- border: 1px solid color-mix(in srgb, var(--color-brand, #ff7900) 20%, transparent);
53
- background: color-mix(in srgb, var(--background, #0c0c0c) 98%, transparent);
54
- transition: all 0.3s ease;
55
- flex: 1;
56
- box-sizing: border-box;
57
- }
58
-
59
- /* Empty state layout for card surface */
60
- .ai-card-surface--empty-state {
61
- display: flex;
62
- flex-direction: column;
63
- min-height: 100%;
64
- height: 100%;
65
- }
66
-
67
- .ai-card-surface--empty-state .card-empty-state {
68
- flex: 1 1 auto;
69
- min-height: 0;
70
- height: 100%;
71
- display: flex;
72
- }
73
-
74
- .card-empty-state:hover {
75
- border-color: color-mix(in srgb, var(--color-brand, #ff7900) 30%, transparent);
76
- background: color-mix(in srgb, var(--background, #0c0c0c) 99%, transparent);
77
- }
78
-
79
- .empty-state-background {
80
- position: absolute;
81
- inset: 0;
82
- overflow: hidden;
83
- pointer-events: none;
84
- }
85
-
86
- .empty-state-gradient {
87
- position: absolute;
88
- top: 50%;
89
- left: 50%;
90
- transform: translate(-50%, -50%);
91
- width: 150%;
92
- height: 150%;
93
- background: radial-gradient(
94
- circle,
95
- color-mix(in srgb, var(--color-brand, #ff7900) 6%, transparent) 0%,
96
- color-mix(in srgb, var(--color-brand, #ff7900) 3%, transparent) 50%,
97
- transparent 80%
98
- );
99
- animation: gradient-pulse 5s ease-in-out infinite;
100
- opacity: 0.8;
101
- }
102
-
103
- @keyframes gradient-pulse {
104
- 0%,
105
- 100% {
106
- opacity: 0.6;
107
- transform: translate3d(-50%, -50%, 0) scale(1);
108
- }
109
- 50% {
110
- opacity: 0.9;
111
- transform: translate3d(-50%, -50%, 0) scale(1.05);
112
- }
113
- }
114
-
115
- .empty-state-particles {
116
- position: absolute;
117
- inset: 0;
118
- }
119
-
120
- /* Empty state particles (different from loading particles) */
121
- .empty-state-particles .particle {
122
- position: absolute;
123
- width: 4px;
124
- height: 4px;
125
- border-radius: 50%;
126
- background: var(--color-brand, #ff7900);
127
- box-shadow: 0 0 8px var(--color-brand, #ff7900);
128
- transition:
129
- transform 0.8s cubic-bezier(0.23, 1, 0.32, 1),
130
- opacity 0.5s ease;
131
- will-change: transform, opacity;
132
- top: 50%;
133
- left: 50%;
134
- margin-left: -2px;
135
- margin-top: -2px;
136
- pointer-events: none;
137
- opacity: 0.7;
138
- }
139
-
140
- .empty-state-particles .particle:nth-child(odd) {
141
- width: 5px;
142
- height: 5px;
143
- background: var(--color-brand, #ff7900);
144
- box-shadow: 0 0 10px var(--color-brand, #ff7900);
145
- opacity: 0.8;
146
- }
147
-
148
- .empty-state-particles .particle:nth-child(even) {
149
- width: 3px;
150
- height: 3px;
151
- background: var(--color-brand, #ff7900);
152
- box-shadow: 0 0 6px var(--color-brand, #ff7900);
153
- opacity: 0.6;
154
- }
155
-
156
- .empty-state-content {
157
- position: relative;
158
- z-index: 1;
159
- display: flex;
160
- flex-direction: column;
161
- align-items: center;
162
- justify-content: center;
163
- text-align: center;
164
- gap: 1rem;
165
- max-width: 420px;
166
- width: 100%;
167
- transition: transform 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
168
- will-change: transform;
169
- }
170
-
171
- .empty-state-icon-wrapper {
172
- position: relative;
173
- display: flex;
174
- align-items: center;
175
- justify-content: center;
176
- width: 88px;
177
- height: 88px;
178
- }
179
-
180
- .empty-state-icon-ring {
181
- position: absolute;
182
- inset: -8px;
183
- border: 1.5px solid color-mix(in srgb, var(--color-brand, #ff7900) 25%, transparent);
184
- border-radius: 50%;
185
- animation: ring-pulse 3s ease-in-out infinite;
186
- }
187
-
188
- .empty-state-icon-pulse {
189
- position: absolute;
190
- inset: -16px;
191
- border: 1px solid color-mix(in srgb, var(--color-brand, #ff7900) 15%, transparent);
192
- border-radius: 50%;
193
- animation: ring-pulse 3s ease-in-out infinite 0.75s;
194
- }
195
-
196
- @keyframes ring-pulse {
197
- 0%,
198
- 100% {
199
- opacity: 0.4;
200
- transform: scale(1);
201
- }
202
- 50% {
203
- opacity: 0.7;
204
- transform: scale(1.08);
205
- }
206
- }
207
-
208
- .empty-state-icon {
209
- position: relative;
210
- z-index: 1;
211
- color: var(--color-brand, #ff7900);
212
- animation: icon-float 4s ease-in-out infinite;
213
- filter: drop-shadow(0 2px 8px color-mix(in srgb, var(--color-brand, #ff7900) 25%, transparent));
214
- opacity: 0.95;
215
- }
216
-
217
- @keyframes icon-float {
218
- 0%,
219
- 100% {
220
- transform: translate3d(0, 0, 0) rotate(0deg);
221
- }
222
- 25% {
223
- transform: translate3d(0, -6px, 0) rotate(-3deg);
224
- }
225
- 50% {
226
- transform: translate3d(0, -10px, 0) rotate(0deg);
227
- }
228
- 75% {
229
- transform: translate3d(0, -6px, 0) rotate(3deg);
230
- }
231
- }
232
-
233
- .empty-state-text {
234
- display: flex;
235
- flex-direction: column;
236
- align-items: center;
237
- justify-content: center;
238
- gap: 0.75rem;
239
- width: 100%;
240
- }
241
-
242
- .empty-state-title {
243
- font-size: 1.75rem;
244
- font-weight: 700;
245
- color: var(--foreground, #ffffff);
246
- margin: 0;
247
- letter-spacing: -0.03em;
248
- line-height: 1.2;
249
- text-align: center;
250
- animation: fade-in-up 0.6s ease-out 0.2s both;
251
- }
252
-
253
- .empty-state-message-container {
254
- min-height: 2.5rem;
255
- display: flex;
256
- align-items: center;
257
- justify-content: center;
258
- width: 100%;
259
- }
260
-
261
- .empty-state-message {
262
- font-size: 1rem;
263
- color: var(--color-brand, #ff7900);
264
- margin: 0;
265
- line-height: 1.6;
266
- font-weight: 500;
267
- font-style: italic;
268
- text-align: center;
269
- animation: fade-in-up 0.6s ease-out 0.4s both;
270
- letter-spacing: 0.01em;
271
- }
272
-
273
- @keyframes fade-in-up {
274
- from {
275
- opacity: 0;
276
- transform: translate3d(0, 10px, 0);
277
- }
278
- to {
279
- opacity: 1;
280
- transform: translate3d(0, 0, 0);
281
- }
282
- }
283
-
284
- /* Legacy empty state (kept for backward compatibility) */
285
- .card-empty-state-legacy {
286
- min-height: 200px;
287
- display: flex;
288
- align-items: center;
289
- justify-content: center;
290
- padding: 3rem;
291
- background: linear-gradient(
292
- 135deg,
293
- color-mix(in srgb, var(--color-brand, #ff7900) 5%, transparent) 0%,
294
- color-mix(in srgb, var(--background, #0c0c0c) 98%, transparent) 50%,
295
- transparent 100%
296
- );
297
- border-radius: 1.5rem;
298
- border: 1px dashed color-mix(in srgb, var(--color-brand, #ff7900) 20%, transparent);
299
- }
300
-
301
- .empty-state-box {
302
- text-align: center;
303
- max-width: 320px;
304
- }
305
-
306
- .empty-state-icon-legacy {
307
- display: flex;
308
- justify-content: center;
309
- margin-bottom: 1.5rem;
310
- color: var(--color-brand, #ff7900);
311
- opacity: 0.7;
312
- }
313
-
314
- .empty-state-message-legacy {
315
- font-size: 0.95rem;
316
- color: var(--muted-foreground, #a1a1aa);
317
- line-height: 1.6;
318
- margin: 0;
319
- }
320
-
321
- /* Generating State - fills entire card surface */
322
- .ai-card-surface.has-loading-overlay {
323
- display: flex;
324
- align-items: center;
325
- justify-content: center;
326
- min-height: 500px;
327
- position: relative;
328
- overflow: hidden;
329
- background: radial-gradient(
330
- circle at 50% 50%,
331
- color-mix(in srgb, var(--color-brand, #ff7900) 5%, transparent) 0%,
332
- transparent 70%
333
- );
334
- animation:
335
- generating-bg-pulse 3s ease-in-out infinite,
336
- card-generating-pulse 2s ease-in-out infinite;
337
- }
338
-
339
- @keyframes card-generating-pulse {
340
- 0%,
341
- 100% {
342
- box-shadow:
343
- inset 0 1px 3px color-mix(in srgb, var(--color-brand, #ff7900) 8%, transparent),
344
- 0 4px 20px rgba(0, 0, 0, 0.15),
345
- 0 0 0 transparent;
346
- }
347
- 50% {
348
- box-shadow:
349
- inset 0 1px 3px color-mix(in srgb, var(--color-brand, #ff7900) 15%, transparent),
350
- 0 4px 20px rgba(0, 0, 0, 0.15),
351
- 0 0 30px color-mix(in srgb, var(--color-brand, #ff7900) 20%, transparent);
352
- }
353
- }
354
-
355
- @keyframes generating-bg-pulse {
356
- 0%,
357
- 100% {
358
- background: radial-gradient(
359
- circle at 50% 50%,
360
- color-mix(in srgb, var(--color-brand, #ff7900) 5%, transparent) 0%,
361
- transparent 70%
362
- );
363
- }
364
- 50% {
365
- background: radial-gradient(
366
- circle at 50% 50%,
367
- color-mix(in srgb, var(--color-brand, #ff7900) 12%, transparent) 0%,
368
- transparent 70%
369
- );
370
- }
371
- }
372
-
373
- .generating-content {
374
- position: relative;
375
- z-index: 2;
376
- text-align: center;
377
- }
378
-
379
- .generating-shimmer {
380
- position: absolute;
381
- top: 0;
382
- left: -100%;
383
- width: 100%;
384
- height: 100%;
385
- background: linear-gradient(
386
- 90deg,
387
- transparent 0%,
388
- color-mix(in srgb, var(--color-brand, #ff7900) 15%, transparent) 50%,
389
- transparent 100%
390
- );
391
- animation: shimmer-sweep 2.5s ease-in-out infinite;
392
- pointer-events: none;
393
- z-index: 1;
394
- }
395
-
396
- @keyframes shimmer-sweep {
397
- 0% {
398
- left: -100%;
399
- }
400
- 100% {
401
- left: 100%;
402
- }
403
- }
404
-
405
- .generating-text {
406
- font-size: 1.125rem;
407
- font-weight: 600;
408
- color: var(--foreground, #ffffff);
409
- margin: 0;
410
- background: linear-gradient(
411
- 90deg,
412
- var(--foreground, #ffffff) 0%,
413
- var(--color-brand, #ff7900) 50%,
414
- var(--foreground, #ffffff) 100%
415
- );
416
- background-size: 200% 100%;
417
- background-clip: text;
418
- -webkit-background-clip: text;
419
- -webkit-text-fill-color: transparent;
420
- animation: text-shimmer-flow 2.5s ease-in-out infinite;
421
- position: relative;
422
- z-index: 2;
423
- letter-spacing: 0.02em;
424
- }
425
-
426
- @keyframes text-shimmer-flow {
427
- 0%,
428
- 100% {
429
- background-position: -200% 0;
430
- }
431
- 50% {
432
- background-position: 200% 0;
433
- }
434
- }
435
-
436
- /* Loading particles (for loading overlay) */
437
- .loading-particles {
438
- position: absolute;
439
- inset: 0;
440
- overflow: hidden;
441
- pointer-events: none;
442
- }
443
-
444
- .particle {
445
- position: absolute;
446
- width: 4px;
447
- height: 4px;
448
- border-radius: 50%;
449
- background: var(--color-brand, #ff7900);
450
- box-shadow: 0 0 6px var(--color-brand, #ff7900);
451
- animation: particle-float 4s ease-in-out infinite;
452
- }
453
-
454
- .particle:nth-child(1) {
455
- top: 10%;
456
- left: 20%;
457
- animation-delay: 0s;
458
- }
459
- .particle:nth-child(2) {
460
- top: 30%;
461
- left: 80%;
462
- animation-delay: 0.5s;
463
- }
464
- .particle:nth-child(3) {
465
- top: 70%;
466
- left: 30%;
467
- animation-delay: 1s;
468
- }
469
- .particle:nth-child(4) {
470
- top: 80%;
471
- left: 70%;
472
- animation-delay: 1.5s;
473
- }
474
- .particle:nth-child(5) {
475
- top: 20%;
476
- left: 50%;
477
- animation-delay: 0.3s;
478
- }
479
- .particle:nth-child(6) {
480
- top: 60%;
481
- left: 15%;
482
- animation-delay: 0.9s;
483
- }
484
- .particle:nth-child(7) {
485
- top: 50%;
486
- left: 90%;
487
- animation-delay: 1.8s;
488
- }
489
- .particle:nth-child(8) {
490
- top: 15%;
491
- left: 60%;
492
- animation-delay: 2.1s;
493
- }
494
-
495
- @keyframes particle-float {
496
- 0%,
497
- 100% {
498
- transform: translateY(0) translateX(0) scale(1);
499
- opacity: 0.3;
500
- }
501
- 25% {
502
- transform: translateY(-30px) translateX(20px) scale(1.2);
503
- opacity: 0.7;
504
- }
505
- 50% {
506
- transform: translateY(-60px) translateX(-10px) scale(0.8);
507
- opacity: 1;
508
- }
509
- 75% {
510
- transform: translateY(-30px) translateX(15px) scale(1.1);
511
- opacity: 0.6;
512
- }
513
- }
514
-
515
- .loading-content {
516
- position: relative;
517
- z-index: 2;
518
- display: flex;
519
- flex-direction: column;
520
- align-items: center;
521
- gap: 1.5rem;
522
- }
523
-
524
- .loading-spinner {
525
- width: 64px;
526
- height: 64px;
527
- position: relative;
528
- }
529
-
530
- .spinner-svg {
531
- width: 100%;
532
- height: 100%;
533
- animation: spinner-rotate 1.5s linear infinite;
534
- transform-origin: center;
535
- }
536
-
537
- .spinner-circle {
538
- stroke-dasharray: 125.6;
539
- stroke-dashoffset: 31.4;
540
- stroke: var(--color-brand, #ff7900);
541
- animation: spinner-dash 1.5s ease-in-out infinite;
542
- }
543
-
544
- @keyframes spinner-rotate {
545
- 0% {
546
- transform: rotate(0deg);
547
- }
548
- 100% {
549
- transform: rotate(360deg);
550
- }
551
- }
552
-
553
- @keyframes spinner-dash {
554
- 0% {
555
- stroke-dasharray: 1, 125.6;
556
- stroke-dashoffset: 0;
557
- }
558
- 50% {
559
- stroke-dasharray: 94.2, 125.6;
560
- stroke-dashoffset: -31.4;
561
- }
562
- 100% {
563
- stroke-dasharray: 94.2, 125.6;
564
- stroke-dashoffset: -125.6;
565
- }
566
- }
567
-
568
- .loading-text {
569
- text-align: center;
570
- }
571
-
572
- .loading-title {
573
- font-size: 1.25rem;
574
- font-weight: 600;
575
- color: var(--foreground, #ffffff);
576
- margin-bottom: 0.5rem;
577
- background: linear-gradient(
578
- 90deg,
579
- var(--foreground, #ffffff) 0%,
580
- var(--color-brand, #ff7900) 50%,
581
- var(--foreground, #ffffff) 100%
582
- );
583
- background-size: 200% 100%;
584
- background-clip: text;
585
- -webkit-background-clip: text;
586
- -webkit-text-fill-color: transparent;
587
- animation: text-shimmer 2s ease-in-out infinite;
588
- }
589
-
590
- .loading-subtitle {
591
- font-size: 0.875rem;
592
- color: var(--muted-foreground, #a1a1aa);
593
- margin: 0;
594
- }
595
-
596
- @keyframes text-shimmer {
597
- 0%,
598
- 100% {
599
- background-position: -200% 0;
600
- }
601
- 50% {
602
- background-position: 200% 0;
603
- }
604
- }
605
-
606
- .loading-wave {
607
- position: absolute;
608
- bottom: 0;
609
- left: 0;
610
- right: 0;
611
- height: 4px;
612
- background: linear-gradient(
613
- 90deg,
614
- transparent 0%,
615
- var(--color-brand, #ff7900) 25%,
616
- var(--color-brand, #ff7900) 75%,
617
- transparent 100%
618
- );
619
- background-size: 200% 100%;
620
- animation: wave-slide 2s ease-in-out infinite;
621
- }
622
-
623
- @keyframes wave-slide {
624
- 0% {
625
- background-position: -200% 0;
626
- }
627
- 100% {
628
- background-position: 200% 0;
629
- }
630
- }