@eduboxpro/studio 0.1.14 → 0.1.15

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, AfterViewInit, ElementRef, TemplateRef, 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,17 @@ 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
+ }
351
362
  /**
352
363
  * Components defaults configuration
353
364
  */
@@ -370,6 +381,7 @@ interface ComponentsConfig {
370
381
  dropdown?: DropdownDefaultsConfig;
371
382
  tabs?: TabsDefaultsConfig;
372
383
  modal?: ModalDefaultsConfig;
384
+ bottomNavigation?: BottomNavigationDefaultsConfig;
373
385
  }
374
386
  /**
375
387
  * Main Studio configuration interface
@@ -510,6 +522,90 @@ declare class BadgeWrapperComponent {
510
522
  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
523
  }
512
524
 
525
+ interface BottomNavigationItem {
526
+ id: string;
527
+ label: string;
528
+ icon: string;
529
+ routerLink?: string | string[];
530
+ href?: string;
531
+ queryParams?: Params;
532
+ badge?: string | number;
533
+ badgeColor?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';
534
+ disabled?: boolean;
535
+ visible?: boolean;
536
+ command?: (item: BottomNavigationItem) => void;
537
+ data?: any;
538
+ }
539
+ type BottomNavigationVariant = 'default' | 'filled' | 'minimal';
540
+ type BottomNavigationLabelMode = 'always' | 'selected' | 'never';
541
+ type BottomNavigationFabPosition = 'center' | 'end';
542
+ type BottomNavigationSize = 'sm' | 'md' | 'lg';
543
+
544
+ /**
545
+ * Bottom Navigation component - Mobile-first navigation component
546
+ *
547
+ * @example
548
+ * <studio-bottom-navigation
549
+ * [items]="navItems"
550
+ * variant="default"
551
+ * showLabels="always"
552
+ * (itemClicked)="handleClick($event)"
553
+ * />
554
+ */
555
+ declare class BottomNavigationComponent implements OnInit, OnDestroy {
556
+ private readonly router;
557
+ private readonly platformId;
558
+ items: _angular_core.InputSignal<BottomNavigationItem[]>;
559
+ activeItem: _angular_core.InputSignal<string | undefined>;
560
+ variant: _angular_core.InputSignal<BottomNavigationVariant>;
561
+ showLabels: _angular_core.InputSignal<BottomNavigationLabelMode>;
562
+ size: _angular_core.InputSignal<BottomNavigationSize>;
563
+ elevation: _angular_core.InputSignal<"sm" | "md" | "lg" | "none">;
564
+ blur: _angular_core.InputSignal<boolean>;
565
+ showFab: _angular_core.InputSignal<boolean>;
566
+ fabIcon: _angular_core.InputSignal<string>;
567
+ fabPosition: _angular_core.InputSignal<BottomNavigationFabPosition>;
568
+ fabAriaLabel: _angular_core.InputSignal<string | undefined>;
569
+ fixed: _angular_core.InputSignal<boolean>;
570
+ hideOnScroll: _angular_core.InputSignal<boolean>;
571
+ scrollThreshold: _angular_core.InputSignal<number>;
572
+ hideOnDesktop: _angular_core.InputSignal<boolean>;
573
+ enableSwipeGestures: _angular_core.InputSignal<boolean>;
574
+ swipeThreshold: _angular_core.InputSignal<number>;
575
+ enableHapticFeedback: _angular_core.InputSignal<boolean>;
576
+ routerLinkActiveOptions: _angular_core.InputSignal<IsActiveMatchOptions>;
577
+ ariaLabel: _angular_core.InputSignal<string>;
578
+ class: _angular_core.InputSignal<string>;
579
+ activeItemChange: _angular_core.OutputEmitterRef<string>;
580
+ itemClicked: _angular_core.OutputEmitterRef<BottomNavigationItem>;
581
+ fabClicked: _angular_core.OutputEmitterRef<void>;
582
+ swipedLeft: _angular_core.OutputEmitterRef<void>;
583
+ swipedRight: _angular_core.OutputEmitterRef<void>;
584
+ protected isHidden: _angular_core.WritableSignal<boolean>;
585
+ private lastScrollY;
586
+ private routerSubscription?;
587
+ private touchStartX;
588
+ private touchStartY;
589
+ private isSwiping;
590
+ protected hostClasses: _angular_core.Signal<string>;
591
+ protected visibleItems: _angular_core.Signal<BottomNavigationItem[]>;
592
+ protected centerIndex: _angular_core.Signal<number>;
593
+ protected iconSize: _angular_core.Signal<number>;
594
+ ngOnInit(): void;
595
+ ngOnDestroy(): void;
596
+ private handleScroll;
597
+ protected isItemActive(item: BottomNavigationItem): boolean;
598
+ protected shouldShowLabel(item: BottomNavigationItem): boolean;
599
+ protected onItemClick(item: BottomNavigationItem, event: Event): void;
600
+ protected onFabClick(event: Event): void;
601
+ protected onTouchStart(event: TouchEvent): void;
602
+ protected onTouchMove(event: TouchEvent): void;
603
+ protected onTouchEnd(event: TouchEvent): void;
604
+ private triggerHapticFeedback;
605
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BottomNavigationComponent, never>;
606
+ 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>;
607
+ }
608
+
513
609
  /**
514
610
  * Button component with multiple variants, sizes, colors and states
515
611
  *
@@ -537,7 +633,7 @@ declare class ButtonComponent {
537
633
  loading: _angular_core.InputSignal<boolean>;
538
634
  loadingText: _angular_core.InputSignal<string>;
539
635
  fullWidth: _angular_core.InputSignal<boolean>;
540
- type: _angular_core.InputSignal<"button" | "submit" | "reset">;
636
+ type: _angular_core.InputSignal<"button" | "reset" | "submit">;
541
637
  icon: _angular_core.InputSignal<string | undefined>;
542
638
  iconPosition: _angular_core.InputSignal<"left" | "right" | "only">;
543
639
  href: _angular_core.InputSignal<string | undefined>;
@@ -571,7 +667,7 @@ declare class ButtonGroupComponent {
571
667
  fullWidth: _angular_core.InputSignal<boolean>;
572
668
  disabled: _angular_core.InputSignal<boolean>;
573
669
  spacing: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "xs">;
574
- align: _angular_core.InputSignal<"center" | "start" | "end" | "stretch">;
670
+ align: _angular_core.InputSignal<"center" | "end" | "start" | "stretch">;
575
671
  ariaLabel: _angular_core.InputSignal<string | undefined>;
576
672
  role: _angular_core.InputSignal<string>;
577
673
  protected hostClasses: _angular_core.Signal<string>;
@@ -2094,7 +2190,7 @@ declare class ButtonToggleGroupComponent implements ControlValueAccessor {
2094
2190
  fullWidth: _angular_core.InputSignal<boolean>;
2095
2191
  disabled: _angular_core.InputSignal<boolean>;
2096
2192
  spacing: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "xs">;
2097
- align: _angular_core.InputSignal<"center" | "start" | "end" | "stretch">;
2193
+ align: _angular_core.InputSignal<"center" | "end" | "start" | "stretch">;
2098
2194
  showIcons: _angular_core.InputSignal<boolean>;
2099
2195
  iconPosition: _angular_core.InputSignal<"left" | "right" | "only">;
2100
2196
  ariaLabel: _angular_core.InputSignal<string | undefined>;
@@ -2407,5 +2503,5 @@ declare function loadGoogleFonts(fonts: Array<{
2407
2503
  display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';
2408
2504
  }>): void;
2409
2505
 
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 };
2506
+ export { BadgeComponent, BadgeWrapperComponent, BottomNavigationComponent, 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 };
2507
+ export type { BadgeColor, BadgeDefaultsConfig, BadgeIconPosition, BadgeRadius, BadgeSize, BadgeVariant, BadgeWrapperPosition, BadgeWrapperSize, BottomNavigationDefaultsConfig, BottomNavigationFabPosition, BottomNavigationItem, BottomNavigationLabelMode, BottomNavigationSize, BottomNavigationVariant, 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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eduboxpro/studio",
3
- "version": "0.1.14",
3
+ "version": "0.1.15",
4
4
  "description": "Modern Angular UI library for educational platforms with customizable design system",
5
5
  "keywords": [
6
6
  "angular",