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.
- package/fesm2022/osi-cards-lib.mjs +31889 -0
- package/fesm2022/osi-cards-lib.mjs.map +1 -0
- package/index.d.ts +11528 -0
- package/package.json +25 -13
- package/scripts/setup-angular-styles.js +169 -0
- package/styles/_components.scss +38 -0
- package/styles/_index.scss +25 -0
- package/styles/_osi-cards-mixins.scss +459 -0
- package/styles/_osi-cards-tokens.scss +333 -0
- package/styles/_styles-scoped.scss +81 -0
- package/styles/_styles.scss +26 -0
- package/styles/bundles/_ai-card.scss +245 -0
- package/styles/bundles/_all.scss +68 -0
- package/styles/bundles/_base.scss +60 -0
- package/styles/bundles/_card-skeleton.scss +290 -0
- package/styles/bundles/_index.scss +25 -0
- package/styles/bundles/_sections.scss +48 -0
- package/styles/bundles/_tokens-only.scss +139 -0
- package/styles/components/_ai-card-renderer.scss +104 -0
- package/styles/components/_badges.scss +317 -0
- package/styles/components/_card-actions.scss +169 -0
- package/styles/components/_card-footer.scss +47 -0
- package/styles/components/_component-styles.scss +205 -0
- package/styles/components/_empty-state.scss +630 -0
- package/styles/components/_hero-card.scss +422 -0
- package/styles/components/_image-fallback.scss +28 -0
- package/styles/components/_streaming-effects.scss +518 -0
- package/styles/components/cards/_ai-card.scss +718 -0
- package/styles/components/sections/_all-sections.generated.scss +41 -0
- package/styles/components/sections/_all-sections.scss +1086 -0
- package/styles/components/sections/_balanced-compact-system.scss +186 -0
- package/styles/components/sections/_compact-mixins.scss +180 -0
- package/styles/components/sections/_component-mixins.scss +454 -0
- package/styles/components/sections/_design-system.scss +477 -0
- package/styles/components/sections/_design-tokens.scss +308 -0
- package/styles/components/sections/_enhanced-design-variables.scss +147 -0
- package/styles/components/sections/_master-compact-system.scss +302 -0
- package/styles/components/sections/_master-dense-system.scss +239 -0
- package/styles/components/sections/_minimalistic-design.scss +268 -0
- package/styles/components/sections/_modern-effects.scss +392 -0
- package/styles/components/sections/_modern-sections.scss +351 -0
- package/styles/components/sections/_perfect-system.scss +204 -0
- package/styles/components/sections/_section-animations.scss +331 -0
- package/styles/components/sections/_section-shell.scss +337 -0
- package/styles/components/sections/_section-types.generated.scss +30 -0
- package/styles/components/sections/_sections-all.scss +26 -0
- package/styles/components/sections/_sections-base.scss +334 -0
- package/styles/components/sections/_typography-system.scss +327 -0
- package/styles/components/sections/_ultra-compact-tokens.scss +375 -0
- package/styles/components/sections/_unified-section-style.scss +157 -0
- package/styles/components/sections/_utility-classes.scss +567 -0
- package/styles/components/sections/_visual-effects-library.scss +374 -0
- package/styles/core/_animations.scss +1498 -0
- package/styles/core/_bootstrap-reset.scss +445 -0
- package/styles/core/_color-helpers.scss +46 -0
- package/styles/core/_global-unified.scss +118 -0
- package/styles/core/_global.scss +73 -0
- package/styles/core/_mixins.scss +491 -0
- package/styles/core/_surface-layers.scss +76 -0
- package/styles/core/_utilities.scss +326 -0
- package/styles/core/_variables-unified.scss +57 -0
- package/styles/core/_variables.scss +36 -0
- package/styles/core/variables/_colors-source.scss +34 -0
- package/styles/core/variables/_colors-unified.scss +26 -0
- package/styles/core/variables/_colors.scss +21 -0
- package/styles/critical.scss +353 -0
- package/styles/design-system/_compact-theme.scss +159 -0
- package/styles/design-system/_section-base.scss +426 -0
- package/styles/design-system/_tokens.scss +237 -0
- package/styles/design-system/_unified-sections.scss +215 -0
- package/styles/layout/_feature-grid.scss +322 -0
- package/styles/layout/_masonry.scss +734 -0
- package/styles/layout/_tilt.scss +244 -0
- package/styles/micro-interactions.scss +583 -0
- package/styles/mixins/_section-mixins.scss +280 -0
- package/styles/non-critical.scss +643 -0
- package/styles/reset/_framework-reset.scss +457 -0
- package/styles/reset/_index.scss +14 -0
- package/styles/reset/_shadow-reset.scss +383 -0
- package/styles/responsive.scss +326 -0
- package/styles/themes.scss +573 -0
- package/styles/tokens/_index.scss +92 -0
- package/styles/tokens/_master.scss +1404 -0
- package/styles/tokens/_section-tokens.generated.scss +140 -0
- package/postcss.config.js +0 -81
- package/section-registry.json +0 -3864
- package/section-registry.schema.json +0 -264
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OSI Cards SCSS Mixins
|
|
3
|
+
* Reusable style patterns for components
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* @use 'osi-cards-mixins' as mixins;
|
|
7
|
+
*
|
|
8
|
+
* .my-component {
|
|
9
|
+
* @include mixins.card-base;
|
|
10
|
+
* }
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// CARD MIXINS
|
|
15
|
+
// ============================================================================
|
|
16
|
+
|
|
17
|
+
/// Base card styles
|
|
18
|
+
@mixin card-base {
|
|
19
|
+
background: var(--osi-card-bg, white);
|
|
20
|
+
border: 1px solid var(--osi-card-border, var(--osi-neutral-200));
|
|
21
|
+
border-radius: var(--osi-card-radius, var(--osi-radius-xl));
|
|
22
|
+
box-shadow: var(--osi-card-shadow, var(--osi-shadow-md));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/// Card hover state
|
|
26
|
+
@mixin card-hover {
|
|
27
|
+
transition:
|
|
28
|
+
transform var(--osi-duration-200) var(--osi-ease-out),
|
|
29
|
+
box-shadow var(--osi-duration-200) var(--osi-ease-out);
|
|
30
|
+
|
|
31
|
+
&:hover {
|
|
32
|
+
transform: translateY(-2px);
|
|
33
|
+
box-shadow: var(--osi-shadow-lg);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/// Card interactive (clickable)
|
|
38
|
+
@mixin card-interactive {
|
|
39
|
+
@include card-hover;
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
|
|
42
|
+
&:active {
|
|
43
|
+
transform: translateY(0);
|
|
44
|
+
box-shadow: var(--osi-shadow-sm);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&:focus-visible {
|
|
48
|
+
outline: 2px solid var(--osi-primary-500);
|
|
49
|
+
outline-offset: 2px;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// ============================================================================
|
|
54
|
+
// SECTION MIXINS
|
|
55
|
+
// ============================================================================
|
|
56
|
+
|
|
57
|
+
/// Base section styles
|
|
58
|
+
@mixin section-base {
|
|
59
|
+
padding: var(--osi-spacing-4);
|
|
60
|
+
|
|
61
|
+
& + & {
|
|
62
|
+
border-top: 1px solid var(--osi-border-default);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/// Section header styles
|
|
67
|
+
@mixin section-header {
|
|
68
|
+
display: flex;
|
|
69
|
+
align-items: center;
|
|
70
|
+
gap: var(--osi-spacing-2);
|
|
71
|
+
margin-bottom: var(--osi-spacing-3);
|
|
72
|
+
font-size: var(--osi-text-sm);
|
|
73
|
+
font-weight: var(--osi-font-semibold);
|
|
74
|
+
color: var(--osi-section-header-color);
|
|
75
|
+
text-transform: uppercase;
|
|
76
|
+
letter-spacing: 0.05em;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/// Section content styles
|
|
80
|
+
@mixin section-content {
|
|
81
|
+
color: var(--osi-section-content-color);
|
|
82
|
+
font-size: var(--osi-text-sm);
|
|
83
|
+
line-height: var(--osi-leading-relaxed);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// ============================================================================
|
|
87
|
+
// FIELD MIXINS
|
|
88
|
+
// ============================================================================
|
|
89
|
+
|
|
90
|
+
/// Field container
|
|
91
|
+
@mixin field-container {
|
|
92
|
+
display: flex;
|
|
93
|
+
flex-direction: column;
|
|
94
|
+
gap: var(--osi-field-gap);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/// Field label
|
|
98
|
+
@mixin field-label {
|
|
99
|
+
font-size: var(--osi-text-xs);
|
|
100
|
+
font-weight: var(--osi-font-medium);
|
|
101
|
+
color: var(--osi-field-label-color);
|
|
102
|
+
text-transform: uppercase;
|
|
103
|
+
letter-spacing: 0.05em;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/// Field value
|
|
107
|
+
@mixin field-value {
|
|
108
|
+
font-size: var(--osi-text-base);
|
|
109
|
+
font-weight: var(--osi-font-medium);
|
|
110
|
+
color: var(--osi-field-value-color);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/// Field value large (for metrics)
|
|
114
|
+
@mixin field-value-lg {
|
|
115
|
+
font-size: var(--osi-text-2xl);
|
|
116
|
+
font-weight: var(--osi-font-bold);
|
|
117
|
+
color: var(--osi-field-value-color);
|
|
118
|
+
line-height: var(--osi-leading-tight);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// ============================================================================
|
|
122
|
+
// GRID MIXINS
|
|
123
|
+
// ============================================================================
|
|
124
|
+
|
|
125
|
+
/// Responsive grid container
|
|
126
|
+
@mixin grid-container($min-column: 200px, $gap: var(--osi-grid-gap)) {
|
|
127
|
+
display: grid;
|
|
128
|
+
grid-template-columns: repeat(auto-fit, minmax($min-column, 1fr));
|
|
129
|
+
gap: $gap;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/// Fixed column grid
|
|
133
|
+
@mixin grid-fixed($columns: 2, $gap: var(--osi-grid-gap)) {
|
|
134
|
+
display: grid;
|
|
135
|
+
grid-template-columns: repeat($columns, 1fr);
|
|
136
|
+
gap: $gap;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/// Masonry-like grid (using CSS grid)
|
|
140
|
+
@mixin masonry-grid($min-column: 250px) {
|
|
141
|
+
display: grid;
|
|
142
|
+
grid-template-columns: repeat(auto-fill, minmax($min-column, 1fr));
|
|
143
|
+
grid-auto-rows: 20px;
|
|
144
|
+
gap: var(--osi-spacing-4);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// ============================================================================
|
|
148
|
+
// TYPOGRAPHY MIXINS
|
|
149
|
+
// ============================================================================
|
|
150
|
+
|
|
151
|
+
/// Heading styles
|
|
152
|
+
@mixin heading($level: 1) {
|
|
153
|
+
font-family: var(--osi-font-sans);
|
|
154
|
+
font-weight: var(--osi-font-bold);
|
|
155
|
+
line-height: var(--osi-leading-tight);
|
|
156
|
+
color: var(--osi-text-primary);
|
|
157
|
+
|
|
158
|
+
@if $level == 1 {
|
|
159
|
+
font-size: var(--osi-text-3xl);
|
|
160
|
+
} @else if $level == 2 {
|
|
161
|
+
font-size: var(--osi-text-2xl);
|
|
162
|
+
} @else if $level == 3 {
|
|
163
|
+
font-size: var(--osi-text-xl);
|
|
164
|
+
} @else if $level == 4 {
|
|
165
|
+
font-size: var(--osi-text-lg);
|
|
166
|
+
} @else {
|
|
167
|
+
font-size: var(--osi-text-base);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/// Body text
|
|
172
|
+
@mixin body-text {
|
|
173
|
+
font-family: var(--osi-font-sans);
|
|
174
|
+
font-size: var(--osi-text-base);
|
|
175
|
+
font-weight: var(--osi-font-normal);
|
|
176
|
+
line-height: var(--osi-leading-normal);
|
|
177
|
+
color: var(--osi-text-secondary);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/// Small text
|
|
181
|
+
@mixin small-text {
|
|
182
|
+
font-size: var(--osi-text-sm);
|
|
183
|
+
color: var(--osi-text-tertiary);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/// Truncate text with ellipsis
|
|
187
|
+
@mixin truncate {
|
|
188
|
+
overflow: hidden;
|
|
189
|
+
text-overflow: ellipsis;
|
|
190
|
+
white-space: nowrap;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/// Multi-line truncate
|
|
194
|
+
@mixin line-clamp($lines: 2) {
|
|
195
|
+
display: -webkit-box;
|
|
196
|
+
-webkit-line-clamp: $lines;
|
|
197
|
+
-webkit-box-orient: vertical;
|
|
198
|
+
overflow: hidden;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// ============================================================================
|
|
202
|
+
// BUTTON MIXINS
|
|
203
|
+
// ============================================================================
|
|
204
|
+
|
|
205
|
+
/// Base button styles
|
|
206
|
+
@mixin button-base {
|
|
207
|
+
display: inline-flex;
|
|
208
|
+
align-items: center;
|
|
209
|
+
justify-content: center;
|
|
210
|
+
gap: var(--osi-spacing-2);
|
|
211
|
+
padding: var(--osi-btn-padding-y) var(--osi-btn-padding-x);
|
|
212
|
+
font-size: var(--osi-btn-font-size);
|
|
213
|
+
font-weight: var(--osi-btn-font-weight);
|
|
214
|
+
border-radius: var(--osi-btn-radius);
|
|
215
|
+
border: none;
|
|
216
|
+
cursor: pointer;
|
|
217
|
+
transition: all var(--osi-duration-150) var(--osi-ease-out);
|
|
218
|
+
|
|
219
|
+
&:disabled {
|
|
220
|
+
opacity: 0.5;
|
|
221
|
+
cursor: not-allowed;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
&:focus-visible {
|
|
225
|
+
outline: 2px solid var(--osi-primary-500);
|
|
226
|
+
outline-offset: 2px;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/// Primary button
|
|
231
|
+
@mixin button-primary {
|
|
232
|
+
@include button-base;
|
|
233
|
+
background: var(--osi-primary-500);
|
|
234
|
+
color: white;
|
|
235
|
+
|
|
236
|
+
&:hover:not(:disabled) {
|
|
237
|
+
background: var(--osi-primary-600);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
&:active:not(:disabled) {
|
|
241
|
+
background: var(--osi-primary-700);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/// Secondary button
|
|
246
|
+
@mixin button-secondary {
|
|
247
|
+
@include button-base;
|
|
248
|
+
background: var(--osi-neutral-100);
|
|
249
|
+
color: var(--osi-text-primary);
|
|
250
|
+
|
|
251
|
+
&:hover:not(:disabled) {
|
|
252
|
+
background: var(--osi-neutral-200);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
&:active:not(:disabled) {
|
|
256
|
+
background: var(--osi-neutral-300);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/// Ghost button
|
|
261
|
+
@mixin button-ghost {
|
|
262
|
+
@include button-base;
|
|
263
|
+
background: transparent;
|
|
264
|
+
color: var(--osi-text-secondary);
|
|
265
|
+
|
|
266
|
+
&:hover:not(:disabled) {
|
|
267
|
+
background: var(--osi-neutral-100);
|
|
268
|
+
color: var(--osi-text-primary);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// ============================================================================
|
|
273
|
+
// UTILITY MIXINS
|
|
274
|
+
// ============================================================================
|
|
275
|
+
|
|
276
|
+
/// Visually hidden (for screen readers)
|
|
277
|
+
@mixin visually-hidden {
|
|
278
|
+
position: absolute !important;
|
|
279
|
+
width: 1px !important;
|
|
280
|
+
height: 1px !important;
|
|
281
|
+
padding: 0 !important;
|
|
282
|
+
margin: -1px !important;
|
|
283
|
+
overflow: hidden !important;
|
|
284
|
+
clip: rect(0, 0, 0, 0) !important;
|
|
285
|
+
white-space: nowrap !important;
|
|
286
|
+
border: 0 !important;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/// Reset list styles
|
|
290
|
+
@mixin list-reset {
|
|
291
|
+
list-style: none;
|
|
292
|
+
margin: 0;
|
|
293
|
+
padding: 0;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/// Reset button styles
|
|
297
|
+
@mixin button-reset {
|
|
298
|
+
appearance: none;
|
|
299
|
+
background: none;
|
|
300
|
+
border: none;
|
|
301
|
+
padding: 0;
|
|
302
|
+
margin: 0;
|
|
303
|
+
font: inherit;
|
|
304
|
+
color: inherit;
|
|
305
|
+
cursor: pointer;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/// Flexbox center
|
|
309
|
+
@mixin flex-center {
|
|
310
|
+
display: flex;
|
|
311
|
+
align-items: center;
|
|
312
|
+
justify-content: center;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/// Flex column
|
|
316
|
+
@mixin flex-column {
|
|
317
|
+
display: flex;
|
|
318
|
+
flex-direction: column;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/// Flex between
|
|
322
|
+
@mixin flex-between {
|
|
323
|
+
display: flex;
|
|
324
|
+
align-items: center;
|
|
325
|
+
justify-content: space-between;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/// Absolute fill (position absolute, fill container)
|
|
329
|
+
@mixin absolute-fill {
|
|
330
|
+
position: absolute;
|
|
331
|
+
inset: 0;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/// Fixed fill (position fixed, fill viewport)
|
|
335
|
+
@mixin fixed-fill {
|
|
336
|
+
position: fixed;
|
|
337
|
+
inset: 0;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// ============================================================================
|
|
341
|
+
// RESPONSIVE MIXINS
|
|
342
|
+
// ============================================================================
|
|
343
|
+
|
|
344
|
+
/// Mobile-first breakpoint
|
|
345
|
+
@mixin breakpoint($size) {
|
|
346
|
+
@if $size == "sm" {
|
|
347
|
+
@media (min-width: 640px) {
|
|
348
|
+
@content;
|
|
349
|
+
}
|
|
350
|
+
} @else if $size == "md" {
|
|
351
|
+
@media (min-width: 768px) {
|
|
352
|
+
@content;
|
|
353
|
+
}
|
|
354
|
+
} @else if $size == "lg" {
|
|
355
|
+
@media (min-width: 1024px) {
|
|
356
|
+
@content;
|
|
357
|
+
}
|
|
358
|
+
} @else if $size == "xl" {
|
|
359
|
+
@media (min-width: 1280px) {
|
|
360
|
+
@content;
|
|
361
|
+
}
|
|
362
|
+
} @else if $size == "2xl" {
|
|
363
|
+
@media (min-width: 1536px) {
|
|
364
|
+
@content;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/// Max-width breakpoint
|
|
370
|
+
@mixin breakpoint-down($size) {
|
|
371
|
+
@if $size == "sm" {
|
|
372
|
+
@media (max-width: 639px) {
|
|
373
|
+
@content;
|
|
374
|
+
}
|
|
375
|
+
} @else if $size == "md" {
|
|
376
|
+
@media (max-width: 767px) {
|
|
377
|
+
@content;
|
|
378
|
+
}
|
|
379
|
+
} @else if $size == "lg" {
|
|
380
|
+
@media (max-width: 1023px) {
|
|
381
|
+
@content;
|
|
382
|
+
}
|
|
383
|
+
} @else if $size == "xl" {
|
|
384
|
+
@media (max-width: 1279px) {
|
|
385
|
+
@content;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
// ============================================================================
|
|
391
|
+
// ANIMATION MIXINS
|
|
392
|
+
// ============================================================================
|
|
393
|
+
|
|
394
|
+
/// Fade in animation
|
|
395
|
+
@mixin fade-in($duration: var(--osi-duration-200)) {
|
|
396
|
+
animation: osi-fade-in $duration var(--osi-ease-out);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/// Slide up animation
|
|
400
|
+
@mixin slide-up($duration: var(--osi-duration-300)) {
|
|
401
|
+
animation: osi-slide-up $duration var(--osi-ease-out);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/// Pulse animation
|
|
405
|
+
@mixin pulse($duration: 2s) {
|
|
406
|
+
animation: osi-pulse $duration infinite;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/// Loading shimmer
|
|
410
|
+
@mixin loading-shimmer {
|
|
411
|
+
background: linear-gradient(
|
|
412
|
+
90deg,
|
|
413
|
+
var(--osi-neutral-200) 25%,
|
|
414
|
+
var(--osi-neutral-100) 50%,
|
|
415
|
+
var(--osi-neutral-200) 75%
|
|
416
|
+
);
|
|
417
|
+
background-size: 200% 100%;
|
|
418
|
+
animation: osi-shimmer 1.5s infinite;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// Keyframe definitions
|
|
422
|
+
@keyframes osi-fade-in {
|
|
423
|
+
from {
|
|
424
|
+
opacity: 0;
|
|
425
|
+
}
|
|
426
|
+
to {
|
|
427
|
+
opacity: 1;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
@keyframes osi-slide-up {
|
|
432
|
+
from {
|
|
433
|
+
opacity: 0;
|
|
434
|
+
transform: translate3d(0, 10px, 0);
|
|
435
|
+
}
|
|
436
|
+
to {
|
|
437
|
+
opacity: 1;
|
|
438
|
+
transform: translate3d(0, 0, 0);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
@keyframes osi-pulse {
|
|
443
|
+
0%,
|
|
444
|
+
100% {
|
|
445
|
+
opacity: 1;
|
|
446
|
+
}
|
|
447
|
+
50% {
|
|
448
|
+
opacity: 0.5;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
@keyframes osi-shimmer {
|
|
453
|
+
0% {
|
|
454
|
+
background-position: 200% 0;
|
|
455
|
+
}
|
|
456
|
+
100% {
|
|
457
|
+
background-position: -200% 0;
|
|
458
|
+
}
|
|
459
|
+
}
|