osi-cards-lib 1.0.0

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 (114) hide show
  1. package/README.md +763 -0
  2. package/esm2022/lib/components/ai-card-renderer/ai-card-renderer.component.mjs +911 -0
  3. package/esm2022/lib/components/card-preview/card-preview.component.mjs +74 -0
  4. package/esm2022/lib/components/card-skeleton/card-skeleton.component.mjs +24 -0
  5. package/esm2022/lib/components/masonry-grid/masonry-grid.component.mjs +330 -0
  6. package/esm2022/lib/components/section-renderer/section-renderer.component.mjs +166 -0
  7. package/esm2022/lib/components/sections/analytics-section/analytics-section.component.mjs +70 -0
  8. package/esm2022/lib/components/sections/base-section.component.mjs +335 -0
  9. package/esm2022/lib/components/sections/brand-colors-section/brand-colors-section.component.mjs +89 -0
  10. package/esm2022/lib/components/sections/chart-section/chart-section.component.mjs +92 -0
  11. package/esm2022/lib/components/sections/contact-card-section/contact-card-section.component.mjs +70 -0
  12. package/esm2022/lib/components/sections/event-section/event-section.component.mjs +32 -0
  13. package/esm2022/lib/components/sections/fallback-section/fallback-section.component.mjs +16 -0
  14. package/esm2022/lib/components/sections/financials-section/financials-section.component.mjs +53 -0
  15. package/esm2022/lib/components/sections/info-section.component.mjs +68 -0
  16. package/esm2022/lib/components/sections/list-section/list-section.component.mjs +36 -0
  17. package/esm2022/lib/components/sections/map-section/map-section.component.mjs +52 -0
  18. package/esm2022/lib/components/sections/network-card-section/network-card-section.component.mjs +41 -0
  19. package/esm2022/lib/components/sections/news-section/news-section.component.mjs +44 -0
  20. package/esm2022/lib/components/sections/overview-section/overview-section.component.mjs +47 -0
  21. package/esm2022/lib/components/sections/product-section/product-section.component.mjs +129 -0
  22. package/esm2022/lib/components/sections/quotation-section/quotation-section.component.mjs +39 -0
  23. package/esm2022/lib/components/sections/social-media-section/social-media-section.component.mjs +45 -0
  24. package/esm2022/lib/components/sections/solutions-section/solutions-section.component.mjs +29 -0
  25. package/esm2022/lib/components/sections/text-reference-section/text-reference-section.component.mjs +42 -0
  26. package/esm2022/lib/icons/index.mjs +2 -0
  27. package/esm2022/lib/icons/lucide-icons.module.mjs +91 -0
  28. package/esm2022/lib/models/card.model.mjs +111 -0
  29. package/esm2022/lib/models/index.mjs +2 -0
  30. package/esm2022/lib/services/icon.service.mjs +148 -0
  31. package/esm2022/lib/services/index.mjs +5 -0
  32. package/esm2022/lib/services/magnetic-tilt.service.mjs +224 -0
  33. package/esm2022/lib/services/section-normalization.service.mjs +243 -0
  34. package/esm2022/lib/services/section-utils.service.mjs +122 -0
  35. package/esm2022/lib/utils/card-diff.util.mjs +327 -0
  36. package/esm2022/lib/utils/index.mjs +3 -0
  37. package/esm2022/lib/utils/responsive.util.mjs +14 -0
  38. package/esm2022/osi-cards-lib.mjs +5 -0
  39. package/esm2022/public-api.mjs +57 -0
  40. package/fesm2022/osi-cards-lib.mjs +3960 -0
  41. package/index.d.ts +5 -0
  42. package/lib/components/ai-card-renderer/ai-card-renderer.component.d.ts +163 -0
  43. package/lib/components/card-preview/card-preview.component.d.ts +52 -0
  44. package/lib/components/card-skeleton/card-skeleton.component.d.ts +8 -0
  45. package/lib/components/masonry-grid/masonry-grid.component.d.ts +72 -0
  46. package/lib/components/section-renderer/section-renderer.component.d.ts +25 -0
  47. package/lib/components/sections/analytics-section/analytics-section.component.d.ts +32 -0
  48. package/lib/components/sections/base-section.component.d.ts +138 -0
  49. package/lib/components/sections/brand-colors-section/brand-colors-section.component.d.ts +28 -0
  50. package/lib/components/sections/chart-section/chart-section.component.d.ts +30 -0
  51. package/lib/components/sections/contact-card-section/contact-card-section.component.d.ts +35 -0
  52. package/lib/components/sections/event-section/event-section.component.d.ts +17 -0
  53. package/lib/components/sections/fallback-section/fallback-section.component.d.ts +7 -0
  54. package/lib/components/sections/financials-section/financials-section.component.d.ts +27 -0
  55. package/lib/components/sections/info-section.component.d.ts +33 -0
  56. package/lib/components/sections/list-section/list-section.component.d.ts +21 -0
  57. package/lib/components/sections/map-section/map-section.component.d.ts +22 -0
  58. package/lib/components/sections/network-card-section/network-card-section.component.d.ts +18 -0
  59. package/lib/components/sections/news-section/news-section.component.d.ts +16 -0
  60. package/lib/components/sections/overview-section/overview-section.component.d.ts +19 -0
  61. package/lib/components/sections/product-section/product-section.component.d.ts +57 -0
  62. package/lib/components/sections/quotation-section/quotation-section.component.d.ts +23 -0
  63. package/lib/components/sections/social-media-section/social-media-section.component.d.ts +11 -0
  64. package/lib/components/sections/solutions-section/solutions-section.component.d.ts +19 -0
  65. package/lib/components/sections/text-reference-section/text-reference-section.component.d.ts +25 -0
  66. package/lib/icons/index.d.ts +1 -0
  67. package/lib/icons/lucide-icons.module.d.ts +7 -0
  68. package/lib/models/card.model.d.ts +289 -0
  69. package/lib/models/index.d.ts +1 -0
  70. package/lib/services/icon.service.d.ts +9 -0
  71. package/lib/services/index.d.ts +4 -0
  72. package/lib/services/magnetic-tilt.service.d.ts +34 -0
  73. package/lib/services/section-normalization.service.d.ts +38 -0
  74. package/lib/services/section-utils.service.d.ts +46 -0
  75. package/lib/utils/card-diff.util.d.ts +52 -0
  76. package/lib/utils/index.d.ts +2 -0
  77. package/lib/utils/responsive.util.d.ts +2 -0
  78. package/package.json +63 -0
  79. package/public-api.d.ts +50 -0
  80. package/styles/_styles.scss +95 -0
  81. package/styles/components/cards/_ai-card.scss +743 -0
  82. package/styles/components/sections/_analytics.scss +280 -0
  83. package/styles/components/sections/_brand-colors.scss +280 -0
  84. package/styles/components/sections/_chart.scss +494 -0
  85. package/styles/components/sections/_contact.scss +250 -0
  86. package/styles/components/sections/_design-system.scss +540 -0
  87. package/styles/components/sections/_event.scss +246 -0
  88. package/styles/components/sections/_fallback.scss +172 -0
  89. package/styles/components/sections/_financials.scss +258 -0
  90. package/styles/components/sections/_global-enforcement.scss +648 -0
  91. package/styles/components/sections/_info.scss +224 -0
  92. package/styles/components/sections/_list.scss +216 -0
  93. package/styles/components/sections/_map.scss +186 -0
  94. package/styles/components/sections/_network.scss +115 -0
  95. package/styles/components/sections/_news.scss +81 -0
  96. package/styles/components/sections/_overview.scss +159 -0
  97. package/styles/components/sections/_product.scss +906 -0
  98. package/styles/components/sections/_quotation.scss +151 -0
  99. package/styles/components/sections/_section-shell.scss +385 -0
  100. package/styles/components/sections/_section-types.scss +290 -0
  101. package/styles/components/sections/_sections-base.scss +332 -0
  102. package/styles/components/sections/_social-media.scss +88 -0
  103. package/styles/components/sections/_solutions.scss +205 -0
  104. package/styles/components/sections/_text-reference.scss +158 -0
  105. package/styles/components/sections/_unified-cards.scss +124 -0
  106. package/styles/core/_animations.scss +766 -0
  107. package/styles/core/_global.scss +66 -0
  108. package/styles/core/_mixins.scss +140 -0
  109. package/styles/core/_surface-layers.scss +76 -0
  110. package/styles/core/_utilities.scss +193 -0
  111. package/styles/core/_variables.scss +462 -0
  112. package/styles/core/variables/_colors.scss +212 -0
  113. package/styles/layout/_masonry.scss +60 -0
  114. package/styles/layout/_tilt.scss +214 -0
