@egose/shadcn-theme-ng 0.0.28 → 0.2.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 (237) hide show
  1. package/README.md +130 -13
  2. package/accordion/README.md +376 -34
  3. package/accordion/fesm2022/accordion.mjs +27 -39
  4. package/alert/README.md +343 -34
  5. package/alert/fesm2022/alert.mjs +47 -47
  6. package/alert-dialog/README.md +471 -5
  7. package/alert-dialog/fesm2022/alert-dialog.mjs +47 -47
  8. package/aspect-ratio/README.md +272 -5
  9. package/aspect-ratio/fesm2022/aspect-ratio.mjs +9 -9
  10. package/autocomplete/README.md +473 -34
  11. package/autocomplete/fesm2022/autocomplete.mjs +53 -71
  12. package/avatar/README.md +357 -5
  13. package/avatar/fesm2022/avatar.mjs +32 -32
  14. package/badge/README.md +289 -34
  15. package/badge/fesm2022/badge.mjs +57 -57
  16. package/basic-alert/README.md +324 -34
  17. package/basic-alert/fesm2022/basic-alert.mjs +6 -18
  18. package/breadcrumb/README.md +406 -5
  19. package/breadcrumb/fesm2022/breadcrumb.mjs +33 -39
  20. package/button/README.md +453 -34
  21. package/button/fesm2022/button.mjs +147 -219
  22. package/button/types/button.d.ts +7 -10
  23. package/button-group/README.md +318 -5
  24. package/button-group/fesm2022/button-group.mjs +20 -20
  25. package/calendar/README.md +328 -34
  26. package/calendar/fesm2022/calendar.mjs +29 -743
  27. package/card/README.md +331 -5
  28. package/card/fesm2022/card.mjs +33 -33
  29. package/carousel/README.md +333 -5
  30. package/carousel/fesm2022/carousel.mjs +39 -78
  31. package/checkbox/README.md +291 -34
  32. package/checkbox/fesm2022/checkbox.mjs +20 -58
  33. package/checkbox/types/checkbox.d.ts +5 -4
  34. package/collapsible/README.md +332 -5
  35. package/collapsible/fesm2022/collapsible.mjs +15 -15
  36. package/combobox/README.md +507 -5
  37. package/combobox/fesm2022/combobox.mjs +91 -224
  38. package/command/README.md +435 -5
  39. package/command/fesm2022/command.mjs +49 -109
  40. package/confirmation-dialog/README.md +272 -34
  41. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +15 -40
  42. package/confirmation-dialog/types/confirmation-dialog.d.ts +8 -4
  43. package/context-menu/README.md +366 -5
  44. package/context-menu/fesm2022/context-menu.mjs +9 -9
  45. package/date-picker/README.md +436 -34
  46. package/date-picker/fesm2022/date-picker.mjs +64 -267
  47. package/date-picker/types/date-picker.d.ts +7 -3
  48. package/dialog/README.md +419 -34
  49. package/dialog/fesm2022/dialog.mjs +45 -71
  50. package/drawer/README.md +395 -5
  51. package/drawer/fesm2022/drawer.mjs +44 -54
  52. package/dropdown-menu/README.md +417 -5
  53. package/dropdown-menu/fesm2022/dropdown-menu.mjs +82 -70
  54. package/dropdown-menu/types/dropdown-menu.d.ts +4 -0
  55. package/empty/README.md +329 -5
  56. package/empty/fesm2022/empty.mjs +30 -30
  57. package/field/README.md +385 -5
  58. package/field/fesm2022/field.mjs +56 -72
  59. package/form-checkbox/README.md +283 -34
  60. package/form-checkbox/fesm2022/form-checkbox.mjs +25 -85
  61. package/form-checkbox/types/form-checkbox.d.ts +7 -1
  62. package/form-date-picker/README.md +293 -34
  63. package/form-date-picker/fesm2022/form-date-picker.mjs +31 -84
  64. package/form-date-picker/types/form-date-picker.d.ts +7 -1
  65. package/form-field/README.md +327 -34
  66. package/form-field/fesm2022/form-field.mjs +33 -19
  67. package/form-field/types/form-field.d.ts +28 -20
  68. package/form-field-simple/README.md +311 -34
  69. package/form-field-simple/fesm2022/form-field-simple.mjs +4 -4
  70. package/form-searchable-multiselect/README.md +332 -34
  71. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +31 -91
  72. package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +7 -1
  73. package/form-select/README.md +321 -34
  74. package/form-select/fesm2022/form-select.mjs +32 -149
  75. package/form-select/types/form-select.d.ts +7 -1
  76. package/form-text-input/README.md +342 -34
  77. package/form-text-input/fesm2022/form-text-input.mjs +35 -149
  78. package/form-text-input/types/form-text-input.d.ts +9 -12
  79. package/form-textarea/README.md +318 -34
  80. package/form-textarea/fesm2022/form-textarea.mjs +34 -109
  81. package/form-textarea/types/form-textarea.d.ts +8 -1
  82. package/hover-card/README.md +256 -5
  83. package/hover-card/fesm2022/hover-card.mjs +19 -19
  84. package/icon/README.md +210 -34
  85. package/icon/fesm2022/icon.mjs +8 -8
  86. package/input/README.md +240 -34
  87. package/input/fesm2022/input.mjs +17 -12
  88. package/input/types/input.d.ts +2 -1
  89. package/input-group/README.md +335 -5
  90. package/input-group/fesm2022/input-group.mjs +34 -34
  91. package/input-otp/README.md +375 -5
  92. package/input-otp/fesm2022/input-otp.mjs +26 -26
  93. package/item/README.md +385 -5
  94. package/item/fesm2022/item.mjs +53 -53
  95. package/kbd/README.md +291 -5
  96. package/kbd/fesm2022/kbd.mjs +12 -12
  97. package/label/README.md +243 -34
  98. package/label/fesm2022/label.mjs +10 -10
  99. package/label/types/label.d.ts +1 -1
  100. package/layout-simple/README.md +174 -44
  101. package/layout-simple/fesm2022/layout-simple.mjs +508 -603
  102. package/layout-simple/types/layout-simple.d.ts +179 -128
  103. package/menu/README.md +418 -0
  104. package/menu/fesm2022/menu.mjs +455 -0
  105. package/menu/package.json +24 -0
  106. package/menu/types/menu.d.ts +137 -0
  107. package/menubar/README.md +343 -5
  108. package/menubar/fesm2022/menubar.mjs +13 -13
  109. package/native-select/README.md +323 -5
  110. package/native-select/fesm2022/native-select.mjs +19 -19
  111. package/navigation-menu/README.md +369 -5
  112. package/navigation-menu/fesm2022/navigation-menu.mjs +35 -47
  113. package/package.json +183 -154
  114. package/pagination/README.md +388 -5
  115. package/pagination/fesm2022/pagination.mjs +45 -331
  116. package/popover/README.md +302 -34
  117. package/popover/fesm2022/popover.mjs +30 -30
  118. package/progress/README.md +311 -5
  119. package/progress/fesm2022/progress.mjs +13 -13
  120. package/radio-group/README.md +335 -34
  121. package/radio-group/fesm2022/radio-group.mjs +26 -19
  122. package/radio-group/types/radio-group.d.ts +1 -1
  123. package/resizable/README.md +269 -5
  124. package/resizable/fesm2022/resizable.mjs +18 -26
  125. package/scroll-area/README.md +233 -5
  126. package/scroll-area/fesm2022/scroll-area.mjs +9 -9
  127. package/searchable-multiselect/README.md +294 -34
  128. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +28 -117
  129. package/searchable-multiselect/types/searchable-multiselect.d.ts +8 -2
  130. package/select/README.md +408 -34
  131. package/select/fesm2022/select.mjs +71 -111
  132. package/select/types/select.d.ts +3 -1
  133. package/separator/README.md +193 -34
  134. package/separator/fesm2022/separator.mjs +9 -9
  135. package/separator/types/separator.d.ts +1 -1
  136. package/sheet/README.md +282 -34
  137. package/sheet/fesm2022/sheet.mjs +41 -53
  138. package/sidebar/README.md +457 -5
  139. package/sidebar/fesm2022/sidebar.mjs +125 -227
  140. package/skeleton/README.md +217 -5
  141. package/skeleton/fesm2022/skeleton.mjs +9 -9
  142. package/slider/README.md +273 -5
  143. package/slider/fesm2022/slider.mjs +10 -80
  144. package/sonner/README.md +317 -34
  145. package/sonner/fesm2022/sonner.mjs +13 -13
  146. package/spinner/README.md +255 -34
  147. package/spinner/fesm2022/spinner.mjs +11 -11
  148. package/switch/README.md +281 -34
  149. package/switch/fesm2022/switch.mjs +13 -15
  150. package/table/README.md +423 -5
  151. package/table/fesm2022/table.mjs +41 -41
  152. package/tabs/README.md +382 -34
  153. package/tabs/fesm2022/tabs.mjs +35 -111
  154. package/textarea/README.md +282 -5
  155. package/textarea/fesm2022/textarea.mjs +9 -9
  156. package/toggle/README.md +270 -5
  157. package/toggle/fesm2022/toggle.mjs +13 -13
  158. package/toggle-group/README.md +340 -5
  159. package/toggle-group/fesm2022/toggle-group.mjs +13 -13
  160. package/toggle-group/types/toggle-group.d.ts +13 -7
  161. package/tooltip/README.md +240 -34
  162. package/tooltip/fesm2022/tooltip.mjs +14 -14
  163. package/typography/README.md +271 -5
  164. package/typography/fesm2022/typography.mjs +53 -53
  165. package/typography/types/typography.d.ts +19 -19
  166. package/utils/README.md +274 -34
  167. package/utils/fesm2022/utils.mjs +68 -44
  168. package/accordion/fesm2022/accordion.mjs.map +0 -1
  169. package/alert/fesm2022/alert.mjs.map +0 -1
  170. package/alert-dialog/fesm2022/alert-dialog.mjs.map +0 -1
  171. package/aspect-ratio/fesm2022/aspect-ratio.mjs.map +0 -1
  172. package/autocomplete/fesm2022/autocomplete.mjs.map +0 -1
  173. package/avatar/fesm2022/avatar.mjs.map +0 -1
  174. package/badge/fesm2022/badge.mjs.map +0 -1
  175. package/basic-alert/fesm2022/basic-alert.mjs.map +0 -1
  176. package/breadcrumb/fesm2022/breadcrumb.mjs.map +0 -1
  177. package/button/fesm2022/button.mjs.map +0 -1
  178. package/button-group/fesm2022/button-group.mjs.map +0 -1
  179. package/calendar/fesm2022/calendar.mjs.map +0 -1
  180. package/card/fesm2022/card.mjs.map +0 -1
  181. package/carousel/fesm2022/carousel.mjs.map +0 -1
  182. package/checkbox/fesm2022/checkbox.mjs.map +0 -1
  183. package/collapsible/fesm2022/collapsible.mjs.map +0 -1
  184. package/combobox/fesm2022/combobox.mjs.map +0 -1
  185. package/command/fesm2022/command.mjs.map +0 -1
  186. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +0 -1
  187. package/context-menu/fesm2022/context-menu.mjs.map +0 -1
  188. package/date-picker/fesm2022/date-picker.mjs.map +0 -1
  189. package/dialog/fesm2022/dialog.mjs.map +0 -1
  190. package/drawer/fesm2022/drawer.mjs.map +0 -1
  191. package/dropdown-menu/fesm2022/dropdown-menu.mjs.map +0 -1
  192. package/empty/fesm2022/empty.mjs.map +0 -1
  193. package/field/fesm2022/field.mjs.map +0 -1
  194. package/form-checkbox/fesm2022/form-checkbox.mjs.map +0 -1
  195. package/form-date-picker/fesm2022/form-date-picker.mjs.map +0 -1
  196. package/form-field/fesm2022/form-field.mjs.map +0 -1
  197. package/form-field-simple/fesm2022/form-field-simple.mjs.map +0 -1
  198. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +0 -1
  199. package/form-select/fesm2022/form-select.mjs.map +0 -1
  200. package/form-text-input/fesm2022/form-text-input.mjs.map +0 -1
  201. package/form-textarea/fesm2022/form-textarea.mjs.map +0 -1
  202. package/hover-card/fesm2022/hover-card.mjs.map +0 -1
  203. package/icon/fesm2022/icon.mjs.map +0 -1
  204. package/input/fesm2022/input.mjs.map +0 -1
  205. package/input-group/fesm2022/input-group.mjs.map +0 -1
  206. package/input-otp/fesm2022/input-otp.mjs.map +0 -1
  207. package/item/fesm2022/item.mjs.map +0 -1
  208. package/kbd/fesm2022/kbd.mjs.map +0 -1
  209. package/label/fesm2022/label.mjs.map +0 -1
  210. package/layout-simple/fesm2022/layout-simple.mjs.map +0 -1
  211. package/menubar/fesm2022/menubar.mjs.map +0 -1
  212. package/native-select/fesm2022/native-select.mjs.map +0 -1
  213. package/navigation-menu/fesm2022/navigation-menu.mjs.map +0 -1
  214. package/pagination/fesm2022/pagination.mjs.map +0 -1
  215. package/popover/fesm2022/popover.mjs.map +0 -1
  216. package/progress/fesm2022/progress.mjs.map +0 -1
  217. package/radio-group/fesm2022/radio-group.mjs.map +0 -1
  218. package/resizable/fesm2022/resizable.mjs.map +0 -1
  219. package/scroll-area/fesm2022/scroll-area.mjs.map +0 -1
  220. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +0 -1
  221. package/select/fesm2022/select.mjs.map +0 -1
  222. package/separator/fesm2022/separator.mjs.map +0 -1
  223. package/sheet/fesm2022/sheet.mjs.map +0 -1
  224. package/sidebar/fesm2022/sidebar.mjs.map +0 -1
  225. package/skeleton/fesm2022/skeleton.mjs.map +0 -1
  226. package/slider/fesm2022/slider.mjs.map +0 -1
  227. package/sonner/fesm2022/sonner.mjs.map +0 -1
  228. package/spinner/fesm2022/spinner.mjs.map +0 -1
  229. package/switch/fesm2022/switch.mjs.map +0 -1
  230. package/table/fesm2022/table.mjs.map +0 -1
  231. package/tabs/fesm2022/tabs.mjs.map +0 -1
  232. package/textarea/fesm2022/textarea.mjs.map +0 -1
  233. package/toggle/fesm2022/toggle.mjs.map +0 -1
  234. package/toggle-group/fesm2022/toggle-group.mjs.map +0 -1
  235. package/tooltip/fesm2022/tooltip.mjs.map +0 -1
  236. package/typography/fesm2022/typography.mjs.map +0 -1
  237. package/utils/fesm2022/utils.mjs.map +0 -1
