osi-cards-lib 1.5.40 → 1.5.42
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 +1749 -172
- package/fesm2022/osi-cards-lib.mjs.map +1 -1
- package/index.d.ts +212 -10
- package/package.json +1 -1
- package/scripts/setup-angular-styles.js +1 -0
- package/styles/bundles/_ai-card.scss +1 -1
- package/styles/components/_badges.scss +1 -2
- package/styles/components/_card-actions.scss +3 -0
- package/styles/components/_component-styles.scss +1 -1
- package/styles/components/cards/_ai-card.scss +7 -13
- package/styles/components/sections/_design-system.scss +1 -1
- package/styles/components/sections/_design-tokens.scss +1 -1
- package/styles/components/sections/_section-shell.scss +37 -1
- package/styles/components/sections/_sections-base.scss +102 -0
- package/styles/core/_bootstrap-reset.scss +1 -1
- package/styles/core/_mixins.scss +3 -3
- package/styles/design-system/_tokens.scss +1 -1
- package/styles/design-system/_unified-sections.scss +2 -23
- package/styles/layout/_masonry.scss +12 -10
- package/styles/tokens/_master.scss +17 -18
package/index.d.ts
CHANGED
|
@@ -268,11 +268,11 @@ declare const isItemId: typeof isValidItemId;
|
|
|
268
268
|
/**
|
|
269
269
|
* All valid section type identifiers
|
|
270
270
|
*/
|
|
271
|
-
type SectionType$1 = 'analytics' | 'brand-colors' | 'chart' | 'contact-card' | 'event' | 'fallback' | 'faq' | 'financials' | 'gallery' | 'info' | 'list' | 'map' | 'network-card' | 'news' | 'overview' | 'product' | 'quotation' | 'social-media' | 'solutions' | 'text-reference' | 'timeline' | 'video';
|
|
271
|
+
type SectionType$1 = 'analytics' | 'brand-colors' | 'chart' | 'contact-card' | 'event' | 'fallback' | 'faq' | 'financials' | 'gallery' | 'info' | 'list' | 'map' | 'network-card' | 'news' | 'overview' | 'product' | 'quotation' | 'social-media' | 'solutions' | 'table' | 'text-reference' | 'timeline' | 'video';
|
|
272
272
|
/**
|
|
273
273
|
* Section type aliases (alternative names that resolve to canonical types)
|
|
274
274
|
*/
|
|
275
|
-
type SectionTypeAlias = 'metrics' | 'stats' | 'kpi' | 'brands' | 'colors' | 'palette' | 'graph' | 'visualization' | 'calendar' | 'schedule' | 'questions' | 'help' | 'photos' | 'images' | 'table' | '
|
|
275
|
+
type SectionTypeAlias = 'metrics' | 'stats' | 'kpi' | 'brands' | 'colors' | 'palette' | 'graph' | 'visualization' | 'calendar' | 'schedule' | 'questions' | 'help' | 'photos' | 'images' | 'checklist' | 'data-table' | 'grid' | 'locations' | 'press' | 'articles' | 'summary' | 'executive' | 'quote' | 'testimonial' | 'social' | 'socials' | 'services' | 'offerings' | 'reference' | 'text-ref' | 'documentation' | 'history' | 'milestones' | 'videos' | 'media';
|
|
276
276
|
/**
|
|
277
277
|
* All accepted section type values (canonical + aliases)
|
|
278
278
|
*/
|
|
@@ -329,6 +329,29 @@ type CardType = 'all' | 'company' | 'contact' | 'opportunity' | 'product' | 'ana
|
|
|
329
329
|
*/
|
|
330
330
|
type LayoutPriority = 1 | 2 | 3;
|
|
331
331
|
|
|
332
|
+
/**
|
|
333
|
+
* Table column definition
|
|
334
|
+
*/
|
|
335
|
+
interface TableColumn {
|
|
336
|
+
key: string;
|
|
337
|
+
label: string;
|
|
338
|
+
type?: 'string' | 'number' | 'date' | 'boolean';
|
|
339
|
+
sortable?: boolean;
|
|
340
|
+
width?: string;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Table row data (key-value pairs matching column keys)
|
|
344
|
+
*/
|
|
345
|
+
interface TableRow {
|
|
346
|
+
[key: string]: string | number | boolean | Date | null | undefined;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Table data structure for table sections
|
|
350
|
+
*/
|
|
351
|
+
interface TableData {
|
|
352
|
+
columns: TableColumn[];
|
|
353
|
+
rows: TableRow[];
|
|
354
|
+
}
|
|
332
355
|
interface AICardConfig {
|
|
333
356
|
id?: string | undefined;
|
|
334
357
|
cardTitle: string;
|
|
@@ -432,6 +455,7 @@ interface CardSection {
|
|
|
432
455
|
borderWidth?: number;
|
|
433
456
|
}[];
|
|
434
457
|
};
|
|
458
|
+
tableData?: TableData;
|
|
435
459
|
meta?: Record<string, unknown>;
|
|
436
460
|
[key: string]: unknown;
|
|
437
461
|
}
|
|
@@ -1587,7 +1611,7 @@ declare class ActionFactory {
|
|
|
1587
1611
|
/**
|
|
1588
1612
|
* Section types supported by the library
|
|
1589
1613
|
*/
|
|
1590
|
-
type SectionType = 'analytics' | 'brand-colors' | 'chart' | 'contact-card' | 'event' | 'fallback' | 'financials' | 'info' | 'list' | 'map' | 'network-card' | 'news' | 'overview' | 'product' | 'quotation' | 'social-media' | 'solutions' | 'text-reference';
|
|
1614
|
+
type SectionType = 'analytics' | 'brand-colors' | 'chart' | 'contact-card' | 'event' | 'fallback' | 'financials' | 'info' | 'list' | 'map' | 'network-card' | 'news' | 'overview' | 'product' | 'quotation' | 'social-media' | 'solutions' | 'table' | 'text-reference';
|
|
1591
1615
|
/**
|
|
1592
1616
|
* Section metadata
|
|
1593
1617
|
*/
|
|
@@ -1900,6 +1924,17 @@ interface ListSection extends BaseSectionProps {
|
|
|
1900
1924
|
/** List style */
|
|
1901
1925
|
listStyle?: 'bullet' | 'numbered' | 'none';
|
|
1902
1926
|
}
|
|
1927
|
+
/**
|
|
1928
|
+
* Table Section - displays structured tabular data
|
|
1929
|
+
*/
|
|
1930
|
+
interface TableSection extends BaseSectionProps {
|
|
1931
|
+
type: 'table';
|
|
1932
|
+
tableData: TableData;
|
|
1933
|
+
fields?: never;
|
|
1934
|
+
items?: never;
|
|
1935
|
+
chartData?: never;
|
|
1936
|
+
chartType?: never;
|
|
1937
|
+
}
|
|
1903
1938
|
/**
|
|
1904
1939
|
* Network Card Section - displays network connections
|
|
1905
1940
|
*/
|
|
@@ -2062,7 +2097,7 @@ interface FallbackSection extends BaseSectionProps {
|
|
|
2062
2097
|
* Use this type when you need exhaustive type checking for section handling.
|
|
2063
2098
|
* TypeScript will ensure all section types are handled in switch statements.
|
|
2064
2099
|
*/
|
|
2065
|
-
type DiscriminatedSection = InfoSection | AnalyticsSection | ContactCardSection | NetworkCardSection | MapSection | FinancialsSection | EventSection | ListSection | ChartSection | ProductSection | SolutionsSection | OverviewSection | QuotationSection | TextReferenceSection | BrandColorsSection | NewsSection | SocialMediaSection | TimelineSection | GallerySection | FaqSection | VideoSection | FallbackSection;
|
|
2100
|
+
type DiscriminatedSection = InfoSection | AnalyticsSection | ContactCardSection | NetworkCardSection | MapSection | FinancialsSection | EventSection | ListSection | TableSection | ChartSection | ProductSection | SolutionsSection | OverviewSection | QuotationSection | TextReferenceSection | BrandColorsSection | NewsSection | SocialMediaSection | TimelineSection | GallerySection | FaqSection | VideoSection | FallbackSection;
|
|
2066
2101
|
/**
|
|
2067
2102
|
* Type guard for Info Section
|
|
2068
2103
|
*/
|
|
@@ -2179,6 +2214,7 @@ type SectionTypeMap = {
|
|
|
2179
2214
|
financials: FinancialsSection;
|
|
2180
2215
|
event: EventSection;
|
|
2181
2216
|
list: ListSection;
|
|
2217
|
+
table: TableSection;
|
|
2182
2218
|
chart: ChartSection;
|
|
2183
2219
|
product: ProductSection;
|
|
2184
2220
|
solutions: SolutionsSection;
|
|
@@ -3524,6 +3560,7 @@ interface SectionManifestEntry {
|
|
|
3524
3560
|
usesFields: boolean;
|
|
3525
3561
|
usesItems: boolean;
|
|
3526
3562
|
usesChartData?: boolean;
|
|
3563
|
+
usesTableData?: boolean;
|
|
3527
3564
|
defaultColumns: number;
|
|
3528
3565
|
supportsCollapse: boolean;
|
|
3529
3566
|
requiresExternalLib?: string;
|
|
@@ -5936,6 +5973,11 @@ declare class SectionNormalizationService {
|
|
|
5936
5973
|
* Actual normalization logic (extracted for caching)
|
|
5937
5974
|
*/
|
|
5938
5975
|
private performNormalization;
|
|
5976
|
+
/**
|
|
5977
|
+
* Get title from section type (fallback when title is missing)
|
|
5978
|
+
* Converts type like "contact-card" to "Contact Card"
|
|
5979
|
+
*/
|
|
5980
|
+
private getTitleFromType;
|
|
5939
5981
|
/**
|
|
5940
5982
|
* Get the priority band for a section type
|
|
5941
5983
|
*/
|
|
@@ -8666,6 +8708,7 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8666
8708
|
private resizeObserver?;
|
|
8667
8709
|
private resizeThrottleTimeout?;
|
|
8668
8710
|
private lastWidth;
|
|
8711
|
+
private lastContainerWidth;
|
|
8669
8712
|
private layoutVersion;
|
|
8670
8713
|
private itemResizeObservers;
|
|
8671
8714
|
private absolutePositionUpdateRafId;
|
|
@@ -8675,6 +8718,9 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8675
8718
|
private readonly HEIGHT_THRESHOLD;
|
|
8676
8719
|
private initialLayoutPollingTimeout?;
|
|
8677
8720
|
private itemElements;
|
|
8721
|
+
private cachedPadding;
|
|
8722
|
+
private isFirstCalculation;
|
|
8723
|
+
private isFirstPositioning;
|
|
8678
8724
|
ngAfterViewInit(): void;
|
|
8679
8725
|
ngOnChanges(changes: SimpleChanges): void;
|
|
8680
8726
|
ngOnDestroy(): void;
|
|
@@ -8710,7 +8756,22 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8710
8756
|
*/
|
|
8711
8757
|
private determineLayoutVariant;
|
|
8712
8758
|
private applyLayout;
|
|
8759
|
+
/**
|
|
8760
|
+
* Validate layout prerequisites (padding and gap) before calculations
|
|
8761
|
+
* Returns validation status and values
|
|
8762
|
+
*/
|
|
8763
|
+
private validateLayoutPrerequisites;
|
|
8764
|
+
/**
|
|
8765
|
+
* Get container padding with fallback to CSS variable if computed style returns 0
|
|
8766
|
+
* Reads padding from parent .ai-card-surface element (not from masonry container)
|
|
8767
|
+
* Caches padding value to avoid repeated calculations
|
|
8768
|
+
*/
|
|
8713
8769
|
private getContainerPadding;
|
|
8770
|
+
/**
|
|
8771
|
+
* Read padding value from CSS variable --osi-card-padding
|
|
8772
|
+
* Handles various formats: "16px", "var(--other-var)", etc.
|
|
8773
|
+
*/
|
|
8774
|
+
private getPaddingFromCSSVariable;
|
|
8714
8775
|
private setupResizeObserver;
|
|
8715
8776
|
trackBySection: (index: number, item: SectionWithSpan) => string;
|
|
8716
8777
|
onSectionEvent(event: SectionRenderEvent): void;
|
|
@@ -8750,6 +8811,7 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8750
8811
|
/**
|
|
8751
8812
|
* Ensure initial layout is calculated with retry mechanism if width is invalid
|
|
8752
8813
|
* Simplified: Single RAF + one timeout retry
|
|
8814
|
+
* Also validates padding before layout calculation
|
|
8753
8815
|
*/
|
|
8754
8816
|
private ensureInitialLayout;
|
|
8755
8817
|
static ɵfac: i0.ɵɵFactoryDeclaration<MasonryGridComponent, never>;
|
|
@@ -8913,6 +8975,7 @@ declare class AICardRendererComponent implements OnInit, AfterViewInit, OnDestro
|
|
|
8913
8975
|
private readonly magneticTiltService;
|
|
8914
8976
|
private readonly iconService;
|
|
8915
8977
|
private readonly sectionNormalizationService;
|
|
8978
|
+
private readonly sectionCompletenessService;
|
|
8916
8979
|
private readonly http;
|
|
8917
8980
|
/**
|
|
8918
8981
|
* Optional LLM API endpoint for fallback card generation.
|
|
@@ -9411,6 +9474,18 @@ declare class SectionHeaderComponent {
|
|
|
9411
9474
|
* Get the heading tag name based on level
|
|
9412
9475
|
*/
|
|
9413
9476
|
get headingTag(): string;
|
|
9477
|
+
/**
|
|
9478
|
+
* Track expanded state for description
|
|
9479
|
+
*/
|
|
9480
|
+
isDescriptionExpanded: boolean;
|
|
9481
|
+
/**
|
|
9482
|
+
* Toggle expanded state for description
|
|
9483
|
+
*/
|
|
9484
|
+
toggleDescriptionExpanded(): void;
|
|
9485
|
+
/**
|
|
9486
|
+
* Check if description is long enough to need expansion
|
|
9487
|
+
*/
|
|
9488
|
+
shouldShowExpandButton(): boolean;
|
|
9414
9489
|
static ɵfac: i0.ɵɵFactoryDeclaration<SectionHeaderComponent, never>;
|
|
9415
9490
|
static ɵcmp: i0.ɵɵComponentDeclaration<SectionHeaderComponent, "lib-section-header", never, { "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "level": { "alias": "level"; "required": false; }; "headerClass": { "alias": "headerClass"; "required": false; }; "titleClass": { "alias": "titleClass"; "required": false; }; "descriptionClass": { "alias": "descriptionClass"; "required": false; }; }, {}, never, never, true, never>;
|
|
9416
9491
|
}
|
|
@@ -10166,17 +10241,39 @@ declare class BrandColorsSectionComponent extends BaseSectionComponent implement
|
|
|
10166
10241
|
*
|
|
10167
10242
|
* Note: Requires Chart.js to be installed.
|
|
10168
10243
|
*/
|
|
10169
|
-
declare class ChartSectionComponent extends BaseSectionComponent implements AfterViewInit, OnDestroy, OnInit {
|
|
10244
|
+
declare class ChartSectionComponent extends BaseSectionComponent implements AfterViewInit, OnDestroy, OnInit, OnChanges {
|
|
10170
10245
|
private readonly layoutService;
|
|
10171
10246
|
ngOnInit(): void;
|
|
10172
10247
|
chartCanvas?: ElementRef<HTMLCanvasElement>;
|
|
10173
10248
|
private chartInstance;
|
|
10249
|
+
protected chartLibraryLoaded: boolean;
|
|
10250
|
+
protected chartError: string | null;
|
|
10251
|
+
private previousChartType;
|
|
10252
|
+
private previousChartDataHash;
|
|
10253
|
+
private isRendering;
|
|
10174
10254
|
ngAfterViewInit(): void;
|
|
10175
10255
|
ngOnDestroy(): void;
|
|
10256
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
10176
10257
|
/**
|
|
10177
10258
|
* Render chart using Chart.js (if available)
|
|
10178
10259
|
*/
|
|
10179
10260
|
private renderChart;
|
|
10261
|
+
/**
|
|
10262
|
+
* Update existing chart with new data
|
|
10263
|
+
*/
|
|
10264
|
+
private updateChart;
|
|
10265
|
+
/**
|
|
10266
|
+
* Detect if chart data contains revenue/monetary values
|
|
10267
|
+
*/
|
|
10268
|
+
private detectRevenueData;
|
|
10269
|
+
/**
|
|
10270
|
+
* Get chart options with enhanced configuration
|
|
10271
|
+
*/
|
|
10272
|
+
private getChartOptions;
|
|
10273
|
+
/**
|
|
10274
|
+
* Format value as currency
|
|
10275
|
+
*/
|
|
10276
|
+
private formatCurrency;
|
|
10180
10277
|
/**
|
|
10181
10278
|
* Destroy chart instance
|
|
10182
10279
|
*/
|
|
@@ -10477,6 +10574,18 @@ declare class InfoSectionComponent extends BaseSectionComponent implements OnIni
|
|
|
10477
10574
|
* Get tagline/description from section or fields
|
|
10478
10575
|
*/
|
|
10479
10576
|
getTagline(): string | null;
|
|
10577
|
+
/**
|
|
10578
|
+
* Track tagline expansion state
|
|
10579
|
+
*/
|
|
10580
|
+
isTaglineExpanded: boolean;
|
|
10581
|
+
/**
|
|
10582
|
+
* Toggle tagline expansion
|
|
10583
|
+
*/
|
|
10584
|
+
toggleTaglineExpanded(): void;
|
|
10585
|
+
/**
|
|
10586
|
+
* Check if tagline needs "Show more" button
|
|
10587
|
+
*/
|
|
10588
|
+
shouldShowTaglineExpandButton(): boolean;
|
|
10480
10589
|
/**
|
|
10481
10590
|
* Get website URL from fields
|
|
10482
10591
|
*/
|
|
@@ -10585,6 +10694,14 @@ declare class ListSectionComponent extends BaseSectionComponent implements OnIni
|
|
|
10585
10694
|
getPriorityVariant(priority?: string): 'error' | 'warning' | 'success' | 'default';
|
|
10586
10695
|
toggleExpanded(index: number): void;
|
|
10587
10696
|
onItemKeydown(event: KeyboardEvent, index: number): void;
|
|
10697
|
+
/**
|
|
10698
|
+
* Check if a description is long enough to need expansion
|
|
10699
|
+
*/
|
|
10700
|
+
shouldShowExpandButton(item: any): boolean;
|
|
10701
|
+
/**
|
|
10702
|
+
* Check if an item is expanded
|
|
10703
|
+
*/
|
|
10704
|
+
isItemExpanded(index: number): boolean;
|
|
10588
10705
|
static ɵfac: i0.ɵɵFactoryDeclaration<ListSectionComponent, never>;
|
|
10589
10706
|
static ɵcmp: i0.ɵɵComponentDeclaration<ListSectionComponent, "lib-list-section", never, {}, {}, never, never, true, never>;
|
|
10590
10707
|
}
|
|
@@ -10648,6 +10765,22 @@ declare class NetworkCardSectionComponent extends BaseSectionComponent implement
|
|
|
10648
10765
|
* Get status class
|
|
10649
10766
|
*/
|
|
10650
10767
|
getStatusClass(status?: unknown): string;
|
|
10768
|
+
/**
|
|
10769
|
+
* Track expanded state for descriptions
|
|
10770
|
+
*/
|
|
10771
|
+
descriptionExpandedStates: boolean[];
|
|
10772
|
+
/**
|
|
10773
|
+
* Toggle description expansion
|
|
10774
|
+
*/
|
|
10775
|
+
toggleDescriptionExpanded(index: number): void;
|
|
10776
|
+
/**
|
|
10777
|
+
* Check if description is expanded
|
|
10778
|
+
*/
|
|
10779
|
+
isDescriptionExpanded(index: number): boolean;
|
|
10780
|
+
/**
|
|
10781
|
+
* Check if description needs "Show more" button
|
|
10782
|
+
*/
|
|
10783
|
+
shouldShowExpandButton(node: any): boolean;
|
|
10651
10784
|
static ɵfac: i0.ɵɵFactoryDeclaration<NetworkCardSectionComponent, never>;
|
|
10652
10785
|
static ɵcmp: i0.ɵɵComponentDeclaration<NetworkCardSectionComponent, "lib-network-card-section", never, {}, {}, never, never, true, never>;
|
|
10653
10786
|
}
|
|
@@ -10678,6 +10811,22 @@ declare class NewsSectionComponent extends BaseSectionComponent implements OnIni
|
|
|
10678
10811
|
* Format date for display
|
|
10679
10812
|
*/
|
|
10680
10813
|
formatDate(dateStr: any): string;
|
|
10814
|
+
/**
|
|
10815
|
+
* Track expanded state for each article
|
|
10816
|
+
*/
|
|
10817
|
+
expandedArticles: Set<number>;
|
|
10818
|
+
/**
|
|
10819
|
+
* Toggle expanded state for an article
|
|
10820
|
+
*/
|
|
10821
|
+
toggleExpanded(index: number): void;
|
|
10822
|
+
/**
|
|
10823
|
+
* Check if an article is expanded
|
|
10824
|
+
*/
|
|
10825
|
+
isExpanded(index: number): boolean;
|
|
10826
|
+
/**
|
|
10827
|
+
* Check if an excerpt is long enough to need expansion
|
|
10828
|
+
*/
|
|
10829
|
+
shouldShowExpandButton(item: any): boolean;
|
|
10681
10830
|
static ɵfac: i0.ɵɵFactoryDeclaration<NewsSectionComponent, never>;
|
|
10682
10831
|
static ɵcmp: i0.ɵɵComponentDeclaration<NewsSectionComponent, "lib-news-section", never, {}, {}, never, never, true, never>;
|
|
10683
10832
|
}
|
|
@@ -10703,6 +10852,22 @@ declare class OverviewSectionComponent extends BaseSectionComponent implements O
|
|
|
10703
10852
|
* Check if field should be highlighted
|
|
10704
10853
|
*/
|
|
10705
10854
|
isHighlighted(field: any): boolean;
|
|
10855
|
+
/**
|
|
10856
|
+
* Track expanded state for each field
|
|
10857
|
+
*/
|
|
10858
|
+
expandedFields: Set<number>;
|
|
10859
|
+
/**
|
|
10860
|
+
* Toggle expanded state for a field
|
|
10861
|
+
*/
|
|
10862
|
+
toggleExpanded(index: number): void;
|
|
10863
|
+
/**
|
|
10864
|
+
* Check if a field is expanded
|
|
10865
|
+
*/
|
|
10866
|
+
isExpanded(index: number): boolean;
|
|
10867
|
+
/**
|
|
10868
|
+
* Check if a value is long enough to need expansion
|
|
10869
|
+
*/
|
|
10870
|
+
shouldShowExpandButton(field: any): boolean;
|
|
10706
10871
|
static ɵfac: i0.ɵɵFactoryDeclaration<OverviewSectionComponent, never>;
|
|
10707
10872
|
static ɵcmp: i0.ɵɵComponentDeclaration<OverviewSectionComponent, "lib-overview-section", never, {}, {}, never, never, true, never>;
|
|
10708
10873
|
}
|
|
@@ -10766,6 +10931,14 @@ declare class QuotationSectionComponent extends BaseSectionComponent implements
|
|
|
10766
10931
|
getAuthorName(field: any): string;
|
|
10767
10932
|
toggleExpanded(index: number): void;
|
|
10768
10933
|
onQuoteKeydown(event: KeyboardEvent, index: number): void;
|
|
10934
|
+
/**
|
|
10935
|
+
* Check if a quote is long enough to need expansion
|
|
10936
|
+
*/
|
|
10937
|
+
shouldShowExpandButton(field: any): boolean;
|
|
10938
|
+
/**
|
|
10939
|
+
* Check if a quote is expanded
|
|
10940
|
+
*/
|
|
10941
|
+
isQuoteExpanded(index: number): boolean;
|
|
10769
10942
|
static ɵfac: i0.ɵɵFactoryDeclaration<QuotationSectionComponent, never>;
|
|
10770
10943
|
static ɵcmp: i0.ɵɵComponentDeclaration<QuotationSectionComponent, "lib-quotation-section", never, {}, {}, never, never, true, never>;
|
|
10771
10944
|
}
|
|
@@ -10809,6 +10982,7 @@ declare class SocialMediaSectionComponent extends BaseSectionComponent implement
|
|
|
10809
10982
|
declare class SolutionsSectionComponent extends BaseSectionComponent implements OnInit {
|
|
10810
10983
|
private readonly layoutService;
|
|
10811
10984
|
expandedIndex: number | null;
|
|
10985
|
+
descriptionExpandedStates: boolean[];
|
|
10812
10986
|
ngOnInit(): void;
|
|
10813
10987
|
/**
|
|
10814
10988
|
* Calculate layout preferences for solutions section based on content.
|
|
@@ -10830,6 +11004,18 @@ declare class SolutionsSectionComponent extends BaseSectionComponent implements
|
|
|
10830
11004
|
toggleExpanded(index: number): void;
|
|
10831
11005
|
isExpanded(index: number): boolean;
|
|
10832
11006
|
getVisibleBenefits(benefits: string[] | undefined, index: number): string[];
|
|
11007
|
+
/**
|
|
11008
|
+
* Check if description needs "Show more" button
|
|
11009
|
+
*/
|
|
11010
|
+
shouldShowExpandButton(solution: any): boolean;
|
|
11011
|
+
/**
|
|
11012
|
+
* Toggle description expansion
|
|
11013
|
+
*/
|
|
11014
|
+
toggleDescriptionExpanded(index: number): void;
|
|
11015
|
+
/**
|
|
11016
|
+
* Check if description is expanded
|
|
11017
|
+
*/
|
|
11018
|
+
isDescriptionExpanded(index: number): boolean;
|
|
10833
11019
|
static ɵfac: i0.ɵɵFactoryDeclaration<SolutionsSectionComponent, never>;
|
|
10834
11020
|
static ɵcmp: i0.ɵɵComponentDeclaration<SolutionsSectionComponent, "lib-solutions-section", never, {}, {}, never, never, true, never>;
|
|
10835
11021
|
}
|
|
@@ -10860,6 +11046,22 @@ declare class TextReferenceSectionComponent extends BaseSectionComponent impleme
|
|
|
10860
11046
|
* Get reference content
|
|
10861
11047
|
*/
|
|
10862
11048
|
getReferenceContent(field: any): string;
|
|
11049
|
+
/**
|
|
11050
|
+
* Track expanded state for each reference item
|
|
11051
|
+
*/
|
|
11052
|
+
expandedItems: Set<number>;
|
|
11053
|
+
/**
|
|
11054
|
+
* Toggle expanded state for a reference item
|
|
11055
|
+
*/
|
|
11056
|
+
toggleExpanded(index: number): void;
|
|
11057
|
+
/**
|
|
11058
|
+
* Check if a reference item is expanded
|
|
11059
|
+
*/
|
|
11060
|
+
isExpanded(index: number): boolean;
|
|
11061
|
+
/**
|
|
11062
|
+
* Check if a reference content is long enough to need expansion
|
|
11063
|
+
*/
|
|
11064
|
+
shouldShowExpandButton(field: any): boolean;
|
|
10863
11065
|
static ɵfac: i0.ɵɵFactoryDeclaration<TextReferenceSectionComponent, never>;
|
|
10864
11066
|
static ɵcmp: i0.ɵɵComponentDeclaration<TextReferenceSectionComponent, "lib-text-reference-section", never, {}, {}, never, never, true, never>;
|
|
10865
11067
|
}
|
|
@@ -11496,11 +11698,11 @@ declare function packWithZeroGapsGuarantee(sections: CardSection[], columns?: nu
|
|
|
11496
11698
|
* Do not edit manually - generated by scripts/generate-version.js
|
|
11497
11699
|
*
|
|
11498
11700
|
* Source of truth: version.config.json
|
|
11499
|
-
* Last synced: 2025-12-
|
|
11701
|
+
* Last synced: 2025-12-15T21:37:02.720Z
|
|
11500
11702
|
*/
|
|
11501
|
-
declare const VERSION = "1.5.
|
|
11502
|
-
declare const BUILD_DATE = "2025-12-
|
|
11503
|
-
declare const BUILD_HASH = "
|
|
11703
|
+
declare const VERSION = "1.5.42";
|
|
11704
|
+
declare const BUILD_DATE = "2025-12-15T21:37:02.720Z";
|
|
11705
|
+
declare const BUILD_HASH = "afbe823";
|
|
11504
11706
|
declare const BUILD_BRANCH = "main";
|
|
11505
11707
|
interface VersionInfo {
|
|
11506
11708
|
version: string;
|
|
@@ -11533,4 +11735,4 @@ declare function isProductionBuild(): boolean;
|
|
|
11533
11735
|
declare function isPrerelease(): boolean;
|
|
11534
11736
|
|
|
11535
11737
|
export { AICardRendererComponent, ALL_SECTION_TYPES, ANIMATION_PRESETS, ANIMATION_TIMING, AccessibilityService, ActionFactory, AnalyticsSectionComponent, AutoUnsubscribe, BORDER_RADIUS, BREAKPOINTS, BUILD_BRANCH, BUILD_DATE, BUILD_HASH, BadgeComponent, BaseSectionComponent, BrandColorsSectionComponent, BrandedIds, CARD_SIZES, CARD_SPACING, COLUMNS_BY_BREAKPOINT, CONTAINER_CONFIG, CSS_ISOLATION_MODE, CachedSectionNormalizationService, CardActionsComponent, CardBodyComponent, CardFacadeService, CardFactory, CardFooterComponent, CardHeaderComponent, CardPreviewComponent, CardSectionListComponent, CardSkeletonComponent, CardStreamingIndicatorComponent, CardTypeGuards, CardUtil, ChartSectionComponent, ContactCardSectionComponent, CopyToClipboardDirective, DECORATED_SECTION_COMPONENTS, DEFAULT_ACCESSIBILITY_CONFIG, DEFAULT_ANIMATION_CONFIG, DEFAULT_CSS_ISOLATION_MODE, DEFAULT_ERROR_CONFIG, DEFAULT_GRID_CONFIG, DEFAULT_LAYOUT_CONFIG, DEFAULT_LOADING_MESSAGES, DEFAULT_LOGGING_CONFIG, DEFAULT_OSI_CARDS_FULL_CONFIG, DEFAULT_OSI_THEME_CONFIG, DEFAULT_STREAMING_CONFIG, DEFAULT_THEME, DEFAULT_THEME_CONFIG, DynamicSectionLoaderService, EASING, EMPTY_STATE_CONFIG, EmailHandlerService, EmptyStateComponent, ErrorBoundaryComponent, ErrorTrackingService, EventBusService, EventMiddlewareService, EventSectionComponent, FEATURE_FLAG_META, FeatureFlagsService, FieldFactory, FinancialsSectionComponent, FlipAnimator, GRID_CONFIG, I18nService, ICON_SIZE, IconService, InfoSectionComponent, ItemFactory, KeyboardShortcutsService, LayoutCalculationService, LayoutError, LayoutStateManager, LayoutWorkerService, LazyRenderDirective, ListSectionComponent, LogValidationErrors, LoggerService, LucideIconsModule, MANIFEST_META, MASONRY_CONFIG, MagneticTiltService, MapSectionComponent, MasonryGridComponent, Memoize, MemoizeLRU, MemoizeTTL, NetworkCardSectionComponent, NewsSectionComponent, OSICardsError, OSICardsStreamingService, OSI_ACCESSIBILITY_CONFIG, OSI_ANIMATION_CONFIG, ICONS as OSI_CARDS_ICONS, OSI_CUSTOM_SECTIONS, OSI_ERROR_CONFIG, OSI_EVENTS, OSI_FEATURE_FLAGS, OSI_FULL_CONFIG, OSI_LAYOUT_CONFIG, OSI_LOGGING_CONFIG, OSI_STREAMING_CONFIG, OSI_THEME_CONFIG, OSI_THEME_CONFIG_TOKEN, ObjectPool, OsiCardsComponent, OsiCardsContainerComponent, OsiThemeDirective, OverviewSectionComponent, PARTICLE_CONFIG, PLACEHOLDER_TEXT, PUBLIC_SECTION_TYPES, PerfectBinPacker, PluginRegistrationError, PresetFactory, ProductSectionComponent, ProgressBarComponent, QuotationSectionComponent, RequiredFieldError, SCOPED_ANIMATION_SERVICE, SCOPED_SELECTION_SERVICE, SCOPED_STATE_SERVICE, SECTION_MANIFEST, SECTION_METADATA, SECTION_TYPE_ALIASES, SHADOWS, SKELETON_CONFIG, SPACING, STAGGER_DELAYS, STREAMING_CONFIG, STREAMING_PROGRESS, STREAMING_STAGES, ScopedAnimationService, ScopedSelectionService, ScopedStateService, SectionComponent, SectionFactory$1 as SectionConfigFactory, SectionDesignDirective, SectionFactory, SectionHeaderComponent, SectionNormalizationService, SectionPluginRegistry, SectionRenderError, SectionRendererComponent, SectionUtilsService, SocialMediaSectionComponent, SolutionsSectionComponent, StreamingError, StreamingParseError, StreamingTimeoutError, SubscriptionTracker, TILT_CONFIG, TextReferenceSectionComponent, ThemeService, ToastService, TooltipDirective, TrendIndicatorComponent, UnknownSectionTypeError, VERSION, VERSION_INFO, ValidationError, WorkerError, Z_INDEX, assertNever, calculateChunkDelay, calculateColumnWidth, calculateColumns, createActionClickEvent, createActionId, createAnalyticsDashboard, createAnalyticsPreset, createCardId, createCardInteractionEvent, createCompanyCard, createCompanyPreset, createContactCard, createContactPreset, createEmail, createEnhancedCompanyCard, createFieldClickEvent, createFieldId, createFlipList, createHexColor, createItemClickEvent, createItemId, createLogger, createMilliseconds, createPercentage, createPixels, createPluginId, createSafeAsyncFunction, createSafeFunction, createSectionId, createSectionRenderedEvent, createStreamingStateEvent, createThemeChangeEvent, createUrl, debounce, generateActionId, generateCardId, generateFieldId, generateItemId, generateSectionId, generateStreamingId, getAnimationTiming, getBuildInfo, getColumnsForBreakpoint, getCurrentBreakpoint, getEasing, getManifestEntry, getPreferredColumns, getPublicSectionTypes, getRandomLoadingMessage, getRegisteredComponent, getRegisteredSectionComponents, getRegisteredSectionTypes, getSectionMetadata, getSectionsRequiringExternalLibs, getShortVersion, getUserMessage, getVersionString, hasChartData, hasFields, hasItems, hasRegisteredComponent, isAnalyticsSection, isBrandColorsSection, isCardId, isChartSection, isContactCardSection, isDesktopViewport, isEventSection, isFallbackSection, isFieldId, isFinancialsSection, isInfoSection, isItemId, isListSection, isMapSection, isMobileViewport, isNetworkCardSection, isNewsSection, isOSIActionClickEvent, isOSICardInteractionEvent, isOSICardsError, isOSIFieldClickEvent, isOSIItemClickEvent, isOverviewSection, isPrerelease, isProductSection, isProductionBuild, isQuotationSection, isSectionId, isSocialMediaSection, isSolutionsSection, isStreamingPlaceholder, isTabletViewport, isTextReferenceSection, isValidCardId, isValidEmail, isValidFieldId, isValidHexColor, isValidItemId, isValidPercentage, isValidSectionId, isValidSectionType, isValidUrl, packWithZeroGapsGuarantee, prefersReducedMotion, provideLucideIcons, provideOSICardsTheme, provideOsiCards, provideOsiCardsAdvanced, provideOsiCardsCore, provideOsiCardsMinimal, provideOsiCardsTesting, provideScopedAnimationService, provideScopedSelectionService, provideScopedStateService, recordPositions, resolveColumnSpan, resolveSectionType, throttle, tryCatch, useErrorBoundary, validateField, validateSection, wrapError };
|
|
11536
|
-
export type { AICardConfig, ActionClickEventDetail, ActionId, AgentActionEvent, AnalyticsDashboardOptions, AnalyticsSection, AnimationItemState, AnimationState, AnimationTrigger, AsyncTransformer, BadgeSize, BadgeVariant, BaseSectionProps, BrandColorsSection, Breakpoint, CSSIsolationMode, Capitalize, CardAction, CardActionVariant, CardBuilder, CardBusEvent, CardChangeType, CardEvent$1 as CardEvent, CardField, CardId, CardInteractionEventDetail, CardItem, CardSection, CardUpdate, CardUpdatePayload, ChartData, ChartSection, ChartType, ColorSchemePreference, CompanyCardOptions, ComplexityLevel, ContactCardOptions, ContactCardSection, DeepMutable, DeepPartial, DeepReadonly, DeepRequired, Discriminant, DiscriminatedSection, Email, EmailConfig$1 as EmailConfig, EmailContact, ErrorBoundaryOptions, ErrorBoundaryState, ErrorSeverity, EventFilter, EventHandler, EventMiddleware, EventSection, EventTransformer, ExcludeByType, Extend, ExtractSectionType, FallbackSection, FaqSection, FeatureFlagKey, FeatureFlagsConfig, FieldClickEventDetail, FieldFormat, FieldId, FieldPriority, FieldStatus, FieldUpdatePayload, FieldValue, FilterByType, FinancialsSection, FlipConfig, FlipState, GallerySection, GetDiscriminatedSection, GridConfig, Head, HexColor, IdentifiedCard, IdentifiedField, IdentifiedItem, IdentifiedSection, ImmutableCardConfig, ImmutableSection, InfoSection, ItemClickEventDetail, ItemId, KebabCase, KeyboardShortcut, KeysOfType, Last, LayoutConfig, LayoutLogEntry, LayoutPhase, LayoutResult, LayoutState, LayoutStatistics, LazyRenderOptions, ListSection, LogEntry, LogLevel, MailCardAction, MapSection, MasonryLayoutInfo, Maybe, Merge, Milliseconds, MinimalCardConfig, MousePosition, NetworkCardSection, NewCardConfig, NewsSection, Nullable, OSIAccessibilityConfig, OSIActionClickEvent, OSIAnimationConfig, OSICardInteractionEvent, OSICardsFullConfig, OSICardsThemeConfig, OSIErrorConfig, OSIEventDetail, OSIEventName, OSIFieldClickEvent, OSIItemClickEvent, OSILayoutConfig, OSILoggingConfig, OSISectionRegistration, OSISectionRenderedEvent, OSIStreamingConfig, OSIStreamingStateEvent, OSIThemeChangeEvent, OSIThemeConfig, OmitByType, Optional, OptionalFields, OsiCardsConfig, OverviewSection, PackingAlgorithm, Parameters$1 as Parameters, Percentage, PerformanceLevel, PickByType, PickDefined, Pixels, PluginId, Position, PositionedSection, PreferredColumns$2 as PreferredColumns, PrefixKeys, PriorityBand$1 as PriorityBand, ProductSection, ProgressBarVariant, QuestionActionEvent, QuotationSection, RegisteredSectionPlugin, Replace, RequiredFields, ReturnType$1 as ReturnType, SectionBuilder, SectionComponentOptions, SectionFields, SectionId, SectionItems, SectionManifestEntry, SectionMetadata, SectionOf, SectionOrientation, SectionPlugin, SectionPluginConfig, SectionPluginMetadata, SectionRenderEvent, SectionRenderedEventDetail, SectionType, SectionTypeAlias, SectionTypeInput, SectionTypeMap, SectionTypeOf, SectionUpdatePayload, SkeletonSection, SkeletonSectionType, SocialMediaSection, SolutionsSection, StateSnapshot, StreamingConfig, StreamingState, StreamingStateEventDetail, SuffixKeys, SupportedLocale, Tail, TextReferenceSection, ThemeChangeEventDetail, ThemeId, ThemeMode, ThemePreset, ThemeServiceConfig, TiltCalculations, TimelineSection, Toast, TrackedError, Transformer, TrendDirection, Tuple, TypedEvent, Uncapitalize, Url, ValidationResult$1 as ValidationResult, ValidationSchema, Validator, VersionInfo, VideoSection };
|
|
11738
|
+
export type { AICardConfig, ActionClickEventDetail, ActionId, AgentActionEvent, AnalyticsDashboardOptions, AnalyticsSection, AnimationItemState, AnimationState, AnimationTrigger, AsyncTransformer, BadgeSize, BadgeVariant, BaseSectionProps, BrandColorsSection, Breakpoint, CSSIsolationMode, Capitalize, CardAction, CardActionVariant, CardBuilder, CardBusEvent, CardChangeType, CardEvent$1 as CardEvent, CardField, CardId, CardInteractionEventDetail, CardItem, CardSection, CardUpdate, CardUpdatePayload, ChartData, ChartSection, ChartType, ColorSchemePreference, CompanyCardOptions, ComplexityLevel, ContactCardOptions, ContactCardSection, DeepMutable, DeepPartial, DeepReadonly, DeepRequired, Discriminant, DiscriminatedSection, Email, EmailConfig$1 as EmailConfig, EmailContact, ErrorBoundaryOptions, ErrorBoundaryState, ErrorSeverity, EventFilter, EventHandler, EventMiddleware, EventSection, EventTransformer, ExcludeByType, Extend, ExtractSectionType, FallbackSection, FaqSection, FeatureFlagKey, FeatureFlagsConfig, FieldClickEventDetail, FieldFormat, FieldId, FieldPriority, FieldStatus, FieldUpdatePayload, FieldValue, FilterByType, FinancialsSection, FlipConfig, FlipState, GallerySection, GetDiscriminatedSection, GridConfig, Head, HexColor, IdentifiedCard, IdentifiedField, IdentifiedItem, IdentifiedSection, ImmutableCardConfig, ImmutableSection, InfoSection, ItemClickEventDetail, ItemId, KebabCase, KeyboardShortcut, KeysOfType, Last, LayoutConfig, LayoutLogEntry, LayoutPhase, LayoutResult, LayoutState, LayoutStatistics, LazyRenderOptions, ListSection, LogEntry, LogLevel, MailCardAction, MapSection, MasonryLayoutInfo, Maybe, Merge, Milliseconds, MinimalCardConfig, MousePosition, NetworkCardSection, NewCardConfig, NewsSection, Nullable, OSIAccessibilityConfig, OSIActionClickEvent, OSIAnimationConfig, OSICardInteractionEvent, OSICardsFullConfig, OSICardsThemeConfig, OSIErrorConfig, OSIEventDetail, OSIEventName, OSIFieldClickEvent, OSIItemClickEvent, OSILayoutConfig, OSILoggingConfig, OSISectionRegistration, OSISectionRenderedEvent, OSIStreamingConfig, OSIStreamingStateEvent, OSIThemeChangeEvent, OSIThemeConfig, OmitByType, Optional, OptionalFields, OsiCardsConfig, OverviewSection, PackingAlgorithm, Parameters$1 as Parameters, Percentage, PerformanceLevel, PickByType, PickDefined, Pixels, PluginId, Position, PositionedSection, PreferredColumns$2 as PreferredColumns, PrefixKeys, PriorityBand$1 as PriorityBand, ProductSection, ProgressBarVariant, QuestionActionEvent, QuotationSection, RegisteredSectionPlugin, Replace, RequiredFields, ReturnType$1 as ReturnType, SectionBuilder, SectionComponentOptions, SectionFields, SectionId, SectionItems, SectionManifestEntry, SectionMetadata, SectionOf, SectionOrientation, SectionPlugin, SectionPluginConfig, SectionPluginMetadata, SectionRenderEvent, SectionRenderedEventDetail, SectionType, SectionTypeAlias, SectionTypeInput, SectionTypeMap, SectionTypeOf, SectionUpdatePayload, SkeletonSection, SkeletonSectionType, SocialMediaSection, SolutionsSection, StateSnapshot, StreamingConfig, StreamingState, StreamingStateEventDetail, SuffixKeys, SupportedLocale, TableSection, Tail, TextReferenceSection, ThemeChangeEventDetail, ThemeId, ThemeMode, ThemePreset, ThemeServiceConfig, TiltCalculations, TimelineSection, Toast, TrackedError, Transformer, TrendDirection, Tuple, TypedEvent, Uncapitalize, Url, ValidationResult$1 as ValidationResult, ValidationSchema, Validator, VersionInfo, VideoSection };
|
package/package.json
CHANGED
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
// Section-specific sizing
|
|
107
107
|
--section-card-min-height: 110px;
|
|
108
108
|
--section-card-compact-height: 90px;
|
|
109
|
-
--section-header-gap:
|
|
109
|
+
--section-header-gap: 2px;
|
|
110
110
|
--section-content-gap: var(--spacing-sm);
|
|
111
111
|
--section-card-gap: var(--spacing-md);
|
|
112
112
|
--section-card-padding: var(--spacing-md);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* ============================================================================
|
|
4
4
|
* Standardized badge styling across all sections and card types.
|
|
5
5
|
* Replaces multiple inconsistent badge patterns with unified design.
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* Design Spec:
|
|
8
8
|
* - Height: ~20-22px (auto with padding)
|
|
9
9
|
* - Padding: 4px 8px (vertical horizontal)
|
|
@@ -275,7 +275,6 @@
|
|
|
275
275
|
|
|
276
276
|
@media (max-width: 768px) {
|
|
277
277
|
.badge {
|
|
278
|
-
font-size: 0.5625rem; /* 9px on mobile */
|
|
279
278
|
padding: 3px 6px;
|
|
280
279
|
|
|
281
280
|
lucide-icon,
|
|
@@ -14,7 +14,10 @@ app-card-actions {
|
|
|
14
14
|
margin-top: var(--space-3) !important;
|
|
15
15
|
margin-left: var(--space-1) !important;
|
|
16
16
|
margin-right: var(--space-1) !important;
|
|
17
|
+
padding-top: 0 !important;
|
|
17
18
|
padding-bottom: var(--osi-card-padding) !important;
|
|
19
|
+
padding-left: 8px !important;
|
|
20
|
+
padding-right: 8px !important;
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
// Base Button Styles
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
/* Pure CSS Grid - browser handles all positioning */
|
|
24
24
|
display: grid;
|
|
25
25
|
grid-template-columns: repeat(var(--masonry-columns, 4), 1fr);
|
|
26
|
-
gap: var(--masonry-gap,
|
|
26
|
+
gap: var(--masonry-gap, 8px);
|
|
27
27
|
width: 100%;
|
|
28
28
|
min-height: 0;
|
|
29
29
|
align-items: start;
|
|
@@ -2,17 +2,11 @@
|
|
|
2
2
|
AI Card Styles - Unified with Docs App
|
|
3
3
|
=================================================================== */
|
|
4
4
|
|
|
5
|
-
/* Host element styles - transparent container
|
|
5
|
+
/* Host element styles - transparent container without padding (padding is on .ai-card-surface) */
|
|
6
6
|
:host {
|
|
7
7
|
display: block;
|
|
8
|
-
padding: var(--osi-card-padding);
|
|
9
8
|
background: transparent !important;
|
|
10
9
|
background-color: transparent !important;
|
|
11
|
-
|
|
12
|
-
/* Responsive: reduce padding on mobile */
|
|
13
|
-
@media (max-width: 480px) {
|
|
14
|
-
padding: var(--osi-card-padding-mobile);
|
|
15
|
-
}
|
|
16
10
|
}
|
|
17
11
|
|
|
18
12
|
.ai-card-surface {
|
|
@@ -51,11 +45,11 @@
|
|
|
51
45
|
box-shadow: var(--osi-card-shadow) !important;
|
|
52
46
|
|
|
53
47
|
/* Padding - card-specific spacing */
|
|
54
|
-
padding: var(--osi-card-padding,
|
|
55
|
-
padding-top: var(--osi-card-padding,
|
|
56
|
-
padding-bottom: var(--osi-card-padding,
|
|
57
|
-
padding-left: var(--osi-card-padding,
|
|
58
|
-
padding-right: var(--osi-card-padding,
|
|
48
|
+
padding: var(--osi-card-padding, 8px) !important;
|
|
49
|
+
padding-top: var(--osi-card-padding, 8px) !important;
|
|
50
|
+
padding-bottom: var(--osi-card-padding, 8px) !important;
|
|
51
|
+
padding-left: var(--osi-card-padding, 8px) !important;
|
|
52
|
+
padding-right: var(--osi-card-padding, 8px) !important;
|
|
59
53
|
|
|
60
54
|
/* Border radius - card-specific (larger than sections) */
|
|
61
55
|
border-radius: var(--osi-card-border-radius) !important;
|
|
@@ -488,7 +482,7 @@
|
|
|
488
482
|
margin-bottom: 0 !important;
|
|
489
483
|
display: flex;
|
|
490
484
|
flex-direction: column;
|
|
491
|
-
gap: var(--osi-card-body-gap,
|
|
485
|
+
gap: var(--osi-card-body-gap, 8px) !important; /* Constant gap between sections */
|
|
492
486
|
min-height: 0;
|
|
493
487
|
max-width: 100%;
|
|
494
488
|
box-sizing: border-box !important;
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
|
|
82
82
|
// Section description text
|
|
83
83
|
@mixin section-description-text {
|
|
84
|
-
font-size: var(--section-description-font-size, 0.8rem);
|
|
84
|
+
font-size: var(--section-description-font-size, calc(0.8rem - 1px));
|
|
85
85
|
font-weight: 400;
|
|
86
86
|
color: var(--card-text-secondary, #{$foreground-60});
|
|
87
87
|
line-height: 1.4;
|
|
@@ -73,7 +73,7 @@ $spacing-scale: (
|
|
|
73
73
|
// Section-specific sizing - BALANCED for good UX
|
|
74
74
|
--section-card-min-height: 110px; // Comfortable (was 120px, not 90px)
|
|
75
75
|
--section-card-compact-height: 90px; // Compact variant
|
|
76
|
-
--section-header-gap:
|
|
76
|
+
--section-header-gap: 2px; // Reduced gap between title and subtitle
|
|
77
77
|
--section-content-gap: var(--spacing-sm); // 8px - good separation
|
|
78
78
|
--section-card-gap: var(--spacing-md); // 12px - visual breathing room
|
|
79
79
|
--section-card-padding: var(--spacing-md); // 12px - comfortable
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
--section-title-underline-height: var(--osi-section-title-underline-height);
|
|
19
19
|
--section-title-underline-offset: var(--osi-section-title-underline-offset);
|
|
20
20
|
--section-title-hover-color: var(--osi-section-title-hover-color);
|
|
21
|
+
width: 100% !important;
|
|
22
|
+
max-width: 100% !important;
|
|
21
23
|
height: auto !important;
|
|
22
24
|
min-height: 0 !important;
|
|
23
25
|
max-height: none !important;
|
|
@@ -44,7 +46,7 @@
|
|
|
44
46
|
.masonry-item & {
|
|
45
47
|
display: flex !important;
|
|
46
48
|
flex-direction: column !important;
|
|
47
|
-
gap: var(--osi-section-gap,
|
|
49
|
+
gap: var(--osi-section-gap, 8px) !important;
|
|
48
50
|
height: auto !important;
|
|
49
51
|
}
|
|
50
52
|
}
|
|
@@ -342,3 +344,37 @@
|
|
|
342
344
|
|
|
343
345
|
/* Theme system handles all light/dark variations automatically */
|
|
344
346
|
/* All colors adapt through CSS variables defined in tokens/_master.scss */
|
|
347
|
+
|
|
348
|
+
/* ============================================================
|
|
349
|
+
GLOBAL SECTION CONTENT WIDTH RULES
|
|
350
|
+
Ensure all section content expands to use full available width
|
|
351
|
+
============================================================ */
|
|
352
|
+
|
|
353
|
+
.section-content {
|
|
354
|
+
width: 100% !important;
|
|
355
|
+
max-width: 100% !important;
|
|
356
|
+
min-width: 0 !important; // Allow shrinking for proper resizing
|
|
357
|
+
box-sizing: border-box !important;
|
|
358
|
+
display: flex !important;
|
|
359
|
+
flex-direction: column !important;
|
|
360
|
+
padding: 4px !important;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/* Ensure FAQ section specifically resizes properly */
|
|
364
|
+
.ai-section--faq {
|
|
365
|
+
min-width: 0 !important; // Override any min-width constraints
|
|
366
|
+
width: 100% !important;
|
|
367
|
+
max-width: 100% !important;
|
|
368
|
+
|
|
369
|
+
.list {
|
|
370
|
+
min-width: 0 !important;
|
|
371
|
+
width: 100% !important;
|
|
372
|
+
max-width: 100% !important;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.item {
|
|
376
|
+
min-width: 0 !important;
|
|
377
|
+
width: 100% !important;
|
|
378
|
+
max-width: 100% !important;
|
|
379
|
+
}
|
|
380
|
+
}
|