@@ -0,0 +1,250 @@
1
+ /* Contact Section - Modern, Clean Design */
2
+
3
+ @import 'sections/sections-base';
4
+ @import 'unified-cards';
5
+
6
+ /* Contact Grid Layout */
7
+ .contact-grid {
8
+ display: grid;
9
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
10
+ gap: var(--section-card-gap) !important;
11
+ width: 100%;
12
+
13
+ @media (max-width: 820px) {
14
+ grid-template-columns: 1fr !important;
15
+ }
16
+ }
17
+
18
+ /* Contact Card */
19
+ .contact-card {
20
+ @include card;
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: var(--card-gap) !important;
24
+ min-height: auto;
25
+ cursor: pointer;
26
+ padding: var(--card-padding) !important;
27
+ transition: all 0.22s cubic-bezier(0.4, 0, 0.2, 1);
28
+ background: var(--card-background);
29
+ position: relative;
30
+ overflow: hidden;
31
+
32
+ /* Subtle top accent border for executives */
33
+ &::before {
34
+ content: '';
35
+ position: absolute;
36
+ top: 0;
37
+ left: 0;
38
+ right: 0;
39
+ height: 2px;
40
+ background: var(--color-brand);
41
+ opacity: 0;
42
+ transition: opacity 0.22s ease;
43
+ }
44
+
45
+ /* Minimalistic hover effect */
46
+ &:hover {
47
+ transform: translateY(-2px);
48
+ box-shadow: 0 8px 16px color-mix(in srgb, var(--foreground) 12%, transparent),
49
+ 0 0 0 1px color-mix(in srgb, var(--color-brand) 15%, transparent);
50
+
51
+ .contact-card__name {
52
+ color: var(--color-brand);
53
+ }
54
+
55
+ .contact-card__avatar {
56
+ transform: scale(1.05);
57
+ }
58
+
59
+ .contact-card__header {
60
+ border-bottom-color: color-mix(in srgb, var(--color-brand) 20%, transparent);
61
+ }
62
+ }
63
+
64
+ &:focus-visible {
65
+ outline: 2px solid var(--color-brand);
66
+ outline-offset: 2px;
67
+ }
68
+ }
69
+
70
+ /* Card Header */
71
+ .contact-card__header {
72
+ display: flex;
73
+ align-items: flex-start;
74
+ gap: 12px;
75
+ margin: 0;
76
+ padding-bottom: var(--card-gap);
77
+ border-bottom: 1px solid color-mix(in srgb, var(--card-text-secondary) 10%, transparent);
78
+ }
79
+
80
+ .contact-card__avatar {
81
+ flex-shrink: 0;
82
+ width: 48px;
83
+ height: 48px;
84
+ min-height: 48px;
85
+ aspect-ratio: 1;
86
+ border-radius: 50%;
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ background: linear-gradient(135deg,
91
+ color-mix(in srgb, var(--color-brand) 22%, transparent),
92
+ color-mix(in srgb, var(--color-brand) 12%, transparent));
93
+ overflow: hidden;
94
+ border: 3px solid color-mix(in srgb, var(--color-brand) 60%, transparent);
95
+ box-shadow: 0 2px 8px color-mix(in srgb, var(--color-brand) 15%, transparent),
96
+ inset 0 1px 2px rgba(255, 255, 255, 0.1);
97
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
98
+ align-self: flex-start;
99
+
100
+ .contact-card:hover & {
101
+ border-color: var(--color-brand);
102
+ box-shadow: 0 2px 8px color-mix(in srgb, var(--color-brand) 15%, transparent),
103
+ 0 0 0 2px color-mix(in srgb, var(--color-brand) 15%, transparent),
104
+ inset 0 1px 2px rgba(255, 255, 255, 0.1);
105
+ }
106
+ }
107
+
108
+ .contact-card__avatar-img {
109
+ width: 100%;
110
+ height: 100%;
111
+ object-fit: cover;
112
+ border-radius: 50%;
113
+ }
114
+
115
+ .contact-card__initials {
116
+ @include card-title-text;
117
+ font-size: calc(var(--card-title-font-size) * 0.85);
118
+ font-weight: 600;
119
+ color: var(--color-brand);
120
+ line-height: 1;
121
+ text-transform: uppercase;
122
+ letter-spacing: 0.03em;
123
+ }
124
+
125
+ .contact-card__header-content {
126
+ flex: 1;
127
+ min-width: 0;
128
+ display: flex;
129
+ flex-direction: column;
130
+ gap: calc(var(--card-gap) * 0.375);
131
+ padding-top: 2px;
132
+ }
133
+
134
+ .contact-card__name {
135
+ @include card-title-text;
136
+ margin: 0;
137
+ line-height: 1.3;
138
+ color: var(--card-text-primary);
139
+ word-wrap: break-word;
140
+ overflow-wrap: break-word;
141
+ font-weight: 700;
142
+ font-size: calc(var(--card-title-font-size) * 1.15);
143
+ transition: color 0.22s ease;
144
+ letter-spacing: -0.01em;
145
+
146
+ .contact-card:hover & {
147
+ color: var(--color-brand);
148
+ }
149
+ }
150
+
151
+ .contact-card__role {
152
+ @include card-subtitle-text;
153
+ margin: 0;
154
+ color: var(--card-text-secondary);
155
+ line-height: 1.4;
156
+ word-wrap: break-word;
157
+ overflow-wrap: break-word;
158
+ font-size: var(--card-subtitle-font-size);
159
+ hyphens: auto;
160
+ max-width: 100%;
161
+ }
162
+
163
+ /* Contact Meta Information */
164
+ .contact-card__meta {
165
+ display: flex;
166
+ flex-direction: column;
167
+ gap: calc(var(--card-gap) * 0.625);
168
+ margin-top: var(--card-gap);
169
+ }
170
+
171
+ .contact-card__meta-item {
172
+ display: inline-flex;
173
+ align-items: center;
174
+ gap: calc(var(--card-gap) * 0.625);
175
+ @include card-meta-text;
176
+ color: var(--card-text-secondary) !important;
177
+ text-decoration: none;
178
+ min-width: 0;
179
+ transition: color 0.25s ease, transform 0.2s ease;
180
+ padding: calc(var(--card-gap) * 0.35) 0;
181
+ border-radius: 4px;
182
+
183
+ &:hover {
184
+ color: var(--card-text-hover) !important;
185
+ transform: translateX(2px);
186
+ background: color-mix(in srgb, var(--color-brand) 8%, transparent);
187
+
188
+ .contact-card__meta-icon {
189
+ opacity: 1;
190
+ color: var(--color-brand);
191
+ transform: scale(1.1) translateX(1px);
192
+ }
193
+ }
194
+
195
+ &--link {
196
+ color: var(--card-text-secondary) !important;
197
+ cursor: pointer;
198
+
199
+ &:hover {
200
+ color: var(--card-text-hover) !important;
201
+ }
202
+ }
203
+ }
204
+
205
+ .contact-card__meta-icon {
206
+ flex-shrink: 0;
207
+ width: 15px;
208
+ height: 15px;
209
+ opacity: 0.65;
210
+ color: var(--color-brand);
211
+ transition: opacity 0.2s ease, color 0.2s ease, transform 0.2s ease;
212
+ }
213
+
214
+ .contact-card__meta-text {
215
+ @include card-meta-text;
216
+ overflow: hidden;
217
+ text-overflow: ellipsis;
218
+ white-space: nowrap;
219
+ flex: 1;
220
+ min-width: 0;
221
+ line-height: 1.4;
222
+ /* ENHANCED: Allow wrapping for very long text */
223
+ @media (max-width: 480px) {
224
+ white-space: normal;
225
+ word-wrap: break-word;
226
+ overflow-wrap: break-word;
227
+ }
228
+ }
229
+
230
+ /* Empty State */
231
+ .section-empty {
232
+ display: flex;
233
+ flex-direction: column;
234
+ align-items: center;
235
+ justify-content: center;
236
+ padding: calc(var(--card-padding) * 3);
237
+ text-align: center;
238
+ color: var(--card-text-muted);
239
+ }
240
+
241
+ .section-empty__icon {
242
+ margin-bottom: calc(var(--card-gap) * 1.5);
243
+ opacity: 0.5;
244
+ }
245
+
246
+ .section-empty__text {
247
+ @include card-meta-text;
248
+ margin: 0;
249
+ color: var(--card-text-muted);
250
+ }