@eduboxpro/studio 0.1.31 → 0.1.33

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, signal, effect, Injectable, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER, input, computed, ChangeDetectionStrategy, Component, output, PLATFORM_ID, ElementRef, contentChild, viewChild, forwardRef, DOCUMENT as DOCUMENT$1, DestroyRef, Injector, model, afterNextRender, HostListener, Renderer2, TemplateRef, ContentChild, Input, Directive, contentChildren } from '@angular/core';
2
+ import { InjectionToken, inject, signal, effect, Injectable, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER, input, computed, ChangeDetectionStrategy, Component, untracked, output, PLATFORM_ID, ElementRef, contentChild, viewChild, forwardRef, DOCUMENT as DOCUMENT$1, DestroyRef, Injector, model, afterNextRender, HostListener, Renderer2, TemplateRef, ContentChild, Input, Directive, contentChildren } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common';
4
4
  import { DOCUMENT, CommonModule, isPlatformBrowser, NgTemplateOutlet } from '@angular/common';
5
5
  import * as LucideIcons from 'lucide-angular';
@@ -630,6 +630,54 @@ function withConfigDefault(inputSignal, configSignal, defaultValue) {
630
630
  });
631
631
  }
632
632
 
633
+ class SignalStore {
634
+ state;
635
+ constructor(initialState) {
636
+ this.state = signal(initialState, ...(ngDevMode ? [{ debugName: "state" }] : []));
637
+ }
638
+ get$() {
639
+ return this.state.asReadonly();
640
+ }
641
+ snapshot() {
642
+ return this.state();
643
+ }
644
+ setState(newState) {
645
+ this.state.set(newState);
646
+ }
647
+ updateState(updateFn) {
648
+ this.state.update(updateFn);
649
+ }
650
+ patchState(partial) {
651
+ this.state.update(state => ({ ...state, ...partial }));
652
+ }
653
+ resetState(initialState) {
654
+ this.setState(initialState);
655
+ }
656
+ select(selector) {
657
+ return computed(() => selector(this.state()));
658
+ }
659
+ onStateChange(callback) {
660
+ effect(() => callback(this.state()));
661
+ }
662
+ onStateChangeWithPrevious(callback) {
663
+ let previous = untracked(() => this.state());
664
+ effect(() => {
665
+ const current = this.state();
666
+ callback(current, previous);
667
+ previous = current;
668
+ });
669
+ }
670
+ batchUpdate(updates) {
671
+ this.updateState(state => {
672
+ let newState = { ...state };
673
+ updates.forEach(update => {
674
+ newState = { ...newState, ...update };
675
+ });
676
+ return newState;
677
+ });
678
+ }
679
+ }
680
+
633
681
  /**
634
682
  * @eduboxpro/studio - Utilities
635
683
  *
@@ -1091,7 +1139,7 @@ class BottomNavigationComponent {
1091
1139
  }
1092
1140
  }
1093
1141
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: BottomNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1094
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: BottomNavigationComponent, isStandalone: true, selector: "studio-bottom-navigation", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, activeItem: { classPropertyName: "activeItem", publicName: "activeItem", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, showLabels: { classPropertyName: "showLabels", publicName: "showLabels", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, elevation: { classPropertyName: "elevation", publicName: "elevation", isSignal: true, isRequired: false, transformFunction: null }, blur: { classPropertyName: "blur", publicName: "blur", isSignal: true, isRequired: false, transformFunction: null }, showFab: { classPropertyName: "showFab", publicName: "showFab", isSignal: true, isRequired: false, transformFunction: null }, fabIcon: { classPropertyName: "fabIcon", publicName: "fabIcon", isSignal: true, isRequired: false, transformFunction: null }, fabPosition: { classPropertyName: "fabPosition", publicName: "fabPosition", isSignal: true, isRequired: false, transformFunction: null }, fabAriaLabel: { classPropertyName: "fabAriaLabel", publicName: "fabAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, fixed: { classPropertyName: "fixed", publicName: "fixed", isSignal: true, isRequired: false, transformFunction: null }, hideOnScroll: { classPropertyName: "hideOnScroll", publicName: "hideOnScroll", isSignal: true, isRequired: false, transformFunction: null }, scrollThreshold: { classPropertyName: "scrollThreshold", publicName: "scrollThreshold", isSignal: true, isRequired: false, transformFunction: null }, hideOnDesktop: { classPropertyName: "hideOnDesktop", publicName: "hideOnDesktop", isSignal: true, isRequired: false, transformFunction: null }, enableSwipeGestures: { classPropertyName: "enableSwipeGestures", publicName: "enableSwipeGestures", isSignal: true, isRequired: false, transformFunction: null }, swipeThreshold: { classPropertyName: "swipeThreshold", publicName: "swipeThreshold", isSignal: true, isRequired: false, transformFunction: null }, enableHapticFeedback: { classPropertyName: "enableHapticFeedback", publicName: "enableHapticFeedback", isSignal: true, isRequired: false, transformFunction: null }, routerLinkActiveOptions: { classPropertyName: "routerLinkActiveOptions", publicName: "routerLinkActiveOptions", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemChange: "activeItemChange", itemClicked: "itemClicked", fabClicked: "fabClicked", swipedLeft: "swipedLeft", swipedRight: "swipedRight" }, host: { properties: { "class": "hostClasses()", "attr.role": "\"navigation\"", "attr.aria-label": "ariaLabel()" } }, ngImport: i0, template: "<div\n class=\"bottom-navigation__container\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n>\n <ng-content select=\"[bottomNavLeft]\" />\n\n <div class=\"bottom-navigation__items\">\n @for (item of visibleItems(); track item.id) {\n @if (!showFab() || fabPosition() !== 'center' || $index !== centerIndex()) {\n <a\n class=\"bottom-navigation__item\"\n [class.bottom-navigation__item--active]=\"isItemActive(item)\"\n [class.bottom-navigation__item--disabled]=\"item.disabled\"\n [routerLink]=\"item.routerLink || null\"\n [queryParams]=\"item.queryParams\"\n [attr.href]=\"item.href || null\"\n [attr.aria-current]=\"isItemActive(item) ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n (click)=\"onItemClick(item, $event)\"\n >\n <div class=\"bottom-navigation__icon-wrapper\">\n <studio-icon\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n class=\"bottom-navigation__icon\"\n />\n\n @if (item.badge) {\n <studio-badge\n [value]=\"item.badge\"\n [color]=\"item.badgeColor || 'primary'\"\n size=\"sm\"\n class=\"bottom-navigation__badge\"\n />\n }\n </div>\n\n @if (shouldShowLabel(item)) {\n <span class=\"bottom-navigation__label\">{{ item.label }}</span>\n }\n </a>\n } @else {\n <div class=\"bottom-navigation__fab-spacer\"></div>\n }\n }\n </div>\n\n <ng-content select=\"[bottomNavRight]\" />\n\n @if (showFab()) {\n <button\n class=\"bottom-navigation__fab\"\n [class.bottom-navigation__fab--center]=\"fabPosition() === 'center'\"\n [class.bottom-navigation__fab--end]=\"fabPosition() === 'end'\"\n [attr.aria-label]=\"fabAriaLabel() || 'Action button'\"\n (click)=\"onFabClick($event)\"\n >\n <studio-icon\n [name]=\"fabIcon()\"\n [size]=\"24\"\n />\n </button>\n }\n</div>\n", styles: [":host{position:fixed;bottom:0;left:0;right:0;z-index:var(--studio-z-index-bottom-nav, 1000);display:block;transition:transform .3s ease}:host(.studio-bottom-navigation--hidden){transform:translateY(100%)}:host(.studio-bottom-navigation--relative){position:relative}@media (min-width: 768px){:host(.studio-bottom-navigation--hide-desktop){display:none}}.bottom-navigation__container{position:relative;display:flex;align-items:center;background:var(--studio-bg-primary);border-top:1px solid var(--studio-border-primary);padding-bottom:env(safe-area-inset-bottom,0);transition:all .3s ease}.bottom-navigation__items{flex:1;display:flex;align-items:stretch;justify-content:space-around;gap:.25rem}.bottom-navigation__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;color:var(--studio-text-secondary);transition:all .15s ease;cursor:pointer;position:relative;border-radius:var(--studio-radius-sm);min-height:56px;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.bottom-navigation__item:hover:not(.bottom-navigation__item--disabled):not(.bottom-navigation__item--active){background:var(--studio-bg-hover);color:var(--studio-text-primary)}.bottom-navigation__item:active:not(.bottom-navigation__item--disabled){transform:scale(.95)}.bottom-navigation__item--active{color:var(--studio-primary)}.bottom-navigation__item--active .bottom-navigation__icon{transform:scale(1.1)}.bottom-navigation__item--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.bottom-navigation__icon-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.bottom-navigation__icon{transition:transform .15s ease}.bottom-navigation__badge{position:absolute;top:-4px;right:-8px}.bottom-navigation__label{font-size:.75rem;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;transition:opacity .15s ease;margin-top:.25rem}.bottom-navigation__fab-spacer{flex:1;min-width:56px}.bottom-navigation__fab{position:absolute;display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:var(--studio-primary);color:#fff;border:none;cursor:pointer;box-shadow:0 4px 12px #00000026;transition:all .15s ease;z-index:1}.bottom-navigation__fab--center{left:50%;top:0;transform:translate(-50%) translateY(-50%)}.bottom-navigation__fab--center:hover{transform:translate(-50%) translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0003}.bottom-navigation__fab--center:active{transform:translate(-50%) translateY(-50%) scale(.95)}.bottom-navigation__fab--end{right:16px}.bottom-navigation__fab--end:hover{transform:scale(1.1);box-shadow:0 6px 16px #0003}.bottom-navigation__fab--end:active{transform:scale(.95)}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end{top:0;transform:translateY(-50%)}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end:hover{transform:translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0003}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end:active{transform:translateY(-50%) scale(.95)}:host:not(.studio-bottom-navigation--relative) .bottom-navigation__fab--end{bottom:calc(16px + env(safe-area-inset-bottom,0))}:host(.studio-bottom-navigation--sm) .bottom-navigation__item{min-height:48px;padding:.375rem .5rem}:host(.studio-bottom-navigation--md) .bottom-navigation__item{min-height:56px;padding:.5rem .75rem}:host(.studio-bottom-navigation--lg) .bottom-navigation__item{min-height:64px;padding:.625rem 1rem}:host(.studio-bottom-navigation--filled) .bottom-navigation__container{background:var(--studio-primary);border-top-color:transparent}:host(.studio-bottom-navigation--filled) .bottom-navigation__item{color:#ffffffb3}:host(.studio-bottom-navigation--filled) .bottom-navigation__item--active{color:#fff}:host(.studio-bottom-navigation--filled) .bottom-navigation__item:hover:not(.bottom-navigation__item--disabled):not(.bottom-navigation__item--active){background:#ffffff1a}:host(.studio-bottom-navigation--minimal) .bottom-navigation__container{background:transparent;border-top:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}:host(.studio-bottom-navigation--labels-selected) .bottom-navigation__item:not(.bottom-navigation__item--active) .bottom-navigation__label{opacity:0;height:0;margin:0}:host(.studio-bottom-navigation--labels-never) .bottom-navigation__label{display:none}:host(.studio-bottom-navigation--elevation-sm) .bottom-navigation__container{box-shadow:0 -2px 4px #0000000d}:host(.studio-bottom-navigation--elevation-md) .bottom-navigation__container{box-shadow:0 -4px 8px #0000001a}:host(.studio-bottom-navigation--elevation-lg) .bottom-navigation__container{box-shadow:0 -8px 16px #00000026}:host(.studio-bottom-navigation--blur) .bottom-navigation__container{background:rgba(var(--studio-bg-primary-rgb),.8);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}@media (max-width: 640px){.bottom-navigation__label{font-size:.6875rem}:host(.studio-bottom-navigation--sm) .bottom-navigation__item{min-height:44px}}@media (prefers-reduced-motion: reduce){:host,.bottom-navigation__container,.bottom-navigation__item,.bottom-navigation__icon,.bottom-navigation__label,.bottom-navigation__fab{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: IconComponent, selector: "studio-icon", inputs: ["name", "size", "color", "strokeWidth", "absoluteStrokeWidth", "showFallback", "fallbackIcon"] }, { kind: "component", type: BadgeComponent, selector: "studio-badge", inputs: ["variant", "size", "color", "radius", "icon", "iconPosition", "dot", "dotColor", "removable", "href", "target", "disabled", "value", "max", "showZero", "uppercase", "bold", "pulse", "autoColor"], outputs: ["removed", "clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1142
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: BottomNavigationComponent, isStandalone: true, selector: "studio-bottom-navigation", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, activeItem: { classPropertyName: "activeItem", publicName: "activeItem", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, showLabels: { classPropertyName: "showLabels", publicName: "showLabels", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, elevation: { classPropertyName: "elevation", publicName: "elevation", isSignal: true, isRequired: false, transformFunction: null }, blur: { classPropertyName: "blur", publicName: "blur", isSignal: true, isRequired: false, transformFunction: null }, showFab: { classPropertyName: "showFab", publicName: "showFab", isSignal: true, isRequired: false, transformFunction: null }, fabIcon: { classPropertyName: "fabIcon", publicName: "fabIcon", isSignal: true, isRequired: false, transformFunction: null }, fabPosition: { classPropertyName: "fabPosition", publicName: "fabPosition", isSignal: true, isRequired: false, transformFunction: null }, fabAriaLabel: { classPropertyName: "fabAriaLabel", publicName: "fabAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, fixed: { classPropertyName: "fixed", publicName: "fixed", isSignal: true, isRequired: false, transformFunction: null }, hideOnScroll: { classPropertyName: "hideOnScroll", publicName: "hideOnScroll", isSignal: true, isRequired: false, transformFunction: null }, scrollThreshold: { classPropertyName: "scrollThreshold", publicName: "scrollThreshold", isSignal: true, isRequired: false, transformFunction: null }, hideOnDesktop: { classPropertyName: "hideOnDesktop", publicName: "hideOnDesktop", isSignal: true, isRequired: false, transformFunction: null }, enableSwipeGestures: { classPropertyName: "enableSwipeGestures", publicName: "enableSwipeGestures", isSignal: true, isRequired: false, transformFunction: null }, swipeThreshold: { classPropertyName: "swipeThreshold", publicName: "swipeThreshold", isSignal: true, isRequired: false, transformFunction: null }, enableHapticFeedback: { classPropertyName: "enableHapticFeedback", publicName: "enableHapticFeedback", isSignal: true, isRequired: false, transformFunction: null }, routerLinkActiveOptions: { classPropertyName: "routerLinkActiveOptions", publicName: "routerLinkActiveOptions", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemChange: "activeItemChange", itemClicked: "itemClicked", fabClicked: "fabClicked", swipedLeft: "swipedLeft", swipedRight: "swipedRight" }, host: { properties: { "class": "hostClasses()", "attr.role": "\"navigation\"", "attr.aria-label": "ariaLabel()" } }, ngImport: i0, template: "<div\n class=\"bottom-navigation__container\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n>\n <ng-content select=\"[bottomNavLeft]\" />\n\n <div class=\"bottom-navigation__items\">\n @for (item of visibleItems(); track item.id) {\n @if (!showFab() || fabPosition() !== 'center' || $index !== centerIndex()) {\n <a\n class=\"bottom-navigation__item\"\n [class.bottom-navigation__item--active]=\"isItemActive(item)\"\n [class.bottom-navigation__item--disabled]=\"item.disabled\"\n [routerLink]=\"item.routerLink || null\"\n [queryParams]=\"item.queryParams\"\n [attr.href]=\"item.href || null\"\n [attr.aria-current]=\"isItemActive(item) ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n (click)=\"onItemClick(item, $event)\"\n >\n <div class=\"bottom-navigation__icon-wrapper\">\n <studio-icon\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n class=\"bottom-navigation__icon\"\n />\n\n @if (item.badge) {\n <studio-badge\n [value]=\"item.badge\"\n [color]=\"item.badgeColor || 'primary'\"\n size=\"sm\"\n class=\"bottom-navigation__badge\"\n />\n }\n </div>\n\n @if (shouldShowLabel(item)) {\n <span class=\"bottom-navigation__label\">{{ item.label }}</span>\n }\n </a>\n } @else {\n <div class=\"bottom-navigation__fab-spacer\"></div>\n }\n }\n </div>\n\n <ng-content select=\"[bottomNavRight]\" />\n\n @if (showFab()) {\n <button\n class=\"bottom-navigation__fab\"\n [class.bottom-navigation__fab--center]=\"fabPosition() === 'center'\"\n [class.bottom-navigation__fab--end]=\"fabPosition() === 'end'\"\n [attr.aria-label]=\"fabAriaLabel() || 'Action button'\"\n (click)=\"onFabClick($event)\"\n >\n <studio-icon\n [name]=\"fabIcon()\"\n [size]=\"24\"\n />\n </button>\n }\n</div>\n", styles: [":host{position:fixed;bottom:0;left:0;right:0;z-index:var(--studio-z-index-bottom-nav, 1000);display:block;transition:transform .3s ease;transform:translateZ(0);-webkit-transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden}:host(.studio-bottom-navigation--hidden){transform:translateY(100%)}:host(.studio-bottom-navigation--relative){position:relative}@media (min-width: 1024px){:host(.studio-bottom-navigation--hide-desktop){display:none}}.bottom-navigation__container{position:relative;display:flex;align-items:center;background:var(--studio-bg-primary);border-top:1px solid var(--studio-border-primary);padding-bottom:env(safe-area-inset-bottom,0);transition:all .3s ease}.bottom-navigation__items{flex:1;display:flex;align-items:stretch;justify-content:space-around;gap:.25rem}.bottom-navigation__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;color:var(--studio-text-secondary);transition:all .15s ease;cursor:pointer;position:relative;border-radius:var(--studio-radius-sm);min-height:56px;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.bottom-navigation__item:hover:not(.bottom-navigation__item--disabled):not(.bottom-navigation__item--active){background:var(--studio-bg-hover);color:var(--studio-text-primary)}.bottom-navigation__item:active:not(.bottom-navigation__item--disabled){transform:scale(.95)}.bottom-navigation__item--active{color:var(--studio-primary)}.bottom-navigation__item--active .bottom-navigation__icon{transform:scale(1.1)}.bottom-navigation__item--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.bottom-navigation__icon-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.bottom-navigation__icon{transition:transform .15s ease}.bottom-navigation__badge{position:absolute;top:-4px;right:-8px}.bottom-navigation__label{font-size:.75rem;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;transition:opacity .15s ease;margin-top:.25rem}.bottom-navigation__fab-spacer{flex:1;min-width:56px}.bottom-navigation__fab{position:absolute;display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:var(--studio-primary);color:#fff;border:none;cursor:pointer;box-shadow:0 4px 12px #00000026;transition:all .15s ease;z-index:1}.bottom-navigation__fab--center{left:50%;top:0;transform:translate(-50%) translateY(-50%)}.bottom-navigation__fab--center:hover{transform:translate(-50%) translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0003}.bottom-navigation__fab--center:active{transform:translate(-50%) translateY(-50%) scale(.95)}.bottom-navigation__fab--end{right:16px}.bottom-navigation__fab--end:hover{transform:scale(1.1);box-shadow:0 6px 16px #0003}.bottom-navigation__fab--end:active{transform:scale(.95)}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end{top:0;transform:translateY(-50%)}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end:hover{transform:translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0003}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end:active{transform:translateY(-50%) scale(.95)}:host:not(.studio-bottom-navigation--relative) .bottom-navigation__fab--end{bottom:calc(16px + env(safe-area-inset-bottom,0))}:host(.studio-bottom-navigation--sm) .bottom-navigation__item{min-height:48px;padding:.375rem .5rem}:host(.studio-bottom-navigation--md) .bottom-navigation__item{min-height:56px;padding:.5rem .75rem}:host(.studio-bottom-navigation--lg) .bottom-navigation__item{min-height:64px;padding:.625rem 1rem}:host(.studio-bottom-navigation--filled) .bottom-navigation__container{background:var(--studio-primary);border-top-color:transparent}:host(.studio-bottom-navigation--filled) .bottom-navigation__item{color:#ffffffb3}:host(.studio-bottom-navigation--filled) .bottom-navigation__item--active{color:#fff}:host(.studio-bottom-navigation--filled) .bottom-navigation__item:hover:not(.bottom-navigation__item--disabled):not(.bottom-navigation__item--active){background:#ffffff1a}:host(.studio-bottom-navigation--minimal) .bottom-navigation__container{background:transparent;border-top:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}:host(.studio-bottom-navigation--labels-selected) .bottom-navigation__item:not(.bottom-navigation__item--active) .bottom-navigation__label{opacity:0;height:0;margin:0}:host(.studio-bottom-navigation--labels-never) .bottom-navigation__label{display:none}:host(.studio-bottom-navigation--elevation-sm) .bottom-navigation__container{box-shadow:0 -2px 4px #0000000d}:host(.studio-bottom-navigation--elevation-md) .bottom-navigation__container{box-shadow:0 -4px 8px #0000001a}:host(.studio-bottom-navigation--elevation-lg) .bottom-navigation__container{box-shadow:0 -8px 16px #00000026}:host(.studio-bottom-navigation--blur) .bottom-navigation__container{background:rgba(var(--studio-bg-primary-rgb),.8);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}@media (max-width: 640px){.bottom-navigation__label{font-size:.6875rem}:host(.studio-bottom-navigation--sm) .bottom-navigation__item{min-height:44px}}@media (prefers-reduced-motion: reduce){:host,.bottom-navigation__container,.bottom-navigation__item,.bottom-navigation__icon,.bottom-navigation__label,.bottom-navigation__fab{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: IconComponent, selector: "studio-icon", inputs: ["name", "size", "color", "strokeWidth", "absoluteStrokeWidth", "showFallback", "fallbackIcon"] }, { kind: "component", type: BadgeComponent, selector: "studio-badge", inputs: ["variant", "size", "color", "radius", "icon", "iconPosition", "dot", "dotColor", "removable", "href", "target", "disabled", "value", "max", "showZero", "uppercase", "bold", "pulse", "autoColor"], outputs: ["removed", "clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1095
1143
  }
1096
1144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: BottomNavigationComponent, decorators: [{
1097
1145
  type: Component,
@@ -1099,7 +1147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
1099
1147
  '[class]': 'hostClasses()',
1100
1148
  '[attr.role]': '"navigation"',
1101
1149
  '[attr.aria-label]': 'ariaLabel()'
1102
- }, template: "<div\n class=\"bottom-navigation__container\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n>\n <ng-content select=\"[bottomNavLeft]\" />\n\n <div class=\"bottom-navigation__items\">\n @for (item of visibleItems(); track item.id) {\n @if (!showFab() || fabPosition() !== 'center' || $index !== centerIndex()) {\n <a\n class=\"bottom-navigation__item\"\n [class.bottom-navigation__item--active]=\"isItemActive(item)\"\n [class.bottom-navigation__item--disabled]=\"item.disabled\"\n [routerLink]=\"item.routerLink || null\"\n [queryParams]=\"item.queryParams\"\n [attr.href]=\"item.href || null\"\n [attr.aria-current]=\"isItemActive(item) ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n (click)=\"onItemClick(item, $event)\"\n >\n <div class=\"bottom-navigation__icon-wrapper\">\n <studio-icon\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n class=\"bottom-navigation__icon\"\n />\n\n @if (item.badge) {\n <studio-badge\n [value]=\"item.badge\"\n [color]=\"item.badgeColor || 'primary'\"\n size=\"sm\"\n class=\"bottom-navigation__badge\"\n />\n }\n </div>\n\n @if (shouldShowLabel(item)) {\n <span class=\"bottom-navigation__label\">{{ item.label }}</span>\n }\n </a>\n } @else {\n <div class=\"bottom-navigation__fab-spacer\"></div>\n }\n }\n </div>\n\n <ng-content select=\"[bottomNavRight]\" />\n\n @if (showFab()) {\n <button\n class=\"bottom-navigation__fab\"\n [class.bottom-navigation__fab--center]=\"fabPosition() === 'center'\"\n [class.bottom-navigation__fab--end]=\"fabPosition() === 'end'\"\n [attr.aria-label]=\"fabAriaLabel() || 'Action button'\"\n (click)=\"onFabClick($event)\"\n >\n <studio-icon\n [name]=\"fabIcon()\"\n [size]=\"24\"\n />\n </button>\n }\n</div>\n", styles: [":host{position:fixed;bottom:0;left:0;right:0;z-index:var(--studio-z-index-bottom-nav, 1000);display:block;transition:transform .3s ease}:host(.studio-bottom-navigation--hidden){transform:translateY(100%)}:host(.studio-bottom-navigation--relative){position:relative}@media (min-width: 768px){:host(.studio-bottom-navigation--hide-desktop){display:none}}.bottom-navigation__container{position:relative;display:flex;align-items:center;background:var(--studio-bg-primary);border-top:1px solid var(--studio-border-primary);padding-bottom:env(safe-area-inset-bottom,0);transition:all .3s ease}.bottom-navigation__items{flex:1;display:flex;align-items:stretch;justify-content:space-around;gap:.25rem}.bottom-navigation__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;color:var(--studio-text-secondary);transition:all .15s ease;cursor:pointer;position:relative;border-radius:var(--studio-radius-sm);min-height:56px;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.bottom-navigation__item:hover:not(.bottom-navigation__item--disabled):not(.bottom-navigation__item--active){background:var(--studio-bg-hover);color:var(--studio-text-primary)}.bottom-navigation__item:active:not(.bottom-navigation__item--disabled){transform:scale(.95)}.bottom-navigation__item--active{color:var(--studio-primary)}.bottom-navigation__item--active .bottom-navigation__icon{transform:scale(1.1)}.bottom-navigation__item--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.bottom-navigation__icon-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.bottom-navigation__icon{transition:transform .15s ease}.bottom-navigation__badge{position:absolute;top:-4px;right:-8px}.bottom-navigation__label{font-size:.75rem;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;transition:opacity .15s ease;margin-top:.25rem}.bottom-navigation__fab-spacer{flex:1;min-width:56px}.bottom-navigation__fab{position:absolute;display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:var(--studio-primary);color:#fff;border:none;cursor:pointer;box-shadow:0 4px 12px #00000026;transition:all .15s ease;z-index:1}.bottom-navigation__fab--center{left:50%;top:0;transform:translate(-50%) translateY(-50%)}.bottom-navigation__fab--center:hover{transform:translate(-50%) translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0003}.bottom-navigation__fab--center:active{transform:translate(-50%) translateY(-50%) scale(.95)}.bottom-navigation__fab--end{right:16px}.bottom-navigation__fab--end:hover{transform:scale(1.1);box-shadow:0 6px 16px #0003}.bottom-navigation__fab--end:active{transform:scale(.95)}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end{top:0;transform:translateY(-50%)}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end:hover{transform:translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0003}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end:active{transform:translateY(-50%) scale(.95)}:host:not(.studio-bottom-navigation--relative) .bottom-navigation__fab--end{bottom:calc(16px + env(safe-area-inset-bottom,0))}:host(.studio-bottom-navigation--sm) .bottom-navigation__item{min-height:48px;padding:.375rem .5rem}:host(.studio-bottom-navigation--md) .bottom-navigation__item{min-height:56px;padding:.5rem .75rem}:host(.studio-bottom-navigation--lg) .bottom-navigation__item{min-height:64px;padding:.625rem 1rem}:host(.studio-bottom-navigation--filled) .bottom-navigation__container{background:var(--studio-primary);border-top-color:transparent}:host(.studio-bottom-navigation--filled) .bottom-navigation__item{color:#ffffffb3}:host(.studio-bottom-navigation--filled) .bottom-navigation__item--active{color:#fff}:host(.studio-bottom-navigation--filled) .bottom-navigation__item:hover:not(.bottom-navigation__item--disabled):not(.bottom-navigation__item--active){background:#ffffff1a}:host(.studio-bottom-navigation--minimal) .bottom-navigation__container{background:transparent;border-top:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}:host(.studio-bottom-navigation--labels-selected) .bottom-navigation__item:not(.bottom-navigation__item--active) .bottom-navigation__label{opacity:0;height:0;margin:0}:host(.studio-bottom-navigation--labels-never) .bottom-navigation__label{display:none}:host(.studio-bottom-navigation--elevation-sm) .bottom-navigation__container{box-shadow:0 -2px 4px #0000000d}:host(.studio-bottom-navigation--elevation-md) .bottom-navigation__container{box-shadow:0 -4px 8px #0000001a}:host(.studio-bottom-navigation--elevation-lg) .bottom-navigation__container{box-shadow:0 -8px 16px #00000026}:host(.studio-bottom-navigation--blur) .bottom-navigation__container{background:rgba(var(--studio-bg-primary-rgb),.8);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}@media (max-width: 640px){.bottom-navigation__label{font-size:.6875rem}:host(.studio-bottom-navigation--sm) .bottom-navigation__item{min-height:44px}}@media (prefers-reduced-motion: reduce){:host,.bottom-navigation__container,.bottom-navigation__item,.bottom-navigation__icon,.bottom-navigation__label,.bottom-navigation__fab{transition:none}}\n"] }]
1150
+ }, template: "<div\n class=\"bottom-navigation__container\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n>\n <ng-content select=\"[bottomNavLeft]\" />\n\n <div class=\"bottom-navigation__items\">\n @for (item of visibleItems(); track item.id) {\n @if (!showFab() || fabPosition() !== 'center' || $index !== centerIndex()) {\n <a\n class=\"bottom-navigation__item\"\n [class.bottom-navigation__item--active]=\"isItemActive(item)\"\n [class.bottom-navigation__item--disabled]=\"item.disabled\"\n [routerLink]=\"item.routerLink || null\"\n [queryParams]=\"item.queryParams\"\n [attr.href]=\"item.href || null\"\n [attr.aria-current]=\"isItemActive(item) ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n (click)=\"onItemClick(item, $event)\"\n >\n <div class=\"bottom-navigation__icon-wrapper\">\n <studio-icon\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n class=\"bottom-navigation__icon\"\n />\n\n @if (item.badge) {\n <studio-badge\n [value]=\"item.badge\"\n [color]=\"item.badgeColor || 'primary'\"\n size=\"sm\"\n class=\"bottom-navigation__badge\"\n />\n }\n </div>\n\n @if (shouldShowLabel(item)) {\n <span class=\"bottom-navigation__label\">{{ item.label }}</span>\n }\n </a>\n } @else {\n <div class=\"bottom-navigation__fab-spacer\"></div>\n }\n }\n </div>\n\n <ng-content select=\"[bottomNavRight]\" />\n\n @if (showFab()) {\n <button\n class=\"bottom-navigation__fab\"\n [class.bottom-navigation__fab--center]=\"fabPosition() === 'center'\"\n [class.bottom-navigation__fab--end]=\"fabPosition() === 'end'\"\n [attr.aria-label]=\"fabAriaLabel() || 'Action button'\"\n (click)=\"onFabClick($event)\"\n >\n <studio-icon\n [name]=\"fabIcon()\"\n [size]=\"24\"\n />\n </button>\n }\n</div>\n", styles: [":host{position:fixed;bottom:0;left:0;right:0;z-index:var(--studio-z-index-bottom-nav, 1000);display:block;transition:transform .3s ease;transform:translateZ(0);-webkit-transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden}:host(.studio-bottom-navigation--hidden){transform:translateY(100%)}:host(.studio-bottom-navigation--relative){position:relative}@media (min-width: 1024px){:host(.studio-bottom-navigation--hide-desktop){display:none}}.bottom-navigation__container{position:relative;display:flex;align-items:center;background:var(--studio-bg-primary);border-top:1px solid var(--studio-border-primary);padding-bottom:env(safe-area-inset-bottom,0);transition:all .3s ease}.bottom-navigation__items{flex:1;display:flex;align-items:stretch;justify-content:space-around;gap:.25rem}.bottom-navigation__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;color:var(--studio-text-secondary);transition:all .15s ease;cursor:pointer;position:relative;border-radius:var(--studio-radius-sm);min-height:56px;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.bottom-navigation__item:hover:not(.bottom-navigation__item--disabled):not(.bottom-navigation__item--active){background:var(--studio-bg-hover);color:var(--studio-text-primary)}.bottom-navigation__item:active:not(.bottom-navigation__item--disabled){transform:scale(.95)}.bottom-navigation__item--active{color:var(--studio-primary)}.bottom-navigation__item--active .bottom-navigation__icon{transform:scale(1.1)}.bottom-navigation__item--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.bottom-navigation__icon-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.bottom-navigation__icon{transition:transform .15s ease}.bottom-navigation__badge{position:absolute;top:-4px;right:-8px}.bottom-navigation__label{font-size:.75rem;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;transition:opacity .15s ease;margin-top:.25rem}.bottom-navigation__fab-spacer{flex:1;min-width:56px}.bottom-navigation__fab{position:absolute;display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:var(--studio-primary);color:#fff;border:none;cursor:pointer;box-shadow:0 4px 12px #00000026;transition:all .15s ease;z-index:1}.bottom-navigation__fab--center{left:50%;top:0;transform:translate(-50%) translateY(-50%)}.bottom-navigation__fab--center:hover{transform:translate(-50%) translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0003}.bottom-navigation__fab--center:active{transform:translate(-50%) translateY(-50%) scale(.95)}.bottom-navigation__fab--end{right:16px}.bottom-navigation__fab--end:hover{transform:scale(1.1);box-shadow:0 6px 16px #0003}.bottom-navigation__fab--end:active{transform:scale(.95)}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end{top:0;transform:translateY(-50%)}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end:hover{transform:translateY(-50%) scale(1.1);box-shadow:0 6px 16px #0003}:host(.studio-bottom-navigation--relative) .bottom-navigation__fab--end:active{transform:translateY(-50%) scale(.95)}:host:not(.studio-bottom-navigation--relative) .bottom-navigation__fab--end{bottom:calc(16px + env(safe-area-inset-bottom,0))}:host(.studio-bottom-navigation--sm) .bottom-navigation__item{min-height:48px;padding:.375rem .5rem}:host(.studio-bottom-navigation--md) .bottom-navigation__item{min-height:56px;padding:.5rem .75rem}:host(.studio-bottom-navigation--lg) .bottom-navigation__item{min-height:64px;padding:.625rem 1rem}:host(.studio-bottom-navigation--filled) .bottom-navigation__container{background:var(--studio-primary);border-top-color:transparent}:host(.studio-bottom-navigation--filled) .bottom-navigation__item{color:#ffffffb3}:host(.studio-bottom-navigation--filled) .bottom-navigation__item--active{color:#fff}:host(.studio-bottom-navigation--filled) .bottom-navigation__item:hover:not(.bottom-navigation__item--disabled):not(.bottom-navigation__item--active){background:#ffffff1a}:host(.studio-bottom-navigation--minimal) .bottom-navigation__container{background:transparent;border-top:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}:host(.studio-bottom-navigation--labels-selected) .bottom-navigation__item:not(.bottom-navigation__item--active) .bottom-navigation__label{opacity:0;height:0;margin:0}:host(.studio-bottom-navigation--labels-never) .bottom-navigation__label{display:none}:host(.studio-bottom-navigation--elevation-sm) .bottom-navigation__container{box-shadow:0 -2px 4px #0000000d}:host(.studio-bottom-navigation--elevation-md) .bottom-navigation__container{box-shadow:0 -4px 8px #0000001a}:host(.studio-bottom-navigation--elevation-lg) .bottom-navigation__container{box-shadow:0 -8px 16px #00000026}:host(.studio-bottom-navigation--blur) .bottom-navigation__container{background:rgba(var(--studio-bg-primary-rgb),.8);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}@media (max-width: 640px){.bottom-navigation__label{font-size:.6875rem}:host(.studio-bottom-navigation--sm) .bottom-navigation__item{min-height:44px}}@media (prefers-reduced-motion: reduce){:host,.bottom-navigation__container,.bottom-navigation__item,.bottom-navigation__icon,.bottom-navigation__label,.bottom-navigation__fab{transition:none}}\n"] }]
1103
1151
  }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], activeItem: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeItem", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], showLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLabels", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], elevation: [{ type: i0.Input, args: [{ isSignal: true, alias: "elevation", required: false }] }], blur: [{ type: i0.Input, args: [{ isSignal: true, alias: "blur", required: false }] }], showFab: [{ type: i0.Input, args: [{ isSignal: true, alias: "showFab", required: false }] }], fabIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "fabIcon", required: false }] }], fabPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "fabPosition", required: false }] }], fabAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "fabAriaLabel", required: false }] }], fixed: [{ type: i0.Input, args: [{ isSignal: true, alias: "fixed", required: false }] }], hideOnScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideOnScroll", required: false }] }], scrollThreshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollThreshold", required: false }] }], hideOnDesktop: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideOnDesktop", required: false }] }], enableSwipeGestures: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableSwipeGestures", required: false }] }], swipeThreshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "swipeThreshold", required: false }] }], enableHapticFeedback: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableHapticFeedback", required: false }] }], routerLinkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLinkActiveOptions", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], activeItemChange: [{ type: i0.Output, args: ["activeItemChange"] }], itemClicked: [{ type: i0.Output, args: ["itemClicked"] }], fabClicked: [{ type: i0.Output, args: ["fabClicked"] }], swipedLeft: [{ type: i0.Output, args: ["swipedLeft"] }], swipedRight: [{ type: i0.Output, args: ["swipedRight"] }] } });
1104
1152
 
1105
1153
  /**
@@ -7921,5 +7969,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
7921
7969
  * Generated bundle index. Do not edit.
7922
7970
  */
