osi-cards-lib 1.5.32 → 1.5.34

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 (87) hide show
  1. package/fesm2022/osi-cards-lib.mjs +31889 -0
  2. package/fesm2022/osi-cards-lib.mjs.map +1 -0
  3. package/index.d.ts +11528 -0
  4. package/package.json +25 -13
  5. package/scripts/setup-angular-styles.js +169 -0
  6. package/styles/_components.scss +38 -0
  7. package/styles/_index.scss +25 -0
  8. package/styles/_osi-cards-mixins.scss +459 -0
  9. package/styles/_osi-cards-tokens.scss +333 -0
  10. package/styles/_styles-scoped.scss +81 -0
  11. package/styles/_styles.scss +26 -0
  12. package/styles/bundles/_ai-card.scss +245 -0
  13. package/styles/bundles/_all.scss +68 -0
  14. package/styles/bundles/_base.scss +60 -0
  15. package/styles/bundles/_card-skeleton.scss +290 -0
  16. package/styles/bundles/_index.scss +25 -0
  17. package/styles/bundles/_sections.scss +48 -0
  18. package/styles/bundles/_tokens-only.scss +139 -0
  19. package/styles/components/_ai-card-renderer.scss +104 -0
  20. package/styles/components/_badges.scss +317 -0
  21. package/styles/components/_card-actions.scss +169 -0
  22. package/styles/components/_card-footer.scss +47 -0
  23. package/styles/components/_component-styles.scss +205 -0
  24. package/styles/components/_empty-state.scss +630 -0
  25. package/styles/components/_hero-card.scss +422 -0
  26. package/styles/components/_image-fallback.scss +28 -0
  27. package/styles/components/_streaming-effects.scss +518 -0
  28. package/styles/components/cards/_ai-card.scss +718 -0
  29. package/styles/components/sections/_all-sections.generated.scss +41 -0
  30. package/styles/components/sections/_all-sections.scss +1086 -0
  31. package/styles/components/sections/_balanced-compact-system.scss +186 -0
  32. package/styles/components/sections/_compact-mixins.scss +180 -0
  33. package/styles/components/sections/_component-mixins.scss +454 -0
  34. package/styles/components/sections/_design-system.scss +477 -0
  35. package/styles/components/sections/_design-tokens.scss +308 -0
  36. package/styles/components/sections/_enhanced-design-variables.scss +147 -0
  37. package/styles/components/sections/_master-compact-system.scss +302 -0
  38. package/styles/components/sections/_master-dense-system.scss +239 -0
  39. package/styles/components/sections/_minimalistic-design.scss +268 -0
  40. package/styles/components/sections/_modern-effects.scss +392 -0
  41. package/styles/components/sections/_modern-sections.scss +351 -0
  42. package/styles/components/sections/_perfect-system.scss +204 -0
  43. package/styles/components/sections/_section-animations.scss +331 -0
  44. package/styles/components/sections/_section-shell.scss +337 -0
  45. package/styles/components/sections/_section-types.generated.scss +30 -0
  46. package/styles/components/sections/_sections-all.scss +26 -0
  47. package/styles/components/sections/_sections-base.scss +334 -0
  48. package/styles/components/sections/_typography-system.scss +327 -0
  49. package/styles/components/sections/_ultra-compact-tokens.scss +375 -0
  50. package/styles/components/sections/_unified-section-style.scss +157 -0
  51. package/styles/components/sections/_utility-classes.scss +567 -0
  52. package/styles/components/sections/_visual-effects-library.scss +374 -0
  53. package/styles/core/_animations.scss +1498 -0
  54. package/styles/core/_bootstrap-reset.scss +445 -0
  55. package/styles/core/_color-helpers.scss +46 -0
  56. package/styles/core/_global-unified.scss +118 -0
  57. package/styles/core/_global.scss +73 -0
  58. package/styles/core/_mixins.scss +491 -0
  59. package/styles/core/_surface-layers.scss +76 -0
  60. package/styles/core/_utilities.scss +326 -0
  61. package/styles/core/_variables-unified.scss +57 -0
  62. package/styles/core/_variables.scss +36 -0
  63. package/styles/core/variables/_colors-source.scss +34 -0
  64. package/styles/core/variables/_colors-unified.scss +26 -0
  65. package/styles/core/variables/_colors.scss +21 -0
  66. package/styles/critical.scss +353 -0
  67. package/styles/design-system/_compact-theme.scss +159 -0
  68. package/styles/design-system/_section-base.scss +426 -0
  69. package/styles/design-system/_tokens.scss +237 -0
  70. package/styles/design-system/_unified-sections.scss +215 -0
  71. package/styles/layout/_feature-grid.scss +322 -0
  72. package/styles/layout/_masonry.scss +734 -0
  73. package/styles/layout/_tilt.scss +244 -0
  74. package/styles/micro-interactions.scss +583 -0
  75. package/styles/mixins/_section-mixins.scss +280 -0
  76. package/styles/non-critical.scss +643 -0
  77. package/styles/reset/_framework-reset.scss +457 -0
  78. package/styles/reset/_index.scss +14 -0
  79. package/styles/reset/_shadow-reset.scss +383 -0
  80. package/styles/responsive.scss +326 -0
  81. package/styles/themes.scss +573 -0
  82. package/styles/tokens/_index.scss +92 -0
  83. package/styles/tokens/_master.scss +1404 -0
  84. package/styles/tokens/_section-tokens.generated.scss +140 -0
  85. package/postcss.config.js +0 -81
  86. package/section-registry.json +0 -3864
  87. package/section-registry.schema.json +0 -264
