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,302 @@
1
+ // =====================================================================
2
+ // MASTER COMPACT SYSTEM - Intelligent Structure
3
+ // =====================================================================
4
+ //
5
+ // This isn't just about reducing padding - it's about SMART LAYOUT
6
+ // Horizontal when possible, vertical when needed, adaptive always
7
+ //
8
+ // =====================================================================
9
+
10
+ // =====================================================================
11
+ // CONSISTENT SPACING SYSTEM
12
+ // =====================================================================
13
+
14
+ :root {
15
+ // Base spacing scale (strictly enforced)
16
+ --compact-space-1: 2px; // Micro
17
+ --compact-space-2: 4px; // Tight
18
+ --compact-space-3: 6px; // Compact
19
+ --compact-space-4: 8px; // Standard
20
+ --compact-space-5: 10px; // Comfortable
21
+ --compact-space-6: 12px; // Spacious
22
+
23
+ // Component spacing (consistent application)
24
+ --compact-card-padding: 8px;
25
+ --compact-item-padding-y: 6px;
26
+ --compact-item-padding-x: 8px;
27
+ --compact-gap-tight: 4px;
28
+ --compact-gap-standard: 6px;
29
+ --compact-gap-comfortable: 8px;
30
+ }
31
+
32
+ // =====================================================================
33
+ // INTELLIGENT LAYOUT MIXINS
34
+ // =====================================================================
35
+
36
+ // Smart card that uses horizontal space wisely
37
+ @mixin smart-card-horizontal {
38
+ display: grid;
39
+ grid-template-columns: auto 1fr auto;
40
+ grid-template-rows: auto auto;
41
+ gap: var(--compact-gap-tight);
42
+ align-items: center;
43
+
44
+ // On narrow screens, switch to vertical
45
+ @media (max-width: 200px) {
46
+ grid-template-columns: 1fr;
47
+ grid-template-rows: auto;
48
+ }
49
+ }
50
+
51
+ // Metric card optimized for 200px width
52
+ @mixin metric-card-200px {
53
+ padding: var(--compact-card-padding);
54
+ display: grid;
55
+ grid-template-areas:
56
+ "label trend"
57
+ "value value"
58
+ "extra extra";
59
+ grid-template-columns: 1fr auto;
60
+ gap: var(--compact-gap-tight);
61
+ align-items: start;
62
+ min-height: 75px;
63
+
64
+ .label {
65
+ grid-area: label;
66
+ }
67
+ .trend {
68
+ grid-area: trend;
69
+ }
70
+ .value {
71
+ grid-area: value;
72
+ }
73
+ .extra {
74
+ grid-area: extra;
75
+ }
76
+ }
77
+
78
+ // List item optimized for 400px width
79
+ @mixin list-item-400px {
80
+ padding: var(--compact-item-padding-y) var(--compact-item-padding-x);
81
+ display: grid;
82
+ grid-template-columns: auto 1fr auto;
83
+ gap: var(--compact-gap-standard);
84
+ align-items: center;
85
+ min-height: 40px;
86
+ }
87
+
88
+ // Contact card optimized for vertical space
89
+ @mixin contact-card-compact {
90
+ padding: var(--compact-card-padding);
91
+ display: grid;
92
+ grid-template-areas:
93
+ "avatar"
94
+ "info"
95
+ "actions";
96
+ grid-template-rows: auto 1fr auto;
97
+ gap: var(--compact-gap-tight);
98
+ justify-items: center;
99
+ text-align: center;
100
+ }
101
+
102
+ // =====================================================================
103
+ // RESPONSIVE GRID SYSTEM
104
+ // =====================================================================
105
+
106
+ @mixin responsive-grid-200px {
107
+ display: grid;
108
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
109
+ gap: var(--compact-gap-comfortable);
110
+
111
+ @media (max-width: 640px) {
112
+ grid-template-columns: repeat(2, 1fr);
113
+ gap: var(--compact-gap-standard);
114
+ }
115
+
116
+ @media (max-width: 420px) {
117
+ grid-template-columns: 1fr;
118
+ }
119
+ }
120
+
121
+ @mixin responsive-list-400px {
122
+ display: flex;
123
+ flex-direction: column;
124
+ gap: 0;
125
+ min-width: 400px;
126
+
127
+ @media (max-width: 640px) {
128
+ min-width: 100%;
129
+ }
130
+ }
131
+
132
+ // =====================================================================
133
+ // CONSISTENT CARD STRUCTURE
134
+ // =====================================================================
135
+
136
+ @mixin base-card {
137
+ position: relative;
138
+ background: var(--card, #0c0c0c);
139
+ border: 1px solid rgba(255, 255, 255, 0.06);
140
+ border-radius: 8px;
141
+ transition: all 200ms ease-out;
142
+ box-sizing: border-box;
143
+
144
+ // Accent line (consistent across all cards)
145
+ &::before {
146
+ content: "";
147
+ position: absolute;
148
+ top: 0;
149
+ left: 0;
150
+ right: 0;
151
+ height: 1px;
152
+ background: var(--accent, #ff7900);
153
+ opacity: 0;
154
+ transition: opacity 200ms ease-out;
155
+ }
156
+
157
+ &:hover {
158
+ border-color: rgba(255, 255, 255, 0.12);
159
+ transform: translateY(-1px);
160
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
161
+
162
+ &::before {
163
+ opacity: 0.6;
164
+ }
165
+ }
166
+ }
167
+
168
+ @mixin base-list {
169
+ padding: var(--compact-space-2);
170
+ background: var(--card, #0c0c0c);
171
+ border: 1px solid rgba(255, 255, 255, 0.06);
172
+ border-radius: 8px;
173
+ box-sizing: border-box;
174
+ }
175
+
176
+ @mixin base-item {
177
+ padding: var(--compact-item-padding-y) var(--compact-item-padding-x);
178
+ border-radius: 4px;
179
+ transition: background 150ms ease-out;
180
+ box-sizing: border-box;
181
+
182
+ &:not(:last-child) {
183
+ border-bottom: 1px solid rgba(255, 255, 255, 0.04);
184
+ }
185
+
186
+ &:hover {
187
+ background: rgba(255, 255, 255, 0.02);
188
+ }
189
+ }
190
+
191
+ // =====================================================================
192
+ // TYPOGRAPHY - CONSISTENT SYSTEM
193
+ // =====================================================================
194
+
195
+ @mixin text-label-compact {
196
+ font-size: 0.6rem;
197
+ font-weight: 600;
198
+ letter-spacing: 0.05em;
199
+ text-transform: uppercase;
200
+ color: var(--muted-foreground, #999);
201
+ line-height: 1.1;
202
+ }
203
+
204
+ @mixin text-value-compact {
205
+ font-size: 1.1rem;
206
+ font-weight: 700;
207
+ font-variant-numeric: tabular-nums;
208
+ color: var(--foreground, #fff);
209
+ line-height: 1;
210
+ }
211
+
212
+ @mixin text-title-compact {
213
+ font-size: 0.75rem;
214
+ font-weight: 600;
215
+ color: var(--foreground, #fff);
216
+ line-height: 1.2;
217
+ }
218
+
219
+ @mixin text-body-compact {
220
+ font-size: 0.7rem;
221
+ font-weight: 400;
222
+ color: var(--muted-foreground, #999);
223
+ line-height: 1.3;
224
+ }
225
+
226
+ // =====================================================================
227
+ // REDUCED MOTION - CONSISTENT
228
+ // =====================================================================
229
+
230
+ @mixin reduced-motion-safe {
231
+ @media (prefers-reduced-motion: reduce) {
232
+ transition: none;
233
+ animation: none;
234
+
235
+ &:hover {
236
+ transform: none;
237
+ }
238
+ }
239
+ }
240
+
241
+ // =====================================================================
242
+ // VISUAL HIERARCHY - SMART SPACING
243
+ // =====================================================================
244
+
245
+ // Breathing room for visual appeal
246
+ @mixin visual-spacing {
247
+ // Not everything needs to be cramped
248
+ // Strategic spacing for visual hierarchy
249
+
250
+ > *:not(:first-child) {
251
+ margin-top: var(--compact-gap-tight);
252
+ }
253
+
254
+ .primary-content {
255
+ margin: var(--compact-gap-standard) 0;
256
+ }
257
+
258
+ .secondary-content {
259
+ margin-top: auto; // Push to bottom
260
+ }
261
+ }
262
+
263
+ // =====================================================================
264
+ // SMART TRUNCATION
265
+ // =====================================================================
266
+
267
+ @mixin smart-truncate($lines: 1) {
268
+ @if $lines == 1 {
269
+ white-space: nowrap;
270
+ overflow: hidden;
271
+ text-overflow: ellipsis;
272
+ } @else {
273
+ display: -webkit-box;
274
+ -webkit-line-clamp: $lines;
275
+ -webkit-box-orient: vertical;
276
+ overflow: hidden;
277
+ text-overflow: ellipsis;
278
+ }
279
+ }
280
+
281
+ // =====================================================================
282
+ // INTERACTIVE STATES - CONSISTENT
283
+ // =====================================================================
284
+
285
+ @mixin interactive-card {
286
+ cursor: pointer;
287
+
288
+ &:hover {
289
+ .accent-text {
290
+ color: var(--accent, #ff7900);
291
+ }
292
+ }
293
+
294
+ &:active {
295
+ transform: translateY(0);
296
+ }
297
+
298
+ &:focus-visible {
299
+ outline: 2px solid var(--accent, #ff7900);
300
+ outline-offset: 2px;
301
+ }
302
+ }
@@ -0,0 +1,239 @@
1
+ // =====================================================================
2
+ // MASTER DENSE SYSTEM - Final Consolidated Design Library
3
+ // =====================================================================
4
+ //
5
+ // Optimized typography, smart structures, adaptive layouts
6
+ // Each component preserves style while maximizing density
7
+ //
8
+ // =====================================================================
9
+
10
+ // =====================================================================
11
+ // CONSOLIDATED SPACING (Consistent across all sections)
12
+ // =====================================================================
13
+
14
+ :root {
15
+ // Standard spacing
16
+ --ds-space-2: 2px;
17
+ --ds-space-4: 4px;
18
+ --ds-space-6: 6px;
19
+ --ds-space-8: 8px;
20
+ --ds-space-10: 10px;
21
+ --ds-space-12: 12px;
22
+ --ds-space-14: 14px;
23
+ --ds-space-16: 16px;
24
+
25
+ // Component spacing (final standards)
26
+ --ds-card-padding: 14px 12px; // Slightly reduced
27
+ --ds-card-gap: 8px; // Tighter internal
28
+ --ds-item-padding: 10px 12px; // Good for lists
29
+ --ds-grid-gap: 12px; // Between cards
30
+ --ds-section-gap: 10px; // Section to content
31
+ }
32
+
33
+ // =====================================================================
34
+ // CONSOLIDATED TYPOGRAPHY (Reduced sizes, tight hierarchy)
35
+ // =====================================================================
36
+
37
+ :root {
38
+ // Reduced font scale
39
+ --ds-text-xs: 0.5625rem; // 9px - Tiny meta
40
+ --ds-text-sm: 0.625rem; // 10px - Labels
41
+ --ds-text-base: 0.6875rem; // 11px - Small body
42
+ --ds-text-md: 0.75rem; // 12px - Body text
43
+ --ds-text-lg: 0.8125rem; // 13px - Titles
44
+ --ds-text-xl: 0.875rem; // 14px - Large titles
45
+ --ds-text-2xl: 1rem; // 16px - Values
46
+ --ds-text-3xl: 1.125rem; // 18px - Large values
47
+ --ds-text-4xl: 1.25rem; // 20px - Metrics
48
+
49
+ // Tight line heights
50
+ --ds-leading-tight: 1;
51
+ --ds-leading-snug: 1.1;
52
+ --ds-leading-normal: 1.2;
53
+ --ds-leading-relaxed: 1.3;
54
+ --ds-leading-loose: 1.4;
55
+ }
56
+
57
+ // =====================================================================
58
+ // MASTER CARD MIXIN (Consolidated)
59
+ // =====================================================================
60
+
61
+ @mixin ds-card {
62
+ position: relative;
63
+ background: var(--surface);
64
+ border: 1px solid var(--border);
65
+ border-radius: var(--radius-md);
66
+ padding: var(--ds-card-padding);
67
+ display: flex;
68
+ flex-direction: column;
69
+ gap: var(--ds-card-gap);
70
+ transition: all 300ms var(--ease-out);
71
+
72
+ &::after {
73
+ content: "";
74
+ position: absolute;
75
+ bottom: 0;
76
+ left: 0;
77
+ right: 0;
78
+ height: 2px;
79
+ background: linear-gradient(90deg, var(--accent) 0%, transparent 100%);
80
+ opacity: 0;
81
+ transition: opacity 300ms var(--ease-out);
82
+ }
83
+
84
+ &:hover {
85
+ transform: translateY(-3px);
86
+ box-shadow: var(--shadow-lg);
87
+
88
+ &::after {
89
+ opacity: 0.8;
90
+ }
91
+ }
92
+ }
93
+
94
+ // =====================================================================
95
+ // MASTER LIST MIXINS (Consolidated)
96
+ // =====================================================================
97
+
98
+ @mixin ds-list {
99
+ background: var(--surface);
100
+ border: 1px solid var(--border);
101
+ border-radius: var(--radius-md);
102
+ padding: 8px 10px;
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: 0;
106
+ }
107
+
108
+ @mixin ds-item {
109
+ padding: var(--ds-item-padding);
110
+ border-radius: var(--radius-sm);
111
+ transition: all 200ms var(--ease-out);
112
+
113
+ &:not(:last-child) {
114
+ border-bottom: 1px solid var(--border);
115
+ }
116
+
117
+ &:hover {
118
+ background: var(--surface-raised);
119
+ }
120
+ }
121
+
122
+ // =====================================================================
123
+ // TYPOGRAPHY MIXINS (Consolidated & Reduced)
124
+ // =====================================================================
125
+
126
+ @mixin ds-label {
127
+ font-size: var(--ds-text-sm);
128
+ font-weight: 600;
129
+ letter-spacing: 0.05em;
130
+ text-transform: uppercase;
131
+ color: var(--muted-foreground);
132
+ line-height: var(--ds-leading-snug);
133
+ }
134
+
135
+ @mixin ds-title {
136
+ font-size: var(--ds-text-lg);
137
+ font-weight: 600;
138
+ color: var(--foreground);
139
+ line-height: var(--ds-leading-normal);
140
+ transition: color 200ms ease-out;
141
+ }
142
+
143
+ @mixin ds-body {
144
+ font-size: var(--ds-text-md);
145
+ font-weight: 400;
146
+ color: var(--muted-foreground);
147
+ line-height: var(--ds-leading-relaxed);
148
+ }
149
+
150
+ @mixin ds-value {
151
+ font-size: var(--ds-text-4xl);
152
+ font-weight: 700;
153
+ color: var(--foreground);
154
+ line-height: var(--ds-leading-tight);
155
+ font-variant-numeric: tabular-nums;
156
+ }
157
+
158
+ @mixin ds-meta {
159
+ font-size: var(--ds-text-base);
160
+ color: var(--muted-foreground);
161
+ opacity: 0.7;
162
+ line-height: var(--ds-leading-snug);
163
+ }
164
+
165
+ // =====================================================================
166
+ // GRID SYSTEMS (Responsive & Adaptive)
167
+ // =====================================================================
168
+
169
+ @mixin ds-grid-adaptive($min-width) {
170
+ display: grid;
171
+ grid-template-columns: repeat(auto-fit, minmax($min-width, 1fr));
172
+ gap: var(--ds-grid-gap);
173
+
174
+ @media (max-width: 768px) {
175
+ gap: 10px;
176
+ }
177
+
178
+ @media (max-width: 640px) {
179
+ grid-template-columns: repeat(2, 1fr);
180
+ gap: 8px;
181
+ }
182
+
183
+ @media (max-width: 420px) {
184
+ grid-template-columns: 1fr;
185
+ }
186
+ }
187
+
188
+ // =====================================================================
189
+ // OVERLAY SYSTEM (For max density)
190
+ // =====================================================================
191
+
192
+ @mixin ds-overlay-dark {
193
+ position: absolute;
194
+ bottom: 0;
195
+ left: 0;
196
+ right: 0;
197
+ padding: 8px 10px;
198
+ background: linear-gradient(
199
+ to top,
200
+ rgba(0, 0, 0, 0.88) 0%,
201
+ rgba(0, 0, 0, 0.65) 65%,
202
+ transparent 100%
203
+ );
204
+ -webkit-backdrop-filter: blur(6px);
205
+ backdrop-filter: blur(6px);
206
+ }
207
+
208
+ @mixin ds-text-overlay {
209
+ color: #fff;
210
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
211
+ line-height: var(--ds-leading-snug);
212
+ }
213
+
214
+ // =====================================================================
215
+ // UTILITIES
216
+ // =====================================================================
217
+
218
+ @mixin ds-truncate($lines: 1) {
219
+ @if $lines == 1 {
220
+ white-space: nowrap;
221
+ overflow: hidden;
222
+ text-overflow: ellipsis;
223
+ } @else {
224
+ display: -webkit-box;
225
+ -webkit-line-clamp: $lines;
226
+ -webkit-box-orient: vertical;
227
+ overflow: hidden;
228
+ }
229
+ }
230
+
231
+ @mixin ds-reduced-motion {
232
+ @media (prefers-reduced-motion: reduce) {
233
+ transition: none;
234
+ animation: none;
235
+ &:hover {
236
+ transform: none;
237
+ }
238
+ }
239
+ }