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/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' | 'checklist' | 'locations' | 'press' | 'articles' | 'summary' | 'executive' | 'quote' | 'testimonial' | 'social' | 'socials' | 'services' | 'offerings' | 'reference' | 'text-ref' | 'documentation' | 'history' | 'milestones' | 'videos' | 'media';
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-15T12:34:41.034Z
11701
+ * Last synced: 2025-12-15T21:37:02.720Z
11500
11702
  */
11501
- declare const VERSION = "1.5.40";
11502
- declare const BUILD_DATE = "2025-12-15T12:34:41.034Z";
11503
- declare const BUILD_HASH = "5e74926";
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "osi-cards-lib",
3
- "version": "1.5.40",
3
+ "version": "1.5.42",
4
4
  "description": "Standalone OSI Cards library for Angular applications with CSS Layer support for easy style overrides",
5
5
  "keywords": [
6
6
  "angular",
@@ -169,3 +169,4 @@ if (require.main === module) {
169
169
  module.exports = { updateAngularJson, findAngularJson };
170
170
 
171
171
 
172
+
@@ -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: var(--spacing-md);
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, 12px);
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 with padding */
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, 16px) !important;
55
- padding-top: var(--osi-card-padding, 16px) !important;
56
- padding-bottom: var(--osi-card-padding, 16px) !important;
57
- padding-left: var(--osi-card-padding, 16px) !important;
58
- padding-right: var(--osi-card-padding, 16px) !important;
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, 12px) !important; /* Constant gap between sections */
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: var(--spacing-md); // 12px - comfortable readability
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, 12px) !important;
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
+ }