@eduboxpro/studio 0.1.11 → 0.1.13

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,5 +1,5 @@
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';
@@ -185,6 +185,16 @@ interface CheckboxDefaultsConfig {
185
185
  radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
186
186
  labelPosition?: 'left' | 'right';
187
187
  }
188
+ /**
189
+ * RadioButton component defaults configuration
190
+ */
191
+ interface RadioButtonDefaultsConfig {
192
+ size?: 'sm' | 'md' | 'lg';
193
+ color?: 'primary' | 'secondary' | 'success' | 'error';
194
+ variant?: 'default' | 'outlined' | 'filled';
195
+ radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
196
+ labelPosition?: 'left' | 'right';
197
+ }
188
198
  /**
189
199
  * Textarea component defaults configuration
190
200
  */
@@ -257,6 +267,37 @@ interface DrawerDefaultsConfig {
257
267
  blockScroll?: boolean;
258
268
  role?: 'dialog' | 'alertdialog';
259
269
  }
270
+ /**
271
+ * Sidebar component defaults configuration
272
+ */
273
+ interface SidebarDefaultsConfig {
274
+ position?: 'left' | 'right';
275
+ size?: 'sm' | 'md' | 'lg' | 'full';
276
+ variant?: 'default' | 'minimal' | 'compact';
277
+ modal?: boolean;
278
+ collapsible?: boolean;
279
+ defaultCollapsed?: boolean;
280
+ closeOnNavigate?: boolean;
281
+ closeOnBackdropClick?: boolean;
282
+ closeOnEscape?: boolean;
283
+ blockScroll?: boolean;
284
+ swipeToClose?: boolean;
285
+ showHeader?: boolean;
286
+ showFooter?: boolean;
287
+ showCloseButton?: boolean;
288
+ }
289
+ /**
290
+ * ColorPicker component defaults configuration
291
+ */
292
+ interface ColorPickerDefaultsConfig {
293
+ variant?: 'inline' | 'popover' | 'input';
294
+ size?: 'sm' | 'md' | 'lg';
295
+ format?: 'hex' | 'rgb' | 'hsl';
296
+ showAlpha?: boolean;
297
+ showPresets?: boolean;
298
+ showFormatToggle?: boolean;
299
+ showCopyButton?: boolean;
300
+ }
260
301
  /**
261
302
  * Components defaults configuration
262
303
  */
@@ -266,11 +307,14 @@ interface ComponentsConfig {
266
307
  switch?: SwitchDefaultsConfig;
267
308
  input?: InputDefaultsConfig;
268
309
  checkbox?: CheckboxDefaultsConfig;
310
+ radioButton?: RadioButtonDefaultsConfig;
269
311
  textarea?: TextareaDefaultsConfig;
270
312
  buttonGroup?: ButtonGroupDefaultsConfig;
271
313
  buttonToggleGroup?: ButtonToggleGroupDefaultsConfig;
272
314
  select?: SelectDefaultsConfig;
273
315
  drawer?: DrawerDefaultsConfig;
316
+ sidebar?: SidebarDefaultsConfig;
317
+ colorPicker?: ColorPickerDefaultsConfig;
274
318
  }
275
319
  /**
276
320
  * Main Studio configuration interface
@@ -332,21 +376,30 @@ declare class StudioConfigService {
332
376
  */
333
377
  declare function provideStudioConfig(config?: StudioConfig): EnvironmentProviders;
334
378
 
379
+ /**
380
+ * Badge component types
381
+ */
382
+ type BadgeVariant = 'solid' | 'outline' | 'soft' | 'dot';
383
+ type BadgeSize = 'sm' | 'md' | 'lg';
384
+ type BadgeColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';
385
+ type BadgeRadius = 'sm' | 'md' | 'lg' | 'full';
386
+ type BadgeIconPosition = 'left' | 'right';
387
+
335
388
  declare class BadgeComponent {
336
389
  private readonly configService;
337
390
  private readonly badgeDefaults;
338
- variantInput: _angular_core.InputSignal<"solid" | "outline" | "soft" | "dot" | undefined>;
339
- sizeInput: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
340
- colorInput: _angular_core.InputSignal<"primary" | "secondary" | "success" | "error" | "warning" | "info" | "neutral" | undefined>;
341
- radiusInput: _angular_core.InputSignal<"full" | "sm" | "md" | "lg" | undefined>;
391
+ variantInput: _angular_core.InputSignal<BadgeVariant | undefined>;
392
+ sizeInput: _angular_core.InputSignal<BadgeSize | undefined>;
393
+ colorInput: _angular_core.InputSignal<BadgeColor | undefined>;
394
+ radiusInput: _angular_core.InputSignal<BadgeRadius | undefined>;
342
395
  variant: _angular_core.Signal<"solid" | "outline" | "soft" | "dot">;
343
396
  size: _angular_core.Signal<"sm" | "md" | "lg">;
344
397
  color: _angular_core.Signal<"primary" | "secondary" | "success" | "error" | "warning" | "info" | "neutral">;
345
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg">;
398
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "full">;
346
399
  icon: _angular_core.InputSignal<string | undefined>;
347
- iconPosition: _angular_core.InputSignal<"left" | "right">;
400
+ iconPosition: _angular_core.InputSignal<BadgeIconPosition>;
348
401
  dot: _angular_core.InputSignal<boolean>;
349
- dotColor: _angular_core.InputSignal<"primary" | "secondary" | "success" | "error" | "warning" | "info" | "neutral" | undefined>;
402
+ dotColor: _angular_core.InputSignal<BadgeColor | undefined>;
350
403
  removable: _angular_core.InputSignal<boolean>;
351
404
  removed: _angular_core.OutputEmitterRef<void>;
352
405
  href: _angular_core.InputSignal<string | undefined>;
@@ -370,6 +423,38 @@ declare class BadgeComponent {
370
423
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "studio-badge", never, { "variantInput": { "alias": "variant"; "required": false; "isSignal": true; }; "sizeInput": { "alias": "size"; "required": false; "isSignal": true; }; "colorInput": { "alias": "color"; "required": false; "isSignal": true; }; "radiusInput": { "alias": "radius"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "dotColor": { "alias": "dotColor"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "showZero": { "alias": "showZero"; "required": false; "isSignal": true; }; "uppercase": { "alias": "uppercase"; "required": false; "isSignal": true; }; "bold": { "alias": "bold"; "required": false; "isSignal": true; }; "pulse": { "alias": "pulse"; "required": false; "isSignal": true; }; "autoColor": { "alias": "autoColor"; "required": false; "isSignal": true; }; }, { "removed": "removed"; "clicked": "clicked"; }, never, ["*"], true, never>;
371
424
  }
372
425
 
426
+ type BadgeWrapperPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
427
+ type BadgeWrapperSize = 'sm' | 'md' | 'lg';
428
+
429
+ /**
430
+ * BadgeWrapper component - Wraps content with a positioned badge
431
+ *
432
+ * @example
433
+ * <studio-badge-wrapper [count]="5" color="error">
434
+ * <studio-button variant="ghost">
435
+ * <studio-icon name="bell" />
436
+ * </studio-button>
437
+ * </studio-badge-wrapper>
438
+ */
439
+ declare class BadgeWrapperComponent {
440
+ count: _angular_core.InputSignal<string | number | undefined>;
441
+ content: _angular_core.InputSignal<string | undefined>;
442
+ variant: _angular_core.InputSignal<BadgeVariant>;
443
+ color: _angular_core.InputSignal<BadgeColor>;
444
+ size: _angular_core.InputSignal<BadgeWrapperSize>;
445
+ position: _angular_core.InputSignal<BadgeWrapperPosition>;
446
+ showZero: _angular_core.InputSignal<boolean>;
447
+ max: _angular_core.InputSignal<number>;
448
+ dot: _angular_core.InputSignal<boolean>;
449
+ overlap: _angular_core.InputSignal<boolean>;
450
+ class: _angular_core.InputSignal<string>;
451
+ protected hostClasses: _angular_core.Signal<string>;
452
+ protected badgeContent: _angular_core.Signal<string | undefined>;
453
+ protected shouldShowBadge: _angular_core.Signal<boolean>;
454
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeWrapperComponent, never>;
455
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeWrapperComponent, "studio-badge-wrapper", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "showZero": { "alias": "showZero"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "overlap": { "alias": "overlap"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
456
+ }
457
+
373
458
  /**
374
459
  * Button component with multiple variants, sizes, colors and states
375
460
  *
@@ -381,16 +466,16 @@ declare class BadgeComponent {
381
466
  declare class ButtonComponent {
382
467
  private readonly configService;
383
468
  private readonly buttonDefaults;
384
- variantInput: _angular_core.InputSignal<"ghost" | "solid" | "outline" | undefined>;
469
+ variantInput: _angular_core.InputSignal<"solid" | "outline" | "ghost" | undefined>;
385
470
  sizeInput: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
386
471
  colorInput: _angular_core.InputSignal<"primary" | "secondary" | "success" | "error" | "warning" | undefined>;
387
- radiusInput: _angular_core.InputSignal<"full" | "sm" | "md" | "lg" | "none" | "xl" | undefined>;
472
+ radiusInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "xl" | "full" | undefined>;
388
473
  shadowInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | undefined>;
389
474
  compactInput: _angular_core.InputSignal<boolean | undefined>;
390
- variant: _angular_core.Signal<"ghost" | "solid" | "outline">;
475
+ variant: _angular_core.Signal<"solid" | "outline" | "ghost">;
391
476
  size: _angular_core.Signal<"sm" | "md" | "lg">;
392
477
  color: _angular_core.Signal<"primary" | "secondary" | "success" | "error" | "warning">;
393
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "none" | "xl">;
478
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "xl" | "full">;
394
479
  shadow: _angular_core.Signal<"sm" | "md" | "lg" | "none">;
395
480
  compact: _angular_core.Signal<boolean>;
396
481
  disabled: _angular_core.InputSignal<boolean>;
@@ -419,14 +504,14 @@ declare class ButtonGroupComponent {
419
504
  private readonly groupDefaults;
420
505
  orientationInput: _angular_core.InputSignal<"vertical" | "horizontal" | undefined>;
421
506
  sizeInput: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
422
- variantInput: _angular_core.InputSignal<"ghost" | "solid" | "outline" | undefined>;
507
+ variantInput: _angular_core.InputSignal<"solid" | "outline" | "ghost" | undefined>;
423
508
  colorInput: _angular_core.InputSignal<"primary" | "secondary" | "success" | "error" | "warning" | undefined>;
424
- radiusInput: _angular_core.InputSignal<"full" | "sm" | "md" | "lg" | "none" | "xl" | undefined>;
509
+ radiusInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "xl" | "full" | undefined>;
425
510
  orientation: _angular_core.Signal<"vertical" | "horizontal">;
426
511
  size: _angular_core.Signal<"sm" | "md" | "lg" | undefined>;
427
- variant: _angular_core.Signal<"ghost" | "solid" | "outline" | undefined>;
512
+ variant: _angular_core.Signal<"solid" | "outline" | "ghost" | undefined>;
428
513
  color: _angular_core.Signal<"primary" | "secondary" | "success" | "error" | "warning" | undefined>;
429
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "none" | "xl" | undefined>;
514
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "xl" | "full" | undefined>;
430
515
  attached: _angular_core.InputSignal<boolean>;
431
516
  fullWidth: _angular_core.InputSignal<boolean>;
432
517
  disabled: _angular_core.InputSignal<boolean>;
@@ -601,6 +686,95 @@ type CheckboxColor = 'primary' | 'secondary' | 'success' | 'error';
601
686
  type CheckboxVariant = 'default' | 'outlined' | 'filled';
602
687
  type CheckboxRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';
603
688
 
689
+ type ColorFormat = 'hex' | 'rgb' | 'hsl';
690
+ interface RGB {
691
+ r: number;
692
+ g: number;
693
+ b: number;
694
+ }
695
+ interface HSL {
696
+ h: number;
697
+ s: number;
698
+ l: number;
699
+ }
700
+ interface ColorValue {
701
+ hex: string;
702
+ rgb: RGB;
703
+ hsl: HSL;
704
+ alpha: number;
705
+ }
706
+ interface ColorPreset {
707
+ label?: string;
708
+ value: string;
709
+ description?: string;
710
+ }
711
+ interface ColorSwatchGroup {
712
+ label: string;
713
+ colors: ColorPreset[];
714
+ }
715
+ type ColorPickerVariant = 'inline' | 'popover' | 'input';
716
+ type ColorPickerSize = 'sm' | 'md' | 'lg';
717
+
718
+ declare class ColorPickerComponent implements ControlValueAccessor, AfterViewInit {
719
+ private readonly configService;
720
+ private readonly pickerDefaults;
721
+ protected readonly colorAreaCanvas: _angular_core.Signal<ElementRef<HTMLCanvasElement> | undefined>;
722
+ variantInput: _angular_core.InputSignal<ColorPickerVariant | undefined>;
723
+ sizeInput: _angular_core.InputSignal<ColorPickerSize | undefined>;
724
+ variant: _angular_core.Signal<"inline" | "popover" | "input">;
725
+ size: _angular_core.Signal<"sm" | "md" | "lg">;
726
+ format: _angular_core.InputSignal<ColorFormat>;
727
+ showAlpha: _angular_core.InputSignal<boolean>;
728
+ showPresets: _angular_core.InputSignal<boolean>;
729
+ showFormatToggle: _angular_core.InputSignal<boolean>;
730
+ showCopyButton: _angular_core.InputSignal<boolean>;
731
+ presets: _angular_core.InputSignal<ColorPreset[] | ColorSwatchGroup[] | undefined>;
732
+ label: _angular_core.InputSignal<string | undefined>;
733
+ hint: _angular_core.InputSignal<string | undefined>;
734
+ required: _angular_core.InputSignal<boolean>;
735
+ error: _angular_core.InputSignal<boolean>;
736
+ errorMessage: _angular_core.InputSignal<string | undefined>;
737
+ disabled: _angular_core.InputSignal<boolean>;
738
+ readonly: _angular_core.InputSignal<boolean>;
739
+ colorChange: _angular_core.OutputEmitterRef<string>;
740
+ colorValueChange: _angular_core.OutputEmitterRef<ColorValue>;
741
+ copied: _angular_core.OutputEmitterRef<string>;
742
+ protected currentColor: _angular_core.WritableSignal<ColorValue>;
743
+ protected hue: _angular_core.WritableSignal<number>;
744
+ protected saturation: _angular_core.WritableSignal<number>;
745
+ protected lightness: _angular_core.WritableSignal<number>;
746
+ protected alpha: _angular_core.WritableSignal<number>;
747
+ protected currentFormat: _angular_core.WritableSignal<ColorFormat>;
748
+ protected generatedId: string;
749
+ private onChange;
750
+ private onTouched;
751
+ private isDragging;
752
+ constructor();
753
+ ngAfterViewInit(): void;
754
+ protected displayColor: _angular_core.Signal<string>;
755
+ protected effectivePresets: _angular_core.Signal<ColorPreset[] | ColorSwatchGroup[]>;
756
+ protected hostClasses: _angular_core.Signal<string>;
757
+ writeValue(value: string): void;
758
+ registerOnChange(fn: (value: string) => void): void;
759
+ registerOnTouched(fn: () => void): void;
760
+ setDisabledState(isDisabled: boolean): void;
761
+ protected onHueChange(event: Event): void;
762
+ protected onAlphaChange(event: Event): void;
763
+ protected onColorAreaMouseDown(event: MouseEvent): void;
764
+ private updateColorArea;
765
+ private updateColor;
766
+ private renderColorArea;
767
+ protected toggleFormat(): void;
768
+ protected copyColor(): Promise<void>;
769
+ protected selectPreset(preset: ColorPreset): void;
770
+ protected isPresetGroup(item: any): item is ColorSwatchGroup;
771
+ private createColorValue;
772
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColorPickerComponent, never>;
773
+ 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>;
774
+ }
775
+
776
+ declare const DEFAULT_COLOR_PRESETS: ColorSwatchGroup[];
777
+
604
778
  type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';
605
779
  type DrawerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
606
780
  type DrawerRadius = 'none' | 'sm' | 'md' | 'lg';
@@ -646,7 +820,7 @@ declare class DrawerComponent {
646
820
  customWidth: _angular_core.InputSignal<string | undefined>;
647
821
  customHeight: _angular_core.InputSignal<string | undefined>;
648
822
  position: _angular_core.Signal<"left" | "right" | "top" | "bottom">;
649
- size: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "xl">;
823
+ size: _angular_core.Signal<"sm" | "md" | "lg" | "xl" | "full">;
650
824
  modalInput: _angular_core.InputSignal<boolean | undefined>;
651
825
  closeOnEscapeInput: _angular_core.InputSignal<boolean | undefined>;
652
826
  closeOnBackdropClickInput: _angular_core.InputSignal<boolean | undefined>;
@@ -836,12 +1010,12 @@ declare class InputComponent implements ControlValueAccessor {
836
1010
  private readonly configService;
837
1011
  private readonly inputDefaults;
838
1012
  protected readonly inputEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
839
- variantInput: _angular_core.InputSignal<"filled" | "outline" | "underline" | undefined>;
1013
+ variantInput: _angular_core.InputSignal<"outline" | "filled" | "underline" | undefined>;
840
1014
  sizeInput: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
841
- radiusInput: _angular_core.InputSignal<"full" | "sm" | "md" | "lg" | "none" | undefined>;
842
- variant: _angular_core.Signal<"filled" | "outline" | "underline">;
1015
+ radiusInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "full" | undefined>;
1016
+ variant: _angular_core.Signal<"outline" | "filled" | "underline">;
843
1017
  size: _angular_core.Signal<"sm" | "md" | "lg">;
844
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "none">;
1018
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "full">;
845
1019
  disabled: _angular_core.InputSignal<boolean>;
846
1020
  readonly: _angular_core.InputSignal<boolean>;
847
1021
  loading: _angular_core.InputSignal<boolean>;
@@ -994,7 +1168,7 @@ declare class MenuComponent implements OnInit {
994
1168
  animated: _angular_core.InputSignal<boolean>;
995
1169
  animationDuration: _angular_core.InputSignal<number>;
996
1170
  ariaLabel: _angular_core.InputSignal<string | undefined>;
997
- role: _angular_core.InputSignal<"navigation" | "menu">;
1171
+ role: _angular_core.InputSignal<"menu" | "navigation">;
998
1172
  size: _angular_core.InputSignal<MenuSize>;
999
1173
  compact: _angular_core.InputSignal<boolean>;
1000
1174
  fullWidth: _angular_core.InputSignal<boolean>;
@@ -1050,6 +1224,108 @@ declare class MenuComponent implements OnInit {
1050
1224
  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>;
1051
1225
  }
1052
1226
 
1227
+ type NavbarVariant = 'default' | 'filled' | 'outlined' | 'ghost' | 'transparent';
1228
+ type NavbarColor = 'primary' | 'secondary' | 'inherit';
1229
+ type NavbarSize = 'sm' | 'md' | 'lg';
1230
+ type NavbarShadow = 'none' | 'sm' | 'md' | 'lg';
1231
+
1232
+ /**
1233
+ * Navbar component - Primitive component for navigation headers
1234
+ *
1235
+ * @example
1236
+ * <studio-navbar variant="filled" [sticky]="true">
1237
+ * <div navbarLeft>Logo</div>
1238
+ * <div navbarCenter>Search</div>
1239
+ * <div navbarRight>User menu</div>
1240
+ * </studio-navbar>
1241
+ */
1242
+ declare class NavbarComponent {
1243
+ variant: _angular_core.InputSignal<NavbarVariant>;
1244
+ color: _angular_core.InputSignal<NavbarColor>;
1245
+ shadow: _angular_core.InputSignal<NavbarShadow>;
1246
+ size: _angular_core.InputSignal<NavbarSize>;
1247
+ customHeight: _angular_core.InputSignal<number | null>;
1248
+ sticky: _angular_core.InputSignal<boolean>;
1249
+ blurBg: _angular_core.InputSignal<boolean>;
1250
+ bordered: _angular_core.InputSignal<boolean>;
1251
+ class: _angular_core.InputSignal<string>;
1252
+ navbarClick: _angular_core.OutputEmitterRef<MouseEvent>;
1253
+ protected hostClasses: _angular_core.Signal<string>;
1254
+ handleClick(event: MouseEvent): void;
1255
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavbarComponent, never>;
1256
+ 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>;
1257
+ }
1258
+
1259
+ type RadioButtonSize = 'sm' | 'md' | 'lg';
1260
+ type RadioButtonColor = 'primary' | 'secondary' | 'success' | 'error';
1261
+ type RadioButtonVariant = 'default' | 'outlined' | 'filled';
1262
+ type RadioButtonRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';
1263
+ /**
1264
+ * RadioButton component for selecting a single option from a group
1265
+ *
1266
+ * @example
1267
+ * <studio-radio-button
1268
+ * [(ngModel)]="selectedValue"
1269
+ * [value]="'option1'"
1270
+ * label="Option 1"
1271
+ * name="options"
1272
+ * />
1273
+ */
1274
+ declare class RadioButtonComponent implements ControlValueAccessor {
1275
+ private readonly configService;
1276
+ private readonly radioDefaults;
1277
+ size: _angular_core.InputSignal<RadioButtonSize>;
1278
+ color: _angular_core.InputSignal<RadioButtonColor>;
1279
+ variant: _angular_core.InputSignal<RadioButtonVariant>;
1280
+ radius: _angular_core.InputSignal<RadioButtonRadius>;
1281
+ label: _angular_core.InputSignal<string | undefined>;
1282
+ labelPosition: _angular_core.InputSignal<"left" | "right">;
1283
+ description: _angular_core.InputSignal<string | undefined>;
1284
+ hint: _angular_core.InputSignal<string | undefined>;
1285
+ required: _angular_core.InputSignal<boolean>;
1286
+ error: _angular_core.InputSignal<boolean>;
1287
+ errorMessage: _angular_core.InputSignal<string | undefined>;
1288
+ disabled: _angular_core.InputSignal<boolean>;
1289
+ readonly: _angular_core.InputSignal<boolean>;
1290
+ name: _angular_core.InputSignal<string | undefined>;
1291
+ tabIndex: _angular_core.InputSignal<number>;
1292
+ value: _angular_core.InputSignal<any>;
1293
+ changed: _angular_core.OutputEmitterRef<any>;
1294
+ protected internalValue: _angular_core.WritableSignal<any>;
1295
+ protected isFocused: _angular_core.WritableSignal<boolean>;
1296
+ protected radioId: _angular_core.WritableSignal<string>;
1297
+ protected hostClasses: _angular_core.Signal<{
1298
+ [x: string]: boolean;
1299
+ 'studio-radio-wrapper': boolean;
1300
+ 'studio-radio-wrapper--disabled': boolean;
1301
+ 'studio-radio-wrapper--error': boolean;
1302
+ 'studio-radio-wrapper--focused': boolean;
1303
+ 'studio-radio-wrapper--label-left': boolean;
1304
+ }>;
1305
+ protected radioClasses: _angular_core.Signal<{
1306
+ [x: string]: boolean;
1307
+ 'studio-radio': boolean;
1308
+ 'studio-radio--checked': boolean;
1309
+ 'studio-radio--disabled': boolean;
1310
+ 'studio-radio--error': boolean;
1311
+ }>;
1312
+ protected showError: _angular_core.Signal<string | false | undefined>;
1313
+ protected showHint: _angular_core.Signal<string | false | undefined>;
1314
+ protected isChecked: _angular_core.Signal<boolean>;
1315
+ private onChange;
1316
+ private onTouched;
1317
+ writeValue(value: any): void;
1318
+ registerOnChange(fn: (value: any) => void): void;
1319
+ registerOnTouched(fn: () => void): void;
1320
+ setDisabledState(isDisabled: boolean): void;
1321
+ protected handleChange(event: Event): void;
1322
+ protected handleFocus(): void;
1323
+ protected handleBlur(): void;
1324
+ protected handleLabelClick(event: Event): void;
1325
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioButtonComponent, never>;
1326
+ 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>;
1327
+ }
1328
+
1053
1329
  interface SelectOption<T = any> {
1054
1330
  label: string;
1055
1331
  value: T;
@@ -1080,10 +1356,10 @@ declare class SelectComponent<T = any> implements ControlValueAccessor {
1080
1356
  protected readonly dropdownEl: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
1081
1357
  variantInput: _angular_core.InputSignal<SelectVariant | undefined>;
1082
1358
  sizeInput: _angular_core.InputSignal<SelectSize | undefined>;
1083
- radiusInput: _angular_core.InputSignal<"full" | "sm" | "md" | "lg" | "none" | undefined>;
1084
- variant: _angular_core.Signal<"filled" | "outline" | "underline">;
1359
+ radiusInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "full" | undefined>;
1360
+ variant: _angular_core.Signal<"outline" | "filled" | "underline">;
1085
1361
  size: _angular_core.Signal<"sm" | "md" | "lg">;
1086
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "none">;
1362
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "full">;
1087
1363
  options: _angular_core.InputSignal<SelectOption<T>[] | SelectOptionGroup<T>[]>;
1088
1364
  placeholder: _angular_core.InputSignal<string>;
1089
1365
  multiple: _angular_core.InputSignal<boolean>;
@@ -1148,13 +1424,97 @@ declare class SelectComponent<T = any> implements ControlValueAccessor {
1148
1424
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent<any>, "studio-select", never, { "variantInput": { "alias": "variant"; "required": false; "isSignal": true; }; "sizeInput": { "alias": "size"; "required": false; "isSignal": true; }; "radiusInput": { "alias": "radius"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; "isSignal": true; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "searchChange": "searchChange"; "opened": "opened"; "closed": "closed"; "optionSelected": "optionSelected"; }, never, never, true, never>;
1149
1425
  }
1150
1426
 
1427
+ /**
1428
+ * Sidebar component types
1429
+ */
1430
+ type SidebarPosition = 'left' | 'right';
1431
+ type SidebarSize = 'sm' | 'md' | 'lg' | 'full';
1432
+ type SidebarVariant = 'default' | 'minimal' | 'compact';
1433
+ interface SidebarConfig {
1434
+ position?: SidebarPosition;
1435
+ size?: SidebarSize;
1436
+ variant?: SidebarVariant;
1437
+ collapsible?: boolean;
1438
+ defaultCollapsed?: boolean;
1439
+ modal?: boolean;
1440
+ closeOnNavigate?: boolean;
1441
+ showOverlay?: boolean;
1442
+ }
1443
+
1444
+ /**
1445
+ * Sidebar component - Navigation sidebar built on top of Drawer
1446
+ *
1447
+ * @example
1448
+ * <studio-sidebar [(visible)]="sidebarOpen">
1449
+ * <nav sidebarHeader>
1450
+ * <h2>Navigation</h2>
1451
+ * </nav>
1452
+ *
1453
+ * <studio-menu>
1454
+ * <studio-menu-item>Home</studio-menu-item>
1455
+ * <studio-menu-item>About</studio-menu-item>
1456
+ * </studio-menu>
1457
+ *
1458
+ * <div sidebarFooter>
1459
+ * <studio-button>Logout</studio-button>
1460
+ * </div>
1461
+ * </studio-sidebar>
1462
+ */
1463
+ declare class SidebarComponent {
1464
+ private readonly router;
1465
+ private readonly configService;
1466
+ private readonly sidebarDefaults;
1467
+ id: _angular_core.InputSignal<string>;
1468
+ visible: _angular_core.ModelSignal<boolean>;
1469
+ positionInput: _angular_core.InputSignal<SidebarPosition | undefined>;
1470
+ sizeInput: _angular_core.InputSignal<SidebarSize | undefined>;
1471
+ variantInput: _angular_core.InputSignal<SidebarVariant | undefined>;
1472
+ customWidth: _angular_core.InputSignal<string | undefined>;
1473
+ position: _angular_core.Signal<"left" | "right">;
1474
+ size: _angular_core.Signal<"sm" | "md" | "lg" | "full">;
1475
+ variant: _angular_core.Signal<"default" | "minimal" | "compact">;
1476
+ modalInput: _angular_core.InputSignal<boolean | undefined>;
1477
+ collapsibleInput: _angular_core.InputSignal<boolean | undefined>;
1478
+ defaultCollapsedInput: _angular_core.InputSignal<boolean | undefined>;
1479
+ closeOnNavigateInput: _angular_core.InputSignal<boolean | undefined>;
1480
+ closeOnBackdropClickInput: _angular_core.InputSignal<boolean | undefined>;
1481
+ closeOnEscapeInput: _angular_core.InputSignal<boolean | undefined>;
1482
+ blockScrollInput: _angular_core.InputSignal<boolean | undefined>;
1483
+ swipeToCloseInput: _angular_core.InputSignal<boolean | undefined>;
1484
+ modal: _angular_core.Signal<boolean>;
1485
+ collapsible: _angular_core.Signal<boolean>;
1486
+ defaultCollapsed: _angular_core.Signal<boolean>;
1487
+ closeOnNavigate: _angular_core.Signal<boolean>;
1488
+ closeOnBackdropClick: _angular_core.Signal<boolean>;
1489
+ closeOnEscape: _angular_core.Signal<boolean>;
1490
+ blockScroll: _angular_core.Signal<boolean>;
1491
+ swipeToClose: _angular_core.Signal<boolean>;
1492
+ header: _angular_core.InputSignal<string | undefined>;
1493
+ showHeaderInput: _angular_core.InputSignal<boolean | undefined>;
1494
+ showFooterInput: _angular_core.InputSignal<boolean | undefined>;
1495
+ showCloseButtonInput: _angular_core.InputSignal<boolean | undefined>;
1496
+ showHeader: _angular_core.Signal<boolean>;
1497
+ showFooter: _angular_core.Signal<boolean>;
1498
+ showCloseButton: _angular_core.Signal<boolean>;
1499
+ contentPadding: _angular_core.InputSignal<string | undefined>;
1500
+ contentGap: _angular_core.InputSignal<string | undefined>;
1501
+ background: _angular_core.InputSignal<string | undefined>;
1502
+ class: _angular_core.InputSignal<string>;
1503
+ protected hostClasses: _angular_core.Signal<string>;
1504
+ protected drawerSize: _angular_core.Signal<"sm" | "md" | "lg" | "xl" | "full">;
1505
+ constructor();
1506
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarComponent, never>;
1507
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarComponent, "studio-sidebar", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "positionInput": { "alias": "position"; "required": false; "isSignal": true; }; "sizeInput": { "alias": "size"; "required": false; "isSignal": true; }; "variantInput": { "alias": "variant"; "required": false; "isSignal": true; }; "customWidth": { "alias": "customWidth"; "required": false; "isSignal": true; }; "modalInput": { "alias": "modal"; "required": false; "isSignal": true; }; "collapsibleInput": { "alias": "collapsible"; "required": false; "isSignal": true; }; "defaultCollapsedInput": { "alias": "defaultCollapsed"; "required": false; "isSignal": true; }; "closeOnNavigateInput": { "alias": "closeOnNavigate"; "required": false; "isSignal": true; }; "closeOnBackdropClickInput": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscapeInput": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "blockScrollInput": { "alias": "blockScroll"; "required": false; "isSignal": true; }; "swipeToCloseInput": { "alias": "swipeToClose"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "showHeaderInput": { "alias": "showHeader"; "required": false; "isSignal": true; }; "showFooterInput": { "alias": "showFooter"; "required": false; "isSignal": true; }; "showCloseButtonInput": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "contentPadding": { "alias": "contentPadding"; "required": false; "isSignal": true; }; "contentGap": { "alias": "contentGap"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "visible": "visibleChange"; }, never, ["[sidebarHeader]", "*", "[sidebarFooter]"], true, never>;
1508
+ }
1509
+
1151
1510
  /**
1152
1511
  * Toggle switch component with customizable size and color
1153
1512
  *
1154
1513
  * @example
1155
1514
  * <studio-switch [(checked)]="isEnabled" label="Enable feature" />
1515
+ * <studio-switch [(ngModel)]="isEnabled" label="Enable feature" />
1156
1516
  */
1157
- declare class SwitchComponent {
1517
+ declare class SwitchComponent implements ControlValueAccessor {
1158
1518
  private readonly configService;
1159
1519
  private readonly switchDefaults;
1160
1520
  checked: _angular_core.ModelSignal<boolean>;
@@ -1168,8 +1528,15 @@ declare class SwitchComponent {
1168
1528
  size: _angular_core.Signal<"sm" | "md" | "lg">;
1169
1529
  color: _angular_core.Signal<"primary" | "secondary" | "success">;
1170
1530
  checkedChange: _angular_core.OutputEmitterRef<boolean>;
1531
+ protected internalChecked: _angular_core.WritableSignal<boolean>;
1532
+ private onChange;
1533
+ private onTouched;
1171
1534
  protected iconSize: _angular_core.Signal<number>;
1172
1535
  protected hostClasses: _angular_core.Signal<string>;
1536
+ writeValue(value: boolean): void;
1537
+ registerOnChange(fn: (value: boolean) => void): void;
1538
+ registerOnTouched(fn: () => void): void;
1539
+ setDisabledState(isDisabled: boolean): void;
1173
1540
  protected handleClick(): void;
1174
1541
  protected handleKeydown(event: KeyboardEvent): void;
1175
1542
  private toggle;
@@ -1230,7 +1597,7 @@ declare class TextareaComponent implements ControlValueAccessor {
1230
1597
  /**
1231
1598
  * Resize behavior
1232
1599
  */
1233
- resize: _angular_core.InputSignal<"vertical" | "horizontal" | "none" | "both">;
1600
+ resize: _angular_core.InputSignal<"none" | "vertical" | "horizontal" | "both">;
1234
1601
  /**
1235
1602
  * Maximum character length
1236
1603
  */
@@ -1415,15 +1782,15 @@ declare class ButtonToggleGroupComponent implements ControlValueAccessor {
1415
1782
  allowEmpty: _angular_core.InputSignal<boolean>;
1416
1783
  orientationInput: _angular_core.InputSignal<"vertical" | "horizontal" | undefined>;
1417
1784
  sizeInput: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
1418
- variantInput: _angular_core.InputSignal<"ghost" | "solid" | "outline" | undefined>;
1785
+ variantInput: _angular_core.InputSignal<"solid" | "outline" | "ghost" | undefined>;
1419
1786
  colorInput: _angular_core.InputSignal<"primary" | "secondary" | "success" | "error" | "warning" | undefined>;
1420
- radiusInput: _angular_core.InputSignal<"full" | "sm" | "md" | "lg" | "none" | "xl" | undefined>;
1787
+ radiusInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "xl" | "full" | undefined>;
1421
1788
  shadowInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | undefined>;
1422
1789
  orientation: _angular_core.Signal<"vertical" | "horizontal">;
1423
1790
  size: _angular_core.Signal<"sm" | "md" | "lg">;
1424
- variant: _angular_core.Signal<"ghost" | "solid" | "outline">;
1791
+ variant: _angular_core.Signal<"solid" | "outline" | "ghost">;
1425
1792
  color: _angular_core.Signal<"primary" | "secondary" | "success" | "error" | "warning">;
1426
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "none" | "xl">;
1793
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "xl" | "full">;
1427
1794
  shadow: _angular_core.Signal<"sm" | "md" | "lg" | "none">;
1428
1795
  attached: _angular_core.InputSignal<boolean>;
1429
1796
  fullWidth: _angular_core.InputSignal<boolean>;
@@ -1445,6 +1812,114 @@ declare class ButtonToggleGroupComponent implements ControlValueAccessor {
1445
1812
  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>;
1446
1813
  }
1447
1814
 
1815
+ interface InspectorData {
1816
+ sections: InspectorSection[];
1817
+ }
1818
+ interface InspectorSection {
1819
+ id: string;
1820
+ title: string;
1821
+ icon?: string;
1822
+ expanded?: boolean;
1823
+ groups?: InspectorGroup[];
1824
+ parameters?: InspectorParameter[];
1825
+ }
1826
+ interface InspectorGroup {
1827
+ id: string;
1828
+ label?: string;
1829
+ parameters: InspectorParameter[];
1830
+ }
1831
+ interface InspectorParameter {
1832
+ id: string;
1833
+ label: string;
1834
+ type: InspectorParameterType;
1835
+ value: any;
1836
+ default?: any;
1837
+ options?: InspectorOption[];
1838
+ hint?: string;
1839
+ disabled?: boolean;
1840
+ readonly?: boolean;
1841
+ min?: number;
1842
+ max?: number;
1843
+ step?: number;
1844
+ suffix?: string;
1845
+ placeholder?: string;
1846
+ maxLength?: number;
1847
+ metadata?: Record<string, any>;
1848
+ }
1849
+ interface InspectorOption {
1850
+ value: any;
1851
+ label: string;
1852
+ disabled?: boolean;
1853
+ icon?: string;
1854
+ }
1855
+ type InspectorParameterType = 'radio' | 'checkbox' | 'text' | 'number' | 'color' | 'select' | 'textarea' | 'boolean' | string;
1856
+ type InspectorGroupDivider = 'line' | 'space' | 'none';
1857
+ type InspectorSpacing = 'sm' | 'md' | 'lg';
1858
+ type InspectorComponentSize = 'sm' | 'md' | 'lg';
1859
+ type InspectorComponentVariant = 'outline' | 'filled';
1860
+
1861
+ declare class InspectorComponent implements ControlValueAccessor {
1862
+ private readonly configService;
1863
+ componentSize: _angular_core.InputSignal<InspectorComponentSize>;
1864
+ componentVariant: _angular_core.InputSignal<InspectorComponentVariant>;
1865
+ compact: _angular_core.InputSignal<boolean>;
1866
+ showIcons: _angular_core.InputSignal<boolean>;
1867
+ showDefaultIndicator: _angular_core.InputSignal<boolean>;
1868
+ collapsible: _angular_core.InputSignal<boolean>;
1869
+ expandedByDefault: _angular_core.InputSignal<boolean>;
1870
+ expandedSectionsInput: _angular_core.InputSignal<string[]>;
1871
+ showGroupLabels: _angular_core.InputSignal<boolean>;
1872
+ groupDivider: _angular_core.InputSignal<InspectorGroupDivider>;
1873
+ groupDividerSpacing: _angular_core.InputSignal<InspectorSpacing>;
1874
+ labelWidth: _angular_core.InputSignal<string>;
1875
+ fullWidth: _angular_core.InputSignal<boolean>;
1876
+ spacing: _angular_core.InputSignal<InspectorSpacing>;
1877
+ sectionTemplate: _angular_core.InputSignal<TemplateRef<any> | undefined>;
1878
+ parameterTemplates: _angular_core.InputSignal<Record<string, TemplateRef<any>> | undefined>;
1879
+ ariaLabel: _angular_core.InputSignal<string>;
1880
+ ariaDescribedBy: _angular_core.InputSignal<string | undefined>;
1881
+ sectionToggled: _angular_core.OutputEmitterRef<{
1882
+ id: string;
1883
+ expanded: boolean;
1884
+ }>;
1885
+ parameterFocused: _angular_core.OutputEmitterRef<{
1886
+ componentId: string;
1887
+ parameterId: string;
1888
+ }>;
1889
+ parameterBlurred: _angular_core.OutputEmitterRef<{
1890
+ componentId: string;
1891
+ parameterId: string;
1892
+ }>;
1893
+ protected values: _angular_core.WritableSignal<InspectorData | null>;
1894
+ protected expandedSections: _angular_core.WritableSignal<Set<string>>;
1895
+ private onChange;
1896
+ private onTouched;
1897
+ constructor();
1898
+ protected hostClasses: _angular_core.Signal<string>;
1899
+ protected isSectionExpanded(componentId: string): boolean;
1900
+ protected toggleSection(componentId: string): void;
1901
+ protected onParameterChange(componentId: string, groupId: string | null, parameterId: string, newValue: any): void;
1902
+ protected onCheckboxChange(componentId: string, groupId: string | null, parameterId: string, optionValue: any, checked: boolean): void;
1903
+ protected onRadioChange(componentId: string, groupId: string | null, parameterId: string, newValue: any): void;
1904
+ protected getRadioName(componentId: string, groupId: string | null, parameterId: string): string;
1905
+ protected isChecked(parameter: InspectorParameter, optionValue: any): boolean;
1906
+ protected isRadioChecked(parameter: InspectorParameter, optionValue: any): boolean;
1907
+ protected isDefault(parameter: InspectorParameter, optionValue: any): boolean;
1908
+ protected trackBySectionId(_: number, section: InspectorSection): string;
1909
+ protected trackByGroupId(_: number, group: {
1910
+ id: string;
1911
+ }): string;
1912
+ protected trackByParameterId(_: number, param: InspectorParameter): string;
1913
+ protected trackByOptionValue(_: number, option: InspectorOption): any;
1914
+ writeValue(value: InspectorData | null): void;
1915
+ registerOnChange(fn: (value: InspectorData | null) => void): void;
1916
+ registerOnTouched(fn: () => void): void;
1917
+ setDisabledState(_: boolean): void;
1918
+ private initializeExpandedSections;
1919
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InspectorComponent, never>;
1920
+ 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>;
1921
+ }
1922
+
1448
1923
  /**
1449
1924
  * Theme toggle switch with sun/moon icons
1450
1925
  *
@@ -1634,5 +2109,5 @@ declare function loadGoogleFonts(fonts: Array<{
1634
2109
  display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';
1635
2110
  }>): void;
1636
2111
 
1637
- export { BadgeComponent, ButtonComponent, ButtonGroupComponent, ButtonToggleGroupComponent, CheckboxComponent, DrawerComponent, DrawerService, IconComponent, InputComponent, MASK_PRESETS, MaskDirective, MaskEngine, MenuComponent, STUDIO_CONFIG, SelectComponent, StudioConfigService, SwitchComponent, TextareaComponent, ThemeSwitchComponent, classNames, isSafeUrl, loadGoogleFont, loadGoogleFonts, provideStudioConfig, provideStudioIcons, sanitizeUrl, withConfigDefault };
1638
- export type { BadgeDefaultsConfig, 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, SelectDefaultsConfig, SelectDisplayContext, SelectOption, SelectOptionGroup, SelectPosition, SelectSize, SelectVariant, StudioConfig, StudioThemeConfig, SwitchDefaultsConfig, TextareaColor, TextareaDefaultsConfig, TextareaRadius, TextareaSize, TextareaVariant, ThemeMode };
2112
+ export { BadgeComponent, BadgeWrapperComponent, ButtonComponent, ButtonGroupComponent, ButtonToggleGroupComponent, CheckboxComponent, ColorPickerComponent, DEFAULT_COLOR_PRESETS, DrawerComponent, DrawerService, IconComponent, InputComponent, InspectorComponent, MASK_PRESETS, MaskDirective, MaskEngine, MenuComponent, NavbarComponent, RadioButtonComponent, STUDIO_CONFIG, SelectComponent, SidebarComponent, StudioConfigService, SwitchComponent, TextareaComponent, ThemeSwitchComponent, classNames, isSafeUrl, loadGoogleFont, loadGoogleFonts, provideStudioConfig, provideStudioIcons, sanitizeUrl, withConfigDefault };
2113
+ 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, 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, NavbarColor, NavbarShadow, NavbarSize, NavbarVariant, RGB, RadioButtonColor, RadioButtonDefaultsConfig, RadioButtonRadius, RadioButtonSize, RadioButtonVariant, SelectDefaultsConfig, SelectDisplayContext, SelectOption, SelectOptionGroup, SelectPosition, SelectSize, SelectVariant, SidebarConfig, SidebarDefaultsConfig, SidebarPosition, SidebarSize, SidebarVariant, StudioConfig, StudioThemeConfig, SwitchDefaultsConfig, TextareaColor, TextareaDefaultsConfig, TextareaRadius, TextareaSize, TextareaVariant, ThemeMode };