@egose/shadcn-theme-ng-tw 0.1.0 → 0.3.0

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.
Files changed (165) hide show
  1. package/README.md +2 -2
  2. package/accordion/README.md +405 -2
  3. package/alert/README.md +372 -2
  4. package/alert/fesm2022/alert.mjs +1 -1
  5. package/alert-dialog/README.md +471 -5
  6. package/aspect-ratio/README.md +272 -5
  7. package/autocomplete/README.md +502 -2
  8. package/autocomplete/fesm2022/autocomplete.mjs +1 -1
  9. package/avatar/README.md +357 -5
  10. package/badge/README.md +318 -2
  11. package/basic-alert/README.md +353 -2
  12. package/breadcrumb/README.md +406 -5
  13. package/button/README.md +482 -2
  14. package/button/fesm2022/button.mjs +85 -107
  15. package/button/types/button.d.ts +5 -8
  16. package/button-group/README.md +318 -5
  17. package/button-group/fesm2022/button-group.mjs +1 -1
  18. package/calendar/README.md +357 -2
  19. package/card/README.md +331 -5
  20. package/carousel/README.md +333 -5
  21. package/carousel/fesm2022/carousel.mjs +4 -1
  22. package/checkbox/README.md +320 -2
  23. package/checkbox/fesm2022/checkbox.mjs +6 -7
  24. package/checkbox/types/checkbox.d.ts +1 -1
  25. package/collapsible/README.md +332 -5
  26. package/combobox/README.md +507 -5
  27. package/combobox/fesm2022/combobox.mjs +5 -2
  28. package/command/README.md +435 -5
  29. package/confirmation-dialog/README.md +301 -2
  30. package/context-menu/README.md +366 -5
  31. package/date-picker/README.md +469 -2
  32. package/date-picker/fesm2022/date-picker.mjs +150 -32
  33. package/date-picker/types/date-picker.d.ts +102 -9
  34. package/dialog/README.md +448 -2
  35. package/drawer/README.md +395 -5
  36. package/dropdown-menu/README.md +417 -5
  37. package/empty/README.md +329 -5
  38. package/field/README.md +385 -5
  39. package/form-autocomplete/README.md +177 -0
  40. package/form-autocomplete/fesm2022/form-autocomplete.mjs +211 -0
  41. package/form-autocomplete/package.json +24 -0
  42. package/form-autocomplete/types/form-autocomplete.d.ts +61 -0
  43. package/form-checkbox/README.md +322 -2
  44. package/form-checkbox/fesm2022/form-checkbox.mjs +22 -9
  45. package/form-checkbox/types/form-checkbox.d.ts +23 -4
  46. package/form-combobox/README.md +202 -0
  47. package/form-combobox/fesm2022/form-combobox.mjs +273 -0
  48. package/form-combobox/package.json +24 -0
  49. package/form-combobox/types/form-combobox.d.ts +73 -0
  50. package/form-date-picker/README.md +348 -2
  51. package/form-date-picker/fesm2022/form-date-picker.mjs +60 -16
  52. package/form-date-picker/types/form-date-picker.d.ts +17 -1
  53. package/form-date-picker-multi/README.md +191 -0
  54. package/form-date-picker-multi/fesm2022/form-date-picker-multi.mjs +239 -0
  55. package/form-date-picker-multi/package.json +24 -0
  56. package/form-date-picker-multi/types/form-date-picker-multi.d.ts +58 -0
  57. package/form-date-range-picker/README.md +253 -0
  58. package/form-date-range-picker/fesm2022/form-date-range-picker.mjs +236 -0
  59. package/form-date-range-picker/package.json +24 -0
  60. package/form-date-range-picker/types/form-date-range-picker.d.ts +55 -0
  61. package/form-field/README.md +356 -2
  62. package/form-field-simple/README.md +340 -2
  63. package/form-input-otp/README.md +194 -0
  64. package/form-input-otp/fesm2022/form-input-otp.mjs +194 -0
  65. package/form-input-otp/package.json +24 -0
  66. package/form-input-otp/types/form-input-otp.d.ts +58 -0
  67. package/form-month-year-picker/README.md +188 -0
  68. package/form-month-year-picker/fesm2022/form-month-year-picker.mjs +229 -0
  69. package/form-month-year-picker/package.json +24 -0
  70. package/form-month-year-picker/types/form-month-year-picker.d.ts +53 -0
  71. package/form-native-select/README.md +205 -0
  72. package/form-native-select/fesm2022/form-native-select.mjs +187 -0
  73. package/form-native-select/package.json +24 -0
  74. package/form-native-select/types/form-native-select.d.ts +57 -0
  75. package/form-phone-input/README.md +188 -0
  76. package/form-phone-input/fesm2022/form-phone-input.mjs +203 -0
  77. package/form-phone-input/package.json +24 -0
  78. package/form-phone-input/types/form-phone-input.d.ts +58 -0
  79. package/form-radio-group/README.md +198 -0
  80. package/form-radio-group/fesm2022/form-radio-group.mjs +211 -0
  81. package/form-radio-group/package.json +24 -0
  82. package/form-radio-group/types/form-radio-group.d.ts +63 -0
  83. package/form-searchable-multiselect/README.md +371 -2
  84. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +19 -10
  85. package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +18 -1
  86. package/form-select/README.md +360 -2
  87. package/form-select/fesm2022/form-select.mjs +24 -15
  88. package/form-select/types/form-select.d.ts +18 -1
  89. package/form-slider/README.md +182 -0
  90. package/form-slider/fesm2022/form-slider.mjs +186 -0
  91. package/form-slider/package.json +24 -0
  92. package/form-slider/types/form-slider.d.ts +60 -0
  93. package/form-switch/README.md +173 -0
  94. package/form-switch/fesm2022/form-switch.mjs +178 -0
  95. package/form-switch/package.json +24 -0
  96. package/form-switch/types/form-switch.d.ts +50 -0
  97. package/form-text-input/README.md +381 -2
  98. package/form-text-input/fesm2022/form-text-input.mjs +19 -10
  99. package/form-text-input/types/form-text-input.d.ts +18 -1
  100. package/form-textarea/README.md +357 -2
  101. package/form-textarea/fesm2022/form-textarea.mjs +19 -10
  102. package/form-textarea/types/form-textarea.d.ts +18 -1
  103. package/form-toggle/README.md +186 -0
  104. package/form-toggle/fesm2022/form-toggle.mjs +241 -0
  105. package/form-toggle/package.json +24 -0
  106. package/form-toggle/types/form-toggle.d.ts +82 -0
  107. package/form-toggle-group/README.md +176 -0
  108. package/form-toggle-group/fesm2022/form-toggle-group.mjs +216 -0
  109. package/form-toggle-group/package.json +24 -0
  110. package/form-toggle-group/types/form-toggle-group.d.ts +65 -0
  111. package/hover-card/README.md +256 -5
  112. package/icon/README.md +239 -2
  113. package/input/README.md +269 -2
  114. package/input-group/README.md +335 -5
  115. package/input-group/fesm2022/input-group.mjs +23 -13
  116. package/input-group/types/input-group.d.ts +4 -1
  117. package/input-otp/README.md +375 -5
  118. package/item/README.md +385 -5
  119. package/item/fesm2022/item.mjs +3 -3
  120. package/kbd/README.md +291 -5
  121. package/label/README.md +272 -2
  122. package/layout-simple/README.md +193 -2
  123. package/layout-simple/fesm2022/layout-simple.mjs +877 -409
  124. package/layout-simple/types/layout-simple.d.ts +174 -137
  125. package/menu/README.md +417 -2
  126. package/menubar/README.md +343 -5
  127. package/native-select/README.md +323 -5
  128. package/native-select/fesm2022/native-select.mjs +18 -6
  129. package/native-select/types/native-select.d.ts +7 -2
  130. package/navigation-menu/README.md +369 -5
  131. package/package.json +57 -1
  132. package/pagination/README.md +388 -5
  133. package/phone-input/README.md +114 -0
  134. package/phone-input/fesm2022/phone-input.mjs +191 -0
  135. package/phone-input/package.json +24 -0
  136. package/phone-input/types/phone-input.d.ts +67 -0
  137. package/popover/README.md +331 -2
  138. package/progress/README.md +311 -5
  139. package/radio-group/README.md +364 -2
  140. package/radio-group/fesm2022/radio-group.mjs +5 -1
  141. package/resizable/README.md +269 -5
  142. package/scroll-area/README.md +233 -5
  143. package/searchable-multiselect/README.md +323 -2
  144. package/select/README.md +437 -2
  145. package/separator/README.md +222 -2
  146. package/sheet/README.md +311 -2
  147. package/sheet/fesm2022/sheet.mjs +1 -1
  148. package/sidebar/README.md +457 -5
  149. package/skeleton/README.md +217 -5
  150. package/slider/README.md +273 -5
  151. package/slider/fesm2022/slider.mjs +17 -13
  152. package/sonner/README.md +346 -2
  153. package/spinner/README.md +284 -2
  154. package/switch/README.md +310 -2
  155. package/switch/fesm2022/switch.mjs +7 -5
  156. package/switch/types/switch.d.ts +2 -1
  157. package/table/README.md +423 -5
  158. package/tabs/README.md +411 -2
  159. package/tabs/fesm2022/tabs.mjs +12 -2
  160. package/textarea/README.md +282 -5
  161. package/toggle/README.md +270 -5
  162. package/toggle-group/README.md +340 -5
  163. package/tooltip/README.md +269 -2
  164. package/typography/README.md +271 -5
  165. package/utils/README.md +303 -2
