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,215 +0,0 @@
1
- // =====================================================================
2
- // UNIFIED SECTION STYLES - Compact, Responsive, Consistent
3
- // =====================================================================
4
- // Apply these styles to ALL sections for perfect consistency
5
-
6
- @use "./tokens" as *;
7
-
8
- // ═══════════════════════════════════════════════════════════════════
9
- // UNIVERSAL TYPOGRAPHY (Consistent across ALL sections)
10
- // ═══════════════════════════════════════════════════════════════════
11
-
12
- // Item titles (h4, h5, h6 in cards/items)
13
- @mixin unified-item-title {
14
- margin: 0;
15
- font-size: var(--osi-text-sm); // 14px - Consistent size
16
- font-weight: var(--osi-font-semibold); // 600
17
- line-height: var(--osi-leading-snug); // 1.375
18
- color: var(--osi-foreground);
19
-
20
- @include mobile {
21
- font-size: var(--osi-text-sm); // Keep same on mobile
22
- }
23
- }
24
-
25
- // Item labels (small uppercase text)
26
- @mixin unified-item-label {
27
- font-size: 0.7rem; // 11.2px - Compact
28
- font-weight: var(--osi-font-medium); // 500
29
- line-height: var(--osi-leading-tight); // 1.25
30
- color: var(--osi-muted-foreground);
31
- text-transform: uppercase;
32
- letter-spacing: 0.04em;
33
-
34
- @include mobile {
35
- font-size: 0.65rem; // 10.4px on mobile
36
- }
37
- }
38
-
39
- // Item values (prominent text/numbers)
40
- @mixin unified-item-value {
41
- font-size: var(--osi-text-sm); // 14px - Consistent
42
- font-weight: var(--osi-font-semibold); // 600
43
- line-height: var(--osi-leading-normal); // 1.5
44
- color: var(--osi-foreground);
45
-
46
- @include mobile {
47
- font-size: var(--osi-text-sm); // Keep same on mobile
48
- }
49
- }
50
-
51
- // Item descriptions (secondary text)
52
- @mixin unified-item-description {
53
- font-size: var(--osi-text-xs); // 12px
54
- font-weight: var(--osi-font-normal); // 400
55
- line-height: var(--osi-leading-relaxed); // 1.625
56
- color: var(--osi-muted-foreground);
57
-
58
- @include mobile {
59
- font-size: var(--osi-text-xs); // Keep same on mobile
60
- line-height: var(--osi-leading-normal); // Tighter on mobile
61
- }
62
- }
63
-
64
- // Number displays (metrics, analytics)
65
- @mixin unified-number-display {
66
- font-size: var(--osi-text-xl); // 24px - Compact (was 30px)
67
- font-weight: var(--osi-font-bold); // 700
68
- line-height: 1;
69
- letter-spacing: var(--osi-tracking-tight);
70
- font-variant-numeric: tabular-nums;
71
- color: var(--osi-foreground);
72
-
73
- @include mobile {
74
- font-size: var(--osi-text-lg); // 20px on mobile
75
- }
76
- }
77
-
78
- // ═══════════════════════════════════════════════════════════════════
79
- // COMPACT CARD STYLES
80
- // ═══════════════════════════════════════════════════════════════════
81
-
82
- @mixin unified-card-compact {
83
- padding: var(--osi-spacing-sm); // 8px
84
- border-radius: var(--osi-radius-sm); // 4px
85
- gap: var(--osi-spacing-xs); // 4px
86
- min-height: var(--osi-card-min-height); // 90px
87
-
88
- @include mobile {
89
- padding: var(--osi-spacing-xs); // 4px on mobile
90
- min-height: auto; // Remove min-height on mobile
91
- }
92
- }
93
-
94
- @mixin unified-item-compact {
95
- padding: var(--osi-spacing-sm); // 8px
96
- gap: var(--osi-spacing-xs); // 4px
97
-
98
- @include mobile {
99
- padding: var(--osi-spacing-xs); // 4px on mobile
100
- }
101
- }
102
-
103
- // ═══════════════════════════════════════════════════════════════════
104
- // COMPACT GRID LAYOUTS (Responsive)
105
- // ═══════════════════════════════════════════════════════════════════
106
-
107
- @mixin unified-grid-small-compact {
108
- display: grid;
109
- grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
110
- gap: var(--osi-spacing-sm); // 8px
111
-
112
- @include mobile {
113
- grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
114
- gap: var(--osi-spacing-xs); // 4px
115
- }
116
- }
117
-
118
- @mixin unified-grid-medium-compact {
119
- display: grid;
120
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
121
- gap: var(--osi-spacing-sm); // 8px
122
-
123
- @include mobile {
124
- grid-template-columns: 1fr;
125
- gap: var(--osi-spacing-xs); // 4px
126
- }
127
- }
128
-
129
- @mixin unified-list-compact {
130
- display: flex;
131
- flex-direction: column;
132
- gap: 0; // No gap for seamless items
133
-
134
- > * {
135
- border-bottom: 1px solid var(--osi-border-muted);
136
-
137
- &:last-child {
138
- border-bottom: none;
139
- }
140
- }
141
- }
142
-
143
- // ═══════════════════════════════════════════════════════════════════
144
- // UNIFIED RESPONSIVE BEHAVIOR
145
- // ═══════════════════════════════════════════════════════════════════
146
-
147
- // Apply consistent mobile behavior to all sections
148
- @mixin unified-mobile-behavior {
149
- @include mobile {
150
- // Reduce padding
151
- padding: var(--osi-spacing-xs);
152
-
153
- // Stack flex items
154
- &.flex-row {
155
- flex-direction: column;
156
- align-items: stretch;
157
- }
158
-
159
- // Reduce gaps
160
- gap: var(--osi-spacing-xs);
161
-
162
- // Full width buttons/actions
163
- .action-button,
164
- .contact-link,
165
- .news-link {
166
- width: 100%;
167
- text-align: center;
168
- }
169
- }
170
- }
171
-
172
- // ═══════════════════════════════════════════════════════════════════
173
- // UTILITY: Apply to Section Container
174
- // ═══════════════════════════════════════════════════════════════════
175
-
176
- @mixin apply-unified-section-styles {
177
- // Container
178
- display: flex;
179
- flex-direction: column;
180
- gap: var(--osi-section-header-gap);
181
-
182
- // Typography defaults
183
- .item-title,
184
- .metric-title,
185
- .contact-name,
186
- .event-title,
187
- .news-title,
188
- .product-title {
189
- @include unified-item-title;
190
- }
191
-
192
- .item-label,
193
- .metric-label,
194
- .field-label {
195
- @include unified-item-label;
196
- }
197
-
198
- .item-value,
199
- .field-value {
200
- @include unified-item-value;
201
- }
202
-
203
- .item-description,
204
- .field-description {
205
- @include unified-item-description;
206
- }
207
-
208
- .metric-value,
209
- .number-display {
210
- @include unified-number-display;
211
- }
212
-
213
- // Responsive
214
- @include unified-mobile-behavior;
215
- }
@@ -1,322 +0,0 @@
1
- // ============================================
2
- // FEATURE GRID LAYOUT
3
- // ============================================
4
- //
5
- // Simple responsive grid layouts as an alternative to masonry.
6
- // Provides Tailwind-like responsive grid classes without
7
- // requiring Tailwind CSS.
8
- //
9
- // Usage:
10
- // <div class="feature-grid feature-grid--3col">
11
- // <div class="feature-grid__item">...</div>
12
- // </div>
13
- //
14
- // Or use mixins:
15
- // @include feature-grid(3, 1.5rem);
16
- //
17
- // ============================================
18
-
19
- // ===================================================================
20
- // FEATURE GRID MIXINS
21
- // ===================================================================
22
-
23
- /// Create a responsive feature grid
24
- /// @param {Number} $columns - Maximum number of columns
25
- /// @param {Length} $gap - Gap between items (default: 1.5rem)
26
- /// @param {Length} $min-width - Minimum item width for auto-fit (default: 280px)
27
- @mixin feature-grid($columns: 3, $gap: 1.5rem, $min-width: 280px) {
28
- display: grid;
29
- gap: $gap;
30
- width: 100%;
31
-
32
- @if $columns == 2 {
33
- grid-template-columns: repeat(auto-fit, minmax(min(100%, $min-width), 1fr));
34
-
35
- @media (min-width: 768px) {
36
- grid-template-columns: repeat(2, 1fr);
37
- }
38
- } @else if $columns == 3 {
39
- grid-template-columns: 1fr;
40
-
41
- @media (min-width: 640px) {
42
- grid-template-columns: repeat(2, 1fr);
43
- }
44
-
45
- @media (min-width: 1024px) {
46
- grid-template-columns: repeat(3, 1fr);
47
- }
48
- } @else if $columns == 4 {
49
- grid-template-columns: 1fr;
50
-
51
- @media (min-width: 640px) {
52
- grid-template-columns: repeat(2, 1fr);
53
- }
54
-
55
- @media (min-width: 1024px) {
56
- grid-template-columns: repeat(3, 1fr);
57
- }
58
-
59
- @media (min-width: 1280px) {
60
- grid-template-columns: repeat(4, 1fr);
61
- }
62
- } @else {
63
- // Default auto-fit behavior
64
- grid-template-columns: repeat(auto-fit, minmax(min(100%, $min-width), 1fr));
65
- }
66
- }
67
-
68
- /// Auto-fit grid with minimum width constraint
69
- /// @param {Length} $min-width - Minimum column width
70
- /// @param {Length} $gap - Gap between items
71
- @mixin auto-fit-grid($min-width: 320px, $gap: 1.5rem) {
72
- display: grid;
73
- grid-template-columns: repeat(auto-fit, minmax(min(100%, $min-width), 1fr));
74
- gap: $gap;
75
- width: 100%;
76
- }
77
-
78
- // ===================================================================
79
- // FEATURE GRID BASE CLASSES
80
- // ===================================================================
81
-
82
- .feature-grid {
83
- display: grid;
84
- gap: var(--feature-grid-gap, 1.5rem);
85
- width: 100%;
86
-
87
- // Default: single column on mobile
88
- grid-template-columns: 1fr;
89
- }
90
-
91
- // ===================================================================
92
- // COLUMN VARIANTS
93
- // ===================================================================
94
-
95
- // 2-column grid
96
- .feature-grid--2col {
97
- @media (min-width: 640px) {
98
- grid-template-columns: repeat(2, 1fr);
99
- }
100
- }
101
-
102
- // 3-column grid (homepage features style)
103
- .feature-grid--3col {
104
- @media (min-width: 640px) {
105
- grid-template-columns: repeat(2, 1fr);
106
- }
107
-
108
- @media (min-width: 1024px) {
109
- grid-template-columns: repeat(3, 1fr);
110
- }
111
- }
112
-
113
- // 4-column grid
114
- .feature-grid--4col {
115
- @media (min-width: 640px) {
116
- grid-template-columns: repeat(2, 1fr);
117
- }
118
-
119
- @media (min-width: 1024px) {
120
- grid-template-columns: repeat(3, 1fr);
121
- }
122
-
123
- @media (min-width: 1280px) {
124
- grid-template-columns: repeat(4, 1fr);
125
- }
126
- }
127
-
128
- // Auto-fit with minimum width
129
- .feature-grid--auto {
130
- grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
131
- }
132
-
133
- .feature-grid--auto-lg {
134
- grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
135
- }
136
-
137
- .feature-grid--auto-sm {
138
- grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr));
139
- }
140
-
141
- // ===================================================================
142
- // GAP VARIANTS
143
- // ===================================================================
144
-
145
- .feature-grid--gap-sm {
146
- --feature-grid-gap: 0.75rem;
147
- gap: var(--feature-grid-gap);
148
- }
149
-
150
- .feature-grid--gap-md {
151
- --feature-grid-gap: 1rem;
152
- gap: var(--feature-grid-gap);
153
- }
154
-
155
- .feature-grid--gap-lg {
156
- --feature-grid-gap: 2rem;
157
- gap: var(--feature-grid-gap);
158
- }
159
-
160
- .feature-grid--gap-xl {
161
- --feature-grid-gap: 3rem;
162
- gap: var(--feature-grid-gap);
163
- }
164
-
165
- // ===================================================================
166
- // GRID ITEMS
167
- // ===================================================================
168
-
169
- .feature-grid__item {
170
- display: flex;
171
- flex-direction: column;
172
- min-width: 0; // Prevent overflow
173
- }
174
-
175
- // Span multiple columns
176
- .feature-grid__item--span-2 {
177
- grid-column: span 2;
178
-
179
- @media (max-width: 639px) {
180
- grid-column: span 1; // Reset on mobile
181
- }
182
- }
183
-
184
- .feature-grid__item--span-full {
185
- grid-column: 1 / -1;
186
- }
187
-
188
- // ===================================================================
189
- // HERO GRID LAYOUT
190
- // Specific layout matching homepage hero section
191
- // ===================================================================
192
-
193
- .hero-grid {
194
- display: grid;
195
- gap: 1rem;
196
- width: 100%;
197
-
198
- // Mobile: single column
199
- grid-template-columns: 1fr;
200
-
201
- // Tablet: 2 columns
202
- @media (min-width: 768px) {
203
- grid-template-columns: repeat(2, 1fr);
204
- gap: 1.5rem;
205
- }
206
-
207
- // Desktop: 3 columns
208
- @media (min-width: 1024px) {
209
- grid-template-columns: repeat(3, 1fr);
210
- }
211
- }
212
-
213
- // ===================================================================
214
- // CAPABILITIES GRID LAYOUT
215
- // Specific layout for capability cards section
216
- // ===================================================================
217
-
218
- .capabilities-grid {
219
- display: grid;
220
- gap: 1.5rem;
221
- width: 100%;
222
- grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
223
-
224
- @media (min-width: 1024px) {
225
- grid-template-columns: repeat(3, 1fr);
226
- }
227
- }
228
-
229
- // ===================================================================
230
- // FEATURES SECTION GRID
231
- // Specific layout for features section
232
- // ===================================================================
233
-
234
- .features-grid {
235
- display: grid;
236
- gap: 1.5rem;
237
- width: 100%;
238
-
239
- // Mobile: single column
240
- grid-template-columns: 1fr;
241
-
242
- // Small screens: 2 columns
243
- @media (min-width: 640px) {
244
- grid-template-columns: repeat(2, 1fr);
245
- gap: 2rem;
246
- }
247
-
248
- // Large screens: 3 columns
249
- @media (min-width: 1024px) {
250
- grid-template-columns: repeat(3, 1fr);
251
- }
252
- }
253
-
254
- // ===================================================================
255
- // DENSE PACKING
256
- // For grids that should fill gaps
257
- // ===================================================================
258
-
259
- .feature-grid--dense {
260
- grid-auto-flow: dense;
261
- }
262
-
263
- // ===================================================================
264
- // ALIGNMENT UTILITIES
265
- // ===================================================================
266
-
267
- .feature-grid--center {
268
- justify-items: center;
269
- }
270
-
271
- .feature-grid--stretch {
272
- align-items: stretch;
273
- }
274
-
275
- .feature-grid--start {
276
- align-items: start;
277
- }
278
-
279
- // ===================================================================
280
- // ANIMATION SUPPORT
281
- // Staggered entrance animations for grid items
282
- // ===================================================================
283
-
284
- .feature-grid--animated {
285
- .feature-grid__item {
286
- opacity: 0;
287
- animation: fadeInUp 0.6s ease-out forwards;
288
- }
289
-
290
- // Staggered delays
291
- @for $i from 1 through 12 {
292
- .feature-grid__item:nth-child(#{$i}) {
293
- animation-delay: #{($i - 1) * 0.08}s;
294
- }
295
- }
296
-
297
- @media (prefers-reduced-motion: reduce) {
298
- .feature-grid__item {
299
- opacity: 1;
300
- animation: none;
301
- }
302
- }
303
- }
304
-
305
- // ===================================================================
306
- // RESPONSIVE UTILITIES
307
- // Override columns at specific breakpoints
308
- // ===================================================================
309
-
310
- // Force single column on small screens
311
- @media (max-width: 639px) {
312
- .feature-grid--mobile-1col {
313
- grid-template-columns: 1fr !important;
314
- }
315
- }
316
-
317
- // Force 2 columns on tablets
318
- @media (min-width: 640px) and (max-width: 1023px) {
319
- .feature-grid--tablet-2col {
320
- grid-template-columns: repeat(2, 1fr) !important;
321
- }
322
- }