@@ -1,153 +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/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
- icon?: any;
11
- action?: () => void;
10
+ /** Supporting text displayed in fly-out cards. */
11
+ description?: string;
12
+ /** SVG data, e.g. `lucideHome` from `@ng-icons/lucide`. */
13
+ icon?: string;
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<any> | 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<any> | undefined>;
34
- contentContext: _angular_core.InputSignal<any>;
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?: any;
45
- link?: string;
46
- action?: () => void;
47
- class?: string;
48
- }
49
- interface MenuGroup {
50
- label?: string;
51
- items: MenuItem[];
52
- }
53
- declare class EgLayoutSimple<TItem, TParams extends object = {
54
- search: string;
55
- }> {
56
- private breakpointObserver;
57
- hlm: typeof hlm;
58
- menuIcon: string;
59
- sidebarEnabled: _angular_core.InputSignal<boolean>;
60
- sidebarTitle: _angular_core.InputSignal<string>;
61
- sidebarContent: _angular_core.InputSignal<TemplateRef<any> | undefined>;
62
- userMenuTrigger: _angular_core.InputSignal<TemplateRef<any> | undefined>;
63
- /** Menu data inputs */
64
- leftMenus: _angular_core.InputSignal<MenuItem[]>;
65
- leftMenuGroups: _angular_core.InputSignal<MenuGroup[]>;
66
- rightMenus: _angular_core.InputSignal<MenuItem[]>;
67
- topMenus: _angular_core.InputSignal<MenuItem[]>;
68
- topSecondaryMenus: _angular_core.InputSignal<MenuGroup[]>;
69
- userMenus: _angular_core.InputSignal<UserMenuSection[]>;
70
- logo: _angular_core.InputSignal<string>;
71
- logoLink: _angular_core.InputSignal<string>;
72
- logoClass: _angular_core.InputSignal<ClassValue>;
73
- headerClass: _angular_core.InputSignal<ClassValue>;
74
- contentClass: _angular_core.InputSignal<ClassValue>;
75
- contentBottomClass: _angular_core.InputSignal<ClassValue>;
76
- /** Container class inputs */
77
- leftMenuClass: _angular_core.InputSignal<ClassValue>;
78
- rightMenuClass: _angular_core.InputSignal<ClassValue>;
79
- topMenuClass: _angular_core.InputSignal<ClassValue>;
80
- /** Link/button base class inputs */
81
- leftLinkClass: _angular_core.InputSignal<ClassValue>;
82
- rightLinkClass: _angular_core.InputSignal<ClassValue>;
83
- topLinkClass: _angular_core.InputSignal<ClassValue>;
84
- searchEnabled: _angular_core.InputSignal<boolean>;
85
- loading: _angular_core.InputSignal<boolean>;
86
- searchPlaceholderText: _angular_core.InputSignal<string>;
87
- searchEmptyText: _angular_core.InputSignal<string>;
88
- searchOptionTemplate: _angular_core.InputSignal<TemplateRef<any> | undefined>;
89
- searchLoaderFn: _angular_core.InputSignal<((params: TParams) => Promise<TItem[]>) | undefined>;
90
- searchTransformValueToSearch: _angular_core.InputSignal<((value: TItem) => string) | undefined>;
91
- readonly searchOptionChange: _angular_core.OutputEmitterRef<TItem>;
92
- protected readonly _logoClass: _angular_core.Signal<string>;
93
- protected readonly _headerClass: _angular_core.Signal<string>;
94
- protected readonly _contentClass: _angular_core.Signal<string>;
95
- protected readonly _contentBottomClass: _angular_core.Signal<string>;
96
- /** Computed merged classes for containers */
97
- protected readonly _computedLeftClass: _angular_core.Signal<string>;
98
- protected readonly _computedRightClass: _angular_core.Signal<string>;
99
- protected readonly _computedTopClass: _angular_core.Signal<string>;
100
- protected readonly _computedTopSecondaryClass: _angular_core.Signal<string>;
101
- /** Computed merged classes for link/button elements */
102
- protected readonly _computedLeftLinkClass: _angular_core.Signal<string>;
103
- protected readonly _computedRightLinkClass: _angular_core.Signal<string>;
104
- protected readonly _computedTopLinkClass: _angular_core.Signal<string>;
105
- mobileMenuItemClass: string;
106
- footerEnabled: _angular_core.InputSignal<boolean>;
107
- footerMenus: _angular_core.InputSignal<MenuItem[]>;
108
- footerMenuClass: _angular_core.InputSignal<ClassValue>;
109
- footerLinkClass: _angular_core.InputSignal<ClassValue>;
110
- footerContent: _angular_core.InputSignal<string>;
111
- footerClass: _angular_core.InputSignal<ClassValue>;
112
- protected readonly _footerClass: _angular_core.Signal<string>;
113
- protected readonly _computedFooterMenuClass: _angular_core.Signal<string>;
114
- protected readonly _computedFooterLinkClass: _angular_core.Signal<string>;
115
- /** Mobile menu state */
116
- mobileMenuOpen: boolean;
117
- isMobile: _angular_core.WritableSignal<boolean>;
118
- constructor(breakpointObserver: BreakpointObserver);
119
- toggleMobileMenu(): void;
120
- onSearchOptionChange(value: TItem): void;
121
- readonly viewchildSheetRef: _angular_core.Signal<EgLayoutSimpleSidebar | undefined>;
122
- openSidebar(): void;
123
- closeSidebar(): void;
124
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgLayoutSimple<any, any>, never>;
125
- 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; }; "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>;
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>;
126
105
  }
