osi-cards-lib 1.5.41 → 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 +1152 -130
- package/fesm2022/osi-cards-lib.mjs.map +1 -1
- package/index.d.ts +89 -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 +2 -1
- 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 +4 -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;
|
|
@@ -8671,6 +8708,7 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8671
8708
|
private resizeObserver?;
|
|
8672
8709
|
private resizeThrottleTimeout?;
|
|
8673
8710
|
private lastWidth;
|
|
8711
|
+
private lastContainerWidth;
|
|
8674
8712
|
private layoutVersion;
|
|
8675
8713
|
private itemResizeObservers;
|
|
8676
8714
|
private absolutePositionUpdateRafId;
|
|
@@ -8680,6 +8718,9 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8680
8718
|
private readonly HEIGHT_THRESHOLD;
|
|
8681
8719
|
private initialLayoutPollingTimeout?;
|
|
8682
8720
|
private itemElements;
|
|
8721
|
+
private cachedPadding;
|
|
8722
|
+
private isFirstCalculation;
|
|
8723
|
+
private isFirstPositioning;
|
|
8683
8724
|
ngAfterViewInit(): void;
|
|
8684
8725
|
ngOnChanges(changes: SimpleChanges): void;
|
|
8685
8726
|
ngOnDestroy(): void;
|
|
@@ -8715,7 +8756,22 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8715
8756
|
*/
|
|
8716
8757
|
private determineLayoutVariant;
|
|
8717
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
|
+
*/
|
|
8718
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;
|
|
8719
8775
|
private setupResizeObserver;
|
|
8720
8776
|
trackBySection: (index: number, item: SectionWithSpan) => string;
|
|
8721
8777
|
onSectionEvent(event: SectionRenderEvent): void;
|
|
@@ -8755,6 +8811,7 @@ declare class MasonryGridComponent implements AfterViewInit, OnChanges, OnDestro
|
|
|
8755
8811
|
/**
|
|
8756
8812
|
* Ensure initial layout is calculated with retry mechanism if width is invalid
|
|
8757
8813
|
* Simplified: Single RAF + one timeout retry
|
|
8814
|
+
* Also validates padding before layout calculation
|
|
8758
8815
|
*/
|
|
8759
8816
|
private ensureInitialLayout;
|
|
8760
8817
|
static ɵfac: i0.ɵɵFactoryDeclaration<MasonryGridComponent, never>;
|
|
@@ -10184,17 +10241,39 @@ declare class BrandColorsSectionComponent extends BaseSectionComponent implement
|
|
|
10184
10241
|
*
|
|
10185
10242
|
* Note: Requires Chart.js to be installed.
|
|
10186
10243
|
*/
|
|
10187
|
-
declare class ChartSectionComponent extends BaseSectionComponent implements AfterViewInit, OnDestroy, OnInit {
|
|
10244
|
+
declare class ChartSectionComponent extends BaseSectionComponent implements AfterViewInit, OnDestroy, OnInit, OnChanges {
|
|
10188
10245
|
private readonly layoutService;
|
|
10189
10246
|
ngOnInit(): void;
|
|
10190
10247
|
chartCanvas?: ElementRef<HTMLCanvasElement>;
|
|
10191
10248
|
private chartInstance;
|
|
10249
|
+
protected chartLibraryLoaded: boolean;
|
|
10250
|
+
protected chartError: string | null;
|
|
10251
|
+
private previousChartType;
|
|
10252
|
+
private previousChartDataHash;
|
|
10253
|
+
private isRendering;
|
|
10192
10254
|
ngAfterViewInit(): void;
|
|
10193
10255
|
ngOnDestroy(): void;
|
|
10256
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
10194
10257
|
/**
|
|
10195
10258
|
* Render chart using Chart.js (if available)
|
|
10196
10259
|
*/
|
|
10197
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;
|
|
10198
10277
|
/**
|
|
10199
10278
|
* Destroy chart instance
|
|
10200
10279
|
*/
|
|
@@ -11619,11 +11698,11 @@ declare function packWithZeroGapsGuarantee(sections: CardSection[], columns?: nu
|
|
|
11619
11698
|
* Do not edit manually - generated by scripts/generate-version.js
|
|
11620
11699
|
*
|
|
11621
11700
|
* Source of truth: version.config.json
|
|
11622
|
-
* Last synced: 2025-12-
|
|
11701
|
+
* Last synced: 2025-12-15T21:37:02.720Z
|
|
11623
11702
|
*/
|
|
11624
|
-
declare const VERSION = "1.5.
|
|
11625
|
-
declare const BUILD_DATE = "2025-12-
|
|
11626
|
-
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";
|
|
11627
11706
|
declare const BUILD_BRANCH = "main";
|
|
11628
11707
|
interface VersionInfo {
|
|
11629
11708
|
version: string;
|
|
@@ -11656,4 +11735,4 @@ declare function isProductionBuild(): boolean;
|
|
|
11656
11735
|
declare function isPrerelease(): boolean;
|
|
11657
11736
|
|
|
11658
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 };
|
|
11659
|
-
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
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
.masonry-item & {
|
|
47
47
|
display: flex !important;
|
|
48
48
|
flex-direction: column !important;
|
|
49
|
-
gap: var(--osi-section-gap,
|
|
49
|
+
gap: var(--osi-section-gap, 8px) !important;
|
|
50
50
|
height: auto !important;
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -357,6 +357,7 @@
|
|
|
357
357
|
box-sizing: border-box !important;
|
|
358
358
|
display: flex !important;
|
|
359
359
|
flex-direction: column !important;
|
|
360
|
+
padding: 4px !important;
|
|
360
361
|
}
|
|
361
362
|
|
|
362
363
|
/* Ensure FAQ section specifically resizes properly */
|
|
@@ -339,7 +339,7 @@ article.ai-card-surface {
|
|
|
339
339
|
/* Section card variables */
|
|
340
340
|
--section-card-min-height: 110px;
|
|
341
341
|
--section-card-compact-height: 90px;
|
|
342
|
-
--section-header-gap:
|
|
342
|
+
--section-header-gap: 2px;
|
|
343
343
|
--section-content-gap: var(--spacing-sm);
|
|
344
344
|
--section-card-gap: var(--spacing-md);
|
|
345
345
|
--section-card-padding: var(--spacing-md);
|
package/styles/core/_mixins.scss
CHANGED
|
@@ -299,7 +299,7 @@ $osi-use-important: true !default;
|
|
|
299
299
|
/// @param {Length} $gap - Gap between items
|
|
300
300
|
@mixin osi-grid(
|
|
301
301
|
$min-width: var(--section-grid-min-width, 200px),
|
|
302
|
-
$gap: var(--section-card-gap,
|
|
302
|
+
$gap: var(--section-card-gap, 8px)
|
|
303
303
|
) {
|
|
304
304
|
@include display(grid);
|
|
305
305
|
@include grid-columns(repeat(auto-fit, minmax($min-width, 1fr)));
|
|
@@ -315,7 +315,7 @@ $osi-use-important: true !default;
|
|
|
315
315
|
|
|
316
316
|
/// Flex column stack for vertical lists
|
|
317
317
|
/// @param {Length} $gap - Gap between items
|
|
318
|
-
@mixin osi-stack($gap: var(--section-stack-gap,
|
|
318
|
+
@mixin osi-stack($gap: var(--section-stack-gap, 8px)) {
|
|
319
319
|
@include display(flex);
|
|
320
320
|
@include flex-direction(column);
|
|
321
321
|
@include gap($gap);
|
|
@@ -326,7 +326,7 @@ $osi-use-important: true !default;
|
|
|
326
326
|
/// Fixed column grid
|
|
327
327
|
/// @param {Number} $columns - Number of columns
|
|
328
328
|
/// @param {Length} $gap - Gap between items
|
|
329
|
-
@mixin osi-grid-fixed($columns: 2, $gap: var(--section-card-gap,
|
|
329
|
+
@mixin osi-grid-fixed($columns: 2, $gap: var(--section-card-gap, 8px)) {
|
|
330
330
|
@include display(grid);
|
|
331
331
|
@include grid-columns(repeat($columns, 1fr));
|
|
332
332
|
@include gap($gap);
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
--osi-spacing-3xl: 48px;
|
|
18
18
|
|
|
19
19
|
// Section-specific spacing (More compact by default)
|
|
20
|
-
--osi-section-header-gap:
|
|
20
|
+
--osi-section-header-gap: 2px; // Reduced gap between title and subtitle
|
|
21
21
|
--osi-section-padding: var(--osi-spacing-sm); // 8px (was 12px)
|
|
22
22
|
--osi-section-gap: var(--osi-spacing-md); // 12px (was 16px)
|
|
23
23
|
--osi-item-padding: var(--osi-spacing-sm); // 8px (was 12px)
|
|
@@ -16,24 +16,16 @@
|
|
|
16
16
|
font-weight: var(--osi-font-semibold); // 600
|
|
17
17
|
line-height: var(--osi-leading-snug); // 1.375
|
|
18
18
|
color: var(--osi-foreground);
|
|
19
|
-
|
|
20
|
-
@include mobile {
|
|
21
|
-
font-size: var(--osi-text-sm); // Keep same on mobile
|
|
22
|
-
}
|
|
23
19
|
}
|
|
24
20
|
|
|
25
21
|
// Item labels (small uppercase text)
|
|
26
22
|
@mixin unified-item-label {
|
|
27
|
-
font-size: 0.7rem; // 11.2px - Compact
|
|
23
|
+
font-size: 0.7rem; // 11.2px - Compact, fixed size
|
|
28
24
|
font-weight: var(--osi-font-medium); // 500
|
|
29
25
|
line-height: var(--osi-leading-tight); // 1.25
|
|
30
26
|
color: var(--osi-muted-foreground);
|
|
31
27
|
text-transform: uppercase;
|
|
32
28
|
letter-spacing: 0.04em;
|
|
33
|
-
|
|
34
|
-
@include mobile {
|
|
35
|
-
font-size: 0.65rem; // 10.4px on mobile
|
|
36
|
-
}
|
|
37
29
|
}
|
|
38
30
|
|
|
39
31
|
// Item values (prominent text/numbers)
|
|
@@ -42,10 +34,6 @@
|
|
|
42
34
|
font-weight: var(--osi-font-semibold); // 600
|
|
43
35
|
line-height: var(--osi-leading-normal); // 1.5
|
|
44
36
|
color: var(--osi-foreground);
|
|
45
|
-
|
|
46
|
-
@include mobile {
|
|
47
|
-
font-size: var(--osi-text-sm); // Keep same on mobile
|
|
48
|
-
}
|
|
49
37
|
}
|
|
50
38
|
|
|
51
39
|
// Item descriptions (secondary text)
|
|
@@ -54,25 +42,16 @@
|
|
|
54
42
|
font-weight: var(--osi-font-normal); // 400
|
|
55
43
|
line-height: var(--osi-leading-relaxed); // 1.625
|
|
56
44
|
color: var(--osi-muted-foreground);
|
|
57
|
-
|
|
58
|
-
@include mobile {
|
|
59
|
-
font-size: var(--osi-text-xs); // Keep same on mobile
|
|
60
|
-
line-height: var(--osi-leading-normal); // Tighter on mobile
|
|
61
|
-
}
|
|
62
45
|
}
|
|
63
46
|
|
|
64
47
|
// Number displays (metrics, analytics)
|
|
65
48
|
@mixin unified-number-display {
|
|
66
|
-
font-size: var(--osi-text-xl); // 24px -
|
|
49
|
+
font-size: var(--osi-text-xl); // 24px - Fixed size for all screen sizes
|
|
67
50
|
font-weight: var(--osi-font-bold); // 700
|
|
68
51
|
line-height: 1;
|
|
69
52
|
letter-spacing: var(--osi-tracking-tight);
|
|
70
53
|
font-variant-numeric: tabular-nums;
|
|
71
54
|
color: var(--osi-foreground);
|
|
72
|
-
|
|
73
|
-
@include mobile {
|
|
74
|
-
font-size: var(--osi-text-lg); // 20px on mobile
|
|
75
|
-
}
|
|
76
55
|
}
|
|
77
56
|
|
|
78
57
|
// ═══════════════════════════════════════════════════════════════════
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
display: grid !important;
|
|
18
18
|
grid-template-columns: repeat(auto-fill, minmax(var(--section-grid-min-width, 260px), 1fr));
|
|
19
19
|
grid-template-rows: masonry;
|
|
20
|
-
gap: var(--section-card-gap,
|
|
20
|
+
gap: var(--section-card-gap, 8px);
|
|
21
21
|
align-tracks: stretch;
|
|
22
22
|
|
|
23
23
|
/* Native masonry doesn't need absolute positioning */
|
|
@@ -292,12 +292,6 @@
|
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
294
|
|
|
295
|
-
.masonry-item[data-priority="2"],
|
|
296
|
-
.masonry-item[data-priority="3"] {
|
|
297
|
-
/* Priority 2 and 3 sections - no special border, use unified styling */
|
|
298
|
-
/* Left accent border removed for consistency */
|
|
299
|
-
}
|
|
300
|
-
|
|
301
295
|
/* Flex grow sections - expand to fill space */
|
|
302
296
|
.masonry-item--flex-grow {
|
|
303
297
|
flex-grow: 1 !important;
|
|
@@ -559,17 +553,17 @@
|
|
|
559
553
|
}
|
|
560
554
|
|
|
561
555
|
.masonry-skeleton--single {
|
|
562
|
-
width: calc((100% - var(--masonry-gap,
|
|
556
|
+
width: calc((100% - var(--masonry-gap, 8px) * 3) / 4);
|
|
563
557
|
height: 180px;
|
|
564
558
|
}
|
|
565
559
|
|
|
566
560
|
.masonry-skeleton--double {
|
|
567
|
-
width: calc((100% - var(--masonry-gap,
|
|
561
|
+
width: calc((100% - var(--masonry-gap, 8px) * 3) / 4 * 2 + var(--masonry-gap, 8px));
|
|
568
562
|
height: 200px;
|
|
569
563
|
}
|
|
570
564
|
|
|
571
565
|
.masonry-skeleton--triple {
|
|
572
|
-
width: calc((100% - var(--masonry-gap,
|
|
566
|
+
width: calc((100% - var(--masonry-gap, 8px) * 3) / 4 * 3 + var(--masonry-gap, 8px) * 2);
|
|
573
567
|
height: 220px;
|
|
574
568
|
}
|
|
575
569
|
|
|
@@ -466,15 +466,14 @@ $breakpoints: (
|
|
|
466
466
|
@mixin osi-card-typography($variant: "demo") {
|
|
467
467
|
// Both demo and integration now use the same compact values
|
|
468
468
|
// Section Titles
|
|
469
|
-
--section-title-font-size: 0.92rem;
|
|
469
|
+
--section-title-font-size: calc(0.92rem - 6px);
|
|
470
470
|
--section-title-font-weight: 700;
|
|
471
471
|
--section-title-letter-spacing: -0.02em;
|
|
472
472
|
--section-title-line-height: 1.3;
|
|
473
473
|
--section-title-text-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
|
|
474
474
|
|
|
475
475
|
// Card Header Title (main card title - larger)
|
|
476
|
-
--card-header-title-font-size:
|
|
477
|
-
--card-header-title-font-size-mobile: 1rem; /* 16px - mobile (reduced by 2px from 18px) */
|
|
476
|
+
--card-header-title-font-size: 1rem; /* 16px - fixed size for all screen sizes */
|
|
478
477
|
--card-header-title-font-weight: 700;
|
|
479
478
|
--card-header-title-letter-spacing: -0.02em;
|
|
480
479
|
--card-header-title-line-height: 1.3;
|
|
@@ -526,23 +525,23 @@ $breakpoints: (
|
|
|
526
525
|
|
|
527
526
|
/// Generate card layout tokens
|
|
528
527
|
@mixin osi-card-layout() {
|
|
529
|
-
--card-main-padding:
|
|
528
|
+
--card-main-padding: 8px;
|
|
530
529
|
--card-padding-vertical: 12px;
|
|
531
|
-
--card-padding-horizontal:
|
|
532
|
-
--card-padding:
|
|
530
|
+
--card-padding-horizontal: 12px;
|
|
531
|
+
--card-padding: 12px;
|
|
533
532
|
--card-padding-large: 20px;
|
|
534
533
|
--section-padding: 12px;
|
|
535
|
-
--section-container-padding:
|
|
534
|
+
--section-container-padding: 16px;
|
|
536
535
|
--card-min-height: auto;
|
|
537
536
|
--card-gap: 6px;
|
|
538
537
|
--card-gap-large: 10px;
|
|
539
538
|
--card-nested-gap: 3px;
|
|
540
|
-
--section-header-gap:
|
|
539
|
+
--section-header-gap: 2px;
|
|
541
540
|
--section-header-padding-bottom: 0px;
|
|
542
541
|
--section-title-margin-bottom: 0;
|
|
543
542
|
--card-border-radius: 12px;
|
|
544
543
|
--card-border-radius-large: 16px;
|
|
545
|
-
--section-card-gap:
|
|
544
|
+
--section-card-gap: 8px;
|
|
546
545
|
--section-card-border-radius: 10px;
|
|
547
546
|
|
|
548
547
|
// Element gaps within cards
|
|
@@ -649,11 +648,11 @@ $breakpoints: (
|
|
|
649
648
|
--osi-card-shadow-fullscreen: none;
|
|
650
649
|
|
|
651
650
|
// Card Spacing - Padding
|
|
652
|
-
--osi-card-padding: var(--card-main-padding,
|
|
653
|
-
--osi-card-padding-top: var(--card-main-padding,
|
|
654
|
-
--osi-card-padding-bottom: var(--card-main-padding,
|
|
655
|
-
--osi-card-padding-left: var(--card-main-padding,
|
|
656
|
-
--osi-card-padding-right: var(--card-main-padding,
|
|
651
|
+
--osi-card-padding: var(--card-main-padding, 8px);
|
|
652
|
+
--osi-card-padding-top: var(--card-main-padding, 8px);
|
|
653
|
+
--osi-card-padding-bottom: var(--card-main-padding, 8px);
|
|
654
|
+
--osi-card-padding-left: var(--card-main-padding, 8px);
|
|
655
|
+
--osi-card-padding-right: var(--card-main-padding, 8px);
|
|
657
656
|
--osi-card-padding-mobile: 4px; // Fixed padding - no responsive behavior
|
|
658
657
|
|
|
659
658
|
// Card Spacing - Margins
|
|
@@ -663,9 +662,9 @@ $breakpoints: (
|
|
|
663
662
|
--osi-card-margin-right: 0;
|
|
664
663
|
|
|
665
664
|
// Card Spacing - Gaps
|
|
666
|
-
--osi-card-gap: var(--section-card-gap,
|
|
667
|
-
--osi-card-body-gap: var(--space-
|
|
668
|
-
--osi-card-grid-gap: var(--section-card-gap,
|
|
665
|
+
--osi-card-gap: var(--section-card-gap, 8px);
|
|
666
|
+
--osi-card-body-gap: var(--space-4, 8px);
|
|
667
|
+
--osi-card-grid-gap: var(--section-card-gap, 8px);
|
|
669
668
|
|
|
670
669
|
// Card Border Radius
|
|
671
670
|
--osi-card-border-radius: var(--card-border-radius);
|
|
@@ -801,7 +800,7 @@ $breakpoints: (
|
|
|
801
800
|
--osi-section-border-radius: var(--section-card-border-radius);
|
|
802
801
|
|
|
803
802
|
// Section Typography
|
|
804
|
-
--osi-section-title-font-size:
|
|
803
|
+
--osi-section-title-font-size: calc(1.1rem - 4px);
|
|
805
804
|
--osi-section-title-font-weight: var(--section-title-font-weight, 700);
|
|
806
805
|
--osi-section-title-letter-spacing: var(--section-title-letter-spacing, -0.02em);
|
|
807
806
|
--osi-section-title-line-height: var(--section-title-line-height, 1.3);
|