@eduboxpro/studio 0.1.14 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, EnvironmentProviders, AfterViewInit, ElementRef, TemplateRef, WritableSignal, OnInit, Signal } from '@angular/core';
2
+ import { InjectionToken, EnvironmentProviders, OnInit, OnDestroy, TemplateRef, AfterViewInit, ElementRef, WritableSignal, Signal } from '@angular/core';
3
+ import { Params, IsActiveMatchOptions } from '@angular/router';
3
4
  import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
4
5
  import { icons } from 'lucide-angular';
5
- import { Params, IsActiveMatchOptions } from '@angular/router';
6
6
  import { Placement } from '@floating-ui/dom';
7
7
 
8
8
  /**
@@ -348,6 +348,28 @@ interface ModalDefaultsConfig {
348
348
  showFooter?: boolean;
349
349
  showCloseButton?: boolean;
350
350
  }
351
+ /**
352
+ * BottomNavigation component defaults configuration
353
+ */
354
+ interface BottomNavigationDefaultsConfig {
355
+ variant?: 'default' | 'filled' | 'minimal';
356
+ showLabels?: 'always' | 'selected' | 'never';
357
+ size?: 'sm' | 'md' | 'lg';
358
+ elevation?: 'none' | 'sm' | 'md' | 'lg';
359
+ blur?: boolean;
360
+ hideOnDesktop?: boolean;
361
+ }
362
+ /**
363
+ * Card component defaults configuration
364
+ */
365
+ interface CardDefaultsConfig {
366
+ variant?: 'elevated' | 'filled' | 'outlined' | 'ghost';
367
+ size?: 'sm' | 'md' | 'lg';
368
+ color?: 'default' | 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'neutral';
369
+ radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
370
+ shadow?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
371
+ padding?: 'none' | 'sm' | 'md' | 'lg';
372
+ }
351
373
  /**
352
374
  * Components defaults configuration
353
375
  */
@@ -370,6 +392,8 @@ interface ComponentsConfig {
370
392
  dropdown?: DropdownDefaultsConfig;
371
393
  tabs?: TabsDefaultsConfig;
372
394
  modal?: ModalDefaultsConfig;
395
+ bottomNavigation?: BottomNavigationDefaultsConfig;
396
+ card?: CardDefaultsConfig;
373
397
  }