@@ -0,0 +1,374 @@
1
+ // =====================================================================
2
+ // VISUAL EFFECTS LIBRARY - Reusable Card & Item Effects
3
+ // =====================================================================
4
+ // Beautiful, polished effects that sections can apply
5
+ // Extracted from best-looking sections (like analytics)
6
+
7
+ @use "design-tokens" as *;
8
+
9
+ // ═══════════════════════════════════════════════════════════════════
10
+ // CARD HOVER EFFECTS - Analytics-Style Polish
11
+ // ═══════════════════════════════════════════════════════════════════
12
+
13
+ // The beautiful analytics card effect (shadow + accent line)
14
+ @mixin analytics-card-effect {
15
+ position: relative;
16
+ transition:
17
+ box-shadow var(--duration-slow) var(--ease-out),
18
+ background var(--duration-slow) var(--ease-out);
19
+ cursor: default;
20
+
21
+ // Subtle gradient overlay for depth
22
+ &::before {
23
+ content: "";
24
+ position: absolute;
25
+ top: 0;
26
+ left: 0;
27
+ right: 0;
28
+ height: 2px;
29
+ background: linear-gradient(90deg, var(--accent) 0%, transparent 100%);
30
+ opacity: 0;
31
+ transition: opacity var(--duration-slow) var(--ease-out);
32
+ }
33
+
34
+ &:hover {
35
+ box-shadow: var(--shadow-xl);
36
+ background: var(--osi-section-item-background-hover);
37
+
38
+ &::before {
39
+ opacity: 1;
40
+ }
41
+ }
42
+
43
+ &:focus-visible {
44
+ outline: 2px solid var(--accent);
45
+ outline-offset: 2px;
46
+ }
47
+ }
48
+
49
+ // Enhanced shadow effect
50
+ @mixin card-scale-lift {
51
+ transition:
52
+ box-shadow var(--duration-base) var(--ease-out),
53
+ background var(--duration-base) var(--ease-out);
54
+
55
+ &:hover {
56
+ box-shadow: var(--shadow-lg);
57
+ background: var(--osi-section-item-background-hover);
58
+ }
59
+ }
60
+
61
+ // List item hover effect (background + shadow)
62
+ @mixin item-slide-right {
63
+ transition:
64
+ background var(--duration-base) var(--ease-out),
65
+ box-shadow var(--duration-base) var(--ease-out),
66
+ color var(--duration-base) var(--ease-out);
67
+
68
+ &:hover {
69
+ background: var(--surface-raised);
70
+ box-shadow: var(--shadow-sm);
71
+ color: var(--accent);
72
+ }
73
+ }
74
+
75
+ // Glow effect on hover
76
+ @mixin card-glow-hover {
77
+ transition: all 300ms var(--ease-out);
78
+
79
+ &:hover {
80
+ box-shadow:
81
+ var(--shadow-md),
82
+ 0 0 20px rgba(var(--accent-rgb, 255, 121, 0), 0.2);
83
+ border-color: var(--accent);
84
+ }
85
+ }
86
+
87
+ // ═══════════════════════════════════════════════════════════════════
88
+ // METRIC VALUE ANIMATIONS - Analytics-Style
89
+ // ═══════════════════════════════════════════════════════════════════
90
+
91
+ // The nice metric value scale effect
92
+ @mixin metric-value-effect {
93
+ transition: all 300ms var(--ease-out);
94
+
95
+ .metric-card:hover &,
96
+ .analytics-card:hover & {
97
+ transform: scale(1.05);
98
+ color: var(--accent);
99
+ }
100
+ }
101
+
102
+ // Number pulse effect
103
+ @mixin number-pulse-effect {
104
+ animation: numberPulse 2s ease-in-out infinite;
105
+
106
+ @keyframes numberPulse {
107
+ 0%,
108
+ 100% {
109
+ opacity: 1;
110
+ }
111
+ 50% {
112
+ opacity: 0.85;
113
+ }
114
+ }
115
+ }
116
+
117
+ // ═══════════════════════════════════════════════════════════════════
118
+ // PROGRESS BAR EFFECTS
119
+ // ═══════════════════════════════════════════════════════════════════
120
+
121
+ // Shimmer effect (from analytics)
122
+ @mixin progress-shimmer {
123
+ position: relative;
124
+ overflow: hidden;
125
+
126
+ &::after {
127
+ content: "";
128
+ position: absolute;
129
+ top: 0;
130
+ left: -100%;
131
+ width: 100%;
132
+ height: 100%;
133
+ background: linear-gradient(
134
+ 90deg,
135
+ transparent 0%,
136
+ rgba(255, 255, 255, 0.3) 50%,
137
+ transparent 100%
138
+ );
139
+ animation: shimmer 2s infinite;
140
+ }
141
+
142
+ @keyframes shimmer {
143
+ 0% {
144
+ left: -100%;
145
+ }
146
+ 100% {
147
+ left: 100%;
148
+ }
149
+ }
150
+ }
151
+
152
+ // Progress pulse on hover
153
+ @mixin progress-pulse-hover {
154
+ .metric-card:hover &,
155
+ .card:hover & {
156
+ animation: progressPulse 1s ease-in-out;
157
+ }
158
+
159
+ @keyframes progressPulse {
160
+ 0%,
161
+ 100% {
162
+ opacity: 1;
163
+ }
164
+ 50% {
165
+ opacity: 0.8;
166
+ }
167
+ }
168
+ }
169
+
170
+ // ═══════════════════════════════════════════════════════════════════
171
+ // ACCENT LINE EFFECTS
172
+ // ═══════════════════════════════════════════════════════════════════
173
+
174
+ // Animated top accent line (analytics style)
175
+ @mixin accent-line-top {
176
+ position: relative;
177
+
178
+ &::before {
179
+ content: "";
180
+ position: absolute;
181
+ top: 0;
182
+ left: 0;
183
+ right: 0;
184
+ height: 2px;
185
+ background: linear-gradient(90deg, var(--accent) 0%, transparent 100%);
186
+ opacity: 0;
187
+ transition: opacity 300ms var(--ease-out);
188
+ }
189
+
190
+ &:hover::before {
191
+ opacity: 1;
192
+ }
193
+ }
194
+
195
+ // Left accent border (quotations, highlights)
196
+ @mixin accent-line-left {
197
+ border-left: 3px solid var(--accent);
198
+ padding-left: calc(var(--osi-default-card-padding) - 3px);
199
+ }
200
+
201
+ // ═══════════════════════════════════════════════════════════════════
202
+ // TREND ANIMATIONS
203
+ // ═══════════════════════════════════════════════════════════════════
204
+
205
+ @mixin trend-bounce-animation {
206
+ .trend-icon,
207
+ .trend-arrow {
208
+ display: inline-block;
209
+ animation: trendBounce 1.5s ease-in-out infinite;
210
+ }
211
+
212
+ @keyframes trendBounce {
213
+ 0%,
214
+ 100% {
215
+ transform: translate3d(0, 0, 0);
216
+ }
217
+ 50% {
218
+ transform: translate3d(0, -2px, 0);
219
+ }
220
+ }
221
+
222
+ &:hover .trend-icon,
223
+ &:hover .trend-arrow {
224
+ animation-play-state: paused;
225
+ transform: scale(1.1);
226
+ }
227
+ }
228
+
229
+ // ═══════════════════════════════════════════════════════════════════
230
+ // ZEBRA STRIPING (for lists)
231
+ // ═══════════════════════════════════════════════════════════════════
232
+
233
+ @mixin zebra-striping {
234
+ &:nth-child(even) {
235
+ background: var(--surface-subtle);
236
+ }
237
+
238
+ &:hover {
239
+ background: var(--surface-raised);
240
+ }
241
+ }
242
+
243
+ // ═══════════════════════════════════════════════════════════════════
244
+ // GLASS MORPHISM EFFECT
245
+ // ═══════════════════════════════════════════════════════════════════
246
+
247
+ @mixin glass-card {
248
+ background: var(--glass-bg);
249
+ -webkit-backdrop-filter: blur(var(--blur-md));
250
+ backdrop-filter: blur(var(--blur-md));
251
+ border: 1px solid var(--glass-border);
252
+ box-shadow: var(--shadow-sm);
253
+
254
+ &:hover {
255
+ background: rgba(255, 255, 255, 0.12);
256
+ -webkit-backdrop-filter: blur(var(--blur-lg));
257
+ backdrop-filter: blur(var(--blur-lg));
258
+ box-shadow: var(--shadow-lg);
259
+ }
260
+ }
261
+
262
+ // ═══════════════════════════════════════════════════════════════════
263
+ // ICON ANIMATIONS
264
+ // ═══════════════════════════════════════════════════════════════════
265
+
266
+ @mixin icon-hover-scale {
267
+ .item-icon,
268
+ .card-icon {
269
+ transition: all 200ms var(--ease-out);
270
+ }
271
+
272
+ &:hover .item-icon,
273
+ &:hover .card-icon {
274
+ transform: scale(1.15);
275
+ color: var(--accent);
276
+ }
277
+ }
278
+
279
+ // ═══════════════════════════════════════════════════════════════════
280
+ // GRADIENT BACKGROUNDS
281
+ // ═══════════════════════════════════════════════════════════════════
282
+
283
+ @mixin gradient-background {
284
+ background: linear-gradient(135deg, var(--surface) 0%, var(--surface-raised) 100%);
285
+ }
286
+
287
+ @mixin gradient-hover {
288
+ &:hover {
289
+ background: linear-gradient(135deg, var(--surface-raised) 0%, var(--surface-hover) 100%);
290
+ }
291
+ }
292
+
293
+ // ═══════════════════════════════════════════════════════════════════
294
+ // FOCUS RING (Accessibility)
295
+ // ═══════════════════════════════════════════════════════════════════
296
+
297
+ @mixin focus-ring {
298
+ &:focus-visible {
299
+ outline: 2px solid var(--accent);
300
+ outline-offset: 2px;
301
+ border-radius: var(--radius-sm);
302
+ }
303
+ }
304
+
305
+ // ═══════════════════════════════════════════════════════════════════
306
+ // LOADING STATE EFFECT
307
+ // ═══════════════════════════════════════════════════════════════════
308
+
309
+ @mixin loading-shimmer {
310
+ position: relative;
311
+ overflow: hidden;
312
+
313
+ &::after {
314
+ content: "";
315
+ position: absolute;
316
+ inset: 0;
317
+ background: linear-gradient(
318
+ 90deg,
319
+ transparent 0%,
320
+ var(--osi-overlay-medium) 50%,
321
+ transparent 100%
322
+ );
323
+ transform: translateX(-100%);
324
+ animation: loadingShimmer 1.5s infinite;
325
+ }
326
+
327
+ @keyframes loadingShimmer {
328
+ 0% {
329
+ transform: translate3d(-100%, 0, 0);
330
+ }
331
+ 100% {
332
+ transform: translate3d(100%, 0, 0);
333
+ }
334
+ }
335
+ }
336
+
337
+ // ═══════════════════════════════════════════════════════════════════
338
+ // COMBINED EFFECTS - Pre-built Combinations
339
+ // ═══════════════════════════════════════════════════════════════════
340
+
341
+ // Premium card effect (analytics-style)
342
+ @mixin premium-card {
343
+ @include analytics-card-effect;
344
+ @include focus-ring;
345
+
346
+ // Additional polish
347
+ background: var(--osi-card-background);
348
+ border: var(--osi-card-border-width) solid var(--osi-card-border-color);
349
+ border-radius: var(--osi-card-border-radius);
350
+ padding: var(--osi-default-card-padding);
351
+ }
352
+
353
+ // Interactive list item
354
+ @mixin interactive-list-item {
355
+ @include item-slide-right;
356
+ @include zebra-striping;
357
+ @include focus-ring;
358
+
359
+ cursor: pointer;
360
+ border-radius: var(--radius-sm);
361
+ padding: var(--osi-default-card-padding);
362
+ }
363
+
364
+ // Feature card (gallery, products)
365
+ @mixin feature-card {
366
+ @include card-scale-lift;
367
+ @include accent-line-top;
368
+ @include focus-ring;
369
+
370
+ background: var(--osi-card-background);
371
+ border: var(--osi-card-border-width) solid var(--osi-card-border-color);
372
+ border-radius: var(--osi-card-border-radius);
373
+ padding: var(--osi-default-card-padding);
374
+ }