osi-cards-lib 1.5.36 → 1.5.38
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 +174 -945
- package/fesm2022/osi-cards-lib.mjs +1168 -186
- package/fesm2022/osi-cards-lib.mjs.map +1 -1
- package/index.d.ts +35 -35
- package/package.json +2 -2
- package/scripts/setup-angular-styles.js +2 -0
- package/styles/_osi-cards-tokens.scss +0 -1
- package/styles/_styles-scoped.scss +9 -1
- package/styles/bundles/_ai-card.scss +5 -1
- package/styles/bundles/_card-skeleton.scss +2 -2
- package/styles/components/_component-styles.scss +4 -0
- package/styles/components/cards/_ai-card.scss +1 -1
- package/styles/components/sections/_design-tokens.scss +0 -1
- package/styles/components/sections/_typography-system.scss +2 -8
- package/styles/core/_bootstrap-reset.scss +47 -37
- package/styles/design-system/_tokens.scss +0 -1
- package/styles/layout/_masonry.scss +5 -11
- package/styles/reset/_shadow-reset.scss +2 -7
- package/styles/responsive.scss +9 -32
- package/styles/tokens/_master.scss +235 -220
package/index.d.ts
CHANGED
|
@@ -352,7 +352,6 @@ interface CardSection {
|
|
|
352
352
|
type: SectionTypeInput;
|
|
353
353
|
description?: string;
|
|
354
354
|
subtitle?: string;
|
|
355
|
-
columns?: number;
|
|
356
355
|
/**
|
|
357
356
|
* Explicit column span override - how many columns this section should span.
|
|
358
357
|
* Takes precedence over preferredColumns.
|
|
@@ -408,28 +407,18 @@ interface CardSection {
|
|
|
408
407
|
*/
|
|
409
408
|
layoutPriority?: LayoutPriority;
|
|
410
409
|
/**
|
|
411
|
-
* Priority
|
|
412
|
-
* -
|
|
413
|
-
* -
|
|
414
|
-
* -
|
|
415
|
-
* - 'optional': Can be collapsed first when space is limited
|
|
416
|
-
*/
|
|
417
|
-
priority?: 'critical' | 'important' | 'standard' | 'optional';
|
|
418
|
-
/**
|
|
419
|
-
* Keep this section visible at the top during scroll
|
|
410
|
+
* Priority for layout ordering and condensation (1-3)
|
|
411
|
+
* - 1: Highest priority - Always visible, never condensed (overview, key contacts)
|
|
412
|
+
* - 2: Medium priority - Visible by default, condensed last (analytics, charts)
|
|
413
|
+
* - 3: Lowest priority - Normal priority, can be collapsed first (info, lists)
|
|
420
414
|
*/
|
|
421
|
-
|
|
422
|
-
/**
|
|
423
|
-
* Group ID to keep related sections together in layout
|
|
424
|
-
*/
|
|
425
|
-
groupId?: string;
|
|
415
|
+
priority?: 1 | 2 | 3;
|
|
426
416
|
/**
|
|
427
417
|
* Preferred column position (0-indexed) for column affinity
|
|
428
418
|
*/
|
|
429
419
|
columnAffinity?: number;
|
|
430
420
|
width?: number;
|
|
431
421
|
collapsed?: boolean;
|
|
432
|
-
emoji?: string;
|
|
433
422
|
fields?: CardField[];
|
|
434
423
|
items?: CardItem[];
|
|
435
424
|
chartType?: 'bar' | 'line' | 'pie' | 'doughnut';
|
|
@@ -1376,15 +1365,13 @@ interface ISectionBuilder {
|
|
|
1376
1365
|
withType(type: SectionTypeInput): ISectionBuilder;
|
|
1377
1366
|
withDescription(description: string): ISectionBuilder;
|
|
1378
1367
|
withSubtitle(subtitle: string): ISectionBuilder;
|
|
1379
|
-
withColumns(columns: number): ISectionBuilder;
|
|
1380
1368
|
withColSpan(span: number): ISectionBuilder;
|
|
1381
1369
|
withPreferredColumns(columns: 1 | 2 | 3 | 4): ISectionBuilder;
|
|
1382
|
-
withPriority(priority:
|
|
1370
|
+
withPriority(priority: 1 | 2 | 3): ISectionBuilder;
|
|
1383
1371
|
withField(field: CardField): ISectionBuilder;
|
|
1384
1372
|
withFields(fields: CardField[]): ISectionBuilder;
|
|
1385
1373
|
withItem(item: CardItem): ISectionBuilder;
|
|
1386
1374
|
withItems(items: CardItem[]): ISectionBuilder;
|
|
1387
|
-
withEmoji(emoji: string): ISectionBuilder;
|
|
1388
1375
|
withCollapsed(collapsed: boolean): ISectionBuilder;
|
|
1389
1376
|
withMeta(key: string, value: unknown): ISectionBuilder;
|
|
1390
1377
|
build(): CardSection;
|
|
@@ -1724,8 +1711,6 @@ interface BaseSectionProps {
|
|
|
1724
1711
|
description?: string;
|
|
1725
1712
|
/** Optional subtitle */
|
|
1726
1713
|
subtitle?: string;
|
|
1727
|
-
/** Column configuration */
|
|
1728
|
-
columns?: number;
|
|
1729
1714
|
/** Explicit column span override */
|
|
1730
1715
|
colSpan?: number;
|
|
1731
1716
|
/** Preferred column count */
|
|
@@ -1744,20 +1729,14 @@ interface BaseSectionProps {
|
|
|
1744
1729
|
canGrow?: boolean;
|
|
1745
1730
|
/** Layout priority (1=highest, 3=lowest) */
|
|
1746
1731
|
layoutPriority?: 1 | 2 | 3;
|
|
1747
|
-
/** Priority
|
|
1748
|
-
priority?:
|
|
1749
|
-
/** Keep visible during scroll */
|
|
1750
|
-
sticky?: boolean;
|
|
1751
|
-
/** Group ID for related sections */
|
|
1752
|
-
groupId?: string;
|
|
1732
|
+
/** Priority for layout ordering (1-3, where 1 is highest) */
|
|
1733
|
+
priority?: 1 | 2 | 3;
|
|
1753
1734
|
/** Preferred column position */
|
|
1754
1735
|
columnAffinity?: number;
|
|
1755
1736
|
/** Section width */
|
|
1756
1737
|
width?: number;
|
|
1757
1738
|
/** Collapsed state */
|
|
1758
1739
|
collapsed?: boolean;
|
|
1759
|
-
/** Optional emoji */
|
|
1760
|
-
emoji?: string;
|
|
1761
1740
|
/** Additional metadata */
|
|
1762
1741
|
meta?: Record<string, unknown>;
|
|
1763
1742
|
}
|
|
@@ -3547,8 +3526,8 @@ interface SectionManifestEntry {
|
|
|
3547
3526
|
usesChartData?: boolean;
|
|
3548
3527
|
defaultColumns: number;
|
|
3549
3528
|
supportsCollapse: boolean;
|
|
3550
|
-
supportsEmoji: boolean;
|
|
3551
3529
|
requiresExternalLib?: string;
|
|
3530
|
+
supportsEmoji?: boolean;
|
|
3552
3531
|
};
|
|
3553
3532
|
aliases: string[];
|
|
3554
3533
|
isInternal: boolean;
|
|
@@ -5961,6 +5940,10 @@ declare class SectionNormalizationService {
|
|
|
5961
5940
|
* Get the priority band for a section type
|
|
5962
5941
|
*/
|
|
5963
5942
|
getPriorityBandForType(type: string): PriorityBand;
|
|
5943
|
+
/**
|
|
5944
|
+
* Map PriorityBand to numeric priority (1-3)
|
|
5945
|
+
*/
|
|
5946
|
+
mapPriorityBandToNumericPriority(priority?: PriorityBand): 1 | 2 | 3;
|
|
5964
5947
|
/**
|
|
5965
5948
|
* Maps a priority band string to a numeric layout priority (1-3).
|
|
5966
5949
|
* Used by the row-first packing algorithm for efficient sorting.
|
|
@@ -8690,6 +8673,8 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8690
8673
|
private lastSectionHash;
|
|
8691
8674
|
private itemKeyMap;
|
|
8692
8675
|
private readonly HEIGHT_THRESHOLD;
|
|
8676
|
+
private initialLayoutPollingTimeout?;
|
|
8677
|
+
private itemElements;
|
|
8693
8678
|
ngAfterViewInit(): void;
|
|
8694
8679
|
ngOnChanges(changes: SimpleChanges): void;
|
|
8695
8680
|
ngOnDestroy(): void;
|
|
@@ -8712,10 +8697,12 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8712
8697
|
private computeSectionHash;
|
|
8713
8698
|
/**
|
|
8714
8699
|
* Hybrid reordering: keep critical/important sections in order, reorder the rest
|
|
8700
|
+
* Enhanced to better match section heights for gap filling
|
|
8715
8701
|
*/
|
|
8716
8702
|
private applyHybridReordering;
|
|
8717
8703
|
/**
|
|
8718
|
-
* Estimate section height for reordering (
|
|
8704
|
+
* Estimate section height for reordering (enhanced heuristic)
|
|
8705
|
+
* More accurate estimation based on section type and content structure
|
|
8719
8706
|
*/
|
|
8720
8707
|
private estimateSectionHeight;
|
|
8721
8708
|
/**
|
|
@@ -8732,6 +8719,14 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8732
8719
|
* Cleanup absolute position polyfill observers
|
|
8733
8720
|
*/
|
|
8734
8721
|
private cleanupAbsolutePositionPolyfill;
|
|
8722
|
+
/**
|
|
8723
|
+
* Cache element references to avoid repeated querySelectorAll calls
|
|
8724
|
+
*/
|
|
8725
|
+
private cacheItemElements;
|
|
8726
|
+
/**
|
|
8727
|
+
* Clear cached element references when sections change
|
|
8728
|
+
*/
|
|
8729
|
+
private clearItemElementCache;
|
|
8735
8730
|
/**
|
|
8736
8731
|
* Observe item resizes for absolute position updates
|
|
8737
8732
|
*/
|
|
@@ -8752,6 +8747,11 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8752
8747
|
* Calculate actual column heights from transforms and item heights for diagnostics
|
|
8753
8748
|
*/
|
|
8754
8749
|
private calculateColumnHeights;
|
|
8750
|
+
/**
|
|
8751
|
+
* Ensure initial layout is calculated with retry mechanism if width is invalid
|
|
8752
|
+
* Simplified: Single RAF + one timeout retry
|
|
8753
|
+
*/
|
|
8754
|
+
private ensureInitialLayout;
|
|
8755
8755
|
static ɵfac: i0.ɵɵFactoryDeclaration<MasonryGridComponent, never>;
|
|
8756
8756
|
static ɵcmp: i0.ɵɵComponentDeclaration<MasonryGridComponent, "app-masonry-grid", never, { "sections": { "alias": "sections"; "required": false; }; "gap": { "alias": "gap"; "required": false; }; "minColumnWidth": { "alias": "minColumnWidth"; "required": false; }; "maxColumns": { "alias": "maxColumns"; "required": false; }; "containerWidth": { "alias": "containerWidth"; "required": false; }; "isStreaming": { "alias": "isStreaming"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; }, { "sectionEvent": "sectionEvent"; "layoutChange": "layoutChange"; "layoutCompleted": "layoutCompleted"; "layoutLog": "layoutLog"; }, never, never, true, never>;
|
|
8757
8757
|
}
|
|
@@ -10238,7 +10238,7 @@ declare class ContactCardSectionComponent extends BaseSectionComponent implement
|
|
|
10238
10238
|
label: string;
|
|
10239
10239
|
}>;
|
|
10240
10240
|
/**
|
|
10241
|
-
* Get primary contact methods (email +
|
|
10241
|
+
* Get primary contact methods (email + salesforce, max 2)
|
|
10242
10242
|
* These are shown in collapsed state
|
|
10243
10243
|
*/
|
|
10244
10244
|
getPrimaryActions(contact: any): Array<{
|
|
@@ -11488,11 +11488,11 @@ declare function packWithZeroGapsGuarantee(sections: CardSection[], columns?: nu
|
|
|
11488
11488
|
* Do not edit manually - generated by scripts/generate-version.js
|
|
11489
11489
|
*
|
|
11490
11490
|
* Source of truth: version.config.json
|
|
11491
|
-
* Last synced: 2025-12-
|
|
11491
|
+
* Last synced: 2025-12-15T09:21:17.528Z
|
|
11492
11492
|
*/
|
|
11493
11493
|
declare const VERSION = "1.5.19";
|
|
11494
|
-
declare const BUILD_DATE = "2025-12-
|
|
11495
|
-
declare const BUILD_HASH = "
|
|
11494
|
+
declare const BUILD_DATE = "2025-12-15T09:21:17.528Z";
|
|
11495
|
+
declare const BUILD_HASH = "9010f4a";
|
|
11496
11496
|
declare const BUILD_BRANCH = "main";
|
|
11497
11497
|
interface VersionInfo {
|
|
11498
11498
|
version: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "osi-cards-lib",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.38",
|
|
4
4
|
"description": "Standalone OSI Cards library for Angular applications with CSS Layer support for easy style overrides",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -95,4 +95,4 @@
|
|
|
95
95
|
"*.css",
|
|
96
96
|
"*.scss"
|
|
97
97
|
]
|
|
98
|
-
}
|
|
98
|
+
}
|
|
@@ -60,7 +60,15 @@
|
|
|
60
60
|
min-height: 0;
|
|
61
61
|
|
|
62
62
|
// Font family - ensure consistent typography
|
|
63
|
-
font-family:
|
|
63
|
+
font-family:
|
|
64
|
+
Helvetica,
|
|
65
|
+
Helvetica Neue,
|
|
66
|
+
-apple-system,
|
|
67
|
+
BlinkMacSystemFont,
|
|
68
|
+
Segoe UI,
|
|
69
|
+
Roboto,
|
|
70
|
+
Arial,
|
|
71
|
+
sans-serif !important;
|
|
64
72
|
|
|
65
73
|
// Preserve 3D transforms for tilt effects
|
|
66
74
|
perspective: 1200px;
|
|
@@ -181,7 +181,11 @@
|
|
|
181
181
|
.ai-card-surface:hover {
|
|
182
182
|
border: var(--osi-card-border-hover, 1px solid rgba(255, 121, 0, 0.5)) !important;
|
|
183
183
|
background: var(--osi-card-background-hover, rgba(30, 30, 30, 0.8)) !important;
|
|
184
|
-
box-shadow: var(
|
|
184
|
+
box-shadow: var(
|
|
185
|
+
--osi-card-shadow-hover,
|
|
186
|
+
0 20px 40px -5px rgba(0, 0, 0, 0.4),
|
|
187
|
+
0 0 0 1px rgba(255, 121, 0, 0.2)
|
|
188
|
+
) !important;
|
|
185
189
|
}
|
|
186
190
|
|
|
187
191
|
// Section highlight animation for URL fragment scrolling
|
|
@@ -98,8 +98,8 @@
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
.skeleton-title {
|
|
101
|
-
font-size: 1.
|
|
102
|
-
font-weight:
|
|
101
|
+
font-size: var(--card-header-title-font-size, 1.25rem);
|
|
102
|
+
font-weight: var(--card-header-title-font-weight, 700);
|
|
103
103
|
color: var(--foreground, #1c1c1f);
|
|
104
104
|
min-height: 2rem;
|
|
105
105
|
display: flex;
|
|
@@ -293,14 +293,8 @@
|
|
|
293
293
|
// =====================================================================
|
|
294
294
|
|
|
295
295
|
@mixin fluid-type($min-size, $max-size, $min-width: 320px, $max-width: 1200px) {
|
|
296
|
-
font
|
|
297
|
-
|
|
298
|
-
calc(
|
|
299
|
-
#{$min-size} + (#{strip-unit($max-size)} - #{strip-unit($min-size)}) *
|
|
300
|
-
((100vw - #{$min-width}) / (#{strip-unit($max-width)} - #{strip-unit($min-width)}))
|
|
301
|
-
),
|
|
302
|
-
#{$max-size}
|
|
303
|
-
);
|
|
296
|
+
// Fixed font size - no responsive behavior
|
|
297
|
+
font-size: #{$min-size};
|
|
304
298
|
}
|
|
305
299
|
|
|
306
300
|
@function strip-unit($number) {
|
|
@@ -305,10 +305,19 @@ article.ai-card-surface {
|
|
|
305
305
|
|
|
306
306
|
/* Angular Split variables */
|
|
307
307
|
--_as-gutter-background-color: var(--as-gutter-background-color, #eeeeee);
|
|
308
|
-
--_as-gutter-icon-horizontal: var(
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
308
|
+
--_as-gutter-icon-horizontal: var(
|
|
309
|
+
--as-gutter-icon-horizontal,
|
|
310
|
+
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)
|
|
311
|
+
);
|
|
312
|
+
--_as-gutter-icon-vertical: var(
|
|
313
|
+
--as-gutter-icon-vertical,
|
|
314
|
+
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)
|
|
315
|
+
);
|
|
316
|
+
--_as-gutter-icon-disabled: var(
|
|
317
|
+
--as-gutter-icon-disabled,
|
|
318
|
+
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)
|
|
319
|
+
);
|
|
320
|
+
--_as-transition-duration: var(--as-transition-duration, 0.3s);
|
|
312
321
|
--_as-gutter-disabled-cursor: var(--as-gutter-disabled-cursor, default);
|
|
313
322
|
|
|
314
323
|
/* Additional spacing variables for integration */
|
|
@@ -336,7 +345,7 @@ article.ai-card-surface {
|
|
|
336
345
|
--section-card-padding: var(--spacing-md);
|
|
337
346
|
|
|
338
347
|
/* Additional typography variables */
|
|
339
|
-
--text-md: .875rem;
|
|
348
|
+
--text-md: 0.875rem;
|
|
340
349
|
--font-light: 300;
|
|
341
350
|
--font-normal: 400;
|
|
342
351
|
--font-medium: 500;
|
|
@@ -351,28 +360,29 @@ article.ai-card-surface {
|
|
|
351
360
|
|
|
352
361
|
/* Additional shadow variables */
|
|
353
362
|
--radius-none: 0;
|
|
354
|
-
--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);
|
|
355
|
-
--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .05);
|
|
356
|
-
--glow-sm: 0 0 10px rgba(var(--accent-rgb), .15);
|
|
357
|
-
--glow-md: 0 0 20px rgba(var(--accent-rgb), .2);
|
|
358
|
-
--glow-lg: 0 0 30px rgba(var(--accent-rgb), .25);
|
|
359
|
-
--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .2);
|
|
363
|
+
--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
|
364
|
+
--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);
|
|
365
|
+
--glow-sm: 0 0 10px rgba(var(--accent-rgb), 0.15);
|
|
366
|
+
--glow-md: 0 0 20px rgba(var(--accent-rgb), 0.2);
|
|
367
|
+
--glow-lg: 0 0 30px rgba(var(--accent-rgb), 0.25);
|
|
368
|
+
--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.2);
|
|
360
369
|
|
|
361
370
|
/* Additional transition variables */
|
|
362
|
-
--duration-base: .2s;
|
|
363
|
-
--ease-in: cubic-bezier(.4, 0, 1, 1);
|
|
364
|
-
--ease-out: cubic-bezier(0, 0, .2, 1);
|
|
365
|
-
--ease-in-out: cubic-bezier(.4, 0, .2, 1);
|
|
366
|
-
--ease-smooth: cubic-bezier(.4, 0, .6, 1);
|
|
371
|
+
--duration-base: 0.2s;
|
|
372
|
+
--ease-in: cubic-bezier(0.4, 0, 1, 1);
|
|
373
|
+
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
374
|
+
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
375
|
+
--ease-smooth: cubic-bezier(0.4, 0, 0.6, 1);
|
|
367
376
|
--transition-base: all var(--duration-base) var(--ease-out);
|
|
368
377
|
--transition-fast: all var(--duration-fast) var(--ease-out);
|
|
369
378
|
--transition-slow: all var(--duration-slow) var(--ease-out);
|
|
370
|
-
--transition-colors:
|
|
379
|
+
--transition-colors:
|
|
380
|
+
background-color var(--duration-base) var(--ease-out),
|
|
381
|
+
border-color var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out);
|
|
371
382
|
--transition-shadow: box-shadow var(--duration-base) var(--ease-out);
|
|
372
383
|
--transition-transform: transform var(--duration-base) var(--ease-out);
|
|
373
384
|
|
|
374
385
|
/* Additional z-index variables */
|
|
375
|
-
--z-sticky: 200;
|
|
376
386
|
--z-fixed: 300;
|
|
377
387
|
--z-modal-backdrop: 400;
|
|
378
388
|
|
|
@@ -383,21 +393,21 @@ article.ai-card-surface {
|
|
|
383
393
|
--blur-lg: 16px;
|
|
384
394
|
--blur-xl: 24px;
|
|
385
395
|
--glass-blur: var(--blur-md);
|
|
386
|
-
--glass-bg: rgba(0, 0, 0, .4);
|
|
387
|
-
--glass-border: rgba(255, 255, 255, .1);
|
|
396
|
+
--glass-bg: rgba(0, 0, 0, 0.4);
|
|
397
|
+
--glass-border: rgba(255, 255, 255, 0.1);
|
|
388
398
|
|
|
389
399
|
/* Opacity scale */
|
|
390
400
|
--opacity-0: 0;
|
|
391
|
-
--opacity-5: .05;
|
|
392
|
-
--opacity-10: .1;
|
|
393
|
-
--opacity-20: .2;
|
|
394
|
-
--opacity-30: .3;
|
|
395
|
-
--opacity-40: .4;
|
|
396
|
-
--opacity-50: .5;
|
|
397
|
-
--opacity-60: .6;
|
|
398
|
-
--opacity-70: .7;
|
|
399
|
-
--opacity-80: .8;
|
|
400
|
-
--opacity-90: .9;
|
|
401
|
+
--opacity-5: 0.05;
|
|
402
|
+
--opacity-10: 0.1;
|
|
403
|
+
--opacity-20: 0.2;
|
|
404
|
+
--opacity-30: 0.3;
|
|
405
|
+
--opacity-40: 0.4;
|
|
406
|
+
--opacity-50: 0.5;
|
|
407
|
+
--opacity-60: 0.6;
|
|
408
|
+
--opacity-70: 0.7;
|
|
409
|
+
--opacity-80: 0.8;
|
|
410
|
+
--opacity-90: 0.9;
|
|
401
411
|
--opacity-100: 1;
|
|
402
412
|
|
|
403
413
|
/* Surface variables */
|
|
@@ -406,15 +416,15 @@ article.ai-card-surface {
|
|
|
406
416
|
--surface-overlay: var(--glass-bg);
|
|
407
417
|
|
|
408
418
|
/* Border variables */
|
|
409
|
-
--border-light: rgba(var(--foreground-rgb), .08);
|
|
419
|
+
--border-light: rgba(var(--foreground-rgb), 0.08);
|
|
410
420
|
--border-base: var(--border);
|
|
411
|
-
--border-strong: rgba(var(--foreground-rgb), .2);
|
|
421
|
+
--border-strong: rgba(var(--foreground-rgb), 0.2);
|
|
412
422
|
|
|
413
423
|
/* State opacity variables */
|
|
414
|
-
--state-hover-opacity: .08;
|
|
415
|
-
--state-active-opacity: .12;
|
|
416
|
-
--state-focus-opacity: .16;
|
|
417
|
-
--state-disabled-opacity: .5;
|
|
424
|
+
--state-hover-opacity: 0.08;
|
|
425
|
+
--state-active-opacity: 0.12;
|
|
426
|
+
--state-focus-opacity: 0.16;
|
|
427
|
+
--state-disabled-opacity: 0.5;
|
|
418
428
|
|
|
419
429
|
/* OSI Card foreground */
|
|
420
430
|
--osi-card-foreground: #1a1a2e;
|
|
@@ -447,7 +457,7 @@ article.ai-card-surface {
|
|
|
447
457
|
--tw-ring-inset: ;
|
|
448
458
|
--tw-ring-offset-width: 0px;
|
|
449
459
|
--tw-ring-offset-color: #fff;
|
|
450
|
-
--tw-ring-color: rgb(59 130 246 / .5);
|
|
460
|
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
|
451
461
|
--tw-ring-offset-shadow: 0 0 #0000;
|
|
452
462
|
--tw-ring-shadow: 0 0 #0000;
|
|
453
463
|
--tw-shadow: 0 0 #0000;
|
|
@@ -270,8 +270,8 @@
|
|
|
270
270
|
}
|
|
271
271
|
|
|
272
272
|
/* Priority-based visual indicators */
|
|
273
|
-
.masonry-item
|
|
274
|
-
/*
|
|
273
|
+
.masonry-item[data-priority="1"] {
|
|
274
|
+
/* Priority 1 (highest) sections get subtle emphasis */
|
|
275
275
|
&::before {
|
|
276
276
|
content: "";
|
|
277
277
|
position: absolute;
|
|
@@ -284,18 +284,12 @@
|
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
286
|
|
|
287
|
-
.masonry-item
|
|
288
|
-
|
|
287
|
+
.masonry-item[data-priority="2"],
|
|
288
|
+
.masonry-item[data-priority="3"] {
|
|
289
|
+
/* Priority 2 and 3 sections - no special border, use unified styling */
|
|
289
290
|
/* Left accent border removed for consistency */
|
|
290
291
|
}
|
|
291
292
|
|
|
292
|
-
/* Sticky sections */
|
|
293
|
-
.masonry-item--sticky {
|
|
294
|
-
position: sticky !important;
|
|
295
|
-
top: 0 !important;
|
|
296
|
-
z-index: 10 !important;
|
|
297
|
-
background: var(--card-background) !important;
|
|
298
|
-
}
|
|
299
293
|
|
|
300
294
|
/* Flex grow sections - expand to fill space */
|
|
301
295
|
.masonry-item--flex-grow {
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
visibility: visible !important;
|
|
30
30
|
opacity: 1 !important;
|
|
31
31
|
|
|
32
|
-
// Transparent container with
|
|
32
|
+
// Transparent container with fixed padding (library default)
|
|
33
33
|
// Must be set here immediately after all:initial to ensure application
|
|
34
|
-
padding:
|
|
34
|
+
padding: 0;
|
|
35
35
|
background: transparent !important;
|
|
36
36
|
background-color: transparent !important;
|
|
37
37
|
|
|
@@ -60,11 +60,6 @@
|
|
|
60
60
|
|
|
61
61
|
// Contain styles within shadow boundary
|
|
62
62
|
contain: layout style;
|
|
63
|
-
|
|
64
|
-
// Responsive: reduce padding on mobile
|
|
65
|
-
@media (max-width: 480px) {
|
|
66
|
-
padding: 4px;
|
|
67
|
-
}
|
|
68
63
|
}
|
|
69
64
|
|
|
70
65
|
// Host context variations
|
package/styles/responsive.scss
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OSI Cards - Responsive Design System
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Breakpoints and responsive utilities for cards and sections.
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -89,32 +89,13 @@ $breakpoints: (
|
|
|
89
89
|
.osi-card-container {
|
|
90
90
|
@include container(card);
|
|
91
91
|
|
|
92
|
-
//
|
|
93
|
-
--card-padding:
|
|
92
|
+
// Fixed styles - no responsive behavior
|
|
93
|
+
--card-padding: 4px;
|
|
94
94
|
--card-gap: 0.5rem;
|
|
95
95
|
--card-title-size: 1rem;
|
|
96
96
|
--section-title-size: 0.875rem;
|
|
97
97
|
--field-label-size: 0.75rem;
|
|
98
98
|
--field-value-size: 0.875rem;
|
|
99
|
-
|
|
100
|
-
@include responsive("sm") {
|
|
101
|
-
--card-padding: 1rem;
|
|
102
|
-
--card-gap: 0.75rem;
|
|
103
|
-
--card-title-size: 1.125rem;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
@include responsive("md") {
|
|
107
|
-
--card-padding: 1.25rem;
|
|
108
|
-
--card-gap: 1rem;
|
|
109
|
-
--card-title-size: 1.25rem;
|
|
110
|
-
--section-title-size: 1rem;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
@include responsive("lg") {
|
|
114
|
-
--card-padding: 1.5rem;
|
|
115
|
-
--card-gap: 1.25rem;
|
|
116
|
-
--card-title-size: 1.375rem;
|
|
117
|
-
}
|
|
118
99
|
}
|
|
119
100
|
|
|
120
101
|
// ============================================
|
|
@@ -189,10 +170,6 @@ $breakpoints: (
|
|
|
189
170
|
|
|
190
171
|
.metric-value {
|
|
191
172
|
font-size: 1.5rem;
|
|
192
|
-
|
|
193
|
-
@include responsive("md") {
|
|
194
|
-
font-size: 2rem;
|
|
195
|
-
}
|
|
196
173
|
}
|
|
197
174
|
}
|
|
198
175
|
|
|
@@ -227,29 +204,29 @@ $breakpoints: (
|
|
|
227
204
|
}
|
|
228
205
|
|
|
229
206
|
// ============================================
|
|
230
|
-
// Typography Responsive Utilities
|
|
207
|
+
// Typography Responsive Utilities (fixed)
|
|
231
208
|
// ============================================
|
|
232
209
|
|
|
233
210
|
.text-responsive {
|
|
234
|
-
font-size:
|
|
211
|
+
font-size: 0.875rem;
|
|
235
212
|
line-height: 1.5;
|
|
236
213
|
}
|
|
237
214
|
|
|
238
215
|
.heading-responsive {
|
|
239
|
-
font-size:
|
|
216
|
+
font-size: 1.25rem;
|
|
240
217
|
line-height: 1.2;
|
|
241
218
|
}
|
|
242
219
|
|
|
243
220
|
// ============================================
|
|
244
|
-
// Spacing Responsive Utilities
|
|
221
|
+
// Spacing Responsive Utilities (fixed)
|
|
245
222
|
// ============================================
|
|
246
223
|
|
|
247
224
|
.space-responsive {
|
|
248
|
-
padding:
|
|
225
|
+
padding: 0.5rem;
|
|
249
226
|
}
|
|
250
227
|
|
|
251
228
|
.gap-responsive {
|
|
252
|
-
gap:
|
|
229
|
+
gap: 0.5rem;
|
|
253
230
|
}
|
|
254
231
|
|
|
255
232
|
// ============================================
|