7923
7971
 
7924
- export { BadgeComponent, BadgeWrapperComponent, BottomNavigationComponent, ButtonComponent, ButtonGroupComponent, ButtonToggleGroupComponent, COUNTRY_OPTIONS, CardComponent, ChatComponent, ChatInputComponent, ChatMessageComponent, CheckboxComponent, ColorPickerCompactComponent, ColorPickerComponent, ConfirmDialogComponent, ConfirmDialogService, DEFAULT_COLOR_PRESETS, DrawerComponent, DrawerService, DropdownComponent, IconComponent, InputComponent, InspectorComponent, MASK_PRESETS, MaskDirective, MaskEngine, MenuComponent, ModalComponent, NavbarComponent, PaginationComponent, PhoneInputComponent, PopoverComponent, RadioButtonComponent, STUDIO_CONFIG, SelectComponent, SidebarComponent, StudioConfigService, SwitchComponent, TableColumnDirective, TableComponent, TabsComponent, TextareaComponent, ThemeSwitchComponent, ToastComponent, ToastService, TooltipComponent, classNames, isSafeUrl, loadGoogleFont, loadGoogleFonts, provideStudioConfig, provideStudioIcons, sanitizeUrl, withConfigDefault };
7972
+ export { BadgeComponent, BadgeWrapperComponent, BottomNavigationComponent, ButtonComponent, ButtonGroupComponent, ButtonToggleGroupComponent, COUNTRY_OPTIONS, CardComponent, ChatComponent, ChatInputComponent, ChatMessageComponent, CheckboxComponent, ColorPickerCompactComponent, ColorPickerComponent, ConfirmDialogComponent, ConfirmDialogService, DEFAULT_COLOR_PRESETS, DrawerComponent, DrawerService, DropdownComponent, IconComponent, InputComponent, InspectorComponent, MASK_PRESETS, MaskDirective, MaskEngine, MenuComponent, ModalComponent, NavbarComponent, PaginationComponent, PhoneInputComponent, PopoverComponent, RadioButtonComponent, STUDIO_CONFIG, SelectComponent, SidebarComponent, SignalStore, StudioConfigService, SwitchComponent, TableColumnDirective, TableComponent, TabsComponent, TextareaComponent, ThemeSwitchComponent, ToastComponent, ToastService, TooltipComponent, classNames, isSafeUrl, loadGoogleFont, loadGoogleFonts, provideStudioConfig, provideStudioIcons, sanitizeUrl, withConfigDefault };
7925
7973
  //# sourceMappingURL=eduboxpro-studio.mjs.map