osi-cards-lib 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -1
- package/fesm2022/osi-cards-lib.mjs +3022 -735
- package/index.d.ts +1187 -64
- package/package.json +1 -1
- package/styles/layout/_tilt.scss +12 -14
package/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { OnDestroy, OnChanges, EventEmitter, ChangeDetectorRef, SimpleChanges, AfterViewInit, ElementRef, QueryList, OnInit } from '@angular/core';
|
|
2
|
+
import { OnDestroy, OnChanges, EventEmitter, ChangeDetectorRef, SimpleChanges, Type, Provider, EnvironmentProviders, AfterViewInit, ElementRef, QueryList, OnInit } from '@angular/core';
|
|
3
3
|
import * as rxjs from 'rxjs';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
4
5
|
import * as i1 from 'lucide-angular';
|
|
5
6
|
|
|
6
7
|
type CardType = 'company' | 'contact' | 'opportunity' | 'product' | 'analytics' | 'event' | 'project' | 'sko';
|
|
@@ -356,10 +357,34 @@ declare class MagneticTiltService implements OnDestroy {
|
|
|
356
357
|
private rafId;
|
|
357
358
|
private pendingUpdate;
|
|
358
359
|
private lastCalculations;
|
|
360
|
+
private currentRotateY;
|
|
361
|
+
private currentRotateX;
|
|
362
|
+
private currentGlowBlur;
|
|
363
|
+
private currentGlowOpacity;
|
|
364
|
+
private currentReflectionOpacity;
|
|
365
|
+
private targetRotateY;
|
|
366
|
+
private targetRotateX;
|
|
367
|
+
private targetGlowBlur;
|
|
368
|
+
private targetGlowOpacity;
|
|
369
|
+
private targetReflectionOpacity;
|
|
370
|
+
private smoothingRafId;
|
|
359
371
|
private readonly CACHE_DURATION;
|
|
360
372
|
private readonly ngZone;
|
|
361
373
|
calculateTilt(mousePosition: MousePosition, element: HTMLElement | null): void;
|
|
362
374
|
private processTiltUpdate;
|
|
375
|
+
/**
|
|
376
|
+
* Linear interpolation (lerp) for smooth value transitions
|
|
377
|
+
* @param start Current value
|
|
378
|
+
* @param end Target value
|
|
379
|
+
* @param factor Interpolation factor (0-1)
|
|
380
|
+
*/
|
|
381
|
+
private lerp;
|
|
382
|
+
/**
|
|
383
|
+
* Continue smoothing animation until values are close to target
|
|
384
|
+
* Uses the latest target values stored in the service
|
|
385
|
+
* Optimized for smooth cursor following
|
|
386
|
+
*/
|
|
387
|
+
private continueSmoothing;
|
|
363
388
|
private getElementCache;
|
|
364
389
|
private hasCalculationsChanged;
|
|
365
390
|
private resetTimeoutId;
|
|
@@ -417,67 +442,6 @@ declare class SectionUtilsService {
|
|
|
417
442
|
static ɵprov: i0.ɵɵInjectableDeclaration<SectionUtilsService>;
|
|
418
443
|
}
|
|
419
444
|
|
|
420
|
-
type CardChangeType = 'content' | 'structural';
|
|
421
|
-
interface CardDiffResult {
|
|
422
|
-
card: AICardConfig;
|
|
423
|
-
changeType: CardChangeType;
|
|
424
|
-
}
|
|
425
|
-
/**
|
|
426
|
-
* Deep comparison utility for card objects
|
|
427
|
-
* Uses content hashing instead of JSON.stringify for better performance
|
|
428
|
-
*/
|
|
429
|
-
declare class CardDiffUtil {
|
|
430
|
-
/**
|
|
431
|
-
* Creates an updated card with only changed sections/fields updated
|
|
432
|
-
* Preserves references to unchanged sections for optimal performance
|
|
433
|
-
*/
|
|
434
|
-
static mergeCardUpdates(oldCard: AICardConfig, newCard: AICardConfig): CardDiffResult;
|
|
435
|
-
private static didStructureChange;
|
|
436
|
-
/**
|
|
437
|
-
* Merges sections array, preserving references to unchanged sections
|
|
438
|
-
*/
|
|
439
|
-
private static mergeSections;
|
|
440
|
-
/**
|
|
441
|
-
* Merges a single section, preserving references to unchanged fields/items
|
|
442
|
-
*/
|
|
443
|
-
private static mergeSection;
|
|
444
|
-
/**
|
|
445
|
-
* Merges fields array, preserving references to unchanged fields
|
|
446
|
-
* Uses content hashing instead of JSON.stringify for better performance
|
|
447
|
-
*/
|
|
448
|
-
private static mergeFields;
|
|
449
|
-
/**
|
|
450
|
-
* Merges items array, preserving references to unchanged items
|
|
451
|
-
* Uses content hashing instead of JSON.stringify for better performance
|
|
452
|
-
*/
|
|
453
|
-
private static mergeItems;
|
|
454
|
-
/**
|
|
455
|
-
* Fast equality check for cards
|
|
456
|
-
*/
|
|
457
|
-
private static areCardsEqual;
|
|
458
|
-
/**
|
|
459
|
-
* Fast equality check for sections arrays
|
|
460
|
-
*/
|
|
461
|
-
private static areSectionsEqual;
|
|
462
|
-
/**
|
|
463
|
-
* Fast equality check for fields arrays
|
|
464
|
-
*/
|
|
465
|
-
private static areFieldsEqual;
|
|
466
|
-
/**
|
|
467
|
-
* Fast equality check for items arrays
|
|
468
|
-
*/
|
|
469
|
-
private static areItemsEqual;
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
473
|
-
declare function getBreakpointFromWidth(width: number): Breakpoint;
|
|
474
|
-
|
|
475
|
-
declare class LucideIconsModule {
|
|
476
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LucideIconsModule, never>;
|
|
477
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<LucideIconsModule, never, [typeof i1.LucideAngularModule], [typeof i1.LucideAngularModule]>;
|
|
478
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<LucideIconsModule>;
|
|
479
|
-
}
|
|
480
|
-
|
|
481
445
|
/**
|
|
482
446
|
* Base interface for section field/item interactions
|
|
483
447
|
*/
|
|
@@ -614,6 +578,185 @@ declare abstract class BaseSectionComponent<T extends CardField | CardItem = Car
|
|
|
614
578
|
static ɵcmp: i0.ɵɵComponentDeclaration<BaseSectionComponent<any>, "ng-component", never, { "section": { "alias": "section"; "required": true; }; }, { "fieldInteraction": "fieldInteraction"; "itemInteraction": "itemInteraction"; }, never, never, true, never>;
|
|
615
579
|
}
|
|
616
580
|
|
|
581
|
+
/**
|
|
582
|
+
* Plugin metadata for a custom section type
|
|
583
|
+
*/
|
|
584
|
+
interface SectionPluginMetadata {
|
|
585
|
+
/** Unique identifier for the section type */
|
|
586
|
+
type: string;
|
|
587
|
+
/** Display name for the section type */
|
|
588
|
+
name: string;
|
|
589
|
+
/** Description of what this section type does */
|
|
590
|
+
description?: string;
|
|
591
|
+
/** Version of the plugin */
|
|
592
|
+
version?: string;
|
|
593
|
+
/** Author information */
|
|
594
|
+
author?: string;
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* Configuration options for a section plugin
|
|
598
|
+
*/
|
|
599
|
+
interface SectionPluginConfig {
|
|
600
|
+
/** Priority for plugin resolution (higher = higher priority) */
|
|
601
|
+
priority?: number;
|
|
602
|
+
/** Whether this plugin should override built-in sections with the same type */
|
|
603
|
+
override?: boolean;
|
|
604
|
+
/** Additional metadata */
|
|
605
|
+
metadata?: Partial<SectionPluginMetadata>;
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* Plugin interface that custom section components must implement
|
|
609
|
+
*
|
|
610
|
+
* @example
|
|
611
|
+
* ```typescript
|
|
612
|
+
* @Component({
|
|
613
|
+
* selector: 'app-custom-section',
|
|
614
|
+
* standalone: true,
|
|
615
|
+
* template: `...`
|
|
616
|
+
* })
|
|
617
|
+
* export class CustomSectionComponent extends BaseSectionComponent implements SectionPlugin {
|
|
618
|
+
* static readonly PLUGIN_TYPE = 'custom-section';
|
|
619
|
+
*
|
|
620
|
+
* getPluginType(): string {
|
|
621
|
+
* return CustomSectionComponent.PLUGIN_TYPE;
|
|
622
|
+
* }
|
|
623
|
+
*
|
|
624
|
+
* canHandle(section: CardSection): boolean {
|
|
625
|
+
* return section.type === 'custom-section';
|
|
626
|
+
* }
|
|
627
|
+
* }
|
|
628
|
+
* ```
|
|
629
|
+
*/
|
|
630
|
+
interface SectionPlugin {
|
|
631
|
+
/**
|
|
632
|
+
* Returns the section type this plugin handles
|
|
633
|
+
*/
|
|
634
|
+
getPluginType(): string;
|
|
635
|
+
/**
|
|
636
|
+
* Determines if this plugin can handle the given section
|
|
637
|
+
* @param section - The section to check
|
|
638
|
+
* @returns True if this plugin can handle the section
|
|
639
|
+
*/
|
|
640
|
+
canHandle(section: CardSection): boolean;
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Extended plugin interface with component type
|
|
644
|
+
*/
|
|
645
|
+
interface RegisteredSectionPlugin extends SectionPluginMetadata {
|
|
646
|
+
/** The component class that handles this section type */
|
|
647
|
+
component: Type<BaseSectionComponent>;
|
|
648
|
+
/** Configuration options */
|
|
649
|
+
config: SectionPluginConfig;
|
|
650
|
+
/** Priority for resolution (default: 0) */
|
|
651
|
+
priority: number;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
/**
|
|
655
|
+
* Registry service for managing custom section type plugins
|
|
656
|
+
*
|
|
657
|
+
* Allows external developers to register custom section components that extend
|
|
658
|
+
* the library's built-in section types.
|
|
659
|
+
*
|
|
660
|
+
* @example
|
|
661
|
+
* ```typescript
|
|
662
|
+
* const registry = inject(SectionPluginRegistry);
|
|
663
|
+
*
|
|
664
|
+
* // Register a custom section plugin
|
|
665
|
+
* registry.register({
|
|
666
|
+
* type: 'custom-section',
|
|
667
|
+
* name: 'Custom Section',
|
|
668
|
+
* description: 'A custom section type',
|
|
669
|
+
* component: CustomSectionComponent,
|
|
670
|
+
* config: {
|
|
671
|
+
* priority: 10,
|
|
672
|
+
* override: false
|
|
673
|
+
* }
|
|
674
|
+
* });
|
|
675
|
+
*
|
|
676
|
+
* // Get a component for a section type
|
|
677
|
+
* const component = registry.getComponent(section);
|
|
678
|
+
* ```
|
|
679
|
+
*/
|
|
680
|
+
declare class SectionPluginRegistry {
|
|
681
|
+
private plugins;
|
|
682
|
+
private readonly defaultFallback;
|
|
683
|
+
/**
|
|
684
|
+
* Register a custom section plugin
|
|
685
|
+
*
|
|
686
|
+
* @param plugin - The plugin metadata and component
|
|
687
|
+
* @throws Error if plugin type already exists and override is false
|
|
688
|
+
*/
|
|
689
|
+
register(plugin: {
|
|
690
|
+
type: string;
|
|
691
|
+
name: string;
|
|
692
|
+
description?: string;
|
|
693
|
+
component: Type<BaseSectionComponent & SectionPlugin>;
|
|
694
|
+
config?: SectionPluginConfig;
|
|
695
|
+
metadata?: Partial<SectionPluginMetadata>;
|
|
696
|
+
}): void;
|
|
697
|
+
/**
|
|
698
|
+
* Unregister a plugin
|
|
699
|
+
*
|
|
700
|
+
* @param type - The section type to unregister
|
|
701
|
+
* @returns True if plugin was removed, false if not found
|
|
702
|
+
*/
|
|
703
|
+
unregister(type: string): boolean;
|
|
704
|
+
/**
|
|
705
|
+
* Get the component class for a given section type
|
|
706
|
+
*
|
|
707
|
+
* @param sectionType - The section type identifier
|
|
708
|
+
* @returns The component class or null if not found
|
|
709
|
+
*/
|
|
710
|
+
getComponent(sectionType: string): Type<BaseSectionComponent> | null;
|
|
711
|
+
/**
|
|
712
|
+
* Get the component class for a section
|
|
713
|
+
* Returns null if no plugin is registered (built-in sections will handle it)
|
|
714
|
+
*
|
|
715
|
+
* @param section - The card section
|
|
716
|
+
* @returns The component class or null if no plugin registered
|
|
717
|
+
*/
|
|
718
|
+
getComponentForSection(section: CardSection): Type<BaseSectionComponent> | null;
|
|
719
|
+
/**
|
|
720
|
+
* Check if a plugin is registered for a section type
|
|
721
|
+
*
|
|
722
|
+
* @param type - The section type identifier
|
|
723
|
+
* @returns True if a plugin is registered
|
|
724
|
+
*/
|
|
725
|
+
hasPlugin(type: string): boolean;
|
|
726
|
+
/**
|
|
727
|
+
* Get all registered plugins
|
|
728
|
+
*
|
|
729
|
+
* @returns Array of registered plugin metadata
|
|
730
|
+
*/
|
|
731
|
+
getPlugins(): RegisteredSectionPlugin[];
|
|
732
|
+
/**
|
|
733
|
+
* Get plugin metadata for a specific type
|
|
734
|
+
*
|
|
735
|
+
* @param type - The section type identifier
|
|
736
|
+
* @returns Plugin metadata or null if not found
|
|
737
|
+
*/
|
|
738
|
+
getPluginMetadata(type: string): RegisteredSectionPlugin | null;
|
|
739
|
+
/**
|
|
740
|
+
* Clear all registered plugins
|
|
741
|
+
*/
|
|
742
|
+
clear(): void;
|
|
743
|
+
/**
|
|
744
|
+
* Register multiple plugins at once
|
|
745
|
+
*
|
|
746
|
+
* @param plugins - Array of plugins to register
|
|
747
|
+
*/
|
|
748
|
+
registerAll(plugins: Array<{
|
|
749
|
+
type: string;
|
|
750
|
+
name: string;
|
|
751
|
+
description?: string;
|
|
752
|
+
component: Type<BaseSectionComponent & SectionPlugin>;
|
|
753
|
+
config?: SectionPluginConfig;
|
|
754
|
+
metadata?: Partial<SectionPluginMetadata>;
|
|
755
|
+
}>): void;
|
|
756
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SectionPluginRegistry, never>;
|
|
757
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SectionPluginRegistry>;
|
|
758
|
+
}
|
|
759
|
+
|
|
617
760
|
type InfoField = CardField & {
|
|
618
761
|
description?: string;
|
|
619
762
|
change?: number;
|
|
@@ -654,17 +797,887 @@ interface SectionRenderEvent {
|
|
|
654
797
|
declare class SectionRendererComponent {
|
|
655
798
|
section: CardSection;
|
|
656
799
|
sectionEvent: EventEmitter<SectionRenderEvent>;
|
|
800
|
+
private readonly pluginRegistry;
|
|
657
801
|
get sectionTypeAttribute(): string;
|
|
658
802
|
get sectionIdAttribute(): string | null;
|
|
803
|
+
/**
|
|
804
|
+
* Get the component type for the current section, checking plugins first
|
|
805
|
+
*/
|
|
806
|
+
get sectionComponent(): Type<BaseSectionComponent> | null;
|
|
807
|
+
/**
|
|
808
|
+
* Check if current section uses a plugin
|
|
809
|
+
*/
|
|
810
|
+
get usesPlugin(): boolean;
|
|
659
811
|
get resolvedType(): string;
|
|
660
812
|
onInfoFieldInteraction(event: InfoSectionFieldInteraction): void;
|
|
661
813
|
emitFieldInteraction(field: CardField, metadata?: Record<string, unknown>): void;
|
|
662
814
|
emitItemInteraction(item: CardItem | CardField, metadata?: Record<string, unknown>): void;
|
|
663
815
|
emitActionInteraction(action: CardAction, metadata?: Record<string, unknown>): void;
|
|
816
|
+
/**
|
|
817
|
+
* Handle events from plugin components
|
|
818
|
+
*/
|
|
819
|
+
onPluginSectionEvent(event: SectionRenderEvent): void;
|
|
664
820
|
static ɵfac: i0.ɵɵFactoryDeclaration<SectionRendererComponent, never>;
|
|
665
821
|
static ɵcmp: i0.ɵɵComponentDeclaration<SectionRendererComponent, "app-section-renderer", never, { "section": { "alias": "section"; "required": true; }; }, { "sectionEvent": "sectionEvent"; }, never, never, true, never>;
|
|
666
822
|
}
|
|
667
823
|
|
|
824
|
+
/**
|
|
825
|
+
* Event middleware interface for intercepting and transforming card events
|
|
826
|
+
*
|
|
827
|
+
* Middleware functions can be used to:
|
|
828
|
+
* - Log events for debugging
|
|
829
|
+
* - Transform event data
|
|
830
|
+
* - Add analytics tracking
|
|
831
|
+
* - Implement custom event filtering
|
|
832
|
+
* - Enrich events with additional metadata
|
|
833
|
+
*
|
|
834
|
+
* @example
|
|
835
|
+
* ```typescript
|
|
836
|
+
* const loggingMiddleware: EventMiddleware = {
|
|
837
|
+
* handle: (event, next) => {
|
|
838
|
+
* console.log('Event:', event);
|
|
839
|
+
* return next(event);
|
|
840
|
+
* }
|
|
841
|
+
* };
|
|
842
|
+
* ```
|
|
843
|
+
*/
|
|
844
|
+
interface EventMiddleware {
|
|
845
|
+
/**
|
|
846
|
+
* Handle an event, optionally transforming it before passing to next middleware
|
|
847
|
+
*
|
|
848
|
+
* @param event - The event to handle
|
|
849
|
+
* @param next - Function to call the next middleware in the chain
|
|
850
|
+
* @returns The processed event (can be the original or transformed)
|
|
851
|
+
*/
|
|
852
|
+
handle(event: SectionRenderEvent, next: (event: SectionRenderEvent) => SectionRenderEvent): SectionRenderEvent;
|
|
853
|
+
/**
|
|
854
|
+
* Optional priority for middleware ordering (higher = earlier in chain)
|
|
855
|
+
*/
|
|
856
|
+
priority?: number;
|
|
857
|
+
}
|
|
858
|
+
/**
|
|
859
|
+
* Event handler function type
|
|
860
|
+
*/
|
|
861
|
+
type EventHandler = (event: SectionRenderEvent) => void | SectionRenderEvent;
|
|
862
|
+
/**
|
|
863
|
+
* Event transformation function type
|
|
864
|
+
*/
|
|
865
|
+
type EventTransformer = (event: SectionRenderEvent) => SectionRenderEvent;
|
|
866
|
+
/**
|
|
867
|
+
* Event filter function type
|
|
868
|
+
*/
|
|
869
|
+
type EventFilter = (event: SectionRenderEvent) => boolean;
|
|
870
|
+
|
|
871
|
+
/**
|
|
872
|
+
* Event Middleware Service
|
|
873
|
+
*
|
|
874
|
+
* Manages event middleware chains for processing card events before they reach handlers.
|
|
875
|
+
* Supports logging, transformation, filtering, and analytics integration.
|
|
876
|
+
*
|
|
877
|
+
* @example
|
|
878
|
+
* ```typescript
|
|
879
|
+
* const eventService = inject(EventMiddlewareService);
|
|
880
|
+
*
|
|
881
|
+
* // Add logging middleware
|
|
882
|
+
* eventService.addMiddleware({
|
|
883
|
+
* handle: (event, next) => {
|
|
884
|
+
* console.log('Event:', event);
|
|
885
|
+
* return next(event);
|
|
886
|
+
* }
|
|
887
|
+
* });
|
|
888
|
+
*
|
|
889
|
+
* // Subscribe to processed events
|
|
890
|
+
* eventService.processedEvents$.subscribe(event => {
|
|
891
|
+
* // Handle event
|
|
892
|
+
* });
|
|
893
|
+
* ```
|
|
894
|
+
*/
|
|
895
|
+
declare class EventMiddlewareService {
|
|
896
|
+
private middleware;
|
|
897
|
+
private processedEventsSubject;
|
|
898
|
+
private rawEventsSubject;
|
|
899
|
+
/** Observable of processed events (after middleware chain) */
|
|
900
|
+
processedEvents$: Observable<SectionRenderEvent>;
|
|
901
|
+
/** Observable of raw events (before middleware) */
|
|
902
|
+
rawEvents$: Observable<SectionRenderEvent>;
|
|
903
|
+
/**
|
|
904
|
+
* Add middleware to the chain
|
|
905
|
+
*
|
|
906
|
+
* @param middleware - Middleware to add
|
|
907
|
+
* @returns Function to remove the middleware
|
|
908
|
+
*/
|
|
909
|
+
addMiddleware(middleware: EventMiddleware): () => void;
|
|
910
|
+
/**
|
|
911
|
+
* Remove middleware from the chain
|
|
912
|
+
*
|
|
913
|
+
* @param middleware - Middleware to remove
|
|
914
|
+
*/
|
|
915
|
+
removeMiddleware(middleware: EventMiddleware): void;
|
|
916
|
+
/**
|
|
917
|
+
* Clear all middleware
|
|
918
|
+
*/
|
|
919
|
+
clearMiddleware(): void;
|
|
920
|
+
/**
|
|
921
|
+
* Process an event through the middleware chain
|
|
922
|
+
*
|
|
923
|
+
* @param event - Event to process
|
|
924
|
+
* @returns Processed event
|
|
925
|
+
*/
|
|
926
|
+
processEvent(event: SectionRenderEvent): SectionRenderEvent;
|
|
927
|
+
/**
|
|
928
|
+
* Create a logging middleware
|
|
929
|
+
*
|
|
930
|
+
* @param logger - Optional logger function (defaults to console.log)
|
|
931
|
+
* @returns Logging middleware
|
|
932
|
+
*/
|
|
933
|
+
createLoggingMiddleware(logger?: (message: string, event: SectionRenderEvent) => void): EventMiddleware;
|
|
934
|
+
/**
|
|
935
|
+
* Create a filtering middleware
|
|
936
|
+
*
|
|
937
|
+
* @param filter - Filter function
|
|
938
|
+
* @returns Filtering middleware
|
|
939
|
+
*/
|
|
940
|
+
createFilterMiddleware(filter: EventFilter): EventMiddleware;
|
|
941
|
+
/**
|
|
942
|
+
* Create a transformation middleware
|
|
943
|
+
*
|
|
944
|
+
* @param transformer - Transformation function
|
|
945
|
+
* @returns Transformation middleware
|
|
946
|
+
*/
|
|
947
|
+
createTransformMiddleware(transformer: EventTransformer): EventMiddleware;
|
|
948
|
+
/**
|
|
949
|
+
* Create an analytics middleware
|
|
950
|
+
*
|
|
951
|
+
* @param trackEvent - Analytics tracking function
|
|
952
|
+
* @returns Analytics middleware
|
|
953
|
+
*/
|
|
954
|
+
createAnalyticsMiddleware(trackEvent: (eventName: string, properties: Record<string, unknown>) => void): EventMiddleware;
|
|
955
|
+
/**
|
|
956
|
+
* Sort middleware by priority (higher priority first)
|
|
957
|
+
*/
|
|
958
|
+
private sortMiddleware;
|
|
959
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EventMiddlewareService, never>;
|
|
960
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<EventMiddlewareService>;
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
type CardChangeType = 'content' | 'structural';
|
|
964
|
+
interface CardDiffResult {
|
|
965
|
+
card: AICardConfig;
|
|
966
|
+
changeType: CardChangeType;
|
|
967
|
+
}
|
|
968
|
+
/**
|
|
969
|
+
* Deep comparison utility for card objects
|
|
970
|
+
* Uses content hashing instead of JSON.stringify for better performance
|
|
971
|
+
*/
|
|
972
|
+
declare class CardDiffUtil {
|
|
973
|
+
/**
|
|
974
|
+
* Creates an updated card with only changed sections/fields updated
|
|
975
|
+
* Preserves references to unchanged sections for optimal performance
|
|
976
|
+
*/
|
|
977
|
+
static mergeCardUpdates(oldCard: AICardConfig, newCard: AICardConfig): CardDiffResult;
|
|
978
|
+
private static didStructureChange;
|
|
979
|
+
/**
|
|
980
|
+
* Merges sections array, preserving references to unchanged sections
|
|
981
|
+
*/
|
|
982
|
+
private static mergeSections;
|
|
983
|
+
/**
|
|
984
|
+
* Merges a single section, preserving references to unchanged fields/items
|
|
985
|
+
*/
|
|
986
|
+
private static mergeSection;
|
|
987
|
+
/**
|
|
988
|
+
* Merges fields array, preserving references to unchanged fields
|
|
989
|
+
* Uses content hashing instead of JSON.stringify for better performance
|
|
990
|
+
*/
|
|
991
|
+
private static mergeFields;
|
|
992
|
+
/**
|
|
993
|
+
* Merges items array, preserving references to unchanged items
|
|
994
|
+
* Uses content hashing instead of JSON.stringify for better performance
|
|
995
|
+
*/
|
|
996
|
+
private static mergeItems;
|
|
997
|
+
/**
|
|
998
|
+
* Fast equality check for cards
|
|
999
|
+
*/
|
|
1000
|
+
private static areCardsEqual;
|
|
1001
|
+
/**
|
|
1002
|
+
* Fast equality check for sections arrays
|
|
1003
|
+
*/
|
|
1004
|
+
private static areSectionsEqual;
|
|
1005
|
+
/**
|
|
1006
|
+
* Fast equality check for fields arrays
|
|
1007
|
+
*/
|
|
1008
|
+
private static areFieldsEqual;
|
|
1009
|
+
/**
|
|
1010
|
+
* Fast equality check for items arrays
|
|
1011
|
+
*/
|
|
1012
|
+
private static areItemsEqual;
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
1016
|
+
declare function getBreakpointFromWidth(width: number): Breakpoint;
|
|
1017
|
+
|
|
1018
|
+
/**
|
|
1019
|
+
* Card Spawner Utilities
|
|
1020
|
+
*
|
|
1021
|
+
* Helper functions for dynamically instantiating and managing card components,
|
|
1022
|
+
* particularly useful for agentic flows and LLM integrations.
|
|
1023
|
+
*/
|
|
1024
|
+
/**
|
|
1025
|
+
* Creates an empty card configuration for initialization
|
|
1026
|
+
*/
|
|
1027
|
+
declare function createEmptyCard(title?: string): AICardConfig;
|
|
1028
|
+
/**
|
|
1029
|
+
* Creates a skeleton card configuration for loading states
|
|
1030
|
+
*/
|
|
1031
|
+
declare function createSkeletonCard(): AICardConfig;
|
|
1032
|
+
/**
|
|
1033
|
+
* Merges a partial card configuration into an existing card configuration
|
|
1034
|
+
* This is useful for progressive updates during streaming
|
|
1035
|
+
*/
|
|
1036
|
+
declare function mergeCardConfig(existing: AICardConfig, update: Partial<AICardConfig>): AICardConfig;
|
|
1037
|
+
/**
|
|
1038
|
+
* Merges sections arrays, updating existing sections or adding new ones
|
|
1039
|
+
*/
|
|
1040
|
+
declare function mergeSections(existing: CardSection[], updates: CardSection[]): CardSection[];
|
|
1041
|
+
/**
|
|
1042
|
+
* Validates a card configuration for completeness
|
|
1043
|
+
*/
|
|
1044
|
+
declare function validateCardConfig(card: Partial<AICardConfig>): {
|
|
1045
|
+
valid: boolean;
|
|
1046
|
+
errors: string[];
|
|
1047
|
+
};
|
|
1048
|
+
/**
|
|
1049
|
+
* Creates a card configuration from a partial update
|
|
1050
|
+
* Useful when receiving streaming updates that may be incomplete
|
|
1051
|
+
*/
|
|
1052
|
+
declare function createCardFromPartial(partial: Partial<AICardConfig>, defaults?: Partial<AICardConfig>): AICardConfig;
|
|
1053
|
+
/**
|
|
1054
|
+
* Checks if a card configuration is complete (all required fields present)
|
|
1055
|
+
*/
|
|
1056
|
+
declare function isCardComplete(card: Partial<AICardConfig>): boolean;
|
|
1057
|
+
/**
|
|
1058
|
+
* Creates a card configuration with error information
|
|
1059
|
+
*/
|
|
1060
|
+
declare function createErrorCard(error: Error | string, title?: string): AICardConfig;
|
|
1061
|
+
/**
|
|
1062
|
+
* Prepares a card configuration for streaming updates
|
|
1063
|
+
* Ensures the card has the necessary structure for progressive updates
|
|
1064
|
+
*/
|
|
1065
|
+
declare function prepareCardForStreaming(card: Partial<AICardConfig>): AICardConfig;
|
|
1066
|
+
/**
|
|
1067
|
+
* Updates a card configuration incrementally
|
|
1068
|
+
* Optimized for streaming scenarios where partial updates arrive
|
|
1069
|
+
*/
|
|
1070
|
+
declare function updateCardIncremental(existing: AICardConfig, update: Partial<AICardConfig>): AICardConfig;
|
|
1071
|
+
/**
|
|
1072
|
+
* Creates a copy of a card configuration (deep clone)
|
|
1073
|
+
*/
|
|
1074
|
+
declare function cloneCardConfig(card: AICardConfig): AICardConfig;
|
|
1075
|
+
|
|
1076
|
+
/**
|
|
1077
|
+
* Style Validator Utilities
|
|
1078
|
+
*
|
|
1079
|
+
* Helper functions to validate that the OSI Cards design system styles
|
|
1080
|
+
* are properly loaded and configured.
|
|
1081
|
+
*/
|
|
1082
|
+
/**
|
|
1083
|
+
* Result of style validation
|
|
1084
|
+
*/
|
|
1085
|
+
interface StyleValidationResult {
|
|
1086
|
+
valid: boolean;
|
|
1087
|
+
missing: string[];
|
|
1088
|
+
recommended: string[];
|
|
1089
|
+
warnings: string[];
|
|
1090
|
+
}
|
|
1091
|
+
/**
|
|
1092
|
+
* Validates that required CSS variables are present
|
|
1093
|
+
*
|
|
1094
|
+
* @param element - Optional element to check (defaults to document root)
|
|
1095
|
+
* @returns Validation result with missing variables and warnings
|
|
1096
|
+
*
|
|
1097
|
+
* @example
|
|
1098
|
+
* ```typescript
|
|
1099
|
+
* const validation = validateStyles();
|
|
1100
|
+
* if (!validation.valid) {
|
|
1101
|
+
* console.warn('Missing styles:', validation.missing);
|
|
1102
|
+
* }
|
|
1103
|
+
* ```
|
|
1104
|
+
*/
|
|
1105
|
+
declare function validateStyles(element?: HTMLElement): StyleValidationResult;
|
|
1106
|
+
/**
|
|
1107
|
+
* Validates styles and logs warnings to console if issues are found
|
|
1108
|
+
*
|
|
1109
|
+
* @param element - Optional element to check
|
|
1110
|
+
* @param logToConsole - Whether to log warnings to console (default: true)
|
|
1111
|
+
* @returns Validation result
|
|
1112
|
+
*
|
|
1113
|
+
* @example
|
|
1114
|
+
* ```typescript
|
|
1115
|
+
* // In component ngOnInit or after styles load
|
|
1116
|
+
* validateAndWarnStyles();
|
|
1117
|
+
* ```
|
|
1118
|
+
*/
|
|
1119
|
+
declare function validateAndWarnStyles(element?: HTMLElement, logToConsole?: boolean): StyleValidationResult;
|
|
1120
|
+
/**
|
|
1121
|
+
* Checks if a specific CSS variable is defined
|
|
1122
|
+
*
|
|
1123
|
+
* @param variableName - Name of the CSS variable (with or without -- prefix)
|
|
1124
|
+
* @param element - Optional element to check
|
|
1125
|
+
* @returns True if the variable is defined and has a value
|
|
1126
|
+
*/
|
|
1127
|
+
declare function isCSSVariableDefined(variableName: string, element?: HTMLElement): boolean;
|
|
1128
|
+
/**
|
|
1129
|
+
* Gets the value of a CSS variable
|
|
1130
|
+
*
|
|
1131
|
+
* @param variableName - Name of the CSS variable (with or without -- prefix)
|
|
1132
|
+
* @param element - Optional element to check
|
|
1133
|
+
* @returns The CSS variable value, or null if not defined
|
|
1134
|
+
*/
|
|
1135
|
+
declare function getCSSVariableValue(variableName: string, element?: HTMLElement): string | null;
|
|
1136
|
+
/**
|
|
1137
|
+
* Checks if styles are loaded by looking for a specific marker class or variable
|
|
1138
|
+
* This is a lighter check than full validation
|
|
1139
|
+
*
|
|
1140
|
+
* @returns True if styles appear to be loaded
|
|
1141
|
+
*/
|
|
1142
|
+
declare function areStylesLoaded(): boolean;
|
|
1143
|
+
/**
|
|
1144
|
+
* Waits for styles to be loaded by polling
|
|
1145
|
+
* Useful when styles are loaded asynchronously
|
|
1146
|
+
*
|
|
1147
|
+
* @param timeout - Maximum time to wait in milliseconds (default: 5000)
|
|
1148
|
+
* @param pollInterval - How often to check in milliseconds (default: 100)
|
|
1149
|
+
* @returns Promise that resolves when styles are loaded or timeout is reached
|
|
1150
|
+
*/
|
|
1151
|
+
declare function waitForStyles(timeout?: number, pollInterval?: number): Promise<boolean>;
|
|
1152
|
+
|
|
1153
|
+
declare class LucideIconsModule {
|
|
1154
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LucideIconsModule, never>;
|
|
1155
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<LucideIconsModule, never, [typeof i1.LucideAngularModule], [typeof i1.LucideAngularModule]>;
|
|
1156
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<LucideIconsModule>;
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
/**
|
|
1160
|
+
* Configuration options for OSI Cards Library
|
|
1161
|
+
*/
|
|
1162
|
+
interface OSICardsLibConfig {
|
|
1163
|
+
/**
|
|
1164
|
+
* Whether to enable animations. Defaults to true.
|
|
1165
|
+
* Set to false to use noop animations (useful for testing or when animations are not desired).
|
|
1166
|
+
*/
|
|
1167
|
+
enableAnimations?: boolean;
|
|
1168
|
+
}
|
|
1169
|
+
/**
|
|
1170
|
+
* Provide OSI Cards Library with required providers
|
|
1171
|
+
*
|
|
1172
|
+
* This function provides all necessary providers for the OSI Cards library to function
|
|
1173
|
+
* correctly in an Angular application. It includes:
|
|
1174
|
+
* - Animation providers (required for component animations)
|
|
1175
|
+
* - Service providers (services use providedIn: 'root' so they're automatically available)
|
|
1176
|
+
*
|
|
1177
|
+
* @param config - Optional configuration object
|
|
1178
|
+
* @returns Array of providers to be added to your ApplicationConfig
|
|
1179
|
+
*
|
|
1180
|
+
* @example
|
|
1181
|
+
* ```typescript
|
|
1182
|
+
* // In your app.config.ts
|
|
1183
|
+
* import { ApplicationConfig } from '@angular/core';
|
|
1184
|
+
* import { provideOSICards } from 'osi-cards-lib';
|
|
1185
|
+
*
|
|
1186
|
+
* export const appConfig: ApplicationConfig = {
|
|
1187
|
+
* providers: [
|
|
1188
|
+
* provideOSICards(), // Enable animations (default)
|
|
1189
|
+
* // ... other providers
|
|
1190
|
+
* ]
|
|
1191
|
+
* };
|
|
1192
|
+
* ```
|
|
1193
|
+
*
|
|
1194
|
+
* @example
|
|
1195
|
+
* ```typescript
|
|
1196
|
+
* // Disable animations (for testing or performance)
|
|
1197
|
+
* export const appConfig: ApplicationConfig = {
|
|
1198
|
+
* providers: [
|
|
1199
|
+
* provideOSICards({ enableAnimations: false }),
|
|
1200
|
+
* // ... other providers
|
|
1201
|
+
* ]
|
|
1202
|
+
* };
|
|
1203
|
+
* ```
|
|
1204
|
+
*
|
|
1205
|
+
* @remarks
|
|
1206
|
+
* - **REQUIRED**: You must call this function in your app.config.ts providers array
|
|
1207
|
+
* - Animations are required for proper component behavior (entrance animations, transitions)
|
|
1208
|
+
* - Services (MagneticTiltService, IconService, etc.) are automatically provided via providedIn: 'root'
|
|
1209
|
+
* - Styles must be imported separately: @import 'osi-cards-lib/styles/_styles';
|
|
1210
|
+
*/
|
|
1211
|
+
declare function provideOSICards(config?: OSICardsLibConfig): (Provider | EnvironmentProviders)[];
|
|
1212
|
+
|
|
1213
|
+
/**
|
|
1214
|
+
* Theme configuration interface
|
|
1215
|
+
*/
|
|
1216
|
+
interface OSICardsThemeConfig {
|
|
1217
|
+
/** Theme name (e.g., 'light', 'dark', 'high-contrast', 'custom') */
|
|
1218
|
+
name: string;
|
|
1219
|
+
/** CSS variable overrides */
|
|
1220
|
+
variables: Record<string, string>;
|
|
1221
|
+
/** Whether this theme is a built-in preset */
|
|
1222
|
+
preset?: boolean;
|
|
1223
|
+
}
|
|
1224
|
+
/**
|
|
1225
|
+
* Built-in theme presets
|
|
1226
|
+
*/
|
|
1227
|
+
type ThemePreset = 'light' | 'dark' | 'night' | 'day' | 'high-contrast' | 'custom';
|
|
1228
|
+
/**
|
|
1229
|
+
* Theme Service
|
|
1230
|
+
*
|
|
1231
|
+
* Manages theme configuration and runtime theme switching for OSI Cards library.
|
|
1232
|
+
* Supports built-in presets and custom themes via CSS custom properties.
|
|
1233
|
+
*
|
|
1234
|
+
* @example
|
|
1235
|
+
* ```typescript
|
|
1236
|
+
* const themeService = inject(ThemeService);
|
|
1237
|
+
*
|
|
1238
|
+
* // Switch to dark theme
|
|
1239
|
+
* themeService.setTheme('night');
|
|
1240
|
+
*
|
|
1241
|
+
* // Apply custom theme
|
|
1242
|
+
* themeService.applyCustomTheme({
|
|
1243
|
+
* name: 'my-brand',
|
|
1244
|
+
* variables: {
|
|
1245
|
+
* '--color-brand': '#ff0000',
|
|
1246
|
+
* '--card-padding': '20px'
|
|
1247
|
+
* }
|
|
1248
|
+
* });
|
|
1249
|
+
* ```
|
|
1250
|
+
*/
|
|
1251
|
+
declare class ThemeService {
|
|
1252
|
+
private readonly platformId;
|
|
1253
|
+
private readonly document;
|
|
1254
|
+
private currentThemeSubject;
|
|
1255
|
+
currentTheme$: Observable<ThemePreset | string>;
|
|
1256
|
+
private customThemes;
|
|
1257
|
+
private readonly rootElement;
|
|
1258
|
+
constructor();
|
|
1259
|
+
/**
|
|
1260
|
+
* Get the current active theme
|
|
1261
|
+
*/
|
|
1262
|
+
getCurrentTheme(): ThemePreset | string;
|
|
1263
|
+
/**
|
|
1264
|
+
* Set theme to a built-in preset
|
|
1265
|
+
*
|
|
1266
|
+
* @param preset - Built-in theme preset name
|
|
1267
|
+
*/
|
|
1268
|
+
setTheme(preset: ThemePreset): void;
|
|
1269
|
+
/**
|
|
1270
|
+
* Apply a custom theme configuration
|
|
1271
|
+
*
|
|
1272
|
+
* @param config - Custom theme configuration
|
|
1273
|
+
*/
|
|
1274
|
+
applyCustomTheme(config: OSICardsThemeConfig): void;
|
|
1275
|
+
/**
|
|
1276
|
+
* Apply CSS variables to the document root
|
|
1277
|
+
*
|
|
1278
|
+
* @param variables - Object mapping CSS variable names to values
|
|
1279
|
+
*/
|
|
1280
|
+
applyCSSVariables(variables: Record<string, string>): void;
|
|
1281
|
+
/**
|
|
1282
|
+
* Reset CSS variables (useful when switching themes)
|
|
1283
|
+
*/
|
|
1284
|
+
resetCSSVariables(): void;
|
|
1285
|
+
/**
|
|
1286
|
+
* Get a custom theme configuration
|
|
1287
|
+
*
|
|
1288
|
+
* @param name - Theme name
|
|
1289
|
+
* @returns Theme configuration or null if not found
|
|
1290
|
+
*/
|
|
1291
|
+
getCustomTheme(name: string): OSICardsThemeConfig | null;
|
|
1292
|
+
/**
|
|
1293
|
+
* Register a custom theme (without applying it)
|
|
1294
|
+
*
|
|
1295
|
+
* @param config - Custom theme configuration
|
|
1296
|
+
*/
|
|
1297
|
+
registerTheme(config: OSICardsThemeConfig): void;
|
|
1298
|
+
/**
|
|
1299
|
+
* Remove a custom theme
|
|
1300
|
+
*
|
|
1301
|
+
* @param name - Theme name to remove
|
|
1302
|
+
* @returns True if theme was removed, false if not found
|
|
1303
|
+
*/
|
|
1304
|
+
unregisterTheme(name: string): boolean;
|
|
1305
|
+
/**
|
|
1306
|
+
* Get all registered custom themes
|
|
1307
|
+
*
|
|
1308
|
+
* @returns Array of custom theme configurations
|
|
1309
|
+
*/
|
|
1310
|
+
getCustomThemes(): OSICardsThemeConfig[];
|
|
1311
|
+
/**
|
|
1312
|
+
* Validate a theme configuration
|
|
1313
|
+
*
|
|
1314
|
+
* @param config - Theme configuration to validate
|
|
1315
|
+
* @returns Validation result with errors if any
|
|
1316
|
+
*/
|
|
1317
|
+
validateTheme(config: OSICardsThemeConfig): {
|
|
1318
|
+
valid: boolean;
|
|
1319
|
+
errors: string[];
|
|
1320
|
+
};
|
|
1321
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ThemeService, never>;
|
|
1322
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ThemeService>;
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
/**
|
|
1326
|
+
* Light theme preset configuration
|
|
1327
|
+
* Based on the day theme from the design system
|
|
1328
|
+
*/
|
|
1329
|
+
declare const lightTheme: OSICardsThemeConfig;
|
|
1330
|
+
|
|
1331
|
+
/**
|
|
1332
|
+
* Dark theme preset configuration
|
|
1333
|
+
* Based on the night theme from the design system
|
|
1334
|
+
*/
|
|
1335
|
+
declare const darkTheme: OSICardsThemeConfig;
|
|
1336
|
+
|
|
1337
|
+
/**
|
|
1338
|
+
* High contrast theme preset for accessibility
|
|
1339
|
+
* Provides maximum contrast for better visibility
|
|
1340
|
+
*/
|
|
1341
|
+
declare const highContrastTheme: OSICardsThemeConfig;
|
|
1342
|
+
|
|
1343
|
+
/**
|
|
1344
|
+
* Theme Builder Utility
|
|
1345
|
+
*
|
|
1346
|
+
* Helper functions for building and modifying theme configurations
|
|
1347
|
+
*/
|
|
1348
|
+
/**
|
|
1349
|
+
* Create a theme configuration from a base theme with overrides
|
|
1350
|
+
*
|
|
1351
|
+
* @param baseTheme - Base theme configuration
|
|
1352
|
+
* @param overrides - Variable overrides to apply
|
|
1353
|
+
* @returns New theme configuration with overrides applied
|
|
1354
|
+
*
|
|
1355
|
+
* @example
|
|
1356
|
+
* ```typescript
|
|
1357
|
+
* const customTheme = buildThemeFromBase(lightTheme, {
|
|
1358
|
+
* '--color-brand': '#ff0000',
|
|
1359
|
+
* '--card-padding': '24px'
|
|
1360
|
+
* });
|
|
1361
|
+
* ```
|
|
1362
|
+
*/
|
|
1363
|
+
declare function buildThemeFromBase(baseTheme: OSICardsThemeConfig, overrides: Record<string, string>): OSICardsThemeConfig;
|
|
1364
|
+
/**
|
|
1365
|
+
* Merge multiple theme configurations
|
|
1366
|
+
* Later themes override earlier ones
|
|
1367
|
+
*
|
|
1368
|
+
* @param themes - Array of theme configurations to merge
|
|
1369
|
+
* @returns Merged theme configuration
|
|
1370
|
+
*/
|
|
1371
|
+
declare function mergeThemes(...themes: OSICardsThemeConfig[]): OSICardsThemeConfig;
|
|
1372
|
+
/**
|
|
1373
|
+
* Create a theme with only specific CSS variables
|
|
1374
|
+
* Useful for partial theme customization
|
|
1375
|
+
*
|
|
1376
|
+
* @param name - Theme name
|
|
1377
|
+
* @param variables - CSS variables to include
|
|
1378
|
+
* @returns Theme configuration with only specified variables
|
|
1379
|
+
*/
|
|
1380
|
+
declare function createPartialTheme(name: string, variables: Record<string, string>): OSICardsThemeConfig;
|
|
1381
|
+
/**
|
|
1382
|
+
* Validate CSS variable names
|
|
1383
|
+
*
|
|
1384
|
+
* @param variables - Object with CSS variable names as keys
|
|
1385
|
+
* @returns Array of invalid variable names
|
|
1386
|
+
*/
|
|
1387
|
+
declare function validateCSSVariableNames(variables: Record<string, string>): string[];
|
|
1388
|
+
/**
|
|
1389
|
+
* Generate a theme from a color palette
|
|
1390
|
+
* Automatically generates related CSS variables from base colors
|
|
1391
|
+
*
|
|
1392
|
+
* @param name - Theme name
|
|
1393
|
+
* @param colors - Color palette object
|
|
1394
|
+
* @returns Theme configuration with generated variables
|
|
1395
|
+
*
|
|
1396
|
+
* @example
|
|
1397
|
+
* ```typescript
|
|
1398
|
+
* const theme = generateThemeFromPalette('my-brand', {
|
|
1399
|
+
* primary: '#ff7900',
|
|
1400
|
+
* background: '#ffffff',
|
|
1401
|
+
* foreground: '#000000'
|
|
1402
|
+
* });
|
|
1403
|
+
* ```
|
|
1404
|
+
*/
|
|
1405
|
+
declare function generateThemeFromPalette(name: string, colors: {
|
|
1406
|
+
primary?: string;
|
|
1407
|
+
secondary?: string;
|
|
1408
|
+
background?: string;
|
|
1409
|
+
foreground?: string;
|
|
1410
|
+
muted?: string;
|
|
1411
|
+
border?: string;
|
|
1412
|
+
}): OSICardsThemeConfig;
|
|
1413
|
+
|
|
1414
|
+
/**
|
|
1415
|
+
* Company Card Preset
|
|
1416
|
+
*
|
|
1417
|
+
* Factory functions for creating company profile cards with common sections.
|
|
1418
|
+
*/
|
|
1419
|
+
/**
|
|
1420
|
+
* Options for company card preset
|
|
1421
|
+
*/
|
|
1422
|
+
interface CompanyCardOptions {
|
|
1423
|
+
/** Company name */
|
|
1424
|
+
name: string;
|
|
1425
|
+
/** Company subtitle/description */
|
|
1426
|
+
subtitle?: string;
|
|
1427
|
+
/** Industry */
|
|
1428
|
+
industry?: string;
|
|
1429
|
+
/** Founded year */
|
|
1430
|
+
founded?: string;
|
|
1431
|
+
/** Number of employees */
|
|
1432
|
+
employees?: string;
|
|
1433
|
+
/** Headquarters location */
|
|
1434
|
+
headquarters?: string;
|
|
1435
|
+
/** Annual revenue */
|
|
1436
|
+
revenue?: string;
|
|
1437
|
+
/** Growth rate percentage */
|
|
1438
|
+
growthRate?: number;
|
|
1439
|
+
/** Market share percentage */
|
|
1440
|
+
marketShare?: number;
|
|
1441
|
+
/** Website URL */
|
|
1442
|
+
websiteUrl?: string;
|
|
1443
|
+
/** Additional custom sections */
|
|
1444
|
+
customSections?: CardSection[];
|
|
1445
|
+
/** Custom actions */
|
|
1446
|
+
customActions?: CardAction[];
|
|
1447
|
+
}
|
|
1448
|
+
/**
|
|
1449
|
+
* Create a basic company card
|
|
1450
|
+
*
|
|
1451
|
+
* @param options - Company card options
|
|
1452
|
+
* @returns AICardConfig for a company card
|
|
1453
|
+
*
|
|
1454
|
+
* @example
|
|
1455
|
+
* ```typescript
|
|
1456
|
+
* const card = createCompanyCard({
|
|
1457
|
+
* name: 'Acme Corp',
|
|
1458
|
+
* industry: 'Technology',
|
|
1459
|
+
* employees: '500+',
|
|
1460
|
+
* websiteUrl: 'https://acme.com'
|
|
1461
|
+
* });
|
|
1462
|
+
* ```
|
|
1463
|
+
*/
|
|
1464
|
+
declare function createCompanyCard(options: CompanyCardOptions): AICardConfig;
|
|
1465
|
+
/**
|
|
1466
|
+
* Create an enhanced company card with more sections
|
|
1467
|
+
*/
|
|
1468
|
+
declare function createEnhancedCompanyCard(options: CompanyCardOptions & {
|
|
1469
|
+
financials?: Array<{
|
|
1470
|
+
label: string;
|
|
1471
|
+
value: string | number;
|
|
1472
|
+
}>;
|
|
1473
|
+
products?: Array<{
|
|
1474
|
+
name: string;
|
|
1475
|
+
description?: string;
|
|
1476
|
+
}>;
|
|
1477
|
+
}): AICardConfig;
|
|
1478
|
+
|
|
1479
|
+
/**
|
|
1480
|
+
* Contact Card Preset
|
|
1481
|
+
*
|
|
1482
|
+
* Factory functions for creating contact profile cards.
|
|
1483
|
+
*/
|
|
1484
|
+
/**
|
|
1485
|
+
* Options for contact card preset
|
|
1486
|
+
*/
|
|
1487
|
+
interface ContactCardOptions {
|
|
1488
|
+
/** Contact name */
|
|
1489
|
+
name: string;
|
|
1490
|
+
/** Job title */
|
|
1491
|
+
jobTitle?: string;
|
|
1492
|
+
/** Company name */
|
|
1493
|
+
company?: string;
|
|
1494
|
+
/** Location */
|
|
1495
|
+
location?: string;
|
|
1496
|
+
/** Years of experience */
|
|
1497
|
+
experience?: string;
|
|
1498
|
+
/** Email address */
|
|
1499
|
+
email?: string;
|
|
1500
|
+
/** Phone number */
|
|
1501
|
+
phone?: string;
|
|
1502
|
+
/** LinkedIn URL */
|
|
1503
|
+
linkedIn?: string;
|
|
1504
|
+
/** Performance metrics */
|
|
1505
|
+
metrics?: Array<{
|
|
1506
|
+
label: string;
|
|
1507
|
+
value: string | number;
|
|
1508
|
+
percentage?: number;
|
|
1509
|
+
trend?: 'up' | 'down' | 'stable';
|
|
1510
|
+
}>;
|
|
1511
|
+
/** Custom sections */
|
|
1512
|
+
customSections?: CardSection[];
|
|
1513
|
+
/** Custom actions */
|
|
1514
|
+
customActions?: CardAction[];
|
|
1515
|
+
}
|
|
1516
|
+
/**
|
|
1517
|
+
* Create a basic contact card
|
|
1518
|
+
*
|
|
1519
|
+
* @param options - Contact card options
|
|
1520
|
+
* @returns AICardConfig for a contact card
|
|
1521
|
+
*
|
|
1522
|
+
* @example
|
|
1523
|
+
* ```typescript
|
|
1524
|
+
* const card = createContactCard({
|
|
1525
|
+
* name: 'John Doe',
|
|
1526
|
+
* jobTitle: 'Sales Director',
|
|
1527
|
+
* email: 'john@example.com',
|
|
1528
|
+
* phone: '+1 555 1234'
|
|
1529
|
+
* });
|
|
1530
|
+
* ```
|
|
1531
|
+
*/
|
|
1532
|
+
declare function createContactCard(options: ContactCardOptions): AICardConfig;
|
|
1533
|
+
|
|
1534
|
+
/**
|
|
1535
|
+
* Analytics Dashboard Preset
|
|
1536
|
+
*
|
|
1537
|
+
* Factory functions for creating analytics dashboard cards.
|
|
1538
|
+
*/
|
|
1539
|
+
/**
|
|
1540
|
+
* Options for analytics dashboard preset
|
|
1541
|
+
*/
|
|
1542
|
+
interface AnalyticsDashboardOptions {
|
|
1543
|
+
/** Dashboard title */
|
|
1544
|
+
title: string;
|
|
1545
|
+
/** Dashboard subtitle */
|
|
1546
|
+
subtitle?: string;
|
|
1547
|
+
/** Dashboard type */
|
|
1548
|
+
dashboardType?: string;
|
|
1549
|
+
/** Data source */
|
|
1550
|
+
dataSource?: string;
|
|
1551
|
+
/** Update frequency */
|
|
1552
|
+
updateFrequency?: string;
|
|
1553
|
+
/** Time range */
|
|
1554
|
+
timeRange?: string;
|
|
1555
|
+
/** Key performance indicators */
|
|
1556
|
+
kpis?: Array<{
|
|
1557
|
+
label: string;
|
|
1558
|
+
value: string | number;
|
|
1559
|
+
percentage?: number;
|
|
1560
|
+
performance?: 'excellent' | 'good' | 'fair' | 'poor';
|
|
1561
|
+
trend?: 'up' | 'down' | 'stable' | 'neutral';
|
|
1562
|
+
}>;
|
|
1563
|
+
/** Chart data (optional) */
|
|
1564
|
+
chartData?: {
|
|
1565
|
+
labels: string[];
|
|
1566
|
+
datasets: Array<{
|
|
1567
|
+
label: string;
|
|
1568
|
+
data: number[];
|
|
1569
|
+
}>;
|
|
1570
|
+
};
|
|
1571
|
+
/** Dashboard URL */
|
|
1572
|
+
dashboardUrl?: string;
|
|
1573
|
+
/** Custom sections */
|
|
1574
|
+
customSections?: CardSection[];
|
|
1575
|
+
/** Custom actions */
|
|
1576
|
+
customActions?: CardAction[];
|
|
1577
|
+
}
|
|
1578
|
+
/**
|
|
1579
|
+
* Create an analytics dashboard card
|
|
1580
|
+
*
|
|
1581
|
+
* @param options - Analytics dashboard options
|
|
1582
|
+
* @returns AICardConfig for an analytics dashboard
|
|
1583
|
+
*
|
|
1584
|
+
* @example
|
|
1585
|
+
* ```typescript
|
|
1586
|
+
* const card = createAnalyticsDashboard({
|
|
1587
|
+
* title: 'Sales Performance',
|
|
1588
|
+
* kpis: [
|
|
1589
|
+
* { label: 'Revenue', value: '$1.2M', percentage: 105, trend: 'up' },
|
|
1590
|
+
* { label: 'Conversion Rate', value: '32%', percentage: 32, trend: 'up' }
|
|
1591
|
+
* ]
|
|
1592
|
+
* });
|
|
1593
|
+
* ```
|
|
1594
|
+
*/
|
|
1595
|
+
declare function createAnalyticsDashboard(options: AnalyticsDashboardOptions): AICardConfig;
|
|
1596
|
+
|
|
1597
|
+
/**
|
|
1598
|
+
* Preset Factory
|
|
1599
|
+
*
|
|
1600
|
+
* Centralized factory for creating card presets with common configurations.
|
|
1601
|
+
*
|
|
1602
|
+
* @example
|
|
1603
|
+
* ```typescript
|
|
1604
|
+
* import { PresetFactory } from 'osi-cards-lib';
|
|
1605
|
+
*
|
|
1606
|
+
* // Create a company card
|
|
1607
|
+
* const companyCard = PresetFactory.createCompany({
|
|
1608
|
+
* name: 'Acme Corp',
|
|
1609
|
+
* industry: 'Technology'
|
|
1610
|
+
* });
|
|
1611
|
+
*
|
|
1612
|
+
* // Create a contact card
|
|
1613
|
+
* const contactCard = PresetFactory.createContact({
|
|
1614
|
+
* name: 'John Doe',
|
|
1615
|
+
* email: 'john@example.com'
|
|
1616
|
+
* });
|
|
1617
|
+
* ```
|
|
1618
|
+
*/
|
|
1619
|
+
declare class PresetFactory {
|
|
1620
|
+
/**
|
|
1621
|
+
* Create a company card
|
|
1622
|
+
*
|
|
1623
|
+
* @param options - Company card options
|
|
1624
|
+
* @returns Company card configuration
|
|
1625
|
+
*/
|
|
1626
|
+
static createCompany(options: CompanyCardOptions): AICardConfig;
|
|
1627
|
+
/**
|
|
1628
|
+
* Create an enhanced company card with additional sections
|
|
1629
|
+
*
|
|
1630
|
+
* @param options - Enhanced company card options
|
|
1631
|
+
* @returns Enhanced company card configuration
|
|
1632
|
+
*/
|
|
1633
|
+
static createEnhancedCompany(options: CompanyCardOptions & {
|
|
1634
|
+
financials?: Array<{
|
|
1635
|
+
label: string;
|
|
1636
|
+
value: string | number;
|
|
1637
|
+
}>;
|
|
1638
|
+
products?: Array<{
|
|
1639
|
+
name: string;
|
|
1640
|
+
description?: string;
|
|
1641
|
+
}>;
|
|
1642
|
+
}): AICardConfig;
|
|
1643
|
+
/**
|
|
1644
|
+
* Create a contact card
|
|
1645
|
+
*
|
|
1646
|
+
* @param options - Contact card options
|
|
1647
|
+
* @returns Contact card configuration
|
|
1648
|
+
*/
|
|
1649
|
+
static createContact(options: ContactCardOptions): AICardConfig;
|
|
1650
|
+
/**
|
|
1651
|
+
* Create an analytics dashboard card
|
|
1652
|
+
*
|
|
1653
|
+
* @param options - Analytics dashboard options
|
|
1654
|
+
* @returns Analytics dashboard configuration
|
|
1655
|
+
*/
|
|
1656
|
+
static createAnalytics(options: AnalyticsDashboardOptions): AICardConfig;
|
|
1657
|
+
/**
|
|
1658
|
+
* Create a custom card from a template
|
|
1659
|
+
*
|
|
1660
|
+
* @param template - Template function that returns AICardConfig
|
|
1661
|
+
* @returns Card configuration
|
|
1662
|
+
*/
|
|
1663
|
+
static createCustom<T extends AICardConfig>(template: (config: Partial<T>) => T, config: Partial<T>): AICardConfig;
|
|
1664
|
+
}
|
|
1665
|
+
/**
|
|
1666
|
+
* Convenience factory functions (alternative to PresetFactory class)
|
|
1667
|
+
*/
|
|
1668
|
+
/**
|
|
1669
|
+
* Create a company card (convenience function)
|
|
1670
|
+
*/
|
|
1671
|
+
declare function createCompanyPreset(options: CompanyCardOptions): AICardConfig;
|
|
1672
|
+
/**
|
|
1673
|
+
* Create a contact card (convenience function)
|
|
1674
|
+
*/
|
|
1675
|
+
declare function createContactPreset(options: ContactCardOptions): AICardConfig;
|
|
1676
|
+
/**
|
|
1677
|
+
* Create an analytics dashboard (convenience function)
|
|
1678
|
+
*/
|
|
1679
|
+
declare function createAnalyticsPreset(options: AnalyticsDashboardOptions): AICardConfig;
|
|
1680
|
+
|
|
668
1681
|
interface MasonryLayoutInfo {
|
|
669
1682
|
breakpoint: Breakpoint;
|
|
670
1683
|
columns: number;
|
|
@@ -744,6 +1757,8 @@ declare class AICardRendererComponent implements OnInit, AfterViewInit, OnDestro
|
|
|
744
1757
|
private _cardConfig?;
|
|
745
1758
|
private readonly el;
|
|
746
1759
|
private readonly cdr;
|
|
1760
|
+
private readonly injector;
|
|
1761
|
+
private readonly platformId;
|
|
747
1762
|
Math: Math;
|
|
748
1763
|
private previousSectionsHash;
|
|
749
1764
|
private normalizedSectionCache;
|
|
@@ -885,6 +1900,11 @@ declare class AICardRendererComponent implements OnInit, AfterViewInit, OnDestro
|
|
|
885
1900
|
private mergeWithPreviousOrder;
|
|
886
1901
|
private getSectionKey;
|
|
887
1902
|
private resetProcessedSections;
|
|
1903
|
+
/**
|
|
1904
|
+
* Validates that animation providers are configured.
|
|
1905
|
+
* Warns in development mode if animations are not available.
|
|
1906
|
+
*/
|
|
1907
|
+
private validateAnimationsProvider;
|
|
888
1908
|
static ɵfac: i0.ɵɵFactoryDeclaration<AICardRendererComponent, never>;
|
|
889
1909
|
static ɵcmp: i0.ɵɵComponentDeclaration<AICardRendererComponent, "app-ai-card-renderer", never, { "cardConfig": { "alias": "cardConfig"; "required": false; }; "updateSource": { "alias": "updateSource"; "required": false; }; "isFullscreen": { "alias": "isFullscreen"; "required": false; }; "tiltEnabled": { "alias": "tiltEnabled"; "required": false; }; "streamingStage": { "alias": "streamingStage"; "required": false; }; "streamingProgress": { "alias": "streamingProgress"; "required": false; }; "streamingProgressLabel": { "alias": "streamingProgressLabel"; "required": false; }; "changeType": { "alias": "changeType"; "required": false; }; }, { "fieldInteraction": "fieldInteraction"; "cardInteraction": "cardInteraction"; "fullscreenToggle": "fullscreenToggle"; "agentAction": "agentAction"; "questionAction": "questionAction"; }, never, never, true, never>;
|
|
890
1910
|
}
|
|
@@ -946,6 +1966,109 @@ declare class CardPreviewComponent implements OnInit, OnChanges, OnDestroy {
|
|
|
946
1966
|
static ɵcmp: i0.ɵɵComponentDeclaration<CardPreviewComponent, "app-card-preview", never, { "generatedCard": { "alias": "generatedCard"; "required": false; }; "isGenerating": { "alias": "isGenerating"; "required": false; }; "isInitialized": { "alias": "isInitialized"; "required": false; }; "isFullscreen": { "alias": "isFullscreen"; "required": false; }; }, { "cardInteraction": "cardInteraction"; "fieldInteraction": "fieldInteraction"; "fullscreenToggle": "fullscreenToggle"; "agentAction": "agentAction"; "questionAction": "questionAction"; }, never, never, true, never>;
|
|
947
1967
|
}
|
|
948
1968
|
|
|
1969
|
+
/**
|
|
1970
|
+
* Card Header Component
|
|
1971
|
+
*
|
|
1972
|
+
* Composable component for rendering card header with title, subtitle, and optional actions.
|
|
1973
|
+
* Can be used independently or as part of the full card renderer.
|
|
1974
|
+
*
|
|
1975
|
+
* @example
|
|
1976
|
+
* ```html
|
|
1977
|
+
* <app-card-header
|
|
1978
|
+
* [title]="card.cardTitle"
|
|
1979
|
+
* [subtitle]="card.cardSubtitle"
|
|
1980
|
+
* [showFullscreenButton]="true"
|
|
1981
|
+
* [isFullscreen]="false"
|
|
1982
|
+
* (fullscreenToggle)="onFullscreenToggle($event)">
|
|
1983
|
+
* </app-card-header>
|
|
1984
|
+
* ```
|
|
1985
|
+
*/
|
|
1986
|
+
declare class CardHeaderComponent {
|
|
1987
|
+
/** Card title */
|
|
1988
|
+
title?: string;
|
|
1989
|
+
/** Card subtitle */
|
|
1990
|
+
subtitle?: string;
|
|
1991
|
+
/** Whether to show fullscreen toggle button */
|
|
1992
|
+
showFullscreenButton: boolean;
|
|
1993
|
+
/** Current fullscreen state */
|
|
1994
|
+
isFullscreen: boolean;
|
|
1995
|
+
/** Emitted when fullscreen button is clicked */
|
|
1996
|
+
fullscreenToggle: EventEmitter<boolean>;
|
|
1997
|
+
onFullscreenClick(): void;
|
|
1998
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CardHeaderComponent, never>;
|
|
1999
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CardHeaderComponent, "app-card-header", never, { "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "showFullscreenButton": { "alias": "showFullscreenButton"; "required": false; }; "isFullscreen": { "alias": "isFullscreen"; "required": false; }; }, { "fullscreenToggle": "fullscreenToggle"; }, never, never, true, never>;
|
|
2000
|
+
}
|
|
2001
|
+
|
|
2002
|
+
/**
|
|
2003
|
+
* Card Body Component
|
|
2004
|
+
*
|
|
2005
|
+
* Composable component for rendering card body with sections in a masonry grid layout.
|
|
2006
|
+
* Wraps MasonryGridComponent for easier composition.
|
|
2007
|
+
*
|
|
2008
|
+
* @example
|
|
2009
|
+
* ```html
|
|
2010
|
+
* <app-card-body
|
|
2011
|
+
* [sections]="card.sections"
|
|
2012
|
+
* [gap]="12"
|
|
2013
|
+
* [minColumnWidth]="280"
|
|
2014
|
+
* (sectionEvent)="onSectionEvent($event)"
|
|
2015
|
+
* (layoutChange)="onLayoutChange($event)">
|
|
2016
|
+
* </app-card-body>
|
|
2017
|
+
* ```
|
|
2018
|
+
*/
|
|
2019
|
+
declare class CardBodyComponent {
|
|
2020
|
+
/** Sections to render */
|
|
2021
|
+
sections: CardSection[];
|
|
2022
|
+
/** Gap between grid items in pixels */
|
|
2023
|
+
gap: number;
|
|
2024
|
+
/** Minimum column width in pixels */
|
|
2025
|
+
minColumnWidth: number;
|
|
2026
|
+
/** Emitted when a section event occurs */
|
|
2027
|
+
sectionEvent: EventEmitter<SectionRenderEvent>;
|
|
2028
|
+
/** Emitted when layout changes */
|
|
2029
|
+
layoutChange: EventEmitter<MasonryLayoutInfo>;
|
|
2030
|
+
onSectionEvent(event: SectionRenderEvent): void;
|
|
2031
|
+
onLayoutChange(info: MasonryLayoutInfo): void;
|
|
2032
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CardBodyComponent, never>;
|
|
2033
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CardBodyComponent, "app-card-body", never, { "sections": { "alias": "sections"; "required": false; }; "gap": { "alias": "gap"; "required": false; }; "minColumnWidth": { "alias": "minColumnWidth"; "required": false; }; }, { "sectionEvent": "sectionEvent"; "layoutChange": "layoutChange"; }, never, ["*"], true, never>;
|
|
2034
|
+
}
|
|
2035
|
+
|
|
2036
|
+
/**
|
|
2037
|
+
* Card Footer Component
|
|
2038
|
+
*
|
|
2039
|
+
* Composable component for rendering card footer with actions and optional signature.
|
|
2040
|
+
* Can be used independently or as part of the full card renderer.
|
|
2041
|
+
*
|
|
2042
|
+
* @example
|
|
2043
|
+
* ```html
|
|
2044
|
+
* <app-card-footer
|
|
2045
|
+
* [actions]="card.actions"
|
|
2046
|
+
* [showSignature]="true"
|
|
2047
|
+
* (actionClick)="onActionClick($event)">
|
|
2048
|
+
* </app-card-footer>
|
|
2049
|
+
* ```
|
|
2050
|
+
*/
|
|
2051
|
+
declare class CardFooterComponent {
|
|
2052
|
+
/** Actions to display */
|
|
2053
|
+
actions: CardAction[];
|
|
2054
|
+
/** Whether to show the signature */
|
|
2055
|
+
showSignature: boolean;
|
|
2056
|
+
/** Signature text to display */
|
|
2057
|
+
signatureText: string;
|
|
2058
|
+
/** Emitted when an action is clicked */
|
|
2059
|
+
actionClick: EventEmitter<CardAction>;
|
|
2060
|
+
private readonly iconService;
|
|
2061
|
+
get hasActions(): boolean;
|
|
2062
|
+
trackAction(index: number, action: CardAction): string;
|
|
2063
|
+
getActionButtonClasses(action: CardAction): Record<string, boolean>;
|
|
2064
|
+
getActionIconNameForDisplay(action: CardAction): string | null;
|
|
2065
|
+
hasImageIcon(action: CardAction): boolean;
|
|
2066
|
+
hasTextIcon(action: CardAction): boolean;
|
|
2067
|
+
onActionClick(action: CardAction): void;
|
|
2068
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CardFooterComponent, never>;
|
|
2069
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CardFooterComponent, "app-card-footer", never, { "actions": { "alias": "actions"; "required": false; }; "showSignature": { "alias": "showSignature"; "required": false; }; "signatureText": { "alias": "signatureText"; "required": false; }; }, { "actionClick": "actionClick"; }, never, never, true, never>;
|
|
2070
|
+
}
|
|
2071
|
+
|
|
949
2072
|
type AnalyticsField = CardField & {
|
|
950
2073
|
change?: number;
|
|
951
2074
|
trend?: 'up' | 'down' | 'stable';
|
|
@@ -1302,5 +2425,5 @@ declare class TextReferenceSectionComponent extends BaseSectionComponent<TextRef
|
|
|
1302
2425
|
static ɵcmp: i0.ɵɵComponentDeclaration<TextReferenceSectionComponent, "app-text-reference-section", never, {}, {}, never, never, true, never>;
|
|
1303
2426
|
}
|
|
1304
2427
|
|
|
1305
|
-
export { AICardRendererComponent, AnalyticsSectionComponent, BaseSectionComponent, BrandColorsSectionComponent, CardDiffUtil, CardPreviewComponent, CardSkeletonComponent, CardTypeGuards, CardUtils, ChartSectionComponent, ContactCardSectionComponent, EventSectionComponent, FallbackSectionComponent, FinancialsSectionComponent, IconService, InfoSectionComponent, ListSectionComponent, LucideIconsModule, MagneticTiltService, MapSectionComponent, MasonryGridComponent, NetworkCardSectionComponent, NewsSectionComponent, OverviewSectionComponent, ProductSectionComponent, QuotationSectionComponent, SectionNormalizationService, SectionRendererComponent, SectionUtilsService, SocialMediaSectionComponent, SolutionsSectionComponent, TextReferenceSectionComponent, getBreakpointFromWidth };
|
|
1306
|
-
export type { AICardConfig, AgentCardAction, Breakpoint, CardAction, CardActionButtonType, CardChangeType, CardDiffResult, CardField, CardFieldInteractionEvent, CardItem, CardSection, CardType, EmailConfig, EmailContact, InfoSectionFieldInteraction, LegacyCardAction, MailCardAction, MasonryLayoutInfo, MousePosition, PriorityValue, QuestionCardAction, SectionInteraction, SectionRenderEvent, StatusValue, StreamingStage, TiltCalculations, TrendValue, WebsiteCardAction };
|
|
2428
|
+
export { AICardRendererComponent, AnalyticsSectionComponent, BaseSectionComponent, BrandColorsSectionComponent, CardBodyComponent, CardDiffUtil, CardFooterComponent, CardHeaderComponent, CardPreviewComponent, CardSkeletonComponent, CardTypeGuards, CardUtils, ChartSectionComponent, ContactCardSectionComponent, EventMiddlewareService, EventSectionComponent, FallbackSectionComponent, FinancialsSectionComponent, IconService, InfoSectionComponent, ListSectionComponent, LucideIconsModule, MagneticTiltService, MapSectionComponent, MasonryGridComponent, NetworkCardSectionComponent, NewsSectionComponent, OverviewSectionComponent, PresetFactory, ProductSectionComponent, QuotationSectionComponent, SectionNormalizationService, SectionPluginRegistry, SectionRendererComponent, SectionUtilsService, SocialMediaSectionComponent, SolutionsSectionComponent, TextReferenceSectionComponent, ThemeService, areStylesLoaded, buildThemeFromBase, cloneCardConfig, createAnalyticsDashboard, createAnalyticsPreset, createCardFromPartial, createCompanyCard, createCompanyPreset, createContactCard, createContactPreset, createEmptyCard, createEnhancedCompanyCard, createErrorCard, createPartialTheme, createSkeletonCard, darkTheme, generateThemeFromPalette, getBreakpointFromWidth, getCSSVariableValue, highContrastTheme, isCSSVariableDefined, isCardComplete, lightTheme, mergeCardConfig, mergeSections, mergeThemes, prepareCardForStreaming, provideOSICards, updateCardIncremental, validateAndWarnStyles, validateCSSVariableNames, validateCardConfig, validateStyles, waitForStyles };
|
|
2429
|
+
export type { AICardConfig, AgentCardAction, AnalyticsDashboardOptions, Breakpoint, CardAction, CardActionButtonType, CardChangeType, CardDiffResult, CardField, CardFieldInteractionEvent, CardItem, CardSection, CardType, CompanyCardOptions, ContactCardOptions, EmailConfig, EmailContact, EventFilter, EventHandler, EventMiddleware, EventTransformer, InfoSectionFieldInteraction, LegacyCardAction, MailCardAction, MasonryLayoutInfo, MousePosition, OSICardsLibConfig, OSICardsThemeConfig, PriorityValue, QuestionCardAction, RegisteredSectionPlugin, SectionInteraction, SectionPlugin, SectionPluginConfig, SectionPluginMetadata, SectionRenderEvent, StatusValue, StreamingStage, StyleValidationResult, ThemePreset, TiltCalculations, TrendValue, WebsiteCardAction };
|