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,115 @@
1
+ /* Network Section - Modern, Clean Design */
2
+
3
+ @import 'sections/sections-base';
4
+ @import 'unified-cards';
5
+
6
+ /* Network Grid Layout */
7
+ .network-grid {
8
+ display: grid;
9
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
10
+ gap: var(--section-card-gap);
11
+ width: 100%;
12
+
13
+ @media (max-width: 820px) {
14
+ grid-template-columns: 1fr !important;
15
+ }
16
+ }
17
+
18
+ /* Network Card */
19
+ .network-card {
20
+ @include card;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ gap: var(--card-gap);
25
+ min-height: auto;
26
+ cursor: pointer;
27
+ transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease, background 0.2s ease;
28
+ position: relative;
29
+ border: 1px solid color-mix(in srgb, var(--color-brand) 20%, transparent);
30
+
31
+ &::before {
32
+ content: '';
33
+ position: absolute;
34
+ left: 0;
35
+ top: 0;
36
+ bottom: 0;
37
+ width: 3px;
38
+ background: var(--color-brand);
39
+ opacity: 0.8;
40
+ transition: opacity 0.22s ease, width 0.22s ease;
41
+ border-radius: 0 2px 2px 0;
42
+ }
43
+
44
+ &:hover {
45
+ transform: translateY(-2px);
46
+ border-color: var(--color-brand);
47
+ background: color-mix(in srgb, var(--card-background) 95%, var(--color-brand) 2%);
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
+ &::before {
52
+ opacity: 1;
53
+ width: 4px;
54
+ }
55
+
56
+ .network-card__value {
57
+ color: color-mix(in srgb, var(--foreground) 90%, var(--color-brand) 10%);
58
+ }
59
+ }
60
+
61
+ &:focus-visible {
62
+ outline: 2px solid var(--color-brand);
63
+ outline-offset: 2px;
64
+ }
65
+ }
66
+
67
+ /* Card Content */
68
+ .network-card__content {
69
+ flex: 1;
70
+ min-width: 0;
71
+ display: flex;
72
+ flex-direction: column;
73
+ gap: calc(var(--card-gap) * 0.6);
74
+ align-items: flex-start;
75
+ }
76
+
77
+ .network-card__label {
78
+ @include label-text;
79
+ margin: 0;
80
+ color: var(--card-text-label);
81
+ line-height: 1.2;
82
+ }
83
+
84
+ .network-card__value {
85
+ @include value-text;
86
+ font-size: calc(var(--card-value-font-size) * 1.2) !important;
87
+ font-weight: 700 !important;
88
+ letter-spacing: var(--card-value-letter-spacing) !important;
89
+ line-height: var(--card-value-line-height) !important;
90
+ color: var(--color-brand) !important;
91
+ margin: 0;
92
+ transition: color 0.22s ease;
93
+ }
94
+
95
+ /* Empty State */
96
+ .section-empty {
97
+ display: flex;
98
+ flex-direction: column;
99
+ align-items: center;
100
+ justify-content: center;
101
+ padding: calc(var(--card-padding) * 3);
102
+ text-align: center;
103
+ color: var(--card-text-muted);
104
+ }
105
+
106
+ .section-empty__icon {
107
+ margin-bottom: calc(var(--card-gap) * 1.5);
108
+ opacity: 0.5;
109
+ }
110
+
111
+ .section-empty__text {
112
+ @include card-meta-text;
113
+ margin: 0;
114
+ color: var(--card-text-muted);
115
+ }
@@ -0,0 +1,81 @@
1
+ @import 'sections/sections-base';
2
+
3
+ /* News section styling - uses general design variables for spacing, color, and layout */
4
+ .ai-section--news {
5
+ --section-accent: color-mix(in srgb, var(--color-brand) 68%, var(--foreground) 32%);
6
+ --section-background: color-mix(in srgb, var(--card) 92%, transparent);
7
+ --section-card-grid-min: 220px;
8
+ }
9
+
10
+ .news-feed {
11
+ display: grid;
12
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
13
+ gap: var(--card-gap);
14
+ width: 100%;
15
+ }
16
+
17
+ .news-item {
18
+ @include card;
19
+ border: 1px solid color-mix(in srgb, var(--section-accent, var(--accent)) 25%, transparent);
20
+ min-height: 180px;
21
+ display: flex;
22
+ flex-direction: column;
23
+ align-items: flex-start;
24
+ gap: calc(var(--card-gap) * 0.5);
25
+ padding: var(--card-padding);
26
+ text-align: left;
27
+ background: var(--section-item-background);
28
+ }
29
+
30
+ .news-item__header {
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: space-between;
34
+ width: 100%;
35
+ font-size: var(--font-section-meta);
36
+ color: var(--card-text-muted);
37
+ }
38
+
39
+ .news-item__tag {
40
+ display: inline-flex;
41
+ align-items: center;
42
+ gap: calc(var(--card-gap) * 0.4);
43
+ font-size: var(--font-section-meta);
44
+ color: var(--section-accent);
45
+ text-transform: uppercase;
46
+ letter-spacing: 0.08em;
47
+ }
48
+
49
+ .news-item__title {
50
+ font-size: var(--card-value-font-size);
51
+ font-weight: 600;
52
+ color: var(--card-text-primary);
53
+ margin: 0;
54
+ }
55
+
56
+ .news-item__summary {
57
+ font-size: var(--font-section-description);
58
+ margin: 0;
59
+ color: color-mix(in srgb, var(--foreground) 65%, transparent);
60
+ }
61
+
62
+ .news-item__meta {
63
+ margin-top: auto;
64
+ display: flex;
65
+ justify-content: space-between;
66
+ width: 100%;
67
+ font-size: var(--font-section-meta);
68
+ color: color-mix(in srgb, var(--foreground) 60%, transparent);
69
+ }
70
+
71
+ .news-item__value {
72
+ font-weight: 600;
73
+ color: var(--section-accent);
74
+ }
75
+
76
+ .news-item__indicator {
77
+ font-size: var(--font-section-meta);
78
+ text-transform: uppercase;
79
+ letter-spacing: 0.08em;
80
+ color: color-mix(in srgb, var(--section-accent) 60%, transparent);
81
+ }
@@ -0,0 +1,159 @@
1
+ /* Overview section - Single column premium design */
2
+ /* ENHANCED: Clean, elegant single-column layout with refined styling */
3
+
4
+ @import 'design-system';
5
+
6
+ .overview-grid {
7
+ display: flex !important;
8
+ flex-direction: column !important;
9
+ gap: calc(var(--section-card-gap) * 0.7) !important;
10
+ padding: 0;
11
+ width: 100%;
12
+ }
13
+
14
+ .overview-card {
15
+ @include card;
16
+ display: flex;
17
+ flex-direction: column;
18
+ align-items: stretch;
19
+ min-height: auto;
20
+ padding: calc(var(--card-padding) * 0.625) calc(var(--card-padding) * 0.875) !important;
21
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
22
+ position: relative;
23
+ overflow: hidden;
24
+ background: var(--card-background);
25
+
26
+ /* Left accent border */
27
+ &::before {
28
+ content: '';
29
+ position: absolute;
30
+ left: 0;
31
+ top: 0;
32
+ bottom: 0;
33
+ width: 4px;
34
+ background: linear-gradient(180deg, var(--color-brand), color-mix(in srgb, var(--color-brand) 60%, transparent));
35
+ opacity: 1;
36
+ transition: opacity 0.3s ease, width 0.3s ease;
37
+ border-radius: 0 2px 2px 0;
38
+ }
39
+
40
+ /* Subtle bottom divider */
41
+ &::after {
42
+ content: '';
43
+ position: absolute;
44
+ bottom: 0;
45
+ left: calc(var(--card-padding) * 0.875);
46
+ right: calc(var(--card-padding) * 0.875);
47
+ height: 1px;
48
+ background: linear-gradient(90deg,
49
+ transparent,
50
+ color-mix(in srgb, var(--foreground) 6%, transparent) 50%,
51
+ transparent);
52
+ opacity: 0.6;
53
+ transition: opacity 0.3s ease;
54
+ }
55
+
56
+ /* Minimalistic hover effect */
57
+ &:hover {
58
+ transform: translateY(-2px);
59
+ box-shadow: 0 8px 16px color-mix(in srgb, var(--foreground) 12%, transparent),
60
+ 0 0 0 1px color-mix(in srgb, var(--color-brand) 15%, transparent);
61
+
62
+ &::before {
63
+ opacity: 1;
64
+ width: 4px;
65
+ }
66
+
67
+ .overview-card__label {
68
+ color: color-mix(in srgb, var(--foreground) 70%, transparent);
69
+ }
70
+
71
+ .overview-card__value {
72
+ color: color-mix(in srgb, var(--foreground) 90%, var(--color-brand) 10%);
73
+ }
74
+ }
75
+
76
+ /* Remove divider from last card */
77
+ &:last-child::after {
78
+ display: none;
79
+ }
80
+
81
+ &:focus-visible {
82
+ outline: 2px solid var(--color-brand);
83
+ outline-offset: 2px;
84
+ }
85
+
86
+ &__content {
87
+ display: flex;
88
+ flex-direction: column;
89
+ gap: calc(var(--card-gap) * 0.5);
90
+ width: 100%;
91
+ }
92
+
93
+ &__label {
94
+ @include label-text;
95
+ font-size: calc(var(--card-label-font-size) + 1px);
96
+ font-weight: 600;
97
+ letter-spacing: 0.04em;
98
+ text-transform: uppercase;
99
+ color: var(--card-text-label);
100
+ line-height: 1.3;
101
+ margin: 0;
102
+ transition: color 0.22s ease;
103
+ word-break: break-word;
104
+ }
105
+
106
+ &__value {
107
+ @include value-text;
108
+ font-size: calc(var(--card-value-font-size) * 1.2) !important;
109
+ font-weight: 700;
110
+ line-height: 1.4;
111
+ color: var(--color-brand);
112
+ margin: 0;
113
+ transition: color 0.22s ease;
114
+ word-break: break-word;
115
+ letter-spacing: -0.01em;
116
+ }
117
+ }
118
+
119
+ /* Responsive adjustments for smaller screens */
120
+ @media (max-width: 640px) {
121
+ .overview-card {
122
+ padding: calc(var(--card-padding) * 0.875) !important;
123
+
124
+ &__content {
125
+ gap: calc(var(--card-gap) * 0.625);
126
+ }
127
+
128
+ &__label {
129
+ font-size: calc(var(--card-label-font-size) * 0.95);
130
+ }
131
+
132
+ &__value {
133
+ font-size: calc(var(--card-value-font-size) * 0.95);
134
+ }
135
+ }
136
+ }
137
+
138
+ .overview-empty {
139
+ @include empty-state;
140
+ }
141
+
142
+ /* Light theme overrides */
143
+ :root[data-theme='day'] {
144
+ .overview-card {
145
+ &__label {
146
+ color: #6b7280;
147
+ }
148
+
149
+ &__value {
150
+ color: #1a1a1a;
151
+ }
152
+
153
+ &:hover {
154
+ background: rgba(255, 255, 255, 0.98);
155
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.08),
156
+ 0 0 0 1px rgba(255, 121, 0, 0.15);
157
+ }
158
+ }
159
+ }