@eduboxpro/studio 0.1.11 → 0.1.12

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
@@ -257,6 +257,25 @@ interface DrawerDefaultsConfig {
257
257
  blockScroll?: boolean;
258
258
  role?: 'dialog' | 'alertdialog';
259
259
  }
260
+ /**
261
+ * Sidebar component defaults configuration
262
+ */
263
+ interface SidebarDefaultsConfig {
264
+ position?: 'left' | 'right';
265
+ size?: 'sm' | 'md' | 'lg' | 'full';
266
+ variant?: 'default' | 'minimal' | 'compact';
267
+ modal?: boolean;
268
+ collapsible?: boolean;
269
+ defaultCollapsed?: boolean;
270
+ closeOnNavigate?: boolean;
271
+ closeOnBackdropClick?: boolean;
272
+ closeOnEscape?: boolean;
273
+ blockScroll?: boolean;
274
+ swipeToClose?: boolean;
275
+ showHeader?: boolean;
276
+ showFooter?: boolean;
277
+ showCloseButton?: boolean;
278
+ }
260
279
  /**
261
280
  * Components defaults configuration
262
281
  */
@@ -271,6 +290,7 @@ interface ComponentsConfig {
271
290
  buttonToggleGroup?: ButtonToggleGroupDefaultsConfig;
272
291
  select?: SelectDefaultsConfig;
273
292
  drawer?: DrawerDefaultsConfig;
293
+ sidebar?: SidebarDefaultsConfig;
274
294
  }
275
295
  /**
276
296
  * Main Studio configuration interface
@@ -332,21 +352,30 @@ declare class StudioConfigService {
332
352
  */
333
353
  declare function provideStudioConfig(config?: StudioConfig): EnvironmentProviders;
334
354
 
355
+ /**
356
+ * Badge component types
357
+ */
358
+ type BadgeVariant = 'solid' | 'outline' | 'soft' | 'dot';
359
+ type BadgeSize = 'sm' | 'md' | 'lg';
360
+ type BadgeColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';
361
+ type BadgeRadius = 'sm' | 'md' | 'lg' | 'full';
362
+ type BadgeIconPosition = 'left' | 'right';
363
+
335
364
  declare class BadgeComponent {
336
365
  private readonly configService;
337
366
  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>;
367
+ variantInput: _angular_core.InputSignal<BadgeVariant | undefined>;
368
+ sizeInput: _angular_core.InputSignal<BadgeSize | undefined>;
369
+ colorInput: _angular_core.InputSignal<BadgeColor | undefined>;
370
+ radiusInput: _angular_core.InputSignal<BadgeRadius | undefined>;
342
371
  variant: _angular_core.Signal<"solid" | "outline" | "soft" | "dot">;
343
372
  size: _angular_core.Signal<"sm" | "md" | "lg">;
344
373
  color: _angular_core.Signal<"primary" | "secondary" | "success" | "error" | "warning" | "info" | "neutral">;
345
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg">;
374
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "full">;
346
375
  icon: _angular_core.InputSignal<string | undefined>;
347
- iconPosition: _angular_core.InputSignal<"left" | "right">;
376
+ iconPosition: _angular_core.InputSignal<BadgeIconPosition>;
348
377
  dot: _angular_core.InputSignal<boolean>;
349
- dotColor: _angular_core.InputSignal<"primary" | "secondary" | "success" | "error" | "warning" | "info" | "neutral" | undefined>;
378
+ dotColor: _angular_core.InputSignal<BadgeColor | undefined>;
350
379
  removable: _angular_core.InputSignal<boolean>;
351
380
  removed: _angular_core.OutputEmitterRef<void>;
352
381
  href: _angular_core.InputSignal<string | undefined>;
@@ -370,6 +399,38 @@ declare class BadgeComponent {
370
399
  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
400
  }
372
401
 
402
+ type BadgeWrapperPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
403
+ type BadgeWrapperSize = 'sm' | 'md' | 'lg';
404
+
405
+ /**
406
+ * BadgeWrapper component - Wraps content with a positioned badge
407
+ *
408
+ * @example
409
+ * <studio-badge-wrapper [count]="5" color="error">
410
+ * <studio-button variant="ghost">
411
+ * <studio-icon name="bell" />
412
+ * </studio-button>
413
+ * </studio-badge-wrapper>
414
+ */
415
+ declare class BadgeWrapperComponent {
416
+ count: _angular_core.InputSignal<string | number | undefined>;
417
+ content: _angular_core.InputSignal<string | undefined>;
418
+ variant: _angular_core.InputSignal<BadgeVariant>;
419
+ color: _angular_core.InputSignal<BadgeColor>;
420
+ size: _angular_core.InputSignal<BadgeWrapperSize>;
421
+ position: _angular_core.InputSignal<BadgeWrapperPosition>;
422
+ showZero: _angular_core.InputSignal<boolean>;
423
+ max: _angular_core.InputSignal<number>;
424
+ dot: _angular_core.InputSignal<boolean>;
425
+ overlap: _angular_core.InputSignal<boolean>;
426
+ class: _angular_core.InputSignal<string>;
427
+ protected hostClasses: _angular_core.Signal<string>;
428
+ protected badgeContent: _angular_core.Signal<string | undefined>;
429
+ protected shouldShowBadge: _angular_core.Signal<boolean>;
430
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeWrapperComponent, never>;
431
+ 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>;
432
+ }
433
+
373
434
  /**
374
435
  * Button component with multiple variants, sizes, colors and states
375
436
  *
@@ -381,16 +442,16 @@ declare class BadgeComponent {
381
442
  declare class ButtonComponent {
382
443
  private readonly configService;
383
444
  private readonly buttonDefaults;
384
- variantInput: _angular_core.InputSignal<"ghost" | "solid" | "outline" | undefined>;
445
+ variantInput: _angular_core.InputSignal<"solid" | "outline" | "ghost" | undefined>;
385
446
  sizeInput: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
386
447
  colorInput: _angular_core.InputSignal<"primary" | "secondary" | "success" | "error" | "warning" | undefined>;
387
- radiusInput: _angular_core.InputSignal<"full" | "sm" | "md" | "lg" | "none" | "xl" | undefined>;
448
+ radiusInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "xl" | "full" | undefined>;
388
449
  shadowInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | undefined>;
389
450
  compactInput: _angular_core.InputSignal<boolean | undefined>;
390
- variant: _angular_core.Signal<"ghost" | "solid" | "outline">;
451
+ variant: _angular_core.Signal<"solid" | "outline" | "ghost">;
391
452
  size: _angular_core.Signal<"sm" | "md" | "lg">;
392
453
  color: _angular_core.Signal<"primary" | "secondary" | "success" | "error" | "warning">;
393
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "none" | "xl">;
454
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "xl" | "full">;
394
455
  shadow: _angular_core.Signal<"sm" | "md" | "lg" | "none">;
395
456
  compact: _angular_core.Signal<boolean>;
396
457
  disabled: _angular_core.InputSignal<boolean>;
@@ -419,14 +480,14 @@ declare class ButtonGroupComponent {
419
480
  private readonly groupDefaults;
420
481
  orientationInput: _angular_core.InputSignal<"vertical" | "horizontal" | undefined>;
421
482
  sizeInput: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
422
- variantInput: _angular_core.InputSignal<"ghost" | "solid" | "outline" | undefined>;
483
+ variantInput: _angular_core.InputSignal<"solid" | "outline" | "ghost" | undefined>;
423
484
  colorInput: _angular_core.InputSignal<"primary" | "secondary" | "success" | "error" | "warning" | undefined>;
424
- radiusInput: _angular_core.InputSignal<"full" | "sm" | "md" | "lg" | "none" | "xl" | undefined>;
485
+ radiusInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "xl" | "full" | undefined>;
425
486
  orientation: _angular_core.Signal<"vertical" | "horizontal">;
426
487
  size: _angular_core.Signal<"sm" | "md" | "lg" | undefined>;
427
- variant: _angular_core.Signal<"ghost" | "solid" | "outline" | undefined>;
488
+ variant: _angular_core.Signal<"solid" | "outline" | "ghost" | undefined>;
428
489
  color: _angular_core.Signal<"primary" | "secondary" | "success" | "error" | "warning" | undefined>;
429
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "none" | "xl" | undefined>;
490
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "xl" | "full" | undefined>;
430
491
  attached: _angular_core.InputSignal<boolean>;
431
492
  fullWidth: _angular_core.InputSignal<boolean>;
432
493
  disabled: _angular_core.InputSignal<boolean>;
@@ -646,7 +707,7 @@ declare class DrawerComponent {
646
707
  customWidth: _angular_core.InputSignal<string | undefined>;
647
708
  customHeight: _angular_core.InputSignal<string | undefined>;
648
709
  position: _angular_core.Signal<"left" | "right" | "top" | "bottom">;
649
- size: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "xl">;
710
+ size: _angular_core.Signal<"sm" | "md" | "lg" | "xl" | "full">;
650
711
  modalInput: _angular_core.InputSignal<boolean | undefined>;
651
712
  closeOnEscapeInput: _angular_core.InputSignal<boolean | undefined>;
652
713
  closeOnBackdropClickInput: _angular_core.InputSignal<boolean | undefined>;
@@ -836,12 +897,12 @@ declare class InputComponent implements ControlValueAccessor {
836
897
  private readonly configService;
837
898
  private readonly inputDefaults;
838
899
  protected readonly inputEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
839
- variantInput: _angular_core.InputSignal<"filled" | "outline" | "underline" | undefined>;
900
+ variantInput: _angular_core.InputSignal<"outline" | "filled" | "underline" | undefined>;
840
901
  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">;
902
+ radiusInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "full" | undefined>;
903
+ variant: _angular_core.Signal<"outline" | "filled" | "underline">;
843
904
  size: _angular_core.Signal<"sm" | "md" | "lg">;
844
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "none">;
905
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "full">;
845
906
  disabled: _angular_core.InputSignal<boolean>;
846
907
  readonly: _angular_core.InputSignal<boolean>;
847
908
  loading: _angular_core.InputSignal<boolean>;
@@ -994,7 +1055,7 @@ declare class MenuComponent implements OnInit {
994
1055
  animated: _angular_core.InputSignal<boolean>;
995
1056
  animationDuration: _angular_core.InputSignal<number>;
996
1057
  ariaLabel: _angular_core.InputSignal<string | undefined>;
997
- role: _angular_core.InputSignal<"navigation" | "menu">;
1058
+ role: _angular_core.InputSignal<"menu" | "navigation">;
998
1059
  size: _angular_core.InputSignal<MenuSize>;
999
1060
  compact: _angular_core.InputSignal<boolean>;
1000
1061
  fullWidth: _angular_core.InputSignal<boolean>;
@@ -1050,6 +1111,38 @@ declare class MenuComponent implements OnInit {
1050
1111
  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
1112
  }
1052
1113
 
1114
+ type NavbarVariant = 'default' | 'filled' | 'outlined' | 'ghost' | 'transparent';
1115
+ type NavbarColor = 'primary' | 'secondary' | 'inherit';
1116
+ type NavbarSize = 'sm' | 'md' | 'lg';
1117
+ type NavbarShadow = 'none' | 'sm' | 'md' | 'lg';
1118
+
1119
+ /**
1120
+ * Navbar component - Primitive component for navigation headers
1121
+ *
1122
+ * @example
1123
+ * <studio-navbar variant="filled" [sticky]="true">
1124
+ * <div navbarLeft>Logo</div>
1125
+ * <div navbarCenter>Search</div>
1126
+ * <div navbarRight>User menu</div>
1127
+ * </studio-navbar>
1128
+ */
1129
+ declare class NavbarComponent {
1130
+ variant: _angular_core.InputSignal<NavbarVariant>;
1131
+ color: _angular_core.InputSignal<NavbarColor>;
1132
+ shadow: _angular_core.InputSignal<NavbarShadow>;
1133
+ size: _angular_core.InputSignal<NavbarSize>;
1134
+ customHeight: _angular_core.InputSignal<number | null>;
1135
+ sticky: _angular_core.InputSignal<boolean>;
1136
+ blurBg: _angular_core.InputSignal<boolean>;
1137
+ bordered: _angular_core.InputSignal<boolean>;
1138
+ class: _angular_core.InputSignal<string>;
1139
+ navbarClick: _angular_core.OutputEmitterRef<MouseEvent>;
1140
+ protected hostClasses: _angular_core.Signal<string>;
1141
+ handleClick(event: MouseEvent): void;
1142
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavbarComponent, never>;
1143
+ 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
+ }
1145
+
1053
1146
  interface SelectOption<T = any> {
1054
1147
  label: string;
1055
1148
  value: T;
@@ -1080,10 +1173,10 @@ declare class SelectComponent<T = any> implements ControlValueAccessor {
1080
1173
  protected readonly dropdownEl: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
1081
1174
  variantInput: _angular_core.InputSignal<SelectVariant | undefined>;
1082
1175
  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">;
1176
+ radiusInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "full" | undefined>;
1177
+ variant: _angular_core.Signal<"outline" | "filled" | "underline">;
1085
1178
  size: _angular_core.Signal<"sm" | "md" | "lg">;
1086
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "none">;
1179
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "full">;
1087
1180
  options: _angular_core.InputSignal<SelectOption<T>[] | SelectOptionGroup<T>[]>;
1088
1181
  placeholder: _angular_core.InputSignal<string>;
1089
1182
  multiple: _angular_core.InputSignal<boolean>;
@@ -1148,6 +1241,89 @@ declare class SelectComponent<T = any> implements ControlValueAccessor {
1148
1241
  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
1242
  }
1150
1243
 
1244
+ /**
1245
+ * Sidebar component types
1246
+ */
1247
+ type SidebarPosition = 'left' | 'right';
1248
+ type SidebarSize = 'sm' | 'md' | 'lg' | 'full';
1249
+ type SidebarVariant = 'default' | 'minimal' | 'compact';
1250
+ interface SidebarConfig {
1251
+ position?: SidebarPosition;
1252
+ size?: SidebarSize;
1253
+ variant?: SidebarVariant;
1254
+ collapsible?: boolean;
1255
+ defaultCollapsed?: boolean;
1256
+ modal?: boolean;
1257
+ closeOnNavigate?: boolean;
1258
+ showOverlay?: boolean;
1259
+ }
1260
+
1261
+ /**
1262
+ * Sidebar component - Navigation sidebar built on top of Drawer
1263
+ *
1264
+ * @example
1265
+ * <studio-sidebar [(visible)]="sidebarOpen">
1266
+ * <nav sidebarHeader>
1267
+ * <h2>Navigation</h2>
1268
+ * </nav>
1269
+ *
1270
+ * <studio-menu>
1271
+ * <studio-menu-item>Home</studio-menu-item>
1272
+ * <studio-menu-item>About</studio-menu-item>
1273
+ * </studio-menu>
1274
+ *
1275
+ * <div sidebarFooter>
1276
+ * <studio-button>Logout</studio-button>
1277
+ * </div>
1278
+ * </studio-sidebar>
1279
+ */
1280
+ declare class SidebarComponent {
1281
+ private readonly router;
1282
+ private readonly configService;
1283
+ private readonly sidebarDefaults;
1284
+ id: _angular_core.InputSignal<string>;
1285
+ visible: _angular_core.ModelSignal<boolean>;
1286
+ positionInput: _angular_core.InputSignal<SidebarPosition | undefined>;
1287
+ sizeInput: _angular_core.InputSignal<SidebarSize | undefined>;
1288
+ variantInput: _angular_core.InputSignal<SidebarVariant | undefined>;
1289
+ customWidth: _angular_core.InputSignal<string | undefined>;
1290
+ position: _angular_core.Signal<"left" | "right">;
1291
+ size: _angular_core.Signal<"sm" | "md" | "lg" | "full">;
1292
+ variant: _angular_core.Signal<"default" | "minimal" | "compact">;
1293
+ modalInput: _angular_core.InputSignal<boolean | undefined>;
1294
+ collapsibleInput: _angular_core.InputSignal<boolean | undefined>;
1295
+ defaultCollapsedInput: _angular_core.InputSignal<boolean | undefined>;
1296
+ closeOnNavigateInput: _angular_core.InputSignal<boolean | undefined>;
1297
+ closeOnBackdropClickInput: _angular_core.InputSignal<boolean | undefined>;
1298
+ closeOnEscapeInput: _angular_core.InputSignal<boolean | undefined>;
1299
+ blockScrollInput: _angular_core.InputSignal<boolean | undefined>;
1300
+ swipeToCloseInput: _angular_core.InputSignal<boolean | undefined>;
1301
+ modal: _angular_core.Signal<boolean>;
1302
+ collapsible: _angular_core.Signal<boolean>;
1303
+ defaultCollapsed: _angular_core.Signal<boolean>;
1304
+ closeOnNavigate: _angular_core.Signal<boolean>;
1305
+ closeOnBackdropClick: _angular_core.Signal<boolean>;
1306
+ closeOnEscape: _angular_core.Signal<boolean>;
1307
+ blockScroll: _angular_core.Signal<boolean>;
1308
+ swipeToClose: _angular_core.Signal<boolean>;
1309
+ header: _angular_core.InputSignal<string | undefined>;
1310
+ showHeaderInput: _angular_core.InputSignal<boolean | undefined>;
1311
+ showFooterInput: _angular_core.InputSignal<boolean | undefined>;
1312
+ showCloseButtonInput: _angular_core.InputSignal<boolean | undefined>;
1313
+ showHeader: _angular_core.Signal<boolean>;
1314
+ showFooter: _angular_core.Signal<boolean>;
1315
+ showCloseButton: _angular_core.Signal<boolean>;
1316
+ contentPadding: _angular_core.InputSignal<string | undefined>;
1317
+ contentGap: _angular_core.InputSignal<string | undefined>;
1318
+ background: _angular_core.InputSignal<string | undefined>;
1319
+ class: _angular_core.InputSignal<string>;
1320
+ protected hostClasses: _angular_core.Signal<string>;
1321
+ protected drawerSize: _angular_core.Signal<"sm" | "md" | "lg" | "xl" | "full">;
1322
+ constructor();
1323
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarComponent, never>;
1324
+ 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>;
1325
+ }
1326
+
1151
1327
  /**
1152
1328
  * Toggle switch component with customizable size and color
1153
1329
  *
@@ -1230,7 +1406,7 @@ declare class TextareaComponent implements ControlValueAccessor {
1230
1406
  /**
1231
1407
  * Resize behavior
1232
1408
  */
1233
- resize: _angular_core.InputSignal<"vertical" | "horizontal" | "none" | "both">;
1409
+ resize: _angular_core.InputSignal<"none" | "vertical" | "horizontal" | "both">;
1234
1410
  /**
1235
1411
  * Maximum character length
1236
1412
  */
@@ -1415,15 +1591,15 @@ declare class ButtonToggleGroupComponent implements ControlValueAccessor {
1415
1591
  allowEmpty: _angular_core.InputSignal<boolean>;
1416
1592
  orientationInput: _angular_core.InputSignal<"vertical" | "horizontal" | undefined>;
1417
1593
  sizeInput: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
1418
- variantInput: _angular_core.InputSignal<"ghost" | "solid" | "outline" | undefined>;
1594
+ variantInput: _angular_core.InputSignal<"solid" | "outline" | "ghost" | undefined>;
1419
1595
  colorInput: _angular_core.InputSignal<"primary" | "secondary" | "success" | "error" | "warning" | undefined>;
1420
- radiusInput: _angular_core.InputSignal<"full" | "sm" | "md" | "lg" | "none" | "xl" | undefined>;
1596
+ radiusInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "xl" | "full" | undefined>;
1421
1597
  shadowInput: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | undefined>;
1422
1598
  orientation: _angular_core.Signal<"vertical" | "horizontal">;
1423
1599
  size: _angular_core.Signal<"sm" | "md" | "lg">;
1424
- variant: _angular_core.Signal<"ghost" | "solid" | "outline">;
1600
+ variant: _angular_core.Signal<"solid" | "outline" | "ghost">;
1425
1601
  color: _angular_core.Signal<"primary" | "secondary" | "success" | "error" | "warning">;
1426
- radius: _angular_core.Signal<"full" | "sm" | "md" | "lg" | "none" | "xl">;
1602
+ radius: _angular_core.Signal<"sm" | "md" | "lg" | "none" | "xl" | "full">;
1427
1603
  shadow: _angular_core.Signal<"sm" | "md" | "lg" | "none">;
1428
1604
  attached: _angular_core.InputSignal<boolean>;
1429
1605
  fullWidth: _angular_core.InputSignal<boolean>;
@@ -1634,5 +1810,5 @@ declare function loadGoogleFonts(fonts: Array<{
1634
1810
  display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';
1635
1811
  }>): void;
1636
1812
 
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 };
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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eduboxpro/studio",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "description": "Modern Angular UI library for educational platforms with customizable design system",
5
5
  "keywords": [
6
6
  "angular",