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,518 +0,0 @@
1
- /* ===================================================================
2
- STREAMING EFFECTS
3
- Magical visual effects for LLM streaming card generation
4
-
5
- IMPORTANT: These styles ONLY target sections that are actively
6
- animating (have the --animating class). Sections that have completed
7
- their entrance animation (have --animated class) are explicitly
8
- excluded to prevent continuous blinking.
9
- =================================================================== */
10
-
11
- /* ===================================================================
12
- CARD SURFACE STREAMING STATE
13
- Base container styles when streaming is active
14
- =================================================================== */
15
-
16
- .ai-card-surface.streaming-active {
17
- position: relative;
18
- border: 1px solid color-mix(in srgb, var(--color-brand) 40%, transparent);
19
- box-shadow:
20
- 0 0 10px rgba(255, 121, 0, 0.2),
21
- 0 0 20px rgba(255, 121, 0, 0.1);
22
- }
23
-
24
- /* Traveling spark - small glowing dot that travels around the border */
25
- .ai-card-surface.streaming-active::before {
26
- content: "";
27
- position: absolute;
28
- width: 3px;
29
- height: 3px;
30
- background: #ff9500;
31
- border-radius: 50%;
32
- box-shadow: 0 0 6px 1px rgba(255, 149, 0, 0.8);
33
- animation: sparkTravel 3s linear infinite;
34
- pointer-events: none;
35
- z-index: 10;
36
- }
37
-
38
- /* ===================================================================
39
- CONTENT STREAMING ANIMATIONS
40
- Smooth transitions for text and values during streaming
41
- =================================================================== */
42
-
43
- .ai-card-surface.streaming-active .field-value,
44
- .ai-card-surface.streaming-active .item-title,
45
- .ai-card-surface.streaming-active .item-description,
46
- .ai-card-surface.streaming-active .section-title,
47
- .ai-card-surface.streaming-active .section-description,
48
- .ai-card-surface.streaming-active [class*="value"],
49
- .ai-card-surface.streaming-active [class*="label"] {
50
- transition: all 0.2s ease-out;
51
- }
52
-
53
- /* Typing cursor effect - blinking cursor at end of streaming text */
54
- .ai-card-surface.streaming-active [class*="value"]:last-child::after,
55
- .ai-card-surface.streaming-active .field-value:last-child::after {
56
- content: "▋";
57
- display: inline-block;
58
- color: var(--color-brand, #ff7900);
59
- animation: cursorBlink 0.8s step-end infinite;
60
- margin-left: 2px;
61
- font-weight: normal;
62
- }
63
-
64
- /* ===================================================================
65
- STABILITY RULES - CRITICAL
66
- Ensure sections that have completed animation stay stable
67
- =================================================================== */
68
-
69
- /* STOP all animations on non-animating masonry items */
70
- .ai-card-surface.streaming-active .masonry-item:not(.masonry-item--animating) {
71
- animation: none !important;
72
- }
73
-
74
- .ai-card-surface.streaming-active .masonry-item:not(.masonry-item--animating)::after {
75
- animation: none !important;
76
- opacity: 0 !important;
77
- }
78
-
79
- /* Explicitly stop animations on animated (completed) items */
80
- .ai-card-surface.streaming-active .masonry-item--animated,
81
- .ai-card-surface.streaming-active .masonry-item--animated *,
82
- .ai-card-surface.streaming-active .masonry-item--animated::before,
83
- .ai-card-surface.streaming-active .masonry-item--animated::after,
84
- .ai-card-surface.streaming-active .masonry-item[data-animated="true"],
85
- .ai-card-surface.streaming-active .masonry-item[data-animated="true"] * {
86
- animation: none !important;
87
- opacity: 1 !important;
88
- transform: none !important;
89
- filter: none !important;
90
- }
91
-
92
- /* Remove pseudo-elements on completed sections */
93
- .ai-card-surface.streaming-active .masonry-item--animated::after,
94
- .ai-card-surface.streaming-active .masonry-item[data-animated="true"]::after {
95
- display: none !important;
96
- }
97
-
98
- /* ===================================================================
99
- SECTION CARD STREAMING EFFECTS
100
- Glow effects ONLY on ANIMATING section cards - ONE-SHOT only
101
- =================================================================== */
102
-
103
- /* Only animating sections get the glow effect - ONE iteration, not infinite */
104
- .ai-card-surface.streaming-active .masonry-item--animating .section-card,
105
- .ai-card-surface.streaming-active .masonry-item--animating [class*="section-"] > div {
106
- border-color: rgba(255, 121, 0, 0.3) !important;
107
- box-shadow: 0 0 15px rgba(255, 121, 0, 0.25);
108
- animation: sectionGlowPulse 0.8s ease-out forwards;
109
- animation-iteration-count: 1;
110
- }
111
-
112
- .ai-card-surface.streaming-active .masonry-item--animating .section-card:hover {
113
- border-color: rgba(255, 121, 0, 0.6) !important;
114
- box-shadow: 0 0 25px rgba(255, 121, 0, 0.4);
115
- }
116
-
117
- /* Inner glow flash - ONE-SHOT only, no infinite pulse */
118
- .ai-card-surface.streaming-active .masonry-item--animating .section-card {
119
- animation: innerFlash 0.6s ease-out forwards;
120
- animation-iteration-count: 1;
121
- }
122
-
123
- /* Subtle inner border glow - ONE-SHOT only */
124
- .ai-card-surface.streaming-active .masonry-item--animating .section-card::before {
125
- content: "";
126
- position: absolute;
127
- inset: 0;
128
- border-radius: inherit;
129
- box-shadow: inset 0 0 0 1px rgba(255, 121, 0, 0.15);
130
- pointer-events: none;
131
- animation: innerBorderPulse 0.8s ease-out forwards;
132
- animation-iteration-count: 1;
133
- }
134
-
135
- /* Stop effects on completed sections */
136
- .ai-card-surface.streaming-active .masonry-item--animated .section-card,
137
- .ai-card-surface.streaming-active .masonry-item--animated [class*="section-"] > div,
138
- .ai-card-surface.streaming-active .masonry-item[data-animated="true"] .section-card {
139
- animation: none !important;
140
- box-shadow: none !important;
141
- border-color: rgba(255, 121, 0, 0.15) !important;
142
- }
143
-
144
- .ai-card-surface.streaming-active .masonry-item--animated .section-card::before,
145
- .ai-card-surface.streaming-active .masonry-item[data-animated="true"] .section-card::before {
146
- animation: none !important;
147
- box-shadow: none !important;
148
- }
149
-
150
- /* ===================================================================
151
- MASONRY ITEM STREAMING EFFECTS
152
- Magical entrance animations ONLY for ANIMATING grid items
153
- =================================================================== */
154
-
155
- /* Magical section entrance - ONLY for animating items */
156
- .ai-card-surface.streaming-active .masonry-item--animating {
157
- animation: sectionMagicAppear 0.7s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
158
- animation-iteration-count: 1;
159
- position: relative;
160
- overflow: hidden;
161
- }
162
-
163
- /* Staggered entrance delays for cascade effect - ONLY animating items */
164
- .ai-card-surface.streaming-active .masonry-item--animating:nth-child(1) {
165
- animation-delay: 0ms;
166
- }
167
- .ai-card-surface.streaming-active .masonry-item--animating:nth-child(2) {
168
- animation-delay: 80ms;
169
- }
170
- .ai-card-surface.streaming-active .masonry-item--animating:nth-child(3) {
171
- animation-delay: 160ms;
172
- }
173
- .ai-card-surface.streaming-active .masonry-item--animating:nth-child(4) {
174
- animation-delay: 240ms;
175
- }
176
- .ai-card-surface.streaming-active .masonry-item--animating:nth-child(5) {
177
- animation-delay: 320ms;
178
- }
179
- .ai-card-surface.streaming-active .masonry-item--animating:nth-child(6) {
180
- animation-delay: 400ms;
181
- }
182
- .ai-card-surface.streaming-active .masonry-item--animating:nth-child(7) {
183
- animation-delay: 480ms;
184
- }
185
- .ai-card-surface.streaming-active .masonry-item--animating:nth-child(8) {
186
- animation-delay: 560ms;
187
- }
188
-
189
- /* Shimmer sweep effect - ONLY on animating sections */
190
- .ai-card-surface.streaming-active .masonry-item--animating::after {
191
- content: "";
192
- position: absolute;
193
- inset: 0;
194
- background: linear-gradient(
195
- 110deg,
196
- transparent 30%,
197
- rgba(255, 149, 0, 0.15) 50%,
198
- transparent 70%
199
- );
200
- animation: shimmerSweep 0.8s ease-out forwards;
201
- animation-iteration-count: 1;
202
- pointer-events: none;
203
- border-radius: inherit;
204
- }
205
-
206
- /* ===================================================================
207
- FIELD AND ITEM STREAMING ANIMATIONS
208
- Staggered entrance ONLY for elements inside ANIMATING sections
209
- =================================================================== */
210
-
211
- .ai-card-surface.streaming-active
212
- .masonry-item--animating
213
- :where(
214
- .info-row,
215
- .section-card,
216
- .list-card,
217
- .event-timeline__item,
218
- .product-card,
219
- .solutions-card,
220
- .contact-card,
221
- .network-card__item,
222
- .map-point,
223
- .text-reference-entry,
224
- .quote-card,
225
- .overview-card__item
226
- ) {
227
- opacity: 0;
228
- transform: translateY(12px);
229
- animation: fieldEnterBounce 0.45s ease forwards;
230
- animation-iteration-count: 1;
231
- will-change: opacity, transform;
232
- }
233
-
234
- /* Staggered animation delays - ONLY inside animating sections */
235
- .ai-card-surface.streaming-active
236
- .masonry-item--animating
237
- :where(
238
- .info-row,
239
- .section-card,
240
- .list-card,
241
- .event-timeline__item,
242
- .product-card,
243
- .solutions-card,
244
- .contact-card,
245
- .network-card__item,
246
- .map-point,
247
- .text-reference-entry,
248
- .quote-card,
249
- .overview-card__item
250
- ):nth-child(1) {
251
- animation-delay: 0s;
252
- }
253
-
254
- .ai-card-surface.streaming-active
255
- .masonry-item--animating
256
- :where(
257
- .info-row,
258
- .section-card,
259
- .list-card,
260
- .event-timeline__item,
261
- .product-card,
262
- .solutions-card,
263
- .contact-card,
264
- .network-card__item,
265
- .map-point,
266
- .text-reference-entry,
267
- .quote-card,
268
- .overview-card__item
269
- ):nth-child(2) {
270
- animation-delay: 0.05s;
271
- }
272
-
273
- .ai-card-surface.streaming-active
274
- .masonry-item--animating
275
- :where(
276
- .info-row,
277
- .section-card,
278
- .list-card,
279
- .event-timeline__item,
280
- .product-card,
281
- .solutions-card,
282
- .contact-card,
283
- .network-card__item,
284
- .map-point,
285
- .text-reference-entry,
286
- .quote-card,
287
- .overview-card__item
288
- ):nth-child(3) {
289
- animation-delay: 0.1s;
290
- }
291
-
292
- .ai-card-surface.streaming-active
293
- .masonry-item--animating
294
- :where(
295
- .info-row,
296
- .section-card,
297
- .list-card,
298
- .event-timeline__item,
299
- .product-card,
300
- .solutions-card,
301
- .contact-card,
302
- .network-card__item,
303
- .map-point,
304
- .text-reference-entry,
305
- .quote-card,
306
- .overview-card__item
307
- ):nth-child(4) {
308
- animation-delay: 0.15s;
309
- }
310
-
311
- .ai-card-surface.streaming-active
312
- .masonry-item--animating
313
- :where(
314
- .info-row,
315
- .section-card,
316
- .list-card,
317
- .event-timeline__item,
318
- .product-card,
319
- .solutions-card,
320
- .contact-card,
321
- .network-card__item,
322
- .map-point,
323
- .text-reference-entry,
324
- .quote-card,
325
- .overview-card__item
326
- ):nth-child(5) {
327
- animation-delay: 0.2s;
328
- }
329
-
330
- .ai-card-surface.streaming-active
331
- .masonry-item--animating
332
- :where(
333
- .info-row,
334
- .section-card,
335
- .list-card,
336
- .event-timeline__item,
337
- .product-card,
338
- .solutions-card,
339
- .contact-card,
340
- .network-card__item,
341
- .map-point,
342
- .text-reference-entry,
343
- .quote-card,
344
- .overview-card__item
345
- ):nth-child(n + 6) {
346
- animation-delay: 0.24s;
347
- }
348
-
349
- /* Ensure animated section content is stable */
350
- .ai-card-surface.streaming-active
351
- .masonry-item--animated
352
- :where(
353
- .info-row,
354
- .section-card,
355
- .list-card,
356
- .event-timeline__item,
357
- .product-card,
358
- .solutions-card,
359
- .contact-card,
360
- .network-card__item,
361
- .map-point,
362
- .text-reference-entry,
363
- .quote-card,
364
- .overview-card__item
365
- ) {
366
- animation: none !important;
367
- opacity: 1 !important;
368
- transform: none !important;
369
- }
370
-
371
- /* ===================================================================
372
- STREAMING CARD BORDER GLOW
373
- Glowing border effect during streaming
374
- =================================================================== */
375
-
376
- .streaming-border-glow {
377
- position: relative;
378
- border: 1px solid color-mix(in srgb, var(--color-brand, #ff7900) 40%, transparent);
379
- box-shadow:
380
- 0 0 10px color-mix(in srgb, var(--color-brand, #ff7900) 20%, transparent),
381
- 0 0 20px color-mix(in srgb, var(--color-brand, #ff7900) 10%, transparent);
382
-
383
- /* Traveling spark */
384
- &::before {
385
- content: "";
386
- position: absolute;
387
- width: 3px;
388
- height: 3px;
389
- background: var(--color-brand, #ff7900);
390
- border-radius: 50%;
391
- box-shadow: 0 0 6px 1px color-mix(in srgb, var(--color-brand, #ff7900) 80%, transparent);
392
- animation: sparkTravel 3s linear infinite;
393
- pointer-events: none;
394
- z-index: 10;
395
- }
396
- }
397
-
398
- /* ===================================================================
399
- TYPING CURSOR EFFECT
400
- Blinking cursor for streaming text
401
- =================================================================== */
402
-
403
- .typing-cursor::after {
404
- content: "▋";
405
- display: inline-block;
406
- color: var(--color-brand, #ff7900);
407
- animation: cursorBlink 0.8s step-end infinite;
408
- margin-left: 2px;
409
- font-weight: normal;
410
- }
411
-
412
- /* ===================================================================
413
- SECTION HIGHLIGHT EFFECT
414
- For URL fragment scrolling and attention
415
- =================================================================== */
416
-
417
- .section-highlight {
418
- animation: sectionPulse 2s ease-out;
419
- position: relative;
420
- }
421
-
422
- .section-highlight::after {
423
- content: "";
424
- position: absolute;
425
- inset: -4px;
426
- border: 2px solid color-mix(in srgb, var(--color-brand, #ff7900) 60%, transparent);
427
- border-radius: var(--card-border-radius, 14px);
428
- pointer-events: none;
429
- animation: sectionBorderFade 2s ease-out forwards;
430
- }
431
-
432
- /* ===================================================================
433
- NEW SECTION GLOW EFFECT
434
- For newly added streaming sections
435
- =================================================================== */
436
-
437
- .new-section-glow {
438
- border-color: color-mix(in srgb, var(--color-brand, #ff7900) 40%, transparent);
439
- box-shadow: 0 0 15px color-mix(in srgb, var(--color-brand, #ff7900) 25%, transparent);
440
- animation: newSectionGlow 0.6s ease-out forwards;
441
- }
442
-
443
- /* ===================================================================
444
- SHIMMER TEXT EFFECT
445
- Gradient shimmer on text during generation
446
- =================================================================== */
447
-
448
- .shimmer-text {
449
- background: linear-gradient(
450
- 90deg,
451
- var(--foreground, #ffffff) 0%,
452
- var(--color-brand, #ff7900) 50%,
453
- var(--foreground, #ffffff) 100%
454
- );
455
- background-size: 200% 100%;
456
- background-clip: text;
457
- -webkit-background-clip: text;
458
- -webkit-text-fill-color: transparent;
459
- animation: textShimmer 2s ease-in-out infinite;
460
- }
461
-
462
- /* ===================================================================
463
- WAVE PROGRESS INDICATOR
464
- Sliding wave effect for progress indication
465
- =================================================================== */
466
-
467
- .wave-progress {
468
- position: absolute;
469
- bottom: 0;
470
- left: 0;
471
- right: 0;
472
- height: 4px;
473
- background: linear-gradient(
474
- 90deg,
475
- transparent 0%,
476
- var(--color-brand, #ff7900) 25%,
477
- var(--color-brand, #ff7900) 75%,
478
- transparent 100%
479
- );
480
- background-size: 200% 100%;
481
- animation: waveSlide 2s ease-in-out infinite;
482
- }
483
-
484
- /* ===================================================================
485
- REDUCED MOTION SUPPORT
486
- Respect user preferences for reduced motion
487
- =================================================================== */
488
-
489
- @media (prefers-reduced-motion: reduce) {
490
- .ai-card-surface.streaming-active,
491
- .ai-card-surface.streaming-active::before,
492
- .ai-card-surface.streaming-active::after,
493
- .ai-card-surface.streaming-active *,
494
- .streaming-border-glow,
495
- .streaming-border-glow::before,
496
- .typing-cursor::after,
497
- .section-highlight,
498
- .section-highlight::after,
499
- .new-section-glow,
500
- .shimmer-text,
501
- .wave-progress {
502
- animation: none !important;
503
- transition: none !important;
504
- }
505
-
506
- /* Remove typing cursor */
507
- .ai-card-surface.streaming-active [class*="value"]:last-child::after,
508
- .ai-card-surface.streaming-active .field-value:last-child::after,
509
- .typing-cursor::after {
510
- content: none !important;
511
- }
512
-
513
- /* Restore text fill */
514
- .shimmer-text {
515
- background: none !important;
516
- -webkit-text-fill-color: currentColor !important;
517
- }
518
- }