374
398
  /**
375
399
  * Main Studio configuration interface
@@ -510,6 +534,90 @@ declare class BadgeWrapperComponent {
510
534
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeWrapperComponent, "studio-badge-wrapper", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "showZero": { "alias": "showZero"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "overlap": { "alias": "overlap"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
511
535
  }
512
536
 
537
+ interface BottomNavigationItem {
538
+ id: string;
539
+ label: string;
540
+ icon: string;
541
+ routerLink?: string | string[];
542
+ href?: string;
543
+ queryParams?: Params;
544
+ badge?: string | number;
545
+ badgeColor?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';
546
+ disabled?: boolean;
547
+ visible?: boolean;
548
+ command?: (item: BottomNavigationItem) => void;
549
+ data?: any;
550
+ }
551
+ type BottomNavigationVariant = 'default' | 'filled' | 'minimal';
552
+ type BottomNavigationLabelMode = 'always' | 'selected' | 'never';
553
+ type BottomNavigationFabPosition = 'center' | 'end';
554
+ type BottomNavigationSize = 'sm' | 'md' | 'lg';
555
+
556
+ /**
557
+ * Bottom Navigation component - Mobile-first navigation component
558
+ *
559
+ * @example
560
+ * <studio-bottom-navigation
561
+ * [items]="navItems"
562
+ * variant="default"
563
+ * showLabels="always"
564
+ * (itemClicked)="handleClick($event)"
565
+ * />
566
+ */
567
+ declare class BottomNavigationComponent implements OnInit, OnDestroy {
568
+ private readonly router;
569
+ private readonly platformId;
570
+ items: _angular_core.InputSignal<BottomNavigationItem[]>;
571
+ activeItem: _angular_core.InputSignal<string | undefined>;
572
+ variant: _angular_core.InputSignal<BottomNavigationVariant>;
573
+ showLabels: _angular_core.InputSignal<BottomNavigationLabelMode>;
574
+ size: _angular_core.InputSignal<BottomNavigationSize>;
575
+ elevation: _angular_core.InputSignal<"sm" | "md" | "lg" | "none">;
576
+ blur: _angular_core.InputSignal<boolean>;
577
+ showFab: _angular_core.InputSignal<boolean>;
578
+ fabIcon: _angular_core.InputSignal<string>;
579
+ fabPosition: _angular_core.InputSignal<BottomNavigationFabPosition>;
580
+ fabAriaLabel: _angular_core.InputSignal<string | undefined>;
581
+ fixed: _angular_core.InputSignal<boolean>;
582
+ hideOnScroll: _angular_core.InputSignal<boolean>;
583
+ scrollThreshold: _angular_core.InputSignal<number>;
584
+ hideOnDesktop: _angular_core.InputSignal<boolean>;
585
+ enableSwipeGestures: _angular_core.InputSignal<boolean>;
586
+ swipeThreshold: _angular_core.InputSignal<number>;
587
+ enableHapticFeedback: _angular_core.InputSignal<boolean>;
588
+ routerLinkActiveOptions: _angular_core.InputSignal<IsActiveMatchOptions>;
589
+ ariaLabel: _angular_core.InputSignal<string>;
590
+ class: _angular_core.InputSignal<string>;
591
+ activeItemChange: _angular_core.OutputEmitterRef<string>;
592
+ itemClicked: _angular_core.OutputEmitterRef<BottomNavigationItem>;
593
+ fabClicked: _angular_core.OutputEmitterRef<void>;
594
+ swipedLeft: _angular_core.OutputEmitterRef<void>;
595
+ swipedRight: _angular_core.OutputEmitterRef<void>;
596
+ protected isHidden: _angular_core.WritableSignal<boolean>;
597
+ private lastScrollY;
598
+ private routerSubscription?;
599
+ private touchStartX;
600
+ private touchStartY;
601
+ private isSwiping;
602
+ protected hostClasses: _angular_core.Signal<string>;
603
+ protected visibleItems: _angular_core.Signal<BottomNavigationItem[]>;
604
+ protected centerIndex: _angular_core.Signal<number>;
605
+ protected iconSize: _angular_core.Signal<number>;
606
+ ngOnInit(): void;
607
+ ngOnDestroy(): void;
608
+ private handleScroll;
609
+ protected isItemActive(item: BottomNavigationItem): boolean;
610
+ protected shouldShowLabel(item: BottomNavigationItem): boolean;
611
+ protected onItemClick(item: BottomNavigationItem, event: Event): void;
612
+ protected onFabClick(event: Event): void;
613
+ protected onTouchStart(event: TouchEvent): void;
614
+ protected onTouchMove(event: TouchEvent): void;
615
+ protected onTouchEnd(event: TouchEvent): void;
616
+ private triggerHapticFeedback;
617
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BottomNavigationComponent, never>;
618
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BottomNavigationComponent, "studio-bottom-navigation", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "activeItem": { "alias": "activeItem"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "elevation": { "alias": "elevation"; "required": false; "isSignal": true; }; "blur": { "alias": "blur"; "required": false; "isSignal": true; }; "showFab": { "alias": "showFab"; "required": false; "isSignal": true; }; "fabIcon": { "alias": "fabIcon"; "required": false; "isSignal": true; }; "fabPosition": { "alias": "fabPosition"; "required": false; "isSignal": true; }; "fabAriaLabel": { "alias": "fabAriaLabel"; "required": false; "isSignal": true; }; "fixed": { "alias": "fixed"; "required": false; "isSignal": true; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; "scrollThreshold": { "alias": "scrollThreshold"; "required": false; "isSignal": true; }; "hideOnDesktop": { "alias": "hideOnDesktop"; "required": false; "isSignal": true; }; "enableSwipeGestures": { "alias": "enableSwipeGestures"; "required": false; "isSignal": true; }; "swipeThreshold": { "alias": "swipeThreshold"; "required": false; "isSignal": true; }; "enableHapticFeedback": { "alias": "enableHapticFeedback"; "required": false; "isSignal": true; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "activeItemChange": "activeItemChange"; "itemClicked": "itemClicked"; "fabClicked": "fabClicked"; "swipedLeft": "swipedLeft"; "swipedRight": "swipedRight"; }, never, ["[bottomNavLeft]", "[bottomNavRight]"], true, never>;
619
+ }
620
+
513
621
  /**
514
622
  * Button component with multiple variants, sizes, colors and states
515
623
  *
@@ -537,7 +645,7 @@ declare class ButtonComponent {
537
645
  loading: _angular_core.InputSignal<boolean>;
538
646
  loadingText: _angular_core.InputSignal<string>;
539
647
  fullWidth: _angular_core.InputSignal<boolean>;
540
- type: _angular_core.InputSignal<"button" | "submit" | "reset">;
648
+ type: _angular_core.InputSignal<"button" | "reset" | "submit">;
541
649
  icon: _angular_core.InputSignal<string | undefined>;
542
650
  iconPosition: _angular_core.InputSignal<"left" | "right" | "only">;
543
651
  href: _angular_core.InputSignal<string | undefined>;
@@ -571,7 +679,7 @@ declare class ButtonGroupComponent {
571
679
  fullWidth: _angular_core.InputSignal<boolean>;
572
680
  disabled: _angular_core.InputSignal<boolean>;
573
681
  spacing: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "xs">;
574
- align: _angular_core.InputSignal<"center" | "start" | "end" | "stretch">;
682
+ align: _angular_core.InputSignal<"center" | "end" | "start" | "stretch">;
575
683
  ariaLabel: _angular_core.InputSignal<string | undefined>;
576
684
  role: _angular_core.InputSignal<string>;
577
685
  protected hostClasses: _angular_core.Signal<string>;
@@ -580,6 +688,183 @@ declare class ButtonGroupComponent {
580
688
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonGroupComponent, "studio-button-group", never, { "orientationInput": { "alias": "orientation"; "required": false; "isSignal": true; }; "sizeInput": { "alias": "size"; "required": false; "isSignal": true; }; "variantInput": { "alias": "variant"; "required": false; "isSignal": true; }; "colorInput": { "alias": "color"; "required": false; "isSignal": true; }; "radiusInput": { "alias": "radius"; "required": false; "isSignal": true; }; "attached": { "alias": "attached"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "spacing": { "alias": "spacing"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; }, {}, never, ["studio-button"], true, never>;
581
689
  }
582
690
 
691
+ /**
692
+ * Card component types
693
+ */
694
+ type CardVariant = 'elevated' | 'filled' | 'outlined' | 'ghost';
695
+ type CardSize = 'sm' | 'md' | 'lg';
696
+ type CardColor = 'default' | 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'neutral';
697
+ type CardRadius = 'none' | 'sm' | 'md' | 'lg' | 'xl';
698
+ type CardShadow = 'none' | 'sm' | 'md' | 'lg' | 'xl';
699
+ type CardPadding = 'none' | 'sm' | 'md' | 'lg';
700
+ type CardOrientation = 'vertical' | 'horizontal';
701
+ type CardImagePosition = 'top' | 'left' | 'right' | 'bottom';
702
+
703
+ /**
704
+ * Card component for displaying content in a container
705
+ *
706
+ * @example
707
+ * <studio-card variant="elevated" color="primary">
708
+ * <div card-header>Header</div>
709
+ * <div card-body>Content</div>
710
+ * <div card-footer>Footer</div>
711
+ * </studio-card>
712
+ */
713
+ declare class CardComponent {
714
+ private readonly configService;
715
+ private readonly cardDefaults;
716
+ variantInput: _angular_core.InputSignal<CardVariant | undefined>;
717
+ sizeInput: _angular_core.InputSignal<CardSize | undefined>;
718
+ colorInput: _angular_core.InputSignal<CardColor | undefined>;
719
+ radiusInput: _angular_core.InputSignal<CardRadius | undefined>;
720
+ shadowInput: _angular_core.InputSignal<CardShadow | undefined>;
721
+ paddingInput: _angular_core.InputSignal<CardPadding | undefined>;
722
+ variant: _angular_core.Signal<"ghost" | "filled" | "outlined" | "elevated">;
723
+ size: _angular_core.Signal<"sm" | "md" | "lg">;
724
+ color: _angular_core.Signal<"primary" | "secondary" | "success" | "error" | "warning" | "neutral" | "default">;
725
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "xl">;
726
+ shadow: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "xl">;
727
+ padding: _angular_core.Signal<"sm" | "md" | "lg" | "none">;
728
+ orientation: _angular_core.InputSignal<CardOrientation>;
729
+ imagePosition: _angular_core.InputSignal<CardImagePosition>;
730
+ fullWidth: _angular_core.InputSignal<boolean>;
731
+ fullHeight: _angular_core.InputSignal<boolean>;
732
+ title: _angular_core.InputSignal<string | undefined>;
733
+ subtitle: _angular_core.InputSignal<string | undefined>;
734
+ avatar: _angular_core.InputSignal<string | undefined>;
735
+ icon: _angular_core.InputSignal<string | undefined>;
736
+ image: _angular_core.InputSignal<string | undefined>;
737
+ imageAlt: _angular_core.InputSignal<string>;
738
+ imageFit: _angular_core.InputSignal<"cover" | "contain">;
739
+ showHeader: _angular_core.InputSignal<boolean>;
740
+ showMedia: _angular_core.InputSignal<boolean>;
741
+ showFooter: _angular_core.InputSignal<boolean>;
742
+ divider: _angular_core.InputSignal<boolean>;
743
+ hoverable: _angular_core.InputSignal<boolean>;
744
+ pressable: _angular_core.InputSignal<boolean>;
745
+ disabled: _angular_core.InputSignal<boolean>;
746
+ loading: _angular_core.InputSignal<boolean>;
747
+ href: _angular_core.InputSignal<string | undefined>;
748
+ target: _angular_core.InputSignal<"_blank" | "_self" | "_parent" | "_top">;
749
+ blurred: _angular_core.InputSignal<boolean>;
750
+ blurredFooter: _angular_core.InputSignal<boolean>;
751
+ animated: _angular_core.InputSignal<boolean>;
752
+ clicked: _angular_core.OutputEmitterRef<MouseEvent>;
753
+ headerAction: _angular_core.OutputEmitterRef<void>;
754
+ protected headerTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
755
+ protected headerActionsTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
756
+ protected mediaTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
757
+ protected bodyTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
758
+ protected footerTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
759
+ protected iconSize: _angular_core.Signal<number>;
760
+ protected hostClasses: _angular_core.Signal<string>;
761
+ protected handleClick(event: MouseEvent): void;
762
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardComponent, never>;
763
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "studio-card", never, { "variantInput": { "alias": "variant"; "required": false; "isSignal": true; }; "sizeInput": { "alias": "size"; "required": false; "isSignal": true; }; "colorInput": { "alias": "color"; "required": false; "isSignal": true; }; "radiusInput": { "alias": "radius"; "required": false; "isSignal": true; }; "shadowInput": { "alias": "shadow"; "required": false; "isSignal": true; }; "paddingInput": { "alias": "padding"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "imagePosition": { "alias": "imagePosition"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "fullHeight": { "alias": "fullHeight"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "imageAlt": { "alias": "imageAlt"; "required": false; "isSignal": true; }; "imageFit": { "alias": "imageFit"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "showMedia": { "alias": "showMedia"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "divider": { "alias": "divider"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "pressable": { "alias": "pressable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "blurred": { "alias": "blurred"; "required": false; "isSignal": true; }; "blurredFooter": { "alias": "blurredFooter"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; "headerAction": "headerAction"; }, ["headerTemplate", "headerActionsTemplate", "mediaTemplate", "bodyTemplate", "footerTemplate"], ["*"], true, never>;
764
+ }
765
+
766
+ interface ChatMessage {
767
+ id: string;
768
+ content: string;
769
+ userId: string;
770
+ userName: string;
771
+ userAvatar?: string;
772
+ timestamp: Date;
773
+ status?: 'sending' | 'sent' | 'delivered' | 'read' | 'error';
774
+ type?: 'text' | 'system';
775
+ edited?: boolean;
776
+ }
777
+ interface ChatUser {
778
+ id: string;
779
+ name: string;
780
+ avatar?: string;
781
+ online?: boolean;
782
+ }
783
+ type ChatVariant = 'default' | 'compact' | 'minimal' | 'bubbles';
784
+ type ChatSize = 'sm' | 'md' | 'lg';
785
+
786
+ /**
787
+ * Chat component - Flexible chat/messaging component
788
+ *
789
+ * @example
790
+ * <studio-chat
791
+ * [messages]="messages"
792
+ * [currentUserId]="currentUser.id"
793
+ * variant="default"
794
+ * (messageSubmit)="handleMessage($event)"
795
+ * />
796
+ */
797
+ declare class ChatComponent implements AfterViewInit {
798
+ messages: _angular_core.InputSignal<ChatMessage[]>;
799
+ currentUserId: _angular_core.InputSignal<string>;
800
+ variant: _angular_core.InputSignal<ChatVariant>;
801
+ size: _angular_core.InputSignal<ChatSize>;
802
+ height: _angular_core.InputSignal<string>;
803
+ placeholder: _angular_core.InputSignal<string>;
804
+ showAvatars: _angular_core.InputSignal<boolean>;
805
+ showTimestamps: _angular_core.InputSignal<boolean>;
806
+ showUserNames: _angular_core.InputSignal<boolean>;
807
+ enableAutoScroll: _angular_core.InputSignal<boolean>;
808
+ disabled: _angular_core.InputSignal<boolean>;
809
+ class: _angular_core.InputSignal<string>;
810
+ messageSubmit: _angular_core.OutputEmitterRef<{
811
+ content: string;
812
+ }>;
813
+ typing: _angular_core.OutputEmitterRef<boolean>;
814
+ protected messagesContainerRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
815
+ protected isScrolledUp: _angular_core.WritableSignal<boolean>;
816
+ protected shouldAutoScroll: _angular_core.WritableSignal<boolean>;
817
+ protected hostClasses: _angular_core.Signal<string>;
818
+ protected isCompact: _angular_core.Signal<boolean>;
819
+ constructor();
820
+ ngAfterViewInit(): void;
821
+ protected onScroll(): void;
822
+ protected onMessageSubmit(event: {
823
+ content: string;
824
+ }): void;
825
+ protected scrollToBottom(): void;
826
+ protected onTyping(typing: boolean): void;
827
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChatComponent, never>;
828
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChatComponent, "studio-chat", never, { "messages": { "alias": "messages"; "required": true; "isSignal": true; }; "currentUserId": { "alias": "currentUserId"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "showAvatars": { "alias": "showAvatars"; "required": false; "isSignal": true; }; "showTimestamps": { "alias": "showTimestamps"; "required": false; "isSignal": true; }; "showUserNames": { "alias": "showUserNames"; "required": false; "isSignal": true; }; "enableAutoScroll": { "alias": "enableAutoScroll"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "messageSubmit": "messageSubmit"; "typing": "typing"; }, never, never, true, never>;
829
+ }
830
+
831
+ declare class ChatMessageComponent {
832
+ message: _angular_core.InputSignal<ChatMessage>;
833
+ currentUserId: _angular_core.InputSignal<string>;
834
+ showAvatar: _angular_core.InputSignal<boolean>;
835
+ showTimestamp: _angular_core.InputSignal<boolean>;
836
+ showUserName: _angular_core.InputSignal<boolean>;
837
+ compact: _angular_core.InputSignal<boolean>;
838
+ protected isOwn: _angular_core.Signal<boolean>;
839
+ protected hostClasses: _angular_core.Signal<string>;
840
+ protected getInitials(name: string): string;
841
+ protected formatTime(date: Date): string;
842
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChatMessageComponent, never>;
843
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChatMessageComponent, "studio-chat-message", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "currentUserId": { "alias": "currentUserId"; "required": true; "isSignal": true; }; "showAvatar": { "alias": "showAvatar"; "required": false; "isSignal": true; }; "showTimestamp": { "alias": "showTimestamp"; "required": false; "isSignal": true; }; "showUserName": { "alias": "showUserName"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
844
+ }
845
+
846
+ declare class ChatInputComponent {
847
+ placeholder: _angular_core.InputSignal<string>;
848
+ disabled: _angular_core.InputSignal<boolean>;
849
+ compact: _angular_core.InputSignal<boolean>;
850
+ messageSubmit: _angular_core.OutputEmitterRef<{
851
+ content: string;
852
+ }>;
853
+ typing: _angular_core.OutputEmitterRef<boolean>;
854
+ protected inputValue: _angular_core.WritableSignal<string>;
855
+ protected textareaRef: _angular_core.Signal<ElementRef<HTMLTextAreaElement> | undefined>;
856
+ private typingTimeout?;
857
+ protected canSend: _angular_core.Signal<boolean>;
858
+ protected hostClasses: _angular_core.Signal<string>;
859
+ constructor();
860
+ protected onKeyDown(event: KeyboardEvent): void;
861
+ protected onInput(): void;
862
+ protected handleSubmit(): void;
863
+ focus(): void;
864
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChatInputComponent, never>;
865
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChatInputComponent, "studio-chat-input", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, { "messageSubmit": "messageSubmit"; "typing": "typing"; }, never, never, true, never>;
866
+ }
867
+
583
868
  /**
584
869
  * Checkbox component for selecting boolean values
585
870
  *
@@ -2094,7 +2379,7 @@ declare class ButtonToggleGroupComponent implements ControlValueAccessor {
2094
2379
  fullWidth: _angular_core.InputSignal<boolean>;
2095
2380
  disabled: _angular_core.InputSignal<boolean>;
2096
2381
  spacing: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "xs">;
2097
- align: _angular_core.InputSignal<"center" | "start" | "end" | "stretch">;
2382
+ align: _angular_core.InputSignal<"center" | "end" | "start" | "stretch">;
2098
2383
  showIcons: _angular_core.InputSignal<boolean>;
2099
2384
  iconPosition: _angular_core.InputSignal<"left" | "right" | "only">;
2100
2385
  ariaLabel: _angular_core.InputSignal<string | undefined>;
@@ -2407,5 +2692,5 @@ declare function loadGoogleFonts(fonts: Array<{
2407
2692
  display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';
2408
2693
  }>): void;
2409
2694
 
2410
- export { BadgeComponent, BadgeWrapperComponent, ButtonComponent, ButtonGroupComponent, ButtonToggleGroupComponent, CheckboxComponent, ColorPickerCompactComponent, ColorPickerComponent, DEFAULT_COLOR_PRESETS, DrawerComponent, DrawerService, DropdownComponent, IconComponent, InputComponent, InspectorComponent, MASK_PRESETS, MaskDirective, MaskEngine, MenuComponent, ModalComponent, NavbarComponent, PopoverComponent, RadioButtonComponent, STUDIO_CONFIG, SelectComponent, SidebarComponent, StudioConfigService, SwitchComponent, TabsComponent, TextareaComponent, ThemeSwitchComponent, TooltipComponent, classNames, isSafeUrl, loadGoogleFont, loadGoogleFonts, provideStudioConfig, provideStudioIcons, sanitizeUrl, withConfigDefault };
2411
- export type { BadgeColor, BadgeDefaultsConfig, BadgeIconPosition, BadgeRadius, BadgeSize, BadgeVariant, BadgeWrapperPosition, BadgeWrapperSize, ButtonDefaultsConfig, ButtonGroupDefaultsConfig, ButtonToggleGroupDefaultsConfig, ButtonToggleGroupOption, ButtonToggleGroupValue, CheckboxColor, CheckboxDefaultsConfig, CheckboxRadius, CheckboxSize, CheckboxVariant, ColorConfig, ColorFormat, ColorPickerDefaultsConfig, ColorPickerSize, ColorPickerVariant, ColorPreset, ColorSwatchGroup, ColorValue, ComponentsConfig, DrawerAnimationEasing, DrawerCloseButtonPosition, DrawerConfig, DrawerDefaultsConfig, DrawerPosition, DrawerRadius, DrawerRole, DrawerShadowSize, DrawerSize, DropdownDefaultsConfig, DropdownItem, DropdownPosition, HSL, InputDefaultsConfig, InputMode, InputType, InspectorComponentSize, InspectorComponentVariant, InspectorData, InspectorGroup, InspectorGroupDivider, InspectorOption, InspectorParameter, InspectorParameterType, InspectorSection, InspectorSpacing, MaskConfig, MaskPreset, MaskResult, MaskToken, MenuColor, MenuExpandEvent, MenuExpandIconPosition, MenuItem, MenuItemBadgeColor, MenuItemClickEvent, MenuItemCommandEvent, MenuItemIconPosition, MenuItemTarget, MenuItemTooltipPosition, MenuMode, MenuOrientation, MenuRadius, MenuSize, MenuSpacing, MenuVariant, ModalAnimation, ModalDefaultsConfig, ModalPosition, ModalSize, ModalVariant, NavbarColor, NavbarShadow, NavbarSize, NavbarVariant, PopoverAnimation, PopoverBoundary, PopoverConfig, PopoverDefaultsConfig, PopoverPosition, PopoverSize, PopoverTrigger, PopoverVariant, PopoverWidth, RGB, RadioButtonColor, RadioButtonDefaultsConfig, RadioButtonRadius, RadioButtonSize, RadioButtonVariant, SelectDefaultsConfig, SelectDisplayContext, SelectOption, SelectOptionGroup, SelectPosition, SelectSize, SelectVariant, SidebarConfig, SidebarDefaultsConfig, SidebarPosition, SidebarSize, SidebarVariant, StudioConfig, StudioThemeConfig, SwitchDefaultsConfig, TabItem, TabsDefaultsConfig, TabsOrientation, TabsSize, TabsVariant, TextareaColor, TextareaDefaultsConfig, TextareaRadius, TextareaSize, TextareaVariant, ThemeMode, TooltipDefaultsConfig };
2695
+ export { BadgeComponent, BadgeWrapperComponent, BottomNavigationComponent, ButtonComponent, ButtonGroupComponent, ButtonToggleGroupComponent, CardComponent, ChatComponent, ChatInputComponent, ChatMessageComponent, CheckboxComponent, ColorPickerCompactComponent, ColorPickerComponent, DEFAULT_COLOR_PRESETS, DrawerComponent, DrawerService, DropdownComponent, IconComponent, InputComponent, InspectorComponent, MASK_PRESETS, MaskDirective, MaskEngine, MenuComponent, ModalComponent, NavbarComponent, PopoverComponent, RadioButtonComponent, STUDIO_CONFIG, SelectComponent, SidebarComponent, StudioConfigService, SwitchComponent, TabsComponent, TextareaComponent, ThemeSwitchComponent, TooltipComponent, classNames, isSafeUrl, loadGoogleFont, loadGoogleFonts, provideStudioConfig, provideStudioIcons, sanitizeUrl, withConfigDefault };
2696
+ export type { BadgeColor, BadgeDefaultsConfig, BadgeIconPosition, BadgeRadius, BadgeSize, BadgeVariant, BadgeWrapperPosition, BadgeWrapperSize, BottomNavigationDefaultsConfig, BottomNavigationFabPosition, BottomNavigationItem, BottomNavigationLabelMode, BottomNavigationSize, BottomNavigationVariant, ButtonDefaultsConfig, ButtonGroupDefaultsConfig, ButtonToggleGroupDefaultsConfig, ButtonToggleGroupOption, ButtonToggleGroupValue, CardColor, CardDefaultsConfig, CardImagePosition, CardOrientation, CardPadding, CardRadius, CardShadow, CardSize, CardVariant, ChatMessage, ChatSize, ChatUser, ChatVariant, CheckboxColor, CheckboxDefaultsConfig, CheckboxRadius, CheckboxSize, CheckboxVariant, ColorConfig, ColorFormat, ColorPickerDefaultsConfig, ColorPickerSize, ColorPickerVariant, ColorPreset, ColorSwatchGroup, ColorValue, ComponentsConfig, DrawerAnimationEasing, DrawerCloseButtonPosition, DrawerConfig, DrawerDefaultsConfig, DrawerPosition, DrawerRadius, DrawerRole, DrawerShadowSize, DrawerSize, DropdownDefaultsConfig, DropdownItem, DropdownPosition, HSL, InputDefaultsConfig, InputMode, InputType, InspectorComponentSize, InspectorComponentVariant, InspectorData, InspectorGroup, InspectorGroupDivider, InspectorOption, InspectorParameter, InspectorParameterType, InspectorSection, InspectorSpacing, MaskConfig, MaskPreset, MaskResult, MaskToken, MenuColor, MenuExpandEvent, MenuExpandIconPosition, MenuItem, MenuItemBadgeColor, MenuItemClickEvent, MenuItemCommandEvent, MenuItemIconPosition, MenuItemTarget, MenuItemTooltipPosition, MenuMode, MenuOrientation, MenuRadius, MenuSize, MenuSpacing, MenuVariant, ModalAnimation, ModalDefaultsConfig, ModalPosition, ModalSize, ModalVariant, NavbarColor, NavbarShadow, NavbarSize, NavbarVariant, PopoverAnimation, PopoverBoundary, PopoverConfig, PopoverDefaultsConfig, PopoverPosition, PopoverSize, PopoverTrigger, PopoverVariant, PopoverWidth, RGB, RadioButtonColor, RadioButtonDefaultsConfig, RadioButtonRadius, RadioButtonSize, RadioButtonVariant, SelectDefaultsConfig, SelectDisplayContext, SelectOption, SelectOptionGroup, SelectPosition, SelectSize, SelectVariant, SidebarConfig, SidebarDefaultsConfig, SidebarPosition, SidebarSize, SidebarVariant, StudioConfig, StudioThemeConfig, SwitchDefaultsConfig, TabItem, TabsDefaultsConfig, TabsOrientation, TabsSize, TabsVariant, TextareaColor, TextareaDefaultsConfig, TextareaRadius, TextareaSize, TextareaVariant, ThemeMode, TooltipDefaultsConfig };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eduboxpro/studio",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "description": "Modern Angular UI library for educational platforms with customizable design system",
5
5
  "keywords": [
6
6
  "angular",