127
106
 
128
- interface AutocompleteOption<T = unknown> {
129
- label: string;
130
- value: T;
131
- raw?: T;
132
- }
133
- declare class EgGenericAutocomplete<TItem, TParams extends object = {
134
- search: string;
135
- }> {
136
- placeholderText: _angular_core.InputSignal<string>;
137
- emptyText: _angular_core.InputSignal<string>;
138
- /** Loader function: takes search string, returns options. */
139
- loaderFn: _angular_core.InputSignal<((params: TParams) => Promise<TItem[]>) | undefined>;
140
- transformValueToSearch: _angular_core.InputSignal<((value: TItem) => string) | undefined>;
141
- readonly search: _angular_core.WritableSignal<string>;
142
- readonly options: _angular_core.WritableSignal<TItem[]>;
143
- protected readonly filtered: _angular_core.Signal<AutocompleteOption<TItem>[]>;
144
- readonly optionChange: _angular_core.OutputEmitterRef<TItem>;
107
+ /** Matches Tailwind's default `md` breakpoint. */
108
+ declare const EG_LAYOUT_SIMPLE_MOBILE_BREAKPOINT = "(max-width: 767.98px)";
109
+ /** Responsive application shell. All navigation surfaces share the same item model. */
110
+ declare class EgLayoutSimple<TItem = unknown> {
111
+ private readonly destroyRef;
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";
186
+ protected readonly mobileMenuOpen: _angular_core.WritableSignal<boolean>;
187
+ protected readonly isMobile: _angular_core.WritableSignal<boolean>;
188
+ protected readonly sidebarOpen: _angular_core.WritableSignal<boolean>;
189
+ protected readonly sidebarContext: {
190
+ close: () => void;
191
+ };
145
192
  constructor();
146
- private loadOptions;
147
- select(opt: AutocompleteOption<TItem>): void;
148
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgGenericAutocomplete<any, any>, never>;
149
- 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>;
193
+ protected toggleMobileMenu(): void;
194
+ protected closeMobileMenu(restoreFocus?: boolean): void;
195
+ protected selectSearchResult(item: TItem): void;
196
+ protected focusContent(event: Event): void;
197
+ openSidebar(): void;
198
+ closeSidebar(): void;
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>;
150
201
  }
151
202
 
152
- export { EgGenericAutocomplete, EgLayoutSimple, EgLayoutSimpleUserMenu };
153
- 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 };