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.
- package/README.md +58 -20
- package/package.json +13 -25
- package/postcss.config.js +81 -0
- package/section-registry.json +3864 -0
- package/section-registry.schema.json +264 -0
- package/fesm2022/osi-cards-lib.mjs +0 -31878
- package/fesm2022/osi-cards-lib.mjs.map +0 -1
- package/index.d.ts +0 -11522
- package/scripts/setup-angular-styles.js +0 -169
- package/styles/_components.scss +0 -38
- package/styles/_index.scss +0 -25
- package/styles/_osi-cards-mixins.scss +0 -459
- package/styles/_osi-cards-tokens.scss +0 -333
- package/styles/_styles-scoped.scss +0 -81
- package/styles/_styles.scss +0 -26
- package/styles/bundles/_ai-card.scss +0 -245
- package/styles/bundles/_all.scss +0 -68
- package/styles/bundles/_base.scss +0 -60
- package/styles/bundles/_card-skeleton.scss +0 -290
- package/styles/bundles/_index.scss +0 -25
- package/styles/bundles/_sections.scss +0 -48
- package/styles/bundles/_tokens-only.scss +0 -139
- package/styles/components/_ai-card-renderer.scss +0 -104
- package/styles/components/_badges.scss +0 -317
- package/styles/components/_card-actions.scss +0 -169
- package/styles/components/_card-footer.scss +0 -47
- package/styles/components/_component-styles.scss +0 -205
- package/styles/components/_empty-state.scss +0 -630
- package/styles/components/_hero-card.scss +0 -422
- package/styles/components/_image-fallback.scss +0 -28
- package/styles/components/_streaming-effects.scss +0 -518
- package/styles/components/cards/_ai-card.scss +0 -718
- package/styles/components/sections/_all-sections.generated.scss +0 -41
- package/styles/components/sections/_all-sections.scss +0 -1086
- package/styles/components/sections/_balanced-compact-system.scss +0 -186
- package/styles/components/sections/_compact-mixins.scss +0 -180
- package/styles/components/sections/_component-mixins.scss +0 -454
- package/styles/components/sections/_design-system.scss +0 -477
- package/styles/components/sections/_design-tokens.scss +0 -308
- package/styles/components/sections/_enhanced-design-variables.scss +0 -147
- package/styles/components/sections/_master-compact-system.scss +0 -302
- package/styles/components/sections/_master-dense-system.scss +0 -239
- package/styles/components/sections/_minimalistic-design.scss +0 -268
- package/styles/components/sections/_modern-effects.scss +0 -392
- package/styles/components/sections/_modern-sections.scss +0 -351
- package/styles/components/sections/_perfect-system.scss +0 -204
- package/styles/components/sections/_section-animations.scss +0 -331
- package/styles/components/sections/_section-shell.scss +0 -337
- package/styles/components/sections/_section-types.generated.scss +0 -30
- package/styles/components/sections/_sections-all.scss +0 -26
- package/styles/components/sections/_sections-base.scss +0 -334
- package/styles/components/sections/_typography-system.scss +0 -327
- package/styles/components/sections/_ultra-compact-tokens.scss +0 -375
- package/styles/components/sections/_unified-section-style.scss +0 -157
- package/styles/components/sections/_utility-classes.scss +0 -567
- package/styles/components/sections/_visual-effects-library.scss +0 -374
- package/styles/core/_animations.scss +0 -1498
- package/styles/core/_bootstrap-reset.scss +0 -445
- package/styles/core/_color-helpers.scss +0 -46
- package/styles/core/_global-unified.scss +0 -118
- package/styles/core/_global.scss +0 -73
- package/styles/core/_mixins.scss +0 -491
- package/styles/core/_surface-layers.scss +0 -76
- package/styles/core/_utilities.scss +0 -326
- package/styles/core/_variables-unified.scss +0 -57
- package/styles/core/_variables.scss +0 -36
- package/styles/core/variables/_colors-source.scss +0 -34
- package/styles/core/variables/_colors-unified.scss +0 -26
- package/styles/core/variables/_colors.scss +0 -21
- package/styles/critical.scss +0 -353
- package/styles/design-system/_compact-theme.scss +0 -159
- package/styles/design-system/_section-base.scss +0 -426
- package/styles/design-system/_tokens.scss +0 -237
- package/styles/design-system/_unified-sections.scss +0 -215
- package/styles/layout/_feature-grid.scss +0 -322
- package/styles/layout/_masonry.scss +0 -734
- package/styles/layout/_tilt.scss +0 -244
- package/styles/micro-interactions.scss +0 -583
- package/styles/mixins/_section-mixins.scss +0 -280
- package/styles/non-critical.scss +0 -643
- package/styles/reset/_framework-reset.scss +0 -457
- package/styles/reset/_index.scss +0 -14
- package/styles/reset/_shadow-reset.scss +0 -383
- package/styles/responsive.scss +0 -326
- package/styles/themes.scss +0 -573
- package/styles/tokens/_index.scss +0 -92
- package/styles/tokens/_master.scss +0 -1404
- package/styles/tokens/_section-tokens.generated.scss +0 -140
package/styles/themes.scss
DELETED
|
@@ -1,573 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OSI Cards - Theme Presets
|
|
3
|
-
*
|
|
4
|
-
* Beautiful, opinionated theme presets for OSI Cards.
|
|
5
|
-
*
|
|
6
|
-
* ⚠️ WARNING: This file contains :root selectors for global theming.
|
|
7
|
-
* For library integration, prefer container-scoped theming:
|
|
8
|
-
* - Use <osi-cards-container [theme]="'day'"> component
|
|
9
|
-
* - Use [attr.data-theme]="theme" attribute binding
|
|
10
|
-
* - This file is primarily for demo app use
|
|
11
|
-
*
|
|
12
|
-
* The selectors below support both global (:root) and container-scoped (.osi-cards-container) usage.
|
|
13
|
-
*
|
|
14
|
-
* ⚠️ TOKEN SOURCE RELATIONSHIPS:
|
|
15
|
-
* This file defines demo app theme presets (`--osi-card-*` variables).
|
|
16
|
-
* For CSS component tokens, see: `styles/tokens/_master.scss`
|
|
17
|
-
* For JS-applied theme presets, see: `themes/presets.ts`
|
|
18
|
-
*
|
|
19
|
-
* NOTE: Theme values here may differ from `themes/presets.ts` as they serve
|
|
20
|
-
* different purposes (demo app vs library integration). Consider aligning
|
|
21
|
-
* values if consistency is required.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
// ============================================
|
|
25
|
-
// Light Theme (Default)
|
|
26
|
-
// ============================================
|
|
27
|
-
|
|
28
|
-
[data-theme="light"],
|
|
29
|
-
.osi-cards-container[data-theme="light"],
|
|
30
|
-
:root {
|
|
31
|
-
// Base colors
|
|
32
|
-
--osi-card-background: #ffffff;
|
|
33
|
-
--osi-card-foreground: #1a1a2e;
|
|
34
|
-
--osi-card-muted: #64748b;
|
|
35
|
-
--osi-card-muted-foreground: #94a3b8;
|
|
36
|
-
|
|
37
|
-
// Surface colors
|
|
38
|
-
--osi-card-surface: #f8fafc;
|
|
39
|
-
--osi-card-surface-hover: #f1f5f9;
|
|
40
|
-
--osi-card-surface-active: #e2e8f0;
|
|
41
|
-
|
|
42
|
-
// Accent
|
|
43
|
-
--osi-card-accent: #6366f1;
|
|
44
|
-
--osi-card-accent-rgb: 99, 102, 241;
|
|
45
|
-
--osi-card-accent-foreground: #ffffff;
|
|
46
|
-
--osi-card-accent-hover: #4f46e5;
|
|
47
|
-
|
|
48
|
-
// Borders
|
|
49
|
-
--osi-card-border: #e2e8f0;
|
|
50
|
-
--osi-card-border-hover: #cbd5e1;
|
|
51
|
-
--osi-card-ring: rgba(99, 102, 241, 0.3);
|
|
52
|
-
|
|
53
|
-
// Status colors
|
|
54
|
-
--osi-card-success: #10b981;
|
|
55
|
-
--osi-card-success-bg: #ecfdf5;
|
|
56
|
-
--osi-card-warning: #f59e0b;
|
|
57
|
-
--osi-card-warning-bg: #fffbeb;
|
|
58
|
-
--osi-card-destructive: #ef4444;
|
|
59
|
-
--osi-card-destructive-bg: #fef2f2;
|
|
60
|
-
--osi-card-info: #3b82f6;
|
|
61
|
-
--osi-card-info-bg: #eff6ff;
|
|
62
|
-
|
|
63
|
-
// Shadows
|
|
64
|
-
--osi-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);
|
|
65
|
-
--osi-card-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.04);
|
|
66
|
-
--osi-card-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.08), 0 4px 6px rgba(0, 0, 0, 0.03);
|
|
67
|
-
--osi-card-shadow-glow: 0 0 20px rgba(99, 102, 241, 0.15);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// ============================================
|
|
71
|
-
// Dark Theme
|
|
72
|
-
// ============================================
|
|
73
|
-
|
|
74
|
-
[data-theme="dark"],
|
|
75
|
-
.osi-cards-container[data-theme="dark"] {
|
|
76
|
-
// Base colors
|
|
77
|
-
--osi-card-background: #0f172a;
|
|
78
|
-
--osi-card-foreground: #f1f5f9;
|
|
79
|
-
--osi-card-muted: #94a3b8;
|
|
80
|
-
--osi-card-muted-foreground: #64748b;
|
|
81
|
-
|
|
82
|
-
// Surface colors
|
|
83
|
-
--osi-card-surface: #1e293b;
|
|
84
|
-
--osi-card-surface-hover: #334155;
|
|
85
|
-
--osi-card-surface-active: #475569;
|
|
86
|
-
|
|
87
|
-
// Accent
|
|
88
|
-
--osi-card-accent: #818cf8;
|
|
89
|
-
--osi-card-accent-rgb: 129, 140, 248;
|
|
90
|
-
--osi-card-accent-foreground: #0f172a;
|
|
91
|
-
--osi-card-accent-hover: #a5b4fc;
|
|
92
|
-
|
|
93
|
-
// Borders
|
|
94
|
-
--osi-card-border: #334155;
|
|
95
|
-
--osi-card-border-hover: #475569;
|
|
96
|
-
--osi-card-ring: rgba(129, 140, 248, 0.4);
|
|
97
|
-
|
|
98
|
-
// Status colors
|
|
99
|
-
--osi-card-success: #34d399;
|
|
100
|
-
--osi-card-success-bg: rgba(16, 185, 129, 0.1);
|
|
101
|
-
--osi-card-warning: #fbbf24;
|
|
102
|
-
--osi-card-warning-bg: rgba(245, 158, 11, 0.1);
|
|
103
|
-
--osi-card-destructive: #f87171;
|
|
104
|
-
--osi-card-destructive-bg: rgba(239, 68, 68, 0.1);
|
|
105
|
-
--osi-card-info: #60a5fa;
|
|
106
|
-
--osi-card-info-bg: rgba(59, 130, 246, 0.1);
|
|
107
|
-
|
|
108
|
-
// Shadows
|
|
109
|
-
--osi-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2);
|
|
110
|
-
--osi-card-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.25), 0 2px 4px rgba(0, 0, 0, 0.15);
|
|
111
|
-
--osi-card-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.3), 0 4px 6px rgba(0, 0, 0, 0.15);
|
|
112
|
-
--osi-card-shadow-glow: 0 0 30px rgba(129, 140, 248, 0.2);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// ============================================
|
|
116
|
-
// Midnight Theme
|
|
117
|
-
// ============================================
|
|
118
|
-
|
|
119
|
-
[data-theme="midnight"],
|
|
120
|
-
.osi-cards-container[data-theme="midnight"] {
|
|
121
|
-
--osi-card-background: #0a0a0f;
|
|
122
|
-
--osi-card-foreground: #e4e4e7;
|
|
123
|
-
--osi-card-muted: #71717a;
|
|
124
|
-
--osi-card-muted-foreground: #52525b;
|
|
125
|
-
|
|
126
|
-
--osi-card-surface: #18181b;
|
|
127
|
-
--osi-card-surface-hover: #27272a;
|
|
128
|
-
--osi-card-surface-active: #3f3f46;
|
|
129
|
-
|
|
130
|
-
--osi-card-accent: #a78bfa;
|
|
131
|
-
--osi-card-accent-rgb: 167, 139, 250;
|
|
132
|
-
--osi-card-accent-foreground: #0a0a0f;
|
|
133
|
-
--osi-card-accent-hover: #c4b5fd;
|
|
134
|
-
|
|
135
|
-
--osi-card-border: #27272a;
|
|
136
|
-
--osi-card-border-hover: #3f3f46;
|
|
137
|
-
--osi-card-ring: rgba(167, 139, 250, 0.4);
|
|
138
|
-
|
|
139
|
-
--osi-card-shadow-glow: 0 0 40px rgba(167, 139, 250, 0.15);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// ============================================
|
|
143
|
-
// Corporate Theme
|
|
144
|
-
// ============================================
|
|
145
|
-
|
|
146
|
-
[data-theme="corporate"],
|
|
147
|
-
.osi-cards-container[data-theme="corporate"] {
|
|
148
|
-
--osi-card-background: #ffffff;
|
|
149
|
-
--osi-card-foreground: #1e3a5f;
|
|
150
|
-
--osi-card-muted: #5a7fa3;
|
|
151
|
-
--osi-card-muted-foreground: #8ba8c7;
|
|
152
|
-
|
|
153
|
-
--osi-card-surface: #f0f7ff;
|
|
154
|
-
--osi-card-surface-hover: #e1efff;
|
|
155
|
-
--osi-card-surface-active: #cfe2ff;
|
|
156
|
-
|
|
157
|
-
--osi-card-accent: #0066cc;
|
|
158
|
-
--osi-card-accent-rgb: 0, 102, 204;
|
|
159
|
-
--osi-card-accent-foreground: #ffffff;
|
|
160
|
-
--osi-card-accent-hover: #0052a3;
|
|
161
|
-
|
|
162
|
-
--osi-card-border: #d1e3f6;
|
|
163
|
-
--osi-card-border-hover: #a8cdef;
|
|
164
|
-
|
|
165
|
-
// More subdued shadows for professional look
|
|
166
|
-
--osi-card-shadow: 0 1px 2px rgba(30, 58, 95, 0.05);
|
|
167
|
-
--osi-card-shadow-md: 0 2px 4px rgba(30, 58, 95, 0.08);
|
|
168
|
-
--osi-card-shadow-lg: 0 4px 8px rgba(30, 58, 95, 0.1);
|
|
169
|
-
|
|
170
|
-
// Sharper corners for corporate feel
|
|
171
|
-
--osi-card-border-radius: 4px;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// ============================================
|
|
175
|
-
// Nature Theme
|
|
176
|
-
// ============================================
|
|
177
|
-
|
|
178
|
-
[data-theme="nature"],
|
|
179
|
-
.osi-cards-container[data-theme="nature"] {
|
|
180
|
-
--osi-card-background: #fefefe;
|
|
181
|
-
--osi-card-foreground: #1a3129;
|
|
182
|
-
--osi-card-muted: #5a7268;
|
|
183
|
-
--osi-card-muted-foreground: #8aa496;
|
|
184
|
-
|
|
185
|
-
--osi-card-surface: #f0f7f4;
|
|
186
|
-
--osi-card-surface-hover: #e3f0ea;
|
|
187
|
-
--osi-card-surface-active: #d1e6db;
|
|
188
|
-
|
|
189
|
-
--osi-card-accent: #059669;
|
|
190
|
-
--osi-card-accent-rgb: 5, 150, 105;
|
|
191
|
-
--osi-card-accent-foreground: #ffffff;
|
|
192
|
-
--osi-card-accent-hover: #047857;
|
|
193
|
-
|
|
194
|
-
--osi-card-border: #d1e6db;
|
|
195
|
-
--osi-card-border-hover: #a7d4be;
|
|
196
|
-
--osi-card-ring: rgba(5, 150, 105, 0.3);
|
|
197
|
-
|
|
198
|
-
--osi-card-success: #059669;
|
|
199
|
-
--osi-card-warning: #d97706;
|
|
200
|
-
--osi-card-destructive: #dc2626;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// ============================================
|
|
204
|
-
// Sunset Theme
|
|
205
|
-
// ============================================
|
|
206
|
-
|
|
207
|
-
[data-theme="sunset"],
|
|
208
|
-
.osi-cards-container[data-theme="sunset"] {
|
|
209
|
-
--osi-card-background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
|
|
210
|
-
--osi-card-foreground: #fef3c7;
|
|
211
|
-
--osi-card-muted: #d4a574;
|
|
212
|
-
--osi-card-muted-foreground: #a87c4f;
|
|
213
|
-
|
|
214
|
-
--osi-card-surface: rgba(255, 255, 255, 0.05);
|
|
215
|
-
--osi-card-surface-hover: rgba(255, 255, 255, 0.1);
|
|
216
|
-
--osi-card-surface-active: rgba(255, 255, 255, 0.15);
|
|
217
|
-
|
|
218
|
-
--osi-card-accent: #f59e0b;
|
|
219
|
-
--osi-card-accent-rgb: 245, 158, 11;
|
|
220
|
-
--osi-card-accent-foreground: #1a1a2e;
|
|
221
|
-
--osi-card-accent-hover: #d97706;
|
|
222
|
-
|
|
223
|
-
--osi-card-border: rgba(245, 158, 11, 0.2);
|
|
224
|
-
--osi-card-border-hover: rgba(245, 158, 11, 0.3);
|
|
225
|
-
--osi-card-ring: rgba(245, 158, 11, 0.4);
|
|
226
|
-
|
|
227
|
-
--osi-card-shadow-glow: 0 0 40px rgba(245, 158, 11, 0.2);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
// ============================================
|
|
231
|
-
// Ocean Theme
|
|
232
|
-
// ============================================
|
|
233
|
-
|
|
234
|
-
[data-theme="ocean"],
|
|
235
|
-
.osi-cards-container[data-theme="ocean"] {
|
|
236
|
-
--osi-card-background: #0a192f;
|
|
237
|
-
--osi-card-foreground: #ccd6f6;
|
|
238
|
-
--osi-card-muted: #8892b0;
|
|
239
|
-
--osi-card-muted-foreground: #495670;
|
|
240
|
-
|
|
241
|
-
--osi-card-surface: #112240;
|
|
242
|
-
--osi-card-surface-hover: #1d3461;
|
|
243
|
-
--osi-card-surface-active: #233554;
|
|
244
|
-
|
|
245
|
-
--osi-card-accent: #64ffda;
|
|
246
|
-
--osi-card-accent-rgb: 100, 255, 218;
|
|
247
|
-
--osi-card-accent-foreground: #0a192f;
|
|
248
|
-
--osi-card-accent-hover: #4cd7b8;
|
|
249
|
-
|
|
250
|
-
--osi-card-border: #233554;
|
|
251
|
-
--osi-card-border-hover: #2d4a6f;
|
|
252
|
-
--osi-card-ring: rgba(100, 255, 218, 0.3);
|
|
253
|
-
|
|
254
|
-
--osi-card-shadow-glow: 0 0 50px rgba(100, 255, 218, 0.15);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
// ============================================
|
|
258
|
-
// Rose Theme
|
|
259
|
-
// ============================================
|
|
260
|
-
|
|
261
|
-
[data-theme="rose"],
|
|
262
|
-
.osi-cards-container[data-theme="rose"] {
|
|
263
|
-
--osi-card-background: #fffbfc;
|
|
264
|
-
--osi-card-foreground: #4a1c2c;
|
|
265
|
-
--osi-card-muted: #9f6070;
|
|
266
|
-
--osi-card-muted-foreground: #c89aa6;
|
|
267
|
-
|
|
268
|
-
--osi-card-surface: #fef1f4;
|
|
269
|
-
--osi-card-surface-hover: #fde4ea;
|
|
270
|
-
--osi-card-surface-active: #fbd2dc;
|
|
271
|
-
|
|
272
|
-
--osi-card-accent: #e11d48;
|
|
273
|
-
--osi-card-accent-rgb: 225, 29, 72;
|
|
274
|
-
--osi-card-accent-foreground: #ffffff;
|
|
275
|
-
--osi-card-accent-hover: #be123c;
|
|
276
|
-
|
|
277
|
-
--osi-card-border: #fbd2dc;
|
|
278
|
-
--osi-card-border-hover: #f9a8bb;
|
|
279
|
-
--osi-card-ring: rgba(225, 29, 72, 0.3);
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
// ============================================
|
|
283
|
-
// Minimal Theme
|
|
284
|
-
// ============================================
|
|
285
|
-
|
|
286
|
-
[data-theme="minimal"],
|
|
287
|
-
.osi-cards-container[data-theme="minimal"] {
|
|
288
|
-
--osi-card-background: #ffffff;
|
|
289
|
-
--osi-card-foreground: #171717;
|
|
290
|
-
--osi-card-muted: #737373;
|
|
291
|
-
--osi-card-muted-foreground: #a3a3a3;
|
|
292
|
-
|
|
293
|
-
--osi-card-surface: #fafafa;
|
|
294
|
-
--osi-card-surface-hover: #f5f5f5;
|
|
295
|
-
--osi-card-surface-active: #e5e5e5;
|
|
296
|
-
|
|
297
|
-
--osi-card-accent: #171717;
|
|
298
|
-
--osi-card-accent-rgb: 23, 23, 23;
|
|
299
|
-
--osi-card-accent-foreground: #ffffff;
|
|
300
|
-
--osi-card-accent-hover: #404040;
|
|
301
|
-
|
|
302
|
-
--osi-card-border: #e5e5e5;
|
|
303
|
-
--osi-card-border-hover: #d4d4d4;
|
|
304
|
-
--osi-card-ring: rgba(23, 23, 23, 0.2);
|
|
305
|
-
|
|
306
|
-
// No shadows for minimal look
|
|
307
|
-
--osi-card-shadow: none;
|
|
308
|
-
--osi-card-shadow-md: none;
|
|
309
|
-
--osi-card-shadow-lg: none;
|
|
310
|
-
--osi-card-shadow-glow: none;
|
|
311
|
-
|
|
312
|
-
// Sharp corners
|
|
313
|
-
--osi-card-border-radius: 0;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
// ============================================
|
|
317
|
-
// High Contrast Theme (Accessibility)
|
|
318
|
-
// ============================================
|
|
319
|
-
|
|
320
|
-
[data-theme="high-contrast"],
|
|
321
|
-
.osi-cards-container[data-theme="high-contrast"] {
|
|
322
|
-
--osi-card-background: #000000;
|
|
323
|
-
--osi-card-foreground: #ffffff;
|
|
324
|
-
--osi-card-muted: #ffffff;
|
|
325
|
-
--osi-card-muted-foreground: #d4d4d4;
|
|
326
|
-
|
|
327
|
-
--osi-card-surface: #1a1a1a;
|
|
328
|
-
--osi-card-surface-hover: #2d2d2d;
|
|
329
|
-
--osi-card-surface-active: #404040;
|
|
330
|
-
|
|
331
|
-
--osi-card-accent: #ffff00;
|
|
332
|
-
--osi-card-accent-rgb: 255, 255, 0;
|
|
333
|
-
--osi-card-accent-foreground: #000000;
|
|
334
|
-
--osi-card-accent-hover: #cccc00;
|
|
335
|
-
|
|
336
|
-
--osi-card-border: #ffffff;
|
|
337
|
-
--osi-card-border-hover: #ffffff;
|
|
338
|
-
--osi-card-ring: rgba(255, 255, 0, 0.5);
|
|
339
|
-
|
|
340
|
-
--osi-card-success: #00ff00;
|
|
341
|
-
--osi-card-warning: #ffff00;
|
|
342
|
-
--osi-card-destructive: #ff0000;
|
|
343
|
-
--osi-card-info: #00ffff;
|
|
344
|
-
|
|
345
|
-
// Strong shadows for depth perception
|
|
346
|
-
--osi-card-shadow: 0 0 0 2px #ffffff;
|
|
347
|
-
--osi-card-shadow-md: 0 0 0 3px #ffffff;
|
|
348
|
-
--osi-card-shadow-lg: 0 0 0 4px #ffffff;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
// ============================================
|
|
352
|
-
// System Theme (Auto)
|
|
353
|
-
// ============================================
|
|
354
|
-
|
|
355
|
-
@media (prefers-color-scheme: dark) {
|
|
356
|
-
[data-theme="system"],
|
|
357
|
-
.osi-cards-container[data-theme="system"],
|
|
358
|
-
:root:not([data-theme]) {
|
|
359
|
-
--osi-card-background: #0f172a;
|
|
360
|
-
--osi-card-foreground: #f1f5f9;
|
|
361
|
-
--osi-card-muted: #94a3b8;
|
|
362
|
-
--osi-card-surface: #1e293b;
|
|
363
|
-
--osi-card-accent: #818cf8;
|
|
364
|
-
--osi-card-accent-rgb: 129, 140, 248;
|
|
365
|
-
--osi-card-border: #334155;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
@media (prefers-color-scheme: light) {
|
|
370
|
-
[data-theme="system"],
|
|
371
|
-
.osi-cards-container[data-theme="system"],
|
|
372
|
-
:root:not([data-theme]) {
|
|
373
|
-
--osi-card-background: #ffffff;
|
|
374
|
-
--osi-card-foreground: #1a1a2e;
|
|
375
|
-
--osi-card-muted: #64748b;
|
|
376
|
-
--osi-card-surface: #f8fafc;
|
|
377
|
-
--osi-card-accent: #6366f1;
|
|
378
|
-
--osi-card-accent-rgb: 99, 102, 241;
|
|
379
|
-
--osi-card-border: #e2e8f0;
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
// ============================================
|
|
384
|
-
// Theme Transition System
|
|
385
|
-
// ============================================
|
|
386
|
-
|
|
387
|
-
// CSS Custom Properties for transition configuration
|
|
388
|
-
// Support both global and container-scoped usage
|
|
389
|
-
:root,
|
|
390
|
-
.osi-cards-container {
|
|
391
|
-
--osi-theme-transition-duration: 200ms;
|
|
392
|
-
--osi-theme-transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
// Properties that should transition during theme changes
|
|
396
|
-
$theme-transition-properties: (
|
|
397
|
-
background-color,
|
|
398
|
-
background,
|
|
399
|
-
border-color,
|
|
400
|
-
color,
|
|
401
|
-
fill,
|
|
402
|
-
stroke,
|
|
403
|
-
box-shadow,
|
|
404
|
-
opacity
|
|
405
|
-
);
|
|
406
|
-
|
|
407
|
-
// Properties that should NOT transition (prevent layout shift)
|
|
408
|
-
$theme-no-transition-properties: (
|
|
409
|
-
width,
|
|
410
|
-
height,
|
|
411
|
-
margin,
|
|
412
|
-
padding,
|
|
413
|
-
transform,
|
|
414
|
-
font-size,
|
|
415
|
-
line-height
|
|
416
|
-
);
|
|
417
|
-
|
|
418
|
-
// Transitioning class - applied during theme switch
|
|
419
|
-
.theme-transitioning,
|
|
420
|
-
[data-theme-transition="true"] {
|
|
421
|
-
// Apply transitions to all elements
|
|
422
|
-
*,
|
|
423
|
-
*::before,
|
|
424
|
-
*::after {
|
|
425
|
-
transition-property: #{$theme-transition-properties};
|
|
426
|
-
transition-duration: var(--osi-theme-transition-duration);
|
|
427
|
-
transition-timing-function: var(--osi-theme-transition-timing);
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
// Card-specific smoother transitions
|
|
431
|
-
.osi-card-container,
|
|
432
|
-
.ai-card-renderer,
|
|
433
|
-
.ai-section,
|
|
434
|
-
.masonry-item {
|
|
435
|
-
transition-duration: calc(var(--osi-theme-transition-duration) * 1.2);
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
// Respect reduced motion preference
|
|
440
|
-
@media (prefers-reduced-motion: reduce) {
|
|
441
|
-
.theme-transitioning,
|
|
442
|
-
[data-theme-transition="true"] {
|
|
443
|
-
*,
|
|
444
|
-
*::before,
|
|
445
|
-
*::after {
|
|
446
|
-
transition-duration: 0ms !important;
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
// ============================================
|
|
452
|
-
// Scoped Theme Container
|
|
453
|
-
// ============================================
|
|
454
|
-
|
|
455
|
-
.osi-scoped-theme {
|
|
456
|
-
// Inherit theme from data-theme attribute
|
|
457
|
-
// Container queries are progressive enhancement (Safari 16+)
|
|
458
|
-
@supports (container-type: inline-size) {
|
|
459
|
-
container-type: inline-size;
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
// Ensure CSS variables cascade properly
|
|
463
|
-
color: var(--osi-card-foreground);
|
|
464
|
-
background-color: var(--osi-card-background);
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
.osi-theme-container {
|
|
468
|
-
position: relative;
|
|
469
|
-
contain: layout style;
|
|
470
|
-
// Container queries are progressive enhancement (Safari 16+)
|
|
471
|
-
@supports (container-type: inline-size) {
|
|
472
|
-
container-type: inline-size;
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
// Reset background to theme
|
|
476
|
-
background-color: var(--osi-card-background);
|
|
477
|
-
color: var(--osi-card-foreground);
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
// ============================================
|
|
481
|
-
// Theme Transition Utilities
|
|
482
|
-
// ============================================
|
|
483
|
-
|
|
484
|
-
// Instant transition (no animation)
|
|
485
|
-
.theme-transition-none {
|
|
486
|
-
*,
|
|
487
|
-
*::before,
|
|
488
|
-
*::after {
|
|
489
|
-
transition: none !important;
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
// Fast transition
|
|
494
|
-
.theme-transition-fast {
|
|
495
|
-
--osi-theme-transition-duration: 100ms;
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
// Slow transition
|
|
499
|
-
.theme-transition-slow {
|
|
500
|
-
--osi-theme-transition-duration: 400ms;
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
// Smooth easing
|
|
504
|
-
.theme-transition-smooth {
|
|
505
|
-
--osi-theme-transition-timing: cubic-bezier(0.16, 1, 0.3, 1);
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
// ============================================
|
|
509
|
-
// Color Scheme Indicator
|
|
510
|
-
// ============================================
|
|
511
|
-
|
|
512
|
-
// Visual indicator for current theme (useful for debugging)
|
|
513
|
-
[data-theme]::before {
|
|
514
|
-
content: none; // Hidden by default
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
// Show theme indicator in debug mode
|
|
518
|
-
[data-osi-debug="true"][data-theme]::before {
|
|
519
|
-
content: attr(data-theme);
|
|
520
|
-
position: fixed;
|
|
521
|
-
bottom: 8px;
|
|
522
|
-
right: 8px;
|
|
523
|
-
padding: 4px 8px;
|
|
524
|
-
font-size: 10px;
|
|
525
|
-
font-family: monospace;
|
|
526
|
-
background: var(--osi-card-surface);
|
|
527
|
-
color: var(--osi-card-muted);
|
|
528
|
-
border: 1px solid var(--osi-card-border);
|
|
529
|
-
border-radius: 4px;
|
|
530
|
-
z-index: 9999;
|
|
531
|
-
pointer-events: none;
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
// ============================================
|
|
535
|
-
// Dark/Light Mode Specific Adjustments
|
|
536
|
-
// ============================================
|
|
537
|
-
|
|
538
|
-
// Enhanced readability for dark themes
|
|
539
|
-
[data-theme="dark"],
|
|
540
|
-
[data-theme="midnight"],
|
|
541
|
-
[data-theme="ocean"],
|
|
542
|
-
[data-theme="sunset"],
|
|
543
|
-
.osi-cards-container[data-theme="dark"],
|
|
544
|
-
.osi-cards-container[data-theme="midnight"],
|
|
545
|
-
.osi-cards-container[data-theme="ocean"],
|
|
546
|
-
.osi-cards-container[data-theme="sunset"] {
|
|
547
|
-
// Slightly increase font weight for better legibility on dark backgrounds
|
|
548
|
-
--osi-card-font-weight-normal: 400;
|
|
549
|
-
--osi-card-font-weight-medium: 500;
|
|
550
|
-
|
|
551
|
-
// Enhance link visibility
|
|
552
|
-
a:not([class]) {
|
|
553
|
-
color: var(--osi-card-accent);
|
|
554
|
-
|
|
555
|
-
&:hover {
|
|
556
|
-
color: var(--osi-card-accent-hover);
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
// Print mode - always use light theme
|
|
562
|
-
@media print {
|
|
563
|
-
[data-theme],
|
|
564
|
-
.osi-cards-container[data-theme] {
|
|
565
|
-
--osi-card-background: #ffffff !important;
|
|
566
|
-
--osi-card-foreground: #000000 !important;
|
|
567
|
-
--osi-card-muted: #666666 !important;
|
|
568
|
-
--osi-card-border: #cccccc !important;
|
|
569
|
-
--osi-card-shadow: none !important;
|
|
570
|
-
--osi-card-shadow-md: none !important;
|
|
571
|
-
--osi-card-shadow-lg: none !important;
|
|
572
|
-
}
|
|
573
|
-
}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
// ============================================
|
|
2
|
-
// TOKENS INDEX - Single Source of Truth
|
|
3
|
-
// ============================================
|
|
4
|
-
//
|
|
5
|
-
// This file consolidates all design tokens for the OSI Cards library.
|
|
6
|
-
// Import this file to access all tokens and mixins.
|
|
7
|
-
//
|
|
8
|
-
// Usage:
|
|
9
|
-
// @use 'osi-cards-lib/styles/tokens' as tokens;
|
|
10
|
-
//
|
|
11
|
-
// :host {
|
|
12
|
-
// @include tokens.osi-tokens('integration', true);
|
|
13
|
-
// @include tokens.osi-theme-base('integration', true);
|
|
14
|
-
// }
|
|
15
|
-
//
|
|
16
|
-
// ============================================
|
|
17
|
-
|
|
18
|
-
@forward "master";
|
|
19
|
-
|
|
20
|
-
// ============================================
|
|
21
|
-
// ISOLATED FONT STACK
|
|
22
|
-
// ============================================
|
|
23
|
-
//
|
|
24
|
-
// System font stack that doesn't rely on external fonts.
|
|
25
|
-
// This ensures consistent typography without host app interference.
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
$osi-font-stack-system:
|
|
29
|
-
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif,
|
|
30
|
-
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
|
31
|
-
|
|
32
|
-
$osi-font-stack-mono:
|
|
33
|
-
ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
34
|
-
|
|
35
|
-
// Helvetica-first stack for OSI Cards (matches existing)
|
|
36
|
-
$osi-font-stack-primary:
|
|
37
|
-
Helvetica,
|
|
38
|
-
-apple-system,
|
|
39
|
-
BlinkMacSystemFont,
|
|
40
|
-
"Segoe UI",
|
|
41
|
-
Roboto,
|
|
42
|
-
Arial,
|
|
43
|
-
sans-serif;
|
|
44
|
-
|
|
45
|
-
/// Apply isolated font stack
|
|
46
|
-
/// @param {Boolean} $important - Whether to use !important
|
|
47
|
-
@mixin osi-font-isolation($important: false) {
|
|
48
|
-
@if $important {
|
|
49
|
-
font-family: $osi-font-stack-primary !important;
|
|
50
|
-
-webkit-font-smoothing: antialiased !important;
|
|
51
|
-
-moz-osx-font-smoothing: grayscale !important;
|
|
52
|
-
text-rendering: optimizeLegibility !important;
|
|
53
|
-
font-feature-settings: "kern" 1 !important;
|
|
54
|
-
} @else {
|
|
55
|
-
font-family: $osi-font-stack-primary;
|
|
56
|
-
-webkit-font-smoothing: antialiased;
|
|
57
|
-
-moz-osx-font-smoothing: grayscale;
|
|
58
|
-
text-rendering: optimizeLegibility;
|
|
59
|
-
font-feature-settings: "kern" 1;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/// Apply isolated container styles
|
|
64
|
-
/// Creates a new stacking context and prevents style leakage
|
|
65
|
-
@mixin osi-container-isolation() {
|
|
66
|
-
// Create new stacking context
|
|
67
|
-
isolation: isolate;
|
|
68
|
-
|
|
69
|
-
// Ensure box-sizing is correct
|
|
70
|
-
box-sizing: border-box;
|
|
71
|
-
|
|
72
|
-
// Apply font isolation
|
|
73
|
-
@include osi-font-isolation(true);
|
|
74
|
-
|
|
75
|
-
// Reset inherited styles that could leak from host
|
|
76
|
-
font-size: var(--font-size-base, 13px);
|
|
77
|
-
font-weight: var(--font-weight-normal, 400);
|
|
78
|
-
line-height: 1.5;
|
|
79
|
-
text-align: left;
|
|
80
|
-
color: var(--foreground, #1c1c1f);
|
|
81
|
-
|
|
82
|
-
// Preserve 3D transforms for tilt effects
|
|
83
|
-
perspective: 1200px;
|
|
84
|
-
transform-style: preserve-3d;
|
|
85
|
-
|
|
86
|
-
// Apply to all children
|
|
87
|
-
*,
|
|
88
|
-
*::before,
|
|
89
|
-
*::after {
|
|
90
|
-
box-sizing: border-box;
|
|
91
|
-
}
|
|
92
|
-
}
|