@eduboxpro/studio 0.1.12 → 0.1.14

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,9 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, EnvironmentProviders, TemplateRef, ElementRef, WritableSignal, OnInit, Signal } from '@angular/core';
2
+ import { InjectionToken, EnvironmentProviders, AfterViewInit, ElementRef, TemplateRef, WritableSignal, OnInit, Signal } from '@angular/core';
3
3
  import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
4
4
  import { icons } from 'lucide-angular';
5
5
  import { Params, IsActiveMatchOptions } from '@angular/router';
6
+ import { Placement } from '@floating-ui/dom';
6
7
 
7
8
  /**
8
9
  * Theme mode: light or dark
@@ -185,6 +186,16 @@ interface CheckboxDefaultsConfig {
185
186
  radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
186
187
  labelPosition?: 'left' | 'right';
187
188
  }
189
+ /**
190
+ * RadioButton component defaults configuration
191
+ */
192
+ interface RadioButtonDefaultsConfig {
193
+ size?: 'sm' | 'md' | 'lg';
194
+ color?: 'primary' | 'secondary' | 'success' | 'error';
195
+ variant?: 'default' | 'outlined' | 'filled';
196
+ radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
197
+ labelPosition?: 'left' | 'right';
198
+ }
188
199
  /**
189
200
  * Textarea component defaults configuration
190
201
  */
@@ -276,6 +287,67 @@ interface SidebarDefaultsConfig {
276
287
  showFooter?: boolean;
277
288
  showCloseButton?: boolean;
278
289
  }
290
+ /**
291
+ * ColorPicker component defaults configuration
292
+ */
293
+ interface ColorPickerDefaultsConfig {
294
+ variant?: 'inline' | 'popover' | 'input';
295
+ size?: 'sm' | 'md' | 'lg';
296
+ format?: 'hex' | 'rgb' | 'hsl';
297
+ showAlpha?: boolean;
298
+ showPresets?: boolean;
299
+ showFormatToggle?: boolean;
300
+ showCopyButton?: boolean;
301
+ }
302
+ /**
303
+ * Popover component defaults configuration
304
+ */
305
+ interface PopoverDefaultsConfig {
306
+ position?: 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end';
307
+ trigger?: 'click' | 'hover' | 'focus' | 'manual';
308
+ variant?: 'default' | 'bordered' | 'shadow' | 'minimal';
309
+ size?: 'sm' | 'md' | 'lg';
310
+ animation?: 'fade' | 'scale' | 'slide' | 'none';
311
+ }
312
+ /**
313
+ * Tooltip component defaults configuration
314
+ */
315
+ interface TooltipDefaultsConfig {
316
+ position?: 'top' | 'bottom' | 'left' | 'right';
317
+ trigger?: 'hover' | 'focus' | 'click';
318
+ hoverDelay?: number;
319
+ }
320
+ /**
321
+ * Dropdown component defaults configuration
322
+ */
323
+ interface DropdownDefaultsConfig {
324
+ trigger?: 'click' | 'hover';
325
+ position?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'left-start' | 'right-start';
326
+ width?: string;
327
+ minWidth?: string;
328
+ }
329
+ /**
330
+ * Tabs component defaults configuration
331
+ */
332
+ interface TabsDefaultsConfig {
333
+ variant?: 'line' | 'pills' | 'enclosed';
334
+ size?: 'sm' | 'md' | 'lg';
335
+ orientation?: 'horizontal' | 'vertical';
336
+ }
337
+ /**
338
+ * Modal component defaults configuration
339
+ */
340
+ interface ModalDefaultsConfig {
341
+ size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
342
+ variant?: 'default' | 'bordered' | 'minimal';
343
+ animation?: 'fade' | 'scale' | 'slide-down' | 'none';
344
+ position?: 'center' | 'top' | 'bottom';
345
+ closeOnOverlayClick?: boolean;
346
+ closeOnEscape?: boolean;
347
+ showHeader?: boolean;
348
+ showFooter?: boolean;
349
+ showCloseButton?: boolean;
350
+ }
279
351
  /**
280
352
  * Components defaults configuration
281
353
  */
@@ -285,12 +357,19 @@ interface ComponentsConfig {
285
357
  switch?: SwitchDefaultsConfig;
286
358
  input?: InputDefaultsConfig;
287
359
  checkbox?: CheckboxDefaultsConfig;
360
+ radioButton?: RadioButtonDefaultsConfig;
288
361
  textarea?: TextareaDefaultsConfig;
289
362
  buttonGroup?: ButtonGroupDefaultsConfig;
290
363
  buttonToggleGroup?: ButtonToggleGroupDefaultsConfig;
291
364
  select?: SelectDefaultsConfig;
292
365
  drawer?: DrawerDefaultsConfig;
293
366
  sidebar?: SidebarDefaultsConfig;
367
+ colorPicker?: ColorPickerDefaultsConfig;
368
+ popover?: PopoverDefaultsConfig;
369
+ tooltip?: TooltipDefaultsConfig;
370
+ dropdown?: DropdownDefaultsConfig;
371
+ tabs?: TabsDefaultsConfig;
372
+ modal?: ModalDefaultsConfig;
294
373
  }
295
374
  /**
296
375
  * Main Studio configuration interface
@@ -662,6 +741,134 @@ type CheckboxColor = 'primary' | 'secondary' | 'success' | 'error';
662
741
  type CheckboxVariant = 'default' | 'outlined' | 'filled';
663
742
  type CheckboxRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';
664
743
 
744
+ type ColorFormat = 'hex' | 'rgb' | 'hsl';
745
+ interface RGB {
746
+ r: number;
747
+ g: number;
748
+ b: number;
749
+ }
750
+ interface HSL {
751
+ h: number;
752
+ s: number;
753
+ l: number;
754
+ }
755
+ interface ColorValue {
756
+ hex: string;
757
+ rgb: RGB;
758
+ hsl: HSL;
759
+ alpha: number;
760
+ }
761
+ interface ColorPreset {
762
+ label?: string;
763
+ value: string;
764
+ description?: string;
765
+ }
766
+ interface ColorSwatchGroup {
767
+ label: string;
768
+ colors: ColorPreset[];
769
+ }
770
+ type ColorPickerVariant = 'inline' | 'popover' | 'input';
771
+ type ColorPickerSize = 'sm' | 'md' | 'lg';
772
+
773
+ declare class ColorPickerComponent implements ControlValueAccessor, AfterViewInit {
774
+ private readonly configService;
775
+ private readonly pickerDefaults;
776
+ protected readonly colorAreaCanvas: _angular_core.Signal<ElementRef<HTMLCanvasElement> | undefined>;
777
+ variantInput: _angular_core.InputSignal<ColorPickerVariant | undefined>;
778
+ sizeInput: _angular_core.InputSignal<ColorPickerSize | undefined>;
779
+ variant: _angular_core.Signal<"inline" | "popover" | "input">;
780
+ size: _angular_core.Signal<"sm" | "md" | "lg">;
781
+ format: _angular_core.InputSignal<ColorFormat>;
782
+ showAlpha: _angular_core.InputSignal<boolean>;
783
+ showPresets: _angular_core.InputSignal<boolean>;
784
+ showFormatToggle: _angular_core.InputSignal<boolean>;
785
+ showCopyButton: _angular_core.InputSignal<boolean>;
786
+ presets: _angular_core.InputSignal<ColorPreset[] | ColorSwatchGroup[] | undefined>;
787
+ label: _angular_core.InputSignal<string | undefined>;
788
+ hint: _angular_core.InputSignal<string | undefined>;
789
+ required: _angular_core.InputSignal<boolean>;
790
+ error: _angular_core.InputSignal<boolean>;
791
+ errorMessage: _angular_core.InputSignal<string | undefined>;
792
+ disabled: _angular_core.InputSignal<boolean>;
793
+ readonly: _angular_core.InputSignal<boolean>;
794
+ colorChange: _angular_core.OutputEmitterRef<string>;
795
+ colorValueChange: _angular_core.OutputEmitterRef<ColorValue>;
796
+ copied: _angular_core.OutputEmitterRef<string>;
797
+ protected currentColor: _angular_core.WritableSignal<ColorValue>;
798
+ protected hue: _angular_core.WritableSignal<number>;
799
+ protected saturation: _angular_core.WritableSignal<number>;
800
+ protected lightness: _angular_core.WritableSignal<number>;
801
+ protected alpha: _angular_core.WritableSignal<number>;
802
+ protected currentFormat: _angular_core.WritableSignal<ColorFormat>;
803
+ protected generatedId: string;
804
+ private onChange;
805
+ private onTouched;
806
+ private isDragging;
807
+ constructor();
808
+ ngAfterViewInit(): void;
809
+ protected displayColor: _angular_core.Signal<string>;
810
+ protected effectivePresets: _angular_core.Signal<ColorPreset[] | ColorSwatchGroup[]>;
811
+ protected hostClasses: _angular_core.Signal<string>;
812
+ writeValue(value: string): void;
813
+ registerOnChange(fn: (value: string) => void): void;
814
+ registerOnTouched(fn: () => void): void;
815
+ setDisabledState(isDisabled: boolean): void;
816
+ protected onHueChange(event: Event): void;
817
+ protected onAlphaChange(event: Event): void;
818
+ protected onColorAreaMouseDown(event: MouseEvent): void;
819
+ private updateColorArea;
820
+ private updateColor;
821
+ private renderColorArea;
822
+ protected toggleFormat(): void;
823
+ protected copyColor(): Promise<void>;
824
+ protected selectPreset(preset: ColorPreset): void;
825
+ protected isPresetGroup(item: any): item is ColorSwatchGroup;
826
+ private createColorValue;
827
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColorPickerComponent, never>;
828
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColorPickerComponent, "studio-color-picker", never, { "variantInput": { "alias": "variant"; "required": false; "isSignal": true; }; "sizeInput": { "alias": "size"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "showAlpha": { "alias": "showAlpha"; "required": false; "isSignal": true; }; "showPresets": { "alias": "showPresets"; "required": false; "isSignal": true; }; "showFormatToggle": { "alias": "showFormatToggle"; "required": false; "isSignal": true; }; "showCopyButton": { "alias": "showCopyButton"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "colorChange": "colorChange"; "colorValueChange": "colorValueChange"; "copied": "copied"; }, never, never, true, never>;
829
+ }
830
+
831
+ declare const DEFAULT_COLOR_PRESETS: ColorSwatchGroup[];
832
+
833
+ declare class ColorPickerCompactComponent implements ControlValueAccessor {
834
+ private readonly configService;
835
+ trigger: _angular_core.InputSignal<"click" | "hover">;
836
+ position: _angular_core.InputSignal<"left" | "right" | "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end">;
837
+ popoverWidth: _angular_core.InputSignal<string>;
838
+ showArrow: _angular_core.InputSignal<boolean>;
839
+ closeOnClickOutside: _angular_core.InputSignal<boolean>;
840
+ triggerSize: _angular_core.InputSignal<string>;
841
+ triggerRadius: _angular_core.InputSignal<string>;
842
+ showCurrentColor: _angular_core.InputSignal<boolean>;
843
+ format: _angular_core.InputSignal<"hex" | "rgb" | "hsl">;
844
+ showAlpha: _angular_core.InputSignal<boolean>;
845
+ showPresets: _angular_core.InputSignal<boolean>;
846
+ showFormatToggle: _angular_core.InputSignal<boolean>;
847
+ showCopyButton: _angular_core.InputSignal<boolean>;
848
+ presets: _angular_core.InputSignal<any[] | undefined>;
849
+ showFooter: _angular_core.InputSignal<boolean>;
850
+ applyLabel: _angular_core.InputSignal<string>;
851
+ cancelLabel: _angular_core.InputSignal<string>;
852
+ disabled: _angular_core.InputSignal<boolean>;
853
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
854
+ colorChange: _angular_core.OutputEmitterRef<string>;
855
+ protected currentValue: _angular_core.WritableSignal<string>;
856
+ protected tempValue: _angular_core.WritableSignal<string>;
857
+ protected isOpen: _angular_core.WritableSignal<boolean>;
858
+ protected hostClasses: _angular_core.Signal<string>;
859
+ private onChange;
860
+ private onTouched;
861
+ constructor();
862
+ protected handleApply(): void;
863
+ protected handleCancel(): void;
864
+ writeValue(value: string): void;
865
+ registerOnChange(fn: (value: string) => void): void;
866
+ registerOnTouched(fn: () => void): void;
867
+ setDisabledState(isDisabled: boolean): void;
868
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColorPickerCompactComponent, never>;
869
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColorPickerCompactComponent, "studio-color-picker-compact", never, { "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "popoverWidth": { "alias": "popoverWidth"; "required": false; "isSignal": true; }; "showArrow": { "alias": "showArrow"; "required": false; "isSignal": true; }; "closeOnClickOutside": { "alias": "closeOnClickOutside"; "required": false; "isSignal": true; }; "triggerSize": { "alias": "triggerSize"; "required": false; "isSignal": true; }; "triggerRadius": { "alias": "triggerRadius"; "required": false; "isSignal": true; }; "showCurrentColor": { "alias": "showCurrentColor"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "showAlpha": { "alias": "showAlpha"; "required": false; "isSignal": true; }; "showPresets": { "alias": "showPresets"; "required": false; "isSignal": true; }; "showFormatToggle": { "alias": "showFormatToggle"; "required": false; "isSignal": true; }; "showCopyButton": { "alias": "showCopyButton"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "colorChange": "colorChange"; }, never, never, true, never>;
870
+ }
871
+
665
872
  type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';
666
873
  type DrawerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
667
874
  type DrawerRadius = 'none' | 'sm' | 'md' | 'lg';
@@ -832,6 +1039,32 @@ declare class DrawerService {
832
1039
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<DrawerService>;
833
1040
  }
834
1041
 
1042
+ interface DropdownItem {
1043
+ id: string;
1044
+ label: string;
1045
+ icon?: string;
1046
+ disabled?: boolean;
1047
+ divider?: boolean;
1048
+ danger?: boolean;
1049
+ shortcut?: string;
1050
+ onClick?: () => void;
1051
+ }
1052
+ type DropdownPosition = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'left-start' | 'right-start';
1053
+
1054
+ declare class DropdownComponent {
1055
+ items: _angular_core.InputSignal<DropdownItem[]>;
1056
+ trigger: _angular_core.InputSignal<"click" | "hover">;
1057
+ position: _angular_core.InputSignal<DropdownPosition>;
1058
+ width: _angular_core.InputSignal<string>;
1059
+ minWidth: _angular_core.InputSignal<string>;
1060
+ itemClick: _angular_core.OutputEmitterRef<DropdownItem>;
1061
+ protected isOpen: _angular_core.WritableSignal<boolean>;
1062
+ protected hostClasses: _angular_core.Signal<string>;
1063
+ protected handleItemClick(item: DropdownItem): void;
1064
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownComponent, never>;
1065
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "studio-dropdown", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, ["*"], true, never>;
1066
+ }
1067
+
835
1068
  /**
836
1069
  * Icon component with Lucide icons support
837
1070
  *
@@ -1111,6 +1344,43 @@ declare class MenuComponent implements OnInit {
1111
1344
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuComponent, "studio-menu", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "defaultExpanded": { "alias": "defaultExpanded"; "required": false; "isSignal": true; }; "expandOnHover": { "alias": "expandOnHover"; "required": false; "isSignal": true; }; "activeItem": { "alias": "activeItem"; "required": false; "isSignal": true; }; "routerLinkActive": { "alias": "routerLinkActive"; "required": false; "isSignal": true; }; "selectOnNavigate": { "alias": "selectOnNavigate"; "required": false; "isSignal": true; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; "isSignal": true; }; "keyboardNavigation": { "alias": "keyboardNavigation"; "required": false; "isSignal": true; }; "arrowNavigation": { "alias": "arrowNavigation"; "required": false; "isSignal": true; }; "homeEndNavigation": { "alias": "homeEndNavigation"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "spacing": { "alias": "spacing"; "required": false; "isSignal": true; }; "showDividers": { "alias": "showDividers"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; "indentLevel": { "alias": "indentLevel"; "required": false; "isSignal": true; }; "showExpandIcon": { "alias": "showExpandIcon"; "required": false; "isSignal": true; }; "expandIconPosition": { "alias": "expandIconPosition"; "required": false; "isSignal": true; }; "expandIcon": { "alias": "expandIcon"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "itemClass": { "alias": "itemClass"; "required": false; "isSignal": true; }; "level": { "alias": "level"; "required": false; "isSignal": true; }; "parentExpanded": { "alias": "parentExpanded"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "itemSelect": "itemSelect"; "expandChange": "expandChange"; "activeChange": "activeChange"; }, never, never, true, never>;
1112
1345
  }
1113
1346
 
1347
+ type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
1348
+ type ModalVariant = 'default' | 'bordered' | 'minimal';
1349
+ type ModalAnimation = 'fade' | 'scale' | 'slide-down' | 'none';
1350
+ type ModalPosition = 'center' | 'top' | 'bottom';
1351
+
1352
+ declare class ModalComponent {
1353
+ private destroyRef;
1354
+ visible: _angular_core.ModelSignal<boolean>;
1355
+ title: _angular_core.InputSignal<string>;
1356
+ size: _angular_core.InputSignal<ModalSize>;
1357
+ variant: _angular_core.InputSignal<ModalVariant>;
1358
+ animation: _angular_core.InputSignal<ModalAnimation>;
1359
+ position: _angular_core.InputSignal<ModalPosition>;
1360
+ showHeader: _angular_core.InputSignal<boolean>;
1361
+ showFooter: _angular_core.InputSignal<boolean>;
1362
+ showCloseButton: _angular_core.InputSignal<boolean>;
1363
+ closeOnOverlayClick: _angular_core.InputSignal<boolean>;
1364
+ closeOnEscape: _angular_core.InputSignal<boolean>;
1365
+ visibleChange: _angular_core.OutputEmitterRef<boolean>;
1366
+ opened: _angular_core.OutputEmitterRef<void>;
1367
+ closed: _angular_core.OutputEmitterRef<void>;
1368
+ protected headerTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
1369
+ protected footerTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
1370
+ protected modalPanel: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
1371
+ protected hostClasses: _angular_core.Signal<string>;
1372
+ constructor();
1373
+ protected handleEscape(event: KeyboardEvent): void;
1374
+ protected handleOverlayClick(): void;
1375
+ close(): void;
1376
+ open(): void;
1377
+ private handleOpen;
1378
+ private handleClose;
1379
+ private setupFocusTrap;
1380
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
1381
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "studio-modal", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeOnOverlayClick": { "alias": "closeOnOverlayClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; }, { "visible": "visibleChange"; "visibleChange": "visibleChange"; "opened": "opened"; "closed": "closed"; }, ["headerTemplate", "footerTemplate"], ["*"], true, never>;
1382
+ }
1383
+
1114
1384
  type NavbarVariant = 'default' | 'filled' | 'outlined' | 'ghost' | 'transparent';
1115
1385
  type NavbarColor = 'primary' | 'secondary' | 'inherit';
1116
1386
  type NavbarSize = 'sm' | 'md' | 'lg';
@@ -1143,6 +1413,176 @@ declare class NavbarComponent {
1143
1413
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavbarComponent, "studio-navbar", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "shadow": { "alias": "shadow"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "customHeight": { "alias": "customHeight"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "blurBg": { "alias": "blurBg"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "navbarClick": "navbarClick"; }, never, ["[navbarLeft]", "[navbarCenter]", "[navbarRight]", "*"], true, never>;
1144
1414
  }
1145
1415
 
1416
+ type PopoverPosition = 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end';
1417
+ type PopoverTrigger = 'click' | 'hover' | 'focus' | 'manual';
1418
+ type PopoverVariant = 'default' | 'bordered' | 'shadow' | 'minimal';
1419
+ type PopoverSize = 'sm' | 'md' | 'lg';
1420
+ type PopoverAnimation = 'fade' | 'scale' | 'slide' | 'none';
1421
+ type PopoverWidth = string | number | 'auto' | 'trigger';
1422
+ type PopoverBoundary = 'viewport' | 'clippingParents';
1423
+ interface PopoverConfig {
1424
+ position?: PopoverPosition;
1425
+ trigger?: PopoverTrigger;
1426
+ variant?: PopoverVariant;
1427
+ size?: PopoverSize;
1428
+ animation?: PopoverAnimation;
1429
+ }
1430
+
1431
+ declare class PopoverComponent {
1432
+ private readonly document;
1433
+ private readonly destroyRef;
1434
+ private readonly injector;
1435
+ private readonly configService;
1436
+ private readonly popoverDefaults;
1437
+ protected readonly headerTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
1438
+ protected readonly footerTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
1439
+ protected readonly contentTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
1440
+ protected readonly triggerEl: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
1441
+ protected readonly panelEl: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
1442
+ protected readonly arrowEl: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
1443
+ id: _angular_core.InputSignal<string>;
1444
+ visible: _angular_core.ModelSignal<boolean>;
1445
+ disabled: _angular_core.InputSignal<boolean>;
1446
+ triggerInput: _angular_core.InputSignal<PopoverTrigger | undefined>;
1447
+ openDelay: _angular_core.InputSignal<number>;
1448
+ closeDelay: _angular_core.InputSignal<number>;
1449
+ trigger: _angular_core.Signal<"click" | "hover" | "focus" | "manual">;
1450
+ positionInput: _angular_core.InputSignal<PopoverPosition | undefined>;
1451
+ offset: _angular_core.InputSignal<number>;
1452
+ preventOverflow: _angular_core.InputSignal<boolean>;
1453
+ flipValue: _angular_core.InputSignal<boolean>;
1454
+ position: _angular_core.Signal<"left" | "right" | "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "left-start" | "left-end" | "right-start" | "right-end">;
1455
+ variantInput: _angular_core.InputSignal<PopoverVariant | undefined>;
1456
+ sizeInput: _angular_core.InputSignal<PopoverSize | undefined>;
1457
+ width: _angular_core.InputSignal<PopoverWidth>;
1458
+ minWidth: _angular_core.InputSignal<string | number | undefined>;
1459
+ maxWidth: _angular_core.InputSignal<string | number | undefined>;
1460
+ maxHeight: _angular_core.InputSignal<string | number | undefined>;
1461
+ padding: _angular_core.InputSignal<string | undefined>;
1462
+ variant: _angular_core.Signal<"default" | "minimal" | "bordered" | "shadow">;
1463
+ size: _angular_core.Signal<"sm" | "md" | "lg">;
1464
+ arrow: _angular_core.InputSignal<boolean>;
1465
+ arrowSize: _angular_core.InputSignal<number>;
1466
+ closeOnClickOutside: _angular_core.InputSignal<boolean>;
1467
+ closeOnEscape: _angular_core.InputSignal<boolean>;
1468
+ closeOnScroll: _angular_core.InputSignal<boolean>;
1469
+ showOverlay: _angular_core.InputSignal<boolean>;
1470
+ overlayOpacity: _angular_core.InputSignal<number>;
1471
+ animationInput: _angular_core.InputSignal<PopoverAnimation | undefined>;
1472
+ animationDuration: _angular_core.InputSignal<number>;
1473
+ animation: _angular_core.Signal<"none" | "fade" | "scale" | "slide">;
1474
+ showHeader: _angular_core.InputSignal<boolean>;
1475
+ showFooter: _angular_core.InputSignal<boolean>;
1476
+ showCloseButton: _angular_core.InputSignal<boolean>;
1477
+ content: _angular_core.InputSignal<string | undefined>;
1478
+ zIndex: _angular_core.InputSignal<number>;
1479
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
1480
+ role: _angular_core.InputSignal<string>;
1481
+ visibleChange: _angular_core.OutputEmitterRef<boolean>;
1482
+ opened: _angular_core.OutputEmitterRef<void>;
1483
+ closed: _angular_core.OutputEmitterRef<void>;
1484
+ positionChanged: _angular_core.OutputEmitterRef<Placement>;
1485
+ private cleanup?;
1486
+ private openTimeout?;
1487
+ private closeTimeout?;
1488
+ private isHovered;
1489
+ private isFocused;
1490
+ protected hostClasses: _angular_core.Signal<string>;
1491
+ constructor();
1492
+ private setupPositioning;
1493
+ private updatePosition;
1494
+ protected handleOpen(): void;
1495
+ protected handleClose(): void;
1496
+ private handleScrollBind;
1497
+ private handleScroll;
1498
+ open(): void;
1499
+ close(): void;
1500
+ toggle(): void;
1501
+ protected handleTriggerClick(): void;
1502
+ protected handleTriggerMouseEnter(): void;
1503
+ protected handleTriggerMouseLeave(): void;
1504
+ protected handlePanelMouseEnter(): void;
1505
+ protected handlePanelMouseLeave(): void;
1506
+ protected handleTriggerFocus(): void;
1507
+ protected handleTriggerBlur(): void;
1508
+ protected handleBackdropClick(): void;
1509
+ protected handleDocumentClick(event: MouseEvent): void;
1510
+ protected handleEscapeKey(event: KeyboardEvent): void;
1511
+ private clearTimeouts;
1512
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverComponent, never>;
1513
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopoverComponent, "studio-popover", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "triggerInput": { "alias": "trigger"; "required": false; "isSignal": true; }; "openDelay": { "alias": "openDelay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "positionInput": { "alias": "position"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "preventOverflow": { "alias": "preventOverflow"; "required": false; "isSignal": true; }; "flipValue": { "alias": "flipValue"; "required": false; "isSignal": true; }; "variantInput": { "alias": "variant"; "required": false; "isSignal": true; }; "sizeInput": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "arrow": { "alias": "arrow"; "required": false; "isSignal": true; }; "arrowSize": { "alias": "arrowSize"; "required": false; "isSignal": true; }; "closeOnClickOutside": { "alias": "closeOnClickOutside"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnScroll": { "alias": "closeOnScroll"; "required": false; "isSignal": true; }; "showOverlay": { "alias": "showOverlay"; "required": false; "isSignal": true; }; "overlayOpacity": { "alias": "overlayOpacity"; "required": false; "isSignal": true; }; "animationInput": { "alias": "animation"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; }, { "visible": "visibleChange"; "visibleChange": "visibleChange"; "opened": "opened"; "closed": "closed"; "positionChanged": "positionChanged"; }, ["headerTemplate", "footerTemplate", "contentTemplate"], ["*", "[popoverContent]"], true, never>;
1514
+ }
1515
+
1516
+ type RadioButtonSize = 'sm' | 'md' | 'lg';
1517
+ type RadioButtonColor = 'primary' | 'secondary' | 'success' | 'error';
1518
+ type RadioButtonVariant = 'default' | 'outlined' | 'filled';
1519
+ type RadioButtonRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';
1520
+ /**
1521
+ * RadioButton component for selecting a single option from a group
1522
+ *
1523
+ * @example
1524
+ * <studio-radio-button
1525
+ * [(ngModel)]="selectedValue"
1526
+ * [value]="'option1'"
1527
+ * label="Option 1"
1528
+ * name="options"
1529
+ * />
1530
+ */
1531
+ declare class RadioButtonComponent implements ControlValueAccessor {
1532
+ private readonly configService;
1533
+ private readonly radioDefaults;
1534
+ size: _angular_core.InputSignal<RadioButtonSize>;
1535
+ color: _angular_core.InputSignal<RadioButtonColor>;
1536
+ variant: _angular_core.InputSignal<RadioButtonVariant>;
1537
+ radius: _angular_core.InputSignal<RadioButtonRadius>;
1538
+ label: _angular_core.InputSignal<string | undefined>;
1539
+ labelPosition: _angular_core.InputSignal<"left" | "right">;
1540
+ description: _angular_core.InputSignal<string | undefined>;
1541
+ hint: _angular_core.InputSignal<string | undefined>;
1542
+ required: _angular_core.InputSignal<boolean>;
1543
+ error: _angular_core.InputSignal<boolean>;
1544
+ errorMessage: _angular_core.InputSignal<string | undefined>;
1545
+ disabled: _angular_core.InputSignal<boolean>;
1546
+ readonly: _angular_core.InputSignal<boolean>;
1547
+ name: _angular_core.InputSignal<string | undefined>;
1548
+ tabIndex: _angular_core.InputSignal<number>;
1549
+ value: _angular_core.InputSignal<any>;
1550
+ changed: _angular_core.OutputEmitterRef<any>;
1551
+ protected internalValue: _angular_core.WritableSignal<any>;
1552
+ protected isFocused: _angular_core.WritableSignal<boolean>;
1553
+ protected radioId: _angular_core.WritableSignal<string>;
1554
+ protected hostClasses: _angular_core.Signal<{
1555
+ [x: string]: boolean;
1556
+ 'studio-radio-wrapper': boolean;
1557
+ 'studio-radio-wrapper--disabled': boolean;
1558
+ 'studio-radio-wrapper--error': boolean;
1559
+ 'studio-radio-wrapper--focused': boolean;
1560
+ 'studio-radio-wrapper--label-left': boolean;
1561
+ }>;
1562
+ protected radioClasses: _angular_core.Signal<{
1563
+ [x: string]: boolean;
1564
+ 'studio-radio': boolean;
1565
+ 'studio-radio--checked': boolean;
1566
+ 'studio-radio--disabled': boolean;
1567
+ 'studio-radio--error': boolean;
1568
+ }>;
1569
+ protected showError: _angular_core.Signal<string | false | undefined>;
1570
+ protected showHint: _angular_core.Signal<string | false | undefined>;
1571
+ protected isChecked: _angular_core.Signal<boolean>;
1572
+ private onChange;
1573
+ private onTouched;
1574
+ writeValue(value: any): void;
1575
+ registerOnChange(fn: (value: any) => void): void;
1576
+ registerOnTouched(fn: () => void): void;
1577
+ setDisabledState(isDisabled: boolean): void;
1578
+ protected handleChange(event: Event): void;
1579
+ protected handleFocus(): void;
1580
+ protected handleBlur(): void;
1581
+ protected handleLabelClick(event: Event): void;
1582
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioButtonComponent, never>;
1583
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioButtonComponent, "studio-radio-button", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
1584
+ }
1585
+
1146
1586
  interface SelectOption<T = any> {
1147
1587
  label: string;
1148
1588
  value: T;
@@ -1329,8 +1769,9 @@ declare class SidebarComponent {
1329
1769
  *
1330
1770
  * @example
1331
1771
  * <studio-switch [(checked)]="isEnabled" label="Enable feature" />
1772
+ * <studio-switch [(ngModel)]="isEnabled" label="Enable feature" />
1332
1773
  */
1333
- declare class SwitchComponent {
1774
+ declare class SwitchComponent implements ControlValueAccessor {
1334
1775
  private readonly configService;
1335
1776
  private readonly switchDefaults;
1336
1777
  checked: _angular_core.ModelSignal<boolean>;
@@ -1344,8 +1785,15 @@ declare class SwitchComponent {
1344
1785
  size: _angular_core.Signal<"sm" | "md" | "lg">;
1345
1786
  color: _angular_core.Signal<"primary" | "secondary" | "success">;
1346
1787
  checkedChange: _angular_core.OutputEmitterRef<boolean>;
1788
+ protected internalChecked: _angular_core.WritableSignal<boolean>;
1789
+ private onChange;
1790
+ private onTouched;
1347
1791
  protected iconSize: _angular_core.Signal<number>;
1348
1792
  protected hostClasses: _angular_core.Signal<string>;
1793
+ writeValue(value: boolean): void;
1794
+ registerOnChange(fn: (value: boolean) => void): void;
1795
+ registerOnTouched(fn: () => void): void;
1796
+ setDisabledState(isDisabled: boolean): void;
1349
1797
  protected handleClick(): void;
1350
1798
  protected handleKeydown(event: KeyboardEvent): void;
1351
1799
  private toggle;
@@ -1353,6 +1801,32 @@ declare class SwitchComponent {
1353
1801
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SwitchComponent, "studio-switch", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "showIcons": { "alias": "showIcons"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "sizeInput": { "alias": "size"; "required": false; "isSignal": true; }; "colorInput": { "alias": "color"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "checkedChange": "checkedChange"; }, never, never, true, never>;
1354
1802
  }
1355
1803
 
1804
+ type TabsVariant = 'line' | 'pills' | 'enclosed';
1805
+ type TabsSize = 'sm' | 'md' | 'lg';
1806
+ type TabsOrientation = 'horizontal' | 'vertical';
1807
+
1808
+ interface TabItem {
1809
+ id: string;
1810
+ label: string;
1811
+ icon?: string;
1812
+ disabled?: boolean;
1813
+ content?: TemplateRef<any>;
1814
+ }
1815
+ declare class TabsComponent {
1816
+ tabs: _angular_core.InputSignal<TabItem[]>;
1817
+ activeTab: _angular_core.WritableSignal<string>;
1818
+ variant: _angular_core.InputSignal<TabsVariant>;
1819
+ size: _angular_core.InputSignal<TabsSize>;
1820
+ orientation: _angular_core.InputSignal<TabsOrientation>;
1821
+ tabChange: _angular_core.OutputEmitterRef<string>;
1822
+ protected hostClasses: _angular_core.Signal<string>;
1823
+ protected iconSize: _angular_core.Signal<number>;
1824
+ constructor();
1825
+ protected selectTab(tabId: string): void;
1826
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsComponent, never>;
1827
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "studio-tabs", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, { "tabChange": "tabChange"; }, never, ["*"], true, never>;
1828
+ }
1829
+
1356
1830
  /**
1357
1831
  * Textarea component for multi-line text input
1358
1832
  *
@@ -1571,6 +2045,21 @@ type TextareaSize = 'sm' | 'md' | 'lg';
1571
2045
  type TextareaColor = 'primary' | 'secondary' | 'success' | 'error';
1572
2046
  type TextareaRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';
1573
2047
 
2048
+ declare class TooltipComponent {
2049
+ content: _angular_core.InputSignal<string>;
2050
+ trigger: _angular_core.InputSignal<"click" | "hover" | "focus">;
2051
+ position: _angular_core.InputSignal<"left" | "right" | "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end">;
2052
+ openDelay: _angular_core.InputSignal<number>;
2053
+ closeDelay: _angular_core.InputSignal<number>;
2054
+ arrow: _angular_core.InputSignal<boolean>;
2055
+ arrowSize: _angular_core.InputSignal<number>;
2056
+ maxWidth: _angular_core.InputSignal<string>;
2057
+ disabled: _angular_core.InputSignal<boolean>;
2058
+ protected hostClasses: _angular_core.Signal<string>;
2059
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipComponent, never>;
2060
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipComponent, "studio-tooltip", never, { "content": { "alias": "content"; "required": true; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "openDelay": { "alias": "openDelay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "arrow": { "alias": "arrow"; "required": false; "isSignal": true; }; "arrowSize": { "alias": "arrowSize"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2061
+ }
2062
+
1574
2063
  interface ButtonToggleGroupOption {
1575
2064
  value: string | number;
1576
2065
  label: string;
@@ -1621,6 +2110,114 @@ declare class ButtonToggleGroupComponent implements ControlValueAccessor {
1621
2110
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonToggleGroupComponent, "studio-button-toggle-group", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "allowEmpty": { "alias": "allowEmpty"; "required": false; "isSignal": true; }; "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; }; "shadowInput": { "alias": "shadow"; "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; }; "showIcons": { "alias": "showIcons"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "valueChange": "valueChange"; }, never, never, true, never>;
1622
2111
  }
1623
2112
 
2113
+ interface InspectorData {
2114
+ sections: InspectorSection[];
2115
+ }
2116
+ interface InspectorSection {
2117
+ id: string;
2118
+ title: string;
2119
+ icon?: string;
2120
+ expanded?: boolean;
2121
+ groups?: InspectorGroup[];
2122
+ parameters?: InspectorParameter[];
2123
+ }
2124
+ interface InspectorGroup {
2125
+ id: string;
2126
+ label?: string;
2127
+ parameters: InspectorParameter[];
2128
+ }
2129
+ interface InspectorParameter {
2130
+ id: string;
2131
+ label: string;
2132
+ type: InspectorParameterType;
2133
+ value: any;
2134
+ default?: any;
2135
+ options?: InspectorOption[];
2136
+ hint?: string;
2137
+ disabled?: boolean;
2138
+ readonly?: boolean;
2139
+ min?: number;
2140
+ max?: number;
2141
+ step?: number;
2142
+ suffix?: string;
2143
+ placeholder?: string;
2144
+ maxLength?: number;
2145
+ metadata?: Record<string, any>;
2146
+ }
2147
+ interface InspectorOption {
2148
+ value: any;
2149
+ label: string;
2150
+ disabled?: boolean;
2151
+ icon?: string;
2152
+ }
2153
+ type InspectorParameterType = 'radio' | 'checkbox' | 'text' | 'number' | 'color' | 'select' | 'textarea' | 'boolean' | string;
2154
+ type InspectorGroupDivider = 'line' | 'space' | 'none';
2155
+ type InspectorSpacing = 'sm' | 'md' | 'lg';
2156
+ type InspectorComponentSize = 'sm' | 'md' | 'lg';
2157
+ type InspectorComponentVariant = 'outline' | 'filled';
2158
+
2159
+ declare class InspectorComponent implements ControlValueAccessor {
2160
+ private readonly configService;
2161
+ componentSize: _angular_core.InputSignal<InspectorComponentSize>;
2162
+ componentVariant: _angular_core.InputSignal<InspectorComponentVariant>;
2163
+ compact: _angular_core.InputSignal<boolean>;
2164
+ showIcons: _angular_core.InputSignal<boolean>;
2165
+ showDefaultIndicator: _angular_core.InputSignal<boolean>;
2166
+ collapsible: _angular_core.InputSignal<boolean>;
2167
+ expandedByDefault: _angular_core.InputSignal<boolean>;
2168
+ expandedSectionsInput: _angular_core.InputSignal<string[]>;
2169
+ showGroupLabels: _angular_core.InputSignal<boolean>;
2170
+ groupDivider: _angular_core.InputSignal<InspectorGroupDivider>;
2171
+ groupDividerSpacing: _angular_core.InputSignal<InspectorSpacing>;
2172
+ labelWidth: _angular_core.InputSignal<string>;
2173
+ fullWidth: _angular_core.InputSignal<boolean>;
2174
+ spacing: _angular_core.InputSignal<InspectorSpacing>;
2175
+ sectionTemplate: _angular_core.InputSignal<TemplateRef<any> | undefined>;
2176
+ parameterTemplates: _angular_core.InputSignal<Record<string, TemplateRef<any>> | undefined>;
2177
+ ariaLabel: _angular_core.InputSignal<string>;
2178
+ ariaDescribedBy: _angular_core.InputSignal<string | undefined>;
2179
+ sectionToggled: _angular_core.OutputEmitterRef<{
2180
+ id: string;
2181
+ expanded: boolean;
2182
+ }>;
2183
+ parameterFocused: _angular_core.OutputEmitterRef<{
2184
+ componentId: string;
2185
+ parameterId: string;
2186
+ }>;
2187
+ parameterBlurred: _angular_core.OutputEmitterRef<{
2188
+ componentId: string;
2189
+ parameterId: string;
2190
+ }>;
2191
+ protected values: _angular_core.WritableSignal<InspectorData | null>;
2192
+ protected expandedSections: _angular_core.WritableSignal<Set<string>>;
2193
+ private onChange;
2194
+ private onTouched;
2195
+ constructor();
2196
+ protected hostClasses: _angular_core.Signal<string>;
2197
+ protected isSectionExpanded(componentId: string): boolean;
2198
+ protected toggleSection(componentId: string): void;
2199
+ protected onParameterChange(componentId: string, groupId: string | null, parameterId: string, newValue: any): void;
2200
+ protected onCheckboxChange(componentId: string, groupId: string | null, parameterId: string, optionValue: any, checked: boolean): void;
2201
+ protected onRadioChange(componentId: string, groupId: string | null, parameterId: string, newValue: any): void;
2202
+ protected getRadioName(componentId: string, groupId: string | null, parameterId: string): string;
2203
+ protected isChecked(parameter: InspectorParameter, optionValue: any): boolean;
2204
+ protected isRadioChecked(parameter: InspectorParameter, optionValue: any): boolean;
2205
+ protected isDefault(parameter: InspectorParameter, optionValue: any): boolean;
2206
+ protected trackBySectionId(_: number, section: InspectorSection): string;
2207
+ protected trackByGroupId(_: number, group: {
2208
+ id: string;
2209
+ }): string;
2210
+ protected trackByParameterId(_: number, param: InspectorParameter): string;
2211
+ protected trackByOptionValue(_: number, option: InspectorOption): any;
2212
+ writeValue(value: InspectorData | null): void;
2213
+ registerOnChange(fn: (value: InspectorData | null) => void): void;
2214
+ registerOnTouched(fn: () => void): void;
2215
+ setDisabledState(_: boolean): void;
2216
+ private initializeExpandedSections;
2217
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InspectorComponent, never>;
2218
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InspectorComponent, "studio-inspector", never, { "componentSize": { "alias": "componentSize"; "required": false; "isSignal": true; }; "componentVariant": { "alias": "componentVariant"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "showIcons": { "alias": "showIcons"; "required": false; "isSignal": true; }; "showDefaultIndicator": { "alias": "showDefaultIndicator"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "expandedByDefault": { "alias": "expandedByDefault"; "required": false; "isSignal": true; }; "expandedSectionsInput": { "alias": "expandedSections"; "required": false; "isSignal": true; }; "showGroupLabels": { "alias": "showGroupLabels"; "required": false; "isSignal": true; }; "groupDivider": { "alias": "groupDivider"; "required": false; "isSignal": true; }; "groupDividerSpacing": { "alias": "groupDividerSpacing"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "spacing": { "alias": "spacing"; "required": false; "isSignal": true; }; "sectionTemplate": { "alias": "sectionTemplate"; "required": false; "isSignal": true; }; "parameterTemplates": { "alias": "parameterTemplates"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "sectionToggled": "sectionToggled"; "parameterFocused": "parameterFocused"; "parameterBlurred": "parameterBlurred"; }, never, never, true, never>;
2219
+ }
2220
+
1624
2221
  /**
1625
2222
  * Theme toggle switch with sun/moon icons
1626
2223
  *
@@ -1810,5 +2407,5 @@ declare function loadGoogleFonts(fonts: Array<{
1810
2407
  display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';
1811
2408
  }>): void;
1812
2409
 
1813
- export { BadgeComponent, BadgeWrapperComponent, ButtonComponent, ButtonGroupComponent, ButtonToggleGroupComponent, CheckboxComponent, DrawerComponent, DrawerService, IconComponent, InputComponent, MASK_PRESETS, MaskDirective, MaskEngine, MenuComponent, NavbarComponent, STUDIO_CONFIG, SelectComponent, SidebarComponent, StudioConfigService, SwitchComponent, TextareaComponent, ThemeSwitchComponent, classNames, isSafeUrl, loadGoogleFont, loadGoogleFonts, provideStudioConfig, provideStudioIcons, sanitizeUrl, withConfigDefault };
1814
- export type { BadgeColor, BadgeDefaultsConfig, BadgeIconPosition, BadgeRadius, BadgeSize, BadgeVariant, BadgeWrapperPosition, BadgeWrapperSize, ButtonDefaultsConfig, ButtonGroupDefaultsConfig, ButtonToggleGroupDefaultsConfig, ButtonToggleGroupOption, ButtonToggleGroupValue, CheckboxColor, CheckboxDefaultsConfig, CheckboxRadius, CheckboxSize, CheckboxVariant, ColorConfig, ComponentsConfig, DrawerAnimationEasing, DrawerCloseButtonPosition, DrawerConfig, DrawerDefaultsConfig, DrawerPosition, DrawerRadius, DrawerRole, DrawerShadowSize, DrawerSize, InputDefaultsConfig, InputMode, InputType, MaskConfig, MaskPreset, MaskResult, MaskToken, MenuColor, MenuExpandEvent, MenuExpandIconPosition, MenuItem, MenuItemBadgeColor, MenuItemClickEvent, MenuItemCommandEvent, MenuItemIconPosition, MenuItemTarget, MenuItemTooltipPosition, MenuMode, MenuOrientation, MenuRadius, MenuSize, MenuSpacing, MenuVariant, NavbarColor, NavbarShadow, NavbarSize, NavbarVariant, SelectDefaultsConfig, SelectDisplayContext, SelectOption, SelectOptionGroup, SelectPosition, SelectSize, SelectVariant, SidebarConfig, SidebarDefaultsConfig, SidebarPosition, SidebarSize, SidebarVariant, StudioConfig, StudioThemeConfig, SwitchDefaultsConfig, TextareaColor, TextareaDefaultsConfig, TextareaRadius, TextareaSize, TextareaVariant, ThemeMode };
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 };