@@ -1,167 +1,204 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { TemplateRef } from '@angular/core';
3
- import { BreakpointObserver } from '@angular/cdk/layout';
2
+ import { TemplateRef, ElementRef } from '@angular/core';
4
3
  import { ClassValue } from 'clsx';
5
4
  import { hlm } from '@egose/shadcn-theme-ng-tw/utils';
6
5
  import { BrnSheet } from '@spartan-ng/brain/sheet';
7
6
 
8
- interface UserMenuItem {
7
+ /** Navigation destination or action shared by the header, mobile menu, and footer. */
8
+ interface MenuItem {
9
9
  label: string;
10
+ /** Supporting text displayed in fly-out cards. */
11
+ description?: string;
12
+ /** SVG data, e.g. `lucideHome` from `@ng-icons/lucide`. */
10
13
  icon?: string;
11
- action?: () => void;
14
+ /** Internal Angular router URL. A link takes precedence over an action. */
12
15
  link?: string;
16
+ action?: () => void;
17
+ /** Exact path matching by default; query parameters and fragments are ignored. */
18
+ activeMatch?: 'exact' | 'prefix';
19
+ disabled?: boolean;
13
20
  class?: string;
14
21
  }
22
+ interface MenuGroup {
23
+ label?: string;
24
+ items: readonly MenuItem[];
25
+ }
26
+ /** A named navbar disclosure that opens a wide grid of navigation cards. */
27
+ interface FlyoutMenuGroup extends MenuGroup {
28
+ label: string;
29
+ /** Optional introduction shown above the cards. */
30
+ description?: string;
31
+ icon?: string;
32
+ }
33
+ /** Internal matching contract shared by links and dropdown destinations. */
34
+ declare function navigationMatchOptions(item: MenuItem): {
35
+ paths: "exact" | "subset";
36
+ queryParams: "ignored";
37
+ fragment: "ignored";
38
+ matrixParams: "ignored";
39
+ };
40
+
41
+ type UserMenuItem = MenuItem;
15
42
  interface UserMenuSection {
16
43
  label?: string;
17
44
  separator?: boolean;
18
- items?: UserMenuItem[];
45
+ items?: readonly UserMenuItem[];
19
46
  }
20
47
  declare class EgLayoutSimpleUserMenu {
21
- hlm: typeof hlm;
22
- lucideUser: string;
23
- menus: _angular_core.InputSignal<UserMenuSection[]>;
24
- menuTrigger: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
48
+ protected readonly hlm: typeof hlm;
49
+ protected readonly navigationMatchOptions: typeof navigationMatchOptions;
50
+ protected readonly userIcon = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"></path><circle cx=\"12\" cy=\"7\" r=\"4\"></circle></svg>";
51
+ readonly sections: _angular_core.InputSignal<readonly UserMenuSection[]>;
52
+ readonly triggerTemplate: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
53
+ readonly triggerLabel: _angular_core.InputSignal<string>;
25
54
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgLayoutSimpleUserMenu, never>;
26
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgLayoutSimpleUserMenu, "eg-layout-simple-user-menu", never, { "menus": { "alias": "menus"; "required": false; "isSignal": true; }; "menuTrigger": { "alias": "menuTrigger"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
55
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgLayoutSimpleUserMenu, "eg-layout-simple-user-menu", never, { "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "triggerTemplate": { "alias": "triggerTemplate"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
27
56
  }
28
57
 
29
- declare class EgLayoutSimpleSidebar {
30
- readonly viewchildSheetRef: _angular_core.Signal<BrnSheet | undefined>;
31
- side: _angular_core.InputSignal<"top" | "bottom" | "left" | "right" | undefined>;
32
- title: _angular_core.InputSignal<string | undefined>;
33
- content: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
34
- contentContext: _angular_core.InputSignal<object | null>;
58
+ /** Called when search opens and after the query changes. Return already-filtered results. */
59
+ type LayoutSearchLoader<TItem> = (params: {
60
+ search: string;
61
+ }) => Promise<readonly TItem[]>;
62
+ interface LayoutSearchResultContext<TItem> {
63
+ $implicit: TItem;
64
+ }
65
+ /** Async page search with debouncing, stale-response protection, and keyboard navigation. */
66
+ declare class EgLayoutSearch<TItem = unknown> {
67
+ readonly placeholder: _angular_core.InputSignal<string>;
68
+ readonly emptyText: _angular_core.InputSignal<string>;
69
+ readonly errorText: _angular_core.InputSignal<string>;
70
+ readonly loadingText: _angular_core.InputSignal<string>;
71
+ readonly retryText: _angular_core.InputSignal<string>;
72
+ readonly loader: _angular_core.InputSignal<LayoutSearchLoader<TItem> | undefined>;
73
+ readonly resultLabel: _angular_core.InputSignal<((item: TItem) => string) | undefined>;
74
+ readonly resultTemplate: _angular_core.InputSignal<TemplateRef<LayoutSearchResultContext<TItem>> | undefined>;
75
+ readonly resultSelected: _angular_core.OutputEmitterRef<TItem>;
76
+ protected readonly searchIcon = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path d=\"m21 21-4.34-4.34\"></path><circle cx=\"11\" cy=\"11\" r=\"8\"></circle></svg>";
77
+ protected readonly query: _angular_core.WritableSignal<string>;
78
+ protected readonly results: _angular_core.WritableSignal<readonly TItem[]>;
79
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
80
+ protected readonly isLoading: _angular_core.WritableSignal<boolean>;
81
+ protected readonly hasError: _angular_core.WritableSignal<boolean>;
82
+ private readonly retryVersion;
83
+ private readonly searchInput;
84
+ private readonly resultButtons;
35
85
  constructor();
36
- openSheet(): void;
37
- closeSheet(): void;
38
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgLayoutSimpleSidebar, never>;
39
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgLayoutSimpleSidebar, "eg-layout-simple-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "contentContext": { "alias": "contentContext"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
86
+ protected labelFor(item: TItem): string;
87
+ protected setOpen(open: boolean): void;
88
+ protected retry(): void;
89
+ protected selectResult(item: TItem): void;
90
+ protected focusResult(index: number, event: Event): void;
91
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgLayoutSearch<any>, never>;
92
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgLayoutSearch<any>, "eg-layout-search", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "retryText": { "alias": "retryText"; "required": false; "isSignal": true; }; "loader": { "alias": "loader"; "required": false; "isSignal": true; }; "resultLabel": { "alias": "resultLabel"; "required": false; "isSignal": true; }; "resultTemplate": { "alias": "resultTemplate"; "required": false; "isSignal": true; }; }, { "resultSelected": "resultSelected"; }, never, never, true, never>;
40
93
  }
41
94
 
42
- interface MenuItem {
43
- label: string;
44
- icon?: string;
45
- link?: string;
46
- action?: () => void;
47
- class?: string;
48
- }
49
- interface MenuGroup {
50
- label?: string;
51
- items: MenuItem[];
95
+ declare class EgLayoutSimpleSidebar {
96
+ readonly sheet: _angular_core.Signal<BrnSheet | undefined>;
97
+ readonly panelId: _angular_core.InputSignal<string>;
98
+ readonly title: _angular_core.InputSignal<string>;
99
+ readonly content: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
100
+ readonly contentContext: _angular_core.InputSignal<object | null>;
101
+ open(): void;
102
+ close(): void;
103
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgLayoutSimpleSidebar, never>;
104
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgLayoutSimpleSidebar, "eg-layout-simple-sidebar", never, { "panelId": { "alias": "panelId"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "contentContext": { "alias": "contentContext"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
52
105
  }
53
- /**
54
- * Single viewport contract for the shell: below Tailwind's `md` (768px) breakpoint the
55
- * mobile menu trigger replaces all desktop navigation rows. CSS (`tw:hidden tw:md:flex`)
56
- * and runtime rendering both derive from this one boundary.
57
- */
106
+
107
+ /** Matches Tailwind's default `md` breakpoint. */
58
108
  declare const EG_LAYOUT_SIMPLE_MOBILE_BREAKPOINT = "(max-width: 767.98px)";
59
- declare class EgLayoutSimple<TItem, TParams extends object = {
60
- search: string;
61
- }> {
62
- private breakpointObserver;
109
+ /** Responsive application shell. All navigation surfaces share the same item model. */
110
+ declare class EgLayoutSimple<TItem = unknown> {
63
111
  private readonly destroyRef;
64
- hlm: typeof hlm;
65
- menuIcon: string;
66
- sidebarEnabled: _angular_core.InputSignal<boolean>;
67
- sidebarTitle: _angular_core.InputSignal<string>;
68
- sidebarContent: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
69
- /** Accessible name for the icon-only sidebar trigger. */
70
- sidebarToggleLabel: _angular_core.InputSignal<string>;
71
- /** Accessible name for the icon-only mobile menu trigger. */
72
- mobileMenuLabel: _angular_core.InputSignal<string>;
73
- userMenuTrigger: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
74
- /** Menu data inputs */
75
- leftMenus: _angular_core.InputSignal<MenuItem[]>;
76
- leftMenuGroups: _angular_core.InputSignal<MenuGroup[]>;
77
- rightMenus: _angular_core.InputSignal<MenuItem[]>;
78
- topMenus: _angular_core.InputSignal<MenuItem[]>;
79
- topSecondaryMenus: _angular_core.InputSignal<MenuGroup[]>;
80
- userMenus: _angular_core.InputSignal<UserMenuSection[]>;
81
- logo: _angular_core.InputSignal<string>;
82
- logoLink: _angular_core.InputSignal<string>;
83
- logoClass: _angular_core.InputSignal<ClassValue>;
84
- headerClass: _angular_core.InputSignal<ClassValue>;
85
- contentClass: _angular_core.InputSignal<ClassValue>;
86
- contentBottomClass: _angular_core.InputSignal<ClassValue>;
87
- /** Container class inputs */
88
- leftMenuClass: _angular_core.InputSignal<ClassValue>;
89
- rightMenuClass: _angular_core.InputSignal<ClassValue>;
90
- topMenuClass: _angular_core.InputSignal<ClassValue>;
91
- /** Link/button base class inputs */
92
- leftLinkClass: _angular_core.InputSignal<ClassValue>;
93
- rightLinkClass: _angular_core.InputSignal<ClassValue>;
94
- topLinkClass: _angular_core.InputSignal<ClassValue>;
95
- searchEnabled: _angular_core.InputSignal<boolean>;
96
- loading: _angular_core.InputSignal<boolean>;
97
- searchPlaceholderText: _angular_core.InputSignal<string>;
98
- searchEmptyText: _angular_core.InputSignal<string>;
99
- searchOptionTemplate: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
100
- searchLoaderFn: _angular_core.InputSignal<((params: TParams) => Promise<TItem[]>) | undefined>;
101
- searchTransformValueToSearch: _angular_core.InputSignal<((value: TItem) => string) | undefined>;
102
- readonly searchOptionChange: _angular_core.OutputEmitterRef<TItem>;
103
- protected readonly _logoClass: _angular_core.Signal<string>;
104
- protected readonly _headerClass: _angular_core.Signal<string>;
105
- protected readonly _contentClass: _angular_core.Signal<string>;
106
- protected readonly _contentBottomClass: _angular_core.Signal<string>;
107
- /** Computed merged classes for containers */
108
- protected readonly _computedLeftClass: _angular_core.Signal<string>;
109
- protected readonly _computedRightClass: _angular_core.Signal<string>;
110
- protected readonly _computedTopClass: _angular_core.Signal<string>;
111
- protected readonly _computedTopSecondaryClass: _angular_core.Signal<string>;
112
- /** Computed merged classes for link/button elements */
113
- protected readonly _computedLeftLinkClass: _angular_core.Signal<string>;
114
- protected readonly _computedRightLinkClass: _angular_core.Signal<string>;
115
- protected readonly _computedTopLinkClass: _angular_core.Signal<string>;
116
- mobileMenuItemClass: string;
117
- footerEnabled: _angular_core.InputSignal<boolean>;
118
- footerMenus: _angular_core.InputSignal<MenuItem[]>;
119
- footerMenuClass: _angular_core.InputSignal<ClassValue>;
120
- footerLinkClass: _angular_core.InputSignal<ClassValue>;
121
- footerContent: _angular_core.InputSignal<string>;
122
- footerClass: _angular_core.InputSignal<ClassValue>;
123
- protected readonly _footerClass: _angular_core.Signal<string>;
124
- protected readonly _computedFooterMenuClass: _angular_core.Signal<string>;
125
- protected readonly _computedFooterLinkClass: _angular_core.Signal<string>;
126
- /** Mobile menu state */
112
+ private readonly breakpointObserver;
113
+ private readonly router;
114
+ private readonly instanceId;
115
+ protected readonly mainId: string;
116
+ protected readonly mobileMenuId: string;
117
+ protected readonly sidebarId: string;
118
+ protected readonly hlm: typeof hlm;
119
+ protected readonly navigationMatchOptions: typeof navigationMatchOptions;
120
+ protected readonly menuIcon = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path d=\"M4 5h16\"></path><path d=\"M4 12h16\"></path><path d=\"M4 19h16\"></path></svg>";
121
+ protected readonly sidebarIcon = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"></rect><path d=\"M9 3v18\"></path></svg>";
122
+ protected readonly closeIcon = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path d=\"M18 6 6 18\"></path><path d=\"m6 6 12 12\"></path></svg>";
123
+ protected readonly chevronIcon = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path d=\"m6 9 6 6 6-6\"></path></svg>";
124
+ protected readonly mobileMenuTrigger: _angular_core.Signal<ElementRef<HTMLButtonElement> | undefined>;
125
+ protected readonly mainContent: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
126
+ protected readonly sidebar: _angular_core.Signal<EgLayoutSimpleSidebar | undefined>;
127
+ readonly sidebarEnabled: _angular_core.InputSignal<boolean>;
128
+ readonly sidebarTitle: _angular_core.InputSignal<string>;
129
+ readonly sidebarContent: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
130
+ readonly sidebarToggleLabel: _angular_core.InputSignal<string>;
131
+ readonly mobileMenuLabel: _angular_core.InputSignal<string>;
132
+ readonly mobileMenuCloseLabel: _angular_core.InputSignal<string>;
133
+ readonly userMenuTrigger: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
134
+ readonly userMenuLabel: _angular_core.InputSignal<string>;
135
+ /** Main header destinations; use `activeMatch: 'prefix'` for whole sections. */
136
+ readonly primaryNavigation: _angular_core.InputSignal<readonly MenuItem[]>;
137
+ readonly navigationGroups: _angular_core.InputSignal<readonly MenuGroup[]>;
138
+ readonly utilityNavigation: _angular_core.InputSignal<readonly MenuItem[]>;
139
+ readonly sectionNavigation: _angular_core.InputSignal<readonly MenuItem[]>;
140
+ readonly secondaryNavigationGroups: _angular_core.InputSignal<readonly MenuGroup[]>;
141
+ /** Category navbar with wide card panels; mobile renders expandable groups. */
142
+ readonly flyoutNavigationGroups: _angular_core.InputSignal<readonly FlyoutMenuGroup[]>;
143
+ readonly flyoutNavigationLabel: _angular_core.InputSignal<string>;
144
+ readonly flyoutCloseLabel: _angular_core.InputSignal<string>;
145
+ readonly userMenuSections: _angular_core.InputSignal<readonly UserMenuSection[]>;
146
+ /** Optional image. Without it, the brand name is shown instead of a broken image. */
147
+ readonly logo: _angular_core.InputSignal<string>;
148
+ readonly brandName: _angular_core.InputSignal<string>;
149
+ readonly logoLink: _angular_core.InputSignal<string>;
150
+ readonly logoClass: _angular_core.InputSignal<ClassValue>;
151
+ /** Disable for a shell preview embedded inside another page. */
152
+ readonly fullHeight: _angular_core.InputSignal<boolean>;
153
+ readonly headerClass: _angular_core.InputSignal<ClassValue>;
154
+ readonly contentClass: _angular_core.InputSignal<ClassValue>;
155
+ readonly primaryNavigationClass: _angular_core.InputSignal<ClassValue>;
156
+ readonly utilityNavigationClass: _angular_core.InputSignal<ClassValue>;
157
+ readonly sectionNavigationClass: _angular_core.InputSignal<ClassValue>;
158
+ readonly secondaryNavigationClass: _angular_core.InputSignal<ClassValue>;
159
+ readonly flyoutNavigationClass: _angular_core.InputSignal<ClassValue>;
160
+ readonly flyoutPanelClass: _angular_core.InputSignal<ClassValue>;
161
+ readonly navigationItemClass: _angular_core.InputSignal<ClassValue>;
162
+ readonly loading: _angular_core.InputSignal<boolean>;
163
+ readonly loadingText: _angular_core.InputSignal<string>;
164
+ readonly skipLinkText: _angular_core.InputSignal<string>;
165
+ readonly searchEnabled: _angular_core.InputSignal<boolean>;
166
+ readonly searchPlaceholder: _angular_core.InputSignal<string>;
167
+ readonly searchEmptyText: _angular_core.InputSignal<string>;
168
+ readonly searchErrorText: _angular_core.InputSignal<string>;
169
+ readonly searchResultTemplate: _angular_core.InputSignal<TemplateRef<LayoutSearchResultContext<TItem>> | undefined>;
170
+ readonly searchLoader: _angular_core.InputSignal<LayoutSearchLoader<TItem> | undefined>;
171
+ readonly searchResultLabel: _angular_core.InputSignal<((item: TItem) => string) | undefined>;
172
+ readonly searchResultSelected: _angular_core.OutputEmitterRef<TItem>;
173
+ readonly footerEnabled: _angular_core.InputSignal<boolean>;
174
+ readonly footerNavigation: _angular_core.InputSignal<readonly MenuItem[]>;
175
+ readonly footerText: _angular_core.InputSignal<string>;
176
+ readonly footerClass: _angular_core.InputSignal<ClassValue>;
177
+ protected readonly logoClasses: _angular_core.Signal<string>;
178
+ protected readonly headerClasses: _angular_core.Signal<string>;
179
+ protected readonly contentClasses: _angular_core.Signal<string>;
180
+ protected readonly primaryNavigationClasses: _angular_core.Signal<string>;
181
+ protected readonly utilityNavigationClasses: _angular_core.Signal<string>;
182
+ protected readonly sectionNavigationClasses: _angular_core.Signal<string>;
183
+ protected readonly secondaryNavigationClasses: _angular_core.Signal<string>;
184
+ protected readonly footerClasses: _angular_core.Signal<string>;
185
+ protected readonly iconButtonClasses = "tw:inline-flex tw:size-11 tw:shrink-0 tw:items-center tw:justify-center tw:rounded-lg tw:border tw:border-border tw:bg-background tw:text-foreground tw:cursor-pointer tw:hover:bg-foreground/5 tw:focus-visible:outline-2 tw:focus-visible:outline-offset-2 tw:focus-visible:outline-ring";
127
186
  protected readonly mobileMenuOpen: _angular_core.WritableSignal<boolean>;
128
- isMobile: _angular_core.WritableSignal<boolean>;
129
- /** Expanded state of the sidebar sheet, kept in sync with BrnSheet state changes. */
187
+ protected readonly isMobile: _angular_core.WritableSignal<boolean>;
130
188
  protected readonly sidebarOpen: _angular_core.WritableSignal<boolean>;
131
- constructor(breakpointObserver: BreakpointObserver);
132
- toggleMobileMenu(): void;
133
- closeMobileMenu(): void;
134
- onSearchOptionChange(value: TItem): void;
135
- readonly viewchildSheetRef: _angular_core.Signal<EgLayoutSimpleSidebar | undefined>;
189
+ protected readonly sidebarContext: {
190
+ close: () => void;
191
+ };
192
+ constructor();
193
+ protected toggleMobileMenu(): void;
194
+ protected closeMobileMenu(restoreFocus?: boolean): void;
195
+ protected selectSearchResult(item: TItem): void;
196
+ protected focusContent(event: Event): void;
136
197
  openSidebar(): void;
137
198
  closeSidebar(): void;
138
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgLayoutSimple<any, any>, never>;
139
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgLayoutSimple<any, any>, "eg-layout-simple", never, { "sidebarEnabled": { "alias": "sidebarEnabled"; "required": false; "isSignal": true; }; "sidebarTitle": { "alias": "sidebarTitle"; "required": false; "isSignal": true; }; "sidebarContent": { "alias": "sidebarContent"; "required": false; "isSignal": true; }; "sidebarToggleLabel": { "alias": "sidebarToggleLabel"; "required": false; "isSignal": true; }; "mobileMenuLabel": { "alias": "mobileMenuLabel"; "required": false; "isSignal": true; }; "userMenuTrigger": { "alias": "userMenuTrigger"; "required": false; "isSignal": true; }; "leftMenus": { "alias": "leftMenus"; "required": false; "isSignal": true; }; "leftMenuGroups": { "alias": "leftMenuGroups"; "required": false; "isSignal": true; }; "rightMenus": { "alias": "rightMenus"; "required": false; "isSignal": true; }; "topMenus": { "alias": "topMenus"; "required": false; "isSignal": true; }; "topSecondaryMenus": { "alias": "topSecondaryMenus"; "required": false; "isSignal": true; }; "userMenus": { "alias": "userMenus"; "required": false; "isSignal": true; }; "logo": { "alias": "logo"; "required": false; "isSignal": true; }; "logoLink": { "alias": "logoLink"; "required": false; "isSignal": true; }; "logoClass": { "alias": "logoClass"; "required": false; "isSignal": true; }; "headerClass": { "alias": "headerClass"; "required": false; "isSignal": true; }; "contentClass": { "alias": "contentClass"; "required": false; "isSignal": true; }; "contentBottomClass": { "alias": "contentBottomClass"; "required": false; "isSignal": true; }; "leftMenuClass": { "alias": "leftClass"; "required": false; "isSignal": true; }; "rightMenuClass": { "alias": "rightClass"; "required": false; "isSignal": true; }; "topMenuClass": { "alias": "topClass"; "required": false; "isSignal": true; }; "leftLinkClass": { "alias": "leftLinkClass"; "required": false; "isSignal": true; }; "rightLinkClass": { "alias": "rightLinkClass"; "required": false; "isSignal": true; }; "topLinkClass": { "alias": "topLinkClass"; "required": false; "isSignal": true; }; "searchEnabled": { "alias": "searchEnabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "searchPlaceholderText": { "alias": "searchPlaceholderText"; "required": false; "isSignal": true; }; "searchEmptyText": { "alias": "searchEmptyText"; "required": false; "isSignal": true; }; "searchOptionTemplate": { "alias": "searchOptionTemplate"; "required": false; "isSignal": true; }; "searchLoaderFn": { "alias": "searchLoaderFn"; "required": false; "isSignal": true; }; "searchTransformValueToSearch": { "alias": "searchTransformValueToSearch"; "required": false; "isSignal": true; }; "footerEnabled": { "alias": "footerEnabled"; "required": false; "isSignal": true; }; "footerMenus": { "alias": "footerMenus"; "required": false; "isSignal": true; }; "footerMenuClass": { "alias": "footerMenuClass"; "required": false; "isSignal": true; }; "footerLinkClass": { "alias": "footerLinkClass"; "required": false; "isSignal": true; }; "footerContent": { "alias": "footerContent"; "required": false; "isSignal": true; }; "footerClass": { "alias": "footerClass"; "required": false; "isSignal": true; }; }, { "searchOptionChange": "searchOptionChange"; }, never, ["*"], true, never>;
140
- }
141
-
142
- interface AutocompleteOption<T = unknown> {
143
- label: string;
144
- value: T;
145
- raw?: T;
146
- }
147
- declare class EgGenericAutocomplete<TItem, TParams extends object = {
148
- search: string;
149
- }> {
150
- placeholderText: _angular_core.InputSignal<string>;
151
- emptyText: _angular_core.InputSignal<string>;
152
- /** Loader function: takes search string, returns options. */
153
- loaderFn: _angular_core.InputSignal<((params: TParams) => Promise<TItem[]>) | undefined>;
154
- transformValueToSearch: _angular_core.InputSignal<((value: TItem) => string) | undefined>;
155
- readonly search: _angular_core.WritableSignal<string>;
156
- readonly options: _angular_core.WritableSignal<TItem[]>;
157
- protected readonly filtered: _angular_core.Signal<AutocompleteOption<TItem>[]>;
158
- readonly optionChange: _angular_core.OutputEmitterRef<TItem>;
159
- constructor();
160
- private loadOptions;
161
- select(opt: AutocompleteOption<TItem>): void;
162
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgGenericAutocomplete<any, any>, never>;
163
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgGenericAutocomplete<any, any>, "eg-generic-autocomplete", never, { "placeholderText": { "alias": "placeholderText"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loaderFn": { "alias": "loaderFn"; "required": false; "isSignal": true; }; "transformValueToSearch": { "alias": "transformValueToSearch"; "required": false; "isSignal": true; }; }, { "optionChange": "optionChange"; }, never, never, true, never>;
199
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgLayoutSimple<any>, never>;
200
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EgLayoutSimple<any>, "eg-layout-simple", never, { "sidebarEnabled": { "alias": "sidebarEnabled"; "required": false; "isSignal": true; }; "sidebarTitle": { "alias": "sidebarTitle"; "required": false; "isSignal": true; }; "sidebarContent": { "alias": "sidebarContent"; "required": false; "isSignal": true; }; "sidebarToggleLabel": { "alias": "sidebarToggleLabel"; "required": false; "isSignal": true; }; "mobileMenuLabel": { "alias": "mobileMenuLabel"; "required": false; "isSignal": true; }; "mobileMenuCloseLabel": { "alias": "mobileMenuCloseLabel"; "required": false; "isSignal": true; }; "userMenuTrigger": { "alias": "userMenuTrigger"; "required": false; "isSignal": true; }; "userMenuLabel": { "alias": "userMenuLabel"; "required": false; "isSignal": true; }; "primaryNavigation": { "alias": "primaryNavigation"; "required": false; "isSignal": true; }; "navigationGroups": { "alias": "navigationGroups"; "required": false; "isSignal": true; }; "utilityNavigation": { "alias": "utilityNavigation"; "required": false; "isSignal": true; }; "sectionNavigation": { "alias": "sectionNavigation"; "required": false; "isSignal": true; }; "secondaryNavigationGroups": { "alias": "secondaryNavigationGroups"; "required": false; "isSignal": true; }; "flyoutNavigationGroups": { "alias": "flyoutNavigationGroups"; "required": false; "isSignal": true; }; "flyoutNavigationLabel": { "alias": "flyoutNavigationLabel"; "required": false; "isSignal": true; }; "flyoutCloseLabel": { "alias": "flyoutCloseLabel"; "required": false; "isSignal": true; }; "userMenuSections": { "alias": "userMenuSections"; "required": false; "isSignal": true; }; "logo": { "alias": "logo"; "required": false; "isSignal": true; }; "brandName": { "alias": "brandName"; "required": false; "isSignal": true; }; "logoLink": { "alias": "logoLink"; "required": false; "isSignal": true; }; "logoClass": { "alias": "logoClass"; "required": false; "isSignal": true; }; "fullHeight": { "alias": "fullHeight"; "required": false; "isSignal": true; }; "headerClass": { "alias": "headerClass"; "required": false; "isSignal": true; }; "contentClass": { "alias": "contentClass"; "required": false; "isSignal": true; }; "primaryNavigationClass": { "alias": "primaryNavigationClass"; "required": false; "isSignal": true; }; "utilityNavigationClass": { "alias": "utilityNavigationClass"; "required": false; "isSignal": true; }; "sectionNavigationClass": { "alias": "sectionNavigationClass"; "required": false; "isSignal": true; }; "secondaryNavigationClass": { "alias": "secondaryNavigationClass"; "required": false; "isSignal": true; }; "flyoutNavigationClass": { "alias": "flyoutNavigationClass"; "required": false; "isSignal": true; }; "flyoutPanelClass": { "alias": "flyoutPanelClass"; "required": false; "isSignal": true; }; "navigationItemClass": { "alias": "navigationItemClass"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "skipLinkText": { "alias": "skipLinkText"; "required": false; "isSignal": true; }; "searchEnabled": { "alias": "searchEnabled"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchEmptyText": { "alias": "searchEmptyText"; "required": false; "isSignal": true; }; "searchErrorText": { "alias": "searchErrorText"; "required": false; "isSignal": true; }; "searchResultTemplate": { "alias": "searchResultTemplate"; "required": false; "isSignal": true; }; "searchLoader": { "alias": "searchLoader"; "required": false; "isSignal": true; }; "searchResultLabel": { "alias": "searchResultLabel"; "required": false; "isSignal": true; }; "footerEnabled": { "alias": "footerEnabled"; "required": false; "isSignal": true; }; "footerNavigation": { "alias": "footerNavigation"; "required": false; "isSignal": true; }; "footerText": { "alias": "footerText"; "required": false; "isSignal": true; }; "footerClass": { "alias": "footerClass"; "required": false; "isSignal": true; }; }, { "searchResultSelected": "searchResultSelected"; }, never, ["*"], true, never>;
164
201
  }
165
202
 
166
- export { EG_LAYOUT_SIMPLE_MOBILE_BREAKPOINT, EgGenericAutocomplete, EgLayoutSimple, EgLayoutSimpleUserMenu };
167
- export type { AutocompleteOption, MenuGroup, MenuItem, UserMenuItem, UserMenuSection };
203
+ export { EG_LAYOUT_SIMPLE_MOBILE_BREAKPOINT, EgLayoutSearch, EgLayoutSimple, EgLayoutSimpleUserMenu };
204
+ export type { FlyoutMenuGroup, LayoutSearchLoader, LayoutSearchResultContext, MenuGroup, MenuItem, UserMenuItem, UserMenuSection };