@egose/shadcn-theme-ng 0.0.28 → 0.1.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 (201) hide show
  1. package/README.md +130 -13
  2. package/accordion/README.md +2 -63
  3. package/accordion/fesm2022/accordion.mjs +27 -39
  4. package/alert/README.md +2 -63
  5. package/alert/fesm2022/alert.mjs +47 -47
  6. package/alert-dialog/fesm2022/alert-dialog.mjs +47 -47
  7. package/aspect-ratio/fesm2022/aspect-ratio.mjs +9 -9
  8. package/autocomplete/README.md +2 -63
  9. package/autocomplete/fesm2022/autocomplete.mjs +53 -71
  10. package/avatar/fesm2022/avatar.mjs +32 -32
  11. package/badge/README.md +2 -63
  12. package/badge/fesm2022/badge.mjs +57 -57
  13. package/basic-alert/README.md +2 -63
  14. package/basic-alert/fesm2022/basic-alert.mjs +6 -18
  15. package/breadcrumb/fesm2022/breadcrumb.mjs +33 -39
  16. package/button/README.md +2 -63
  17. package/button/fesm2022/button.mjs +126 -176
  18. package/button/types/button.d.ts +2 -2
  19. package/button-group/fesm2022/button-group.mjs +20 -20
  20. package/calendar/README.md +2 -63
  21. package/calendar/fesm2022/calendar.mjs +29 -743
  22. package/card/fesm2022/card.mjs +33 -33
  23. package/carousel/fesm2022/carousel.mjs +36 -78
  24. package/checkbox/README.md +2 -63
  25. package/checkbox/fesm2022/checkbox.mjs +20 -58
  26. package/checkbox/types/checkbox.d.ts +5 -4
  27. package/collapsible/fesm2022/collapsible.mjs +15 -15
  28. package/combobox/fesm2022/combobox.mjs +88 -224
  29. package/command/fesm2022/command.mjs +49 -109
  30. package/confirmation-dialog/README.md +2 -63
  31. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +15 -40
  32. package/confirmation-dialog/types/confirmation-dialog.d.ts +8 -4
  33. package/context-menu/fesm2022/context-menu.mjs +9 -9
  34. package/date-picker/README.md +2 -63
  35. package/date-picker/fesm2022/date-picker.mjs +63 -266
  36. package/date-picker/types/date-picker.d.ts +7 -3
  37. package/dialog/README.md +2 -63
  38. package/dialog/fesm2022/dialog.mjs +45 -71
  39. package/drawer/fesm2022/drawer.mjs +44 -54
  40. package/dropdown-menu/fesm2022/dropdown-menu.mjs +82 -70
  41. package/dropdown-menu/types/dropdown-menu.d.ts +4 -0
  42. package/empty/fesm2022/empty.mjs +30 -30
  43. package/field/fesm2022/field.mjs +56 -72
  44. package/form-checkbox/README.md +2 -63
  45. package/form-checkbox/fesm2022/form-checkbox.mjs +25 -85
  46. package/form-checkbox/types/form-checkbox.d.ts +7 -1
  47. package/form-date-picker/README.md +2 -63
  48. package/form-date-picker/fesm2022/form-date-picker.mjs +31 -84
  49. package/form-date-picker/types/form-date-picker.d.ts +7 -1
  50. package/form-field/README.md +2 -63
  51. package/form-field/fesm2022/form-field.mjs +33 -19
  52. package/form-field/types/form-field.d.ts +28 -20
  53. package/form-field-simple/README.md +2 -63
  54. package/form-field-simple/fesm2022/form-field-simple.mjs +4 -4
  55. package/form-searchable-multiselect/README.md +2 -63
  56. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +31 -91
  57. package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +7 -1
  58. package/form-select/README.md +2 -63
  59. package/form-select/fesm2022/form-select.mjs +32 -149
  60. package/form-select/types/form-select.d.ts +7 -1
  61. package/form-text-input/README.md +2 -63
  62. package/form-text-input/fesm2022/form-text-input.mjs +35 -149
  63. package/form-text-input/types/form-text-input.d.ts +9 -12
  64. package/form-textarea/README.md +2 -63
  65. package/form-textarea/fesm2022/form-textarea.mjs +34 -109
  66. package/form-textarea/types/form-textarea.d.ts +8 -1
  67. package/hover-card/fesm2022/hover-card.mjs +19 -19
  68. package/icon/README.md +2 -63
  69. package/icon/fesm2022/icon.mjs +8 -8
  70. package/input/README.md +2 -63
  71. package/input/fesm2022/input.mjs +17 -12
  72. package/input/types/input.d.ts +2 -1
  73. package/input-group/fesm2022/input-group.mjs +33 -33
  74. package/input-otp/fesm2022/input-otp.mjs +26 -26
  75. package/item/fesm2022/item.mjs +53 -53
  76. package/kbd/fesm2022/kbd.mjs +12 -12
  77. package/label/README.md +2 -63
  78. package/label/fesm2022/label.mjs +10 -10
  79. package/label/types/label.d.ts +1 -1
  80. package/layout-simple/README.md +2 -63
  81. package/layout-simple/fesm2022/layout-simple.mjs +98 -429
  82. package/layout-simple/types/layout-simple.d.ts +25 -11
  83. package/menu/README.md +3 -0
  84. package/menu/fesm2022/menu.mjs +455 -0
  85. package/menu/package.json +24 -0
  86. package/menu/types/menu.d.ts +137 -0
  87. package/menubar/fesm2022/menubar.mjs +13 -13
  88. package/native-select/fesm2022/native-select.mjs +19 -19
  89. package/navigation-menu/fesm2022/navigation-menu.mjs +35 -47
  90. package/package.json +183 -154
  91. package/pagination/fesm2022/pagination.mjs +45 -331
  92. package/popover/README.md +2 -63
  93. package/popover/fesm2022/popover.mjs +30 -30
  94. package/progress/fesm2022/progress.mjs +13 -13
  95. package/radio-group/README.md +2 -63
  96. package/radio-group/fesm2022/radio-group.mjs +22 -19
  97. package/resizable/fesm2022/resizable.mjs +18 -26
  98. package/scroll-area/fesm2022/scroll-area.mjs +9 -9
  99. package/searchable-multiselect/README.md +2 -63
  100. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +28 -117
  101. package/searchable-multiselect/types/searchable-multiselect.d.ts +8 -2
  102. package/select/README.md +2 -63
  103. package/select/fesm2022/select.mjs +71 -111
  104. package/select/types/select.d.ts +3 -1
  105. package/separator/README.md +2 -63
  106. package/separator/fesm2022/separator.mjs +9 -9
  107. package/separator/types/separator.d.ts +1 -1
  108. package/sheet/README.md +2 -63
  109. package/sheet/fesm2022/sheet.mjs +41 -53
  110. package/sidebar/fesm2022/sidebar.mjs +125 -227
  111. package/skeleton/fesm2022/skeleton.mjs +9 -9
  112. package/slider/fesm2022/slider.mjs +10 -80
  113. package/sonner/README.md +2 -63
  114. package/sonner/fesm2022/sonner.mjs +13 -13
  115. package/spinner/README.md +2 -63
  116. package/spinner/fesm2022/spinner.mjs +11 -11
  117. package/switch/README.md +2 -63
  118. package/switch/fesm2022/switch.mjs +13 -15
  119. package/table/fesm2022/table.mjs +41 -41
  120. package/tabs/README.md +2 -63
  121. package/tabs/fesm2022/tabs.mjs +35 -111
  122. package/textarea/fesm2022/textarea.mjs +9 -9
  123. package/toggle/fesm2022/toggle.mjs +13 -13
  124. package/toggle-group/fesm2022/toggle-group.mjs +13 -13
  125. package/toggle-group/types/toggle-group.d.ts +13 -7
  126. package/tooltip/README.md +2 -63
  127. package/tooltip/fesm2022/tooltip.mjs +14 -14
  128. package/typography/fesm2022/typography.mjs +53 -53
  129. package/typography/types/typography.d.ts +12 -12
  130. package/utils/README.md +2 -63
  131. package/utils/fesm2022/utils.mjs +68 -44
  132. package/accordion/fesm2022/accordion.mjs.map +0 -1
  133. package/alert/fesm2022/alert.mjs.map +0 -1
  134. package/alert-dialog/fesm2022/alert-dialog.mjs.map +0 -1
  135. package/aspect-ratio/fesm2022/aspect-ratio.mjs.map +0 -1
  136. package/autocomplete/fesm2022/autocomplete.mjs.map +0 -1
  137. package/avatar/fesm2022/avatar.mjs.map +0 -1
  138. package/badge/fesm2022/badge.mjs.map +0 -1
  139. package/basic-alert/fesm2022/basic-alert.mjs.map +0 -1
  140. package/breadcrumb/fesm2022/breadcrumb.mjs.map +0 -1
  141. package/button/fesm2022/button.mjs.map +0 -1
  142. package/button-group/fesm2022/button-group.mjs.map +0 -1
  143. package/calendar/fesm2022/calendar.mjs.map +0 -1
  144. package/card/fesm2022/card.mjs.map +0 -1
  145. package/carousel/fesm2022/carousel.mjs.map +0 -1
  146. package/checkbox/fesm2022/checkbox.mjs.map +0 -1
  147. package/collapsible/fesm2022/collapsible.mjs.map +0 -1
  148. package/combobox/fesm2022/combobox.mjs.map +0 -1
  149. package/command/fesm2022/command.mjs.map +0 -1
  150. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +0 -1
  151. package/context-menu/fesm2022/context-menu.mjs.map +0 -1
  152. package/date-picker/fesm2022/date-picker.mjs.map +0 -1
  153. package/dialog/fesm2022/dialog.mjs.map +0 -1
  154. package/drawer/fesm2022/drawer.mjs.map +0 -1
  155. package/dropdown-menu/fesm2022/dropdown-menu.mjs.map +0 -1
  156. package/empty/fesm2022/empty.mjs.map +0 -1
  157. package/field/fesm2022/field.mjs.map +0 -1
  158. package/form-checkbox/fesm2022/form-checkbox.mjs.map +0 -1
  159. package/form-date-picker/fesm2022/form-date-picker.mjs.map +0 -1
  160. package/form-field/fesm2022/form-field.mjs.map +0 -1
  161. package/form-field-simple/fesm2022/form-field-simple.mjs.map +0 -1
  162. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +0 -1
  163. package/form-select/fesm2022/form-select.mjs.map +0 -1
  164. package/form-text-input/fesm2022/form-text-input.mjs.map +0 -1
  165. package/form-textarea/fesm2022/form-textarea.mjs.map +0 -1
  166. package/hover-card/fesm2022/hover-card.mjs.map +0 -1
  167. package/icon/fesm2022/icon.mjs.map +0 -1
  168. package/input/fesm2022/input.mjs.map +0 -1
  169. package/input-group/fesm2022/input-group.mjs.map +0 -1
  170. package/input-otp/fesm2022/input-otp.mjs.map +0 -1
  171. package/item/fesm2022/item.mjs.map +0 -1
  172. package/kbd/fesm2022/kbd.mjs.map +0 -1
  173. package/label/fesm2022/label.mjs.map +0 -1
  174. package/layout-simple/fesm2022/layout-simple.mjs.map +0 -1
  175. package/menubar/fesm2022/menubar.mjs.map +0 -1
  176. package/native-select/fesm2022/native-select.mjs.map +0 -1
  177. package/navigation-menu/fesm2022/navigation-menu.mjs.map +0 -1
  178. package/pagination/fesm2022/pagination.mjs.map +0 -1
  179. package/popover/fesm2022/popover.mjs.map +0 -1
  180. package/progress/fesm2022/progress.mjs.map +0 -1
  181. package/radio-group/fesm2022/radio-group.mjs.map +0 -1
  182. package/resizable/fesm2022/resizable.mjs.map +0 -1
  183. package/scroll-area/fesm2022/scroll-area.mjs.map +0 -1
  184. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +0 -1
  185. package/select/fesm2022/select.mjs.map +0 -1
  186. package/separator/fesm2022/separator.mjs.map +0 -1
  187. package/sheet/fesm2022/sheet.mjs.map +0 -1
  188. package/sidebar/fesm2022/sidebar.mjs.map +0 -1
  189. package/skeleton/fesm2022/skeleton.mjs.map +0 -1
  190. package/slider/fesm2022/slider.mjs.map +0 -1
  191. package/sonner/fesm2022/sonner.mjs.map +0 -1
  192. package/spinner/fesm2022/spinner.mjs.map +0 -1
  193. package/switch/fesm2022/switch.mjs.map +0 -1
  194. package/table/fesm2022/table.mjs.map +0 -1
  195. package/tabs/fesm2022/tabs.mjs.map +0 -1
  196. package/textarea/fesm2022/textarea.mjs.map +0 -1
  197. package/toggle/fesm2022/toggle.mjs.map +0 -1
  198. package/toggle-group/fesm2022/toggle-group.mjs.map +0 -1
  199. package/tooltip/fesm2022/tooltip.mjs.map +0 -1
  200. package/typography/fesm2022/typography.mjs.map +0 -1
  201. package/utils/fesm2022/utils.mjs.map +0 -1
@@ -7,7 +7,7 @@ import { BrnSheet } from '@spartan-ng/brain/sheet';
7
7
 
8
8
  interface UserMenuItem {
9
9
  label: string;
10
- icon?: any;
10
+ icon?: string;
11
11
  action?: () => void;
12
12
  link?: string;
13
13
  class?: string;
@@ -21,7 +21,7 @@ declare class EgLayoutSimpleUserMenu {
21
21
  hlm: typeof hlm;
22
22
  lucideUser: string;
23
23
  menus: _angular_core.InputSignal<UserMenuSection[]>;
24
- menuTrigger: _angular_core.InputSignal<TemplateRef<any> | undefined>;
24
+ menuTrigger: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
25
25
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EgLayoutSimpleUserMenu, never>;
26
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>;
27
27
  }
@@ -30,8 +30,8 @@ declare class EgLayoutSimpleSidebar {
30
30
  readonly viewchildSheetRef: _angular_core.Signal<BrnSheet | undefined>;
31
31
  side: _angular_core.InputSignal<"top" | "bottom" | "left" | "right" | undefined>;
32
32
  title: _angular_core.InputSignal<string | undefined>;
33
- content: _angular_core.InputSignal<TemplateRef<any> | undefined>;
34
- contentContext: _angular_core.InputSignal<any>;
33
+ content: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
34
+ contentContext: _angular_core.InputSignal<object | null>;
35
35
  constructor();
36
36
  openSheet(): void;
37
37
  closeSheet(): void;
@@ -41,7 +41,7 @@ declare class EgLayoutSimpleSidebar {
41
41
 
42
42
  interface MenuItem {
43
43
  label: string;
44
- icon?: any;
44
+ icon?: string;
45
45
  link?: string;
46
46
  action?: () => void;
47
47
  class?: string;
@@ -50,16 +50,27 @@ interface MenuGroup {
50
50
  label?: string;
51
51
  items: MenuItem[];
52
52
  }
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
+ */
58
+ declare const EG_LAYOUT_SIMPLE_MOBILE_BREAKPOINT = "(max-width: 767.98px)";
53
59
  declare class EgLayoutSimple<TItem, TParams extends object = {
54
60
  search: string;
55
61
  }> {
56
62
  private breakpointObserver;
63
+ private readonly destroyRef;
57
64
  hlm: typeof hlm;
58
65
  menuIcon: string;
59
66
  sidebarEnabled: _angular_core.InputSignal<boolean>;
60
67
  sidebarTitle: _angular_core.InputSignal<string>;
61
- sidebarContent: _angular_core.InputSignal<TemplateRef<any> | undefined>;
62
- userMenuTrigger: _angular_core.InputSignal<TemplateRef<any> | undefined>;
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>;
63
74
  /** Menu data inputs */
64
75
  leftMenus: _angular_core.InputSignal<MenuItem[]>;
65
76
  leftMenuGroups: _angular_core.InputSignal<MenuGroup[]>;
@@ -85,7 +96,7 @@ declare class EgLayoutSimple<TItem, TParams extends object = {
85
96
  loading: _angular_core.InputSignal<boolean>;
86
97
  searchPlaceholderText: _angular_core.InputSignal<string>;
87
98
  searchEmptyText: _angular_core.InputSignal<string>;
88
- searchOptionTemplate: _angular_core.InputSignal<TemplateRef<any> | undefined>;
99
+ searchOptionTemplate: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
89
100
  searchLoaderFn: _angular_core.InputSignal<((params: TParams) => Promise<TItem[]>) | undefined>;
90
101
  searchTransformValueToSearch: _angular_core.InputSignal<((value: TItem) => string) | undefined>;
91
102
  readonly searchOptionChange: _angular_core.OutputEmitterRef<TItem>;
@@ -113,16 +124,19 @@ declare class EgLayoutSimple<TItem, TParams extends object = {
113
124
  protected readonly _computedFooterMenuClass: _angular_core.Signal<string>;
114
125
  protected readonly _computedFooterLinkClass: _angular_core.Signal<string>;
115
126
  /** Mobile menu state */
116
- mobileMenuOpen: boolean;
127
+ protected readonly mobileMenuOpen: _angular_core.WritableSignal<boolean>;
117
128
  isMobile: _angular_core.WritableSignal<boolean>;
129
+ /** Expanded state of the sidebar sheet, kept in sync with BrnSheet state changes. */
130
+ protected readonly sidebarOpen: _angular_core.WritableSignal<boolean>;
118
131
  constructor(breakpointObserver: BreakpointObserver);
119
132
  toggleMobileMenu(): void;
133
+ closeMobileMenu(): void;
120
134
  onSearchOptionChange(value: TItem): void;
121
135
  readonly viewchildSheetRef: _angular_core.Signal<EgLayoutSimpleSidebar | undefined>;
122
136
  openSidebar(): void;
123
137
  closeSidebar(): void;
124
138
  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>;
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>;
126
140
  }
127
141
 
128
142
  interface AutocompleteOption<T = unknown> {
@@ -149,5 +163,5 @@ declare class EgGenericAutocomplete<TItem, TParams extends object = {
149
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>;
150
164
  }
151
165
 
152
- export { EgGenericAutocomplete, EgLayoutSimple, EgLayoutSimpleUserMenu };
166
+ export { EG_LAYOUT_SIMPLE_MOBILE_BREAKPOINT, EgGenericAutocomplete, EgLayoutSimple, EgLayoutSimpleUserMenu };
153
167
  export type { AutocompleteOption, MenuGroup, MenuItem, UserMenuItem, UserMenuSection };
package/menu/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Menu Subpath
2
+
3
+ This project ships only as `@egose/shadcn-theme-ng/menu` or `@egose/shadcn-theme-ng-tw/menu`. See the [package README](../../README.md) for installation, compatibility, Tailwind variant, test, and release guidance. Do not publish this project directory independently.
@@ -0,0 +1,455 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, ChangeDetectionStrategy, Component, Directive, booleanAttribute, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/cdk/menu';
4
+ import { CdkMenu, CdkMenuBar, CdkMenuItem, CdkMenuGroup, CdkMenuItemCheckbox, CdkMenuItemRadio } from '@angular/cdk/menu';
5
+ import { hlm } from '@egose/shadcn-theme-ng/utils';
6
+ import { cva } from 'class-variance-authority';
7
+ import { NgIcon, provideIcons } from '@ng-icons/core';
8
+ import { lucideCheck, lucideCircle, lucideChevronRight } from '@ng-icons/lucide';
9
+ import { HlmIcon, provideHlmIconConfig } from '@egose/shadcn-theme-ng/icon';
10
+
11
+ const menuVariants = cva("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out tw:data-[state=closed]:fade-out-0 tw:data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-top overflow-y-auto overflow-x-hidden rounded-md border p-1 shadow-md", {
12
+ variants: {
13
+ variant: {
14
+ default: "my-0.5",
15
+ menubar: "my-2",
16
+ },
17
+ },
18
+ defaultVariants: {
19
+ variant: 'default',
20
+ },
21
+ });
22
+ class HlmMenu {
23
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
24
+ _computedClass = computed(() => hlm(menuVariants({ variant: this.variant() }), this.userClass()), /* @ts-ignore */
25
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
26
+ variant = input('default', /* @ts-ignore */
27
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenu, isStandalone: true, selector: "hlm-menu", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.CdkMenu }], ngImport: i0, template: ` <ng-content /> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenu, decorators: [{
32
+ type: Component,
33
+ args: [{
34
+ selector: 'hlm-menu',
35
+ host: {
36
+ '[class]': '_computedClass()',
37
+ },
38
+ hostDirectives: [CdkMenu],
39
+ template: ` <ng-content /> `,
40
+ changeDetection: ChangeDetectionStrategy.OnPush,
41
+ }]
42
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
43
+
44
+ class HlmMenuBar {
45
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
46
+ _computedClass = computed(() => hlm("bg-background shadow-xs flex h-9 items-center gap-1 rounded-md border p-1", this.userClass()), /* @ts-ignore */
47
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
48
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuBar, isStandalone: true, selector: "hlm-menu-bar", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.CdkMenuBar }], ngImport: i0, template: '<ng-content/>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuBar, decorators: [{
52
+ type: Component,
53
+ args: [{
54
+ selector: 'hlm-menu-bar',
55
+ host: {
56
+ '[class]': '_computedClass()',
57
+ },
58
+ hostDirectives: [CdkMenuBar],
59
+ template: '<ng-content/>',
60
+ changeDetection: ChangeDetectionStrategy.OnPush,
61
+ }]
62
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
63
+
64
+ class HlmMenuBarItem {
65
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
66
+ _computedClass = computed(() => hlm("focus:bg-secondary focus:text-secondary-foreground aria-expanded:bg-secondary aria-expanded:text-secondary-foreground flex select-none items-center rounded-sm px-2 py-1 text-sm font-medium outline-none", this.userClass()), /* @ts-ignore */
67
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuBarItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
69
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuBarItem, isStandalone: true, selector: "[hlmMenuBarItem]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.CdkMenuItem }], ngImport: i0 });
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuBarItem, decorators: [{
72
+ type: Directive,
73
+ args: [{
74
+ selector: '[hlmMenuBarItem]',
75
+ host: {
76
+ '[class]': '_computedClass()',
77
+ },
78
+ hostDirectives: [CdkMenuItem],
79
+ }]
80
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
81
+
82
+ class HlmMenuGroup {
83
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
84
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.3", type: HlmMenuGroup, isStandalone: true, selector: "hlm-menu-group", host: { classAttribute: "block" }, hostDirectives: [{ directive: i1.CdkMenuGroup }], ngImport: i0, template: ` <ng-content /> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
+ }
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuGroup, decorators: [{
87
+ type: Component,
88
+ args: [{
89
+ selector: 'hlm-menu-group',
90
+ host: {
91
+ class: 'block',
92
+ },
93
+ hostDirectives: [CdkMenuGroup],
94
+ template: ` <ng-content /> `,
95
+ changeDetection: ChangeDetectionStrategy.OnPush,
96
+ }]
97
+ }] });
98
+
99
+ class HlmMenuItem {
100
+ variant = input('default', /* @ts-ignore */
101
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
102
+ inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
103
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
104
+ _computedClass = computed(() => hlm("hover:bg-secondary hover:text-secondary-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[ng-icon]:!text-destructive [&_ng-icon]:text-muted-foreground relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[inset]:pl-8 data-[disabled]:opacity-50 [&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0", this.userClass()), /* @ts-ignore */
105
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
107
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuItem, isStandalone: true, selector: "[hlmMenuItem]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()", "attr.data-variant": "variant()", "attr.data-inset": "inset() ? \"\" : null" } }, hostDirectives: [{ directive: i1.CdkMenuItem, inputs: ["cdkMenuItemDisabled", "disabled"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0 });
108
+ }
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItem, decorators: [{
110
+ type: Directive,
111
+ args: [{
112
+ selector: '[hlmMenuItem]',
113
+ host: {
114
+ '[class]': '_computedClass()',
115
+ '[attr.data-variant]': 'variant()',
116
+ '[attr.data-inset]': 'inset() ? "" : null',
117
+ },
118
+ hostDirectives: [
119
+ {
120
+ directive: CdkMenuItem,
121
+ inputs: ['cdkMenuItemDisabled: disabled'],
122
+ outputs: ['cdkMenuItemTriggered: triggered'],
123
+ },
124
+ ],
125
+ }]
126
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
127
+
128
+ class HlmMenuItemCheck {
129
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
130
+ _computedClass = computed(() => hlm("absolute left-2 flex h-3.5 w-3.5 items-center justify-center opacity-0 group-[.checked]:opacity-100", this.userClass()), /* @ts-ignore */
131
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
132
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemCheck, deps: [], target: i0.ɵɵFactoryTarget.Component });
133
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuItemCheck, isStandalone: true, selector: "hlm-menu-item-check", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [provideIcons({ lucideCheck })], ngImport: i0, template: `
134
+ <!-- Using 1rem for size to mimick h-4 w-4 -->
135
+ <ng-icon hlm size="1rem" name="lucideCheck" />
136
+ `, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
+ }
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemCheck, decorators: [{
139
+ type: Component,
140
+ args: [{
141
+ selector: 'hlm-menu-item-check',
142
+ providers: [provideIcons({ lucideCheck })],
143
+ imports: [NgIcon, HlmIcon],
144
+ template: `
145
+ <!-- Using 1rem for size to mimick h-4 w-4 -->
146
+ <ng-icon hlm size="1rem" name="lucideCheck" />
147
+ `,
148
+ host: {
149
+ '[class]': '_computedClass()',
150
+ },
151
+ changeDetection: ChangeDetectionStrategy.OnPush,
152
+ }]
153
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
154
+
155
+ class HlmMenuItemCheckbox {
156
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
157
+ _computedClass = computed(() => hlm("hover:bg-secondary hover:text-secondary-foreground focus-visible:bg-secondary focus-visible:text-secondary-foreground group relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors disabled:pointer-events-none disabled:opacity-50", this.userClass()), /* @ts-ignore */
158
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
159
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Directive });
160
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuItemCheckbox, isStandalone: true, selector: "[hlmMenuItemCheckbox]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.CdkMenuItemCheckbox, inputs: ["cdkMenuItemDisabled", "disabled", "cdkMenuItemChecked", "checked"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0 });
161
+ }
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemCheckbox, decorators: [{
163
+ type: Directive,
164
+ args: [{
165
+ selector: '[hlmMenuItemCheckbox]',
166
+ host: {
167
+ '[class]': '_computedClass()',
168
+ },
169
+ hostDirectives: [
170
+ {
171
+ directive: CdkMenuItemCheckbox,
172
+ inputs: ['cdkMenuItemDisabled: disabled', 'cdkMenuItemChecked: checked'],
173
+ outputs: ['cdkMenuItemTriggered: triggered'],
174
+ },
175
+ ],
176
+ }]
177
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
178
+
179
+ class HlmMenuItemIcon {
180
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
181
+ _computedClass = computed(() => hlm("mr-2", this.userClass()), /* @ts-ignore */
182
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
183
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
184
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuItemIcon, isStandalone: true, selector: "[hlmMenuIcon]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [provideHlmIconConfig({ size: 'sm' })], ngImport: i0 });
185
+ }
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemIcon, decorators: [{
187
+ type: Directive,
188
+ args: [{
189
+ selector: '[hlmMenuIcon]',
190
+ providers: [provideHlmIconConfig({ size: 'sm' })],
191
+ host: {
192
+ '[class]': '_computedClass()',
193
+ },
194
+ }]
195
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
196
+
197
+ class HlmMenuItemRadio {
198
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
199
+ _computedClass = computed(() => hlm("hover:bg-secondary hover:text-secondary-foreground focus-visible:bg-secondary focus-visible:text-secondary-foreground group relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors disabled:pointer-events-none disabled:opacity-50", this.userClass()), /* @ts-ignore */
200
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
201
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemRadio, deps: [], target: i0.ɵɵFactoryTarget.Directive });
202
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuItemRadio, isStandalone: true, selector: "[hlmMenuItemRadio]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.CdkMenuItemRadio, inputs: ["cdkMenuItemDisabled", "disabled", "cdkMenuItemChecked", "checked"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0 });
203
+ }
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemRadio, decorators: [{
205
+ type: Directive,
206
+ args: [{
207
+ selector: '[hlmMenuItemRadio]',
208
+ host: {
209
+ '[class]': '_computedClass()',
210
+ },
211
+ hostDirectives: [
212
+ {
213
+ directive: CdkMenuItemRadio,
214
+ inputs: ['cdkMenuItemDisabled: disabled', 'cdkMenuItemChecked: checked'],
215
+ outputs: ['cdkMenuItemTriggered: triggered'],
216
+ },
217
+ ],
218
+ }]
219
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
220
+
221
+ class HlmMenuItemRadioIndicator {
222
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
223
+ _computedClass = computed(() => hlm("absolute left-2 flex h-3.5 w-3.5 items-center justify-center opacity-0 group-[.checked]:opacity-100", this.userClass()), /* @ts-ignore */
224
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
225
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemRadioIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
226
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuItemRadioIndicator, isStandalone: true, selector: "hlm-menu-item-radio", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [provideIcons({ lucideCircle })], ngImport: i0, template: "\n <!-- Using 0.5rem for size to mimick h-2 w-2 -->\n <ng-icon hlm size=\"0.5rem\" class=\"*:*:fill-current\" name=\"lucideCircle\" />\n ", isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
227
+ }
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemRadioIndicator, decorators: [{
229
+ type: Component,
230
+ args: [{
231
+ selector: 'hlm-menu-item-radio',
232
+ providers: [provideIcons({ lucideCircle })],
233
+ imports: [NgIcon, HlmIcon],
234
+ template: "\n <!-- Using 0.5rem for size to mimick h-2 w-2 -->\n <ng-icon hlm size=\"0.5rem\" class=\"*:*:fill-current\" name=\"lucideCircle\" />\n ",
235
+ host: {
236
+ '[class]': '_computedClass()',
237
+ },
238
+ changeDetection: ChangeDetectionStrategy.OnPush,
239
+ }]
240
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
241
+
242
+ class HlmMenuItemSubIndicator {
243
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
244
+ _computedClass = computed(() => hlm("ml-auto size-4", this.userClass()), /* @ts-ignore */
245
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
246
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemSubIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
247
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuItemSubIndicator, isStandalone: true, selector: "hlm-menu-item-sub-indicator", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [provideIcons({ lucideChevronRight })], ngImport: i0, template: " <ng-icon hlm size=\"sm\" name=\"lucideChevronRight\" class=\"text-popover-foreground\" /> ", isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
248
+ }
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemSubIndicator, decorators: [{
250
+ type: Component,
251
+ args: [{
252
+ selector: 'hlm-menu-item-sub-indicator',
253
+ providers: [provideIcons({ lucideChevronRight })],
254
+ imports: [NgIcon, HlmIcon],
255
+ template: " <ng-icon hlm size=\"sm\" name=\"lucideChevronRight\" class=\"text-popover-foreground\" /> ",
256
+ host: {
257
+ '[class]': '_computedClass()',
258
+ },
259
+ changeDetection: ChangeDetectionStrategy.OnPush,
260
+ }]
261
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
262
+
263
+ class HlmMenuLabel {
264
+ inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
265
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
266
+ _computedClass = computed(() => hlm("block px-2 py-1.5 text-sm font-semibold data-[inset]:pl-8", this.userClass()), /* @ts-ignore */
267
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
268
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuLabel, deps: [], target: i0.ɵɵFactoryTarget.Component });
269
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuLabel, isStandalone: true, selector: "hlm-menu-label", inputs: { inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()", "attr.data-inset": "inset() ? \"\" : null" } }, ngImport: i0, template: ` <ng-content /> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
270
+ }
271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuLabel, decorators: [{
272
+ type: Component,
273
+ args: [{
274
+ selector: 'hlm-menu-label',
275
+ template: ` <ng-content /> `,
276
+ host: {
277
+ '[class]': '_computedClass()',
278
+ '[attr.data-inset]': 'inset() ? "" : null',
279
+ },
280
+ changeDetection: ChangeDetectionStrategy.OnPush,
281
+ }]
282
+ }], propDecorators: { inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
283
+
284
+ class HlmMenuSeparator {
285
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
286
+ _computedClass = computed(() => hlm("bg-border -mx-1 my-1 block h-px", this.userClass()), /* @ts-ignore */
287
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
288
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuSeparator, deps: [], target: i0.ɵɵFactoryTarget.Component });
289
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuSeparator, isStandalone: true, selector: "hlm-menu-separator", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
290
+ }
291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuSeparator, decorators: [{
292
+ type: Component,
293
+ args: [{
294
+ selector: 'hlm-menu-separator',
295
+ template: '',
296
+ host: {
297
+ '[class]': '_computedClass()',
298
+ },
299
+ changeDetection: ChangeDetectionStrategy.OnPush,
300
+ }]
301
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
302
+
303
+ class HlmMenuShortcut {
304
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
305
+ _computedClass = computed(() => hlm("text-muted-foreground ml-auto text-xs tracking-widest", this.userClass()), /* @ts-ignore */
306
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
307
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuShortcut, deps: [], target: i0.ɵɵFactoryTarget.Component });
308
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmMenuShortcut, isStandalone: true, selector: "hlm-menu-shortcut", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0, template: ` <ng-content /> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
309
+ }
310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuShortcut, decorators: [{
311
+ type: Component,
312
+ args: [{
313
+ selector: 'hlm-menu-shortcut',
314
+ template: ` <ng-content /> `,
315
+ host: {
316
+ '[class]': '_computedClass()',
317
+ },
318
+ changeDetection: ChangeDetectionStrategy.OnPush,
319
+ }]
320
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
321
+
322
+ class HlmSubMenu {
323
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
324
+ _computedClass = computed(() => hlm("border-border bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out tw:data-[state=closed]:fade-out-0 tw:data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg", this.userClass()), /* @ts-ignore */
325
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
326
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmSubMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
327
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmSubMenu, isStandalone: true, selector: "hlm-sub-menu", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.CdkMenu }], ngImport: i0, template: ` <ng-content /> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
328
+ }
329
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmSubMenu, decorators: [{
330
+ type: Component,
331
+ args: [{
332
+ selector: 'hlm-sub-menu',
333
+ host: {
334
+ '[class]': '_computedClass()',
335
+ },
336
+ hostDirectives: [CdkMenu],
337
+ template: ` <ng-content /> `,
338
+ changeDetection: ChangeDetectionStrategy.OnPush,
339
+ }]
340
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
341
+
342
+ /*
343
+ * Public API Surface of menu
344
+ */
345
+ const HlmMenuItemImports = [
346
+ HlmMenuItem,
347
+ HlmMenuItemIcon,
348
+ HlmMenuGroup,
349
+ HlmMenuItemSubIndicator,
350
+ HlmMenuItemRadioIndicator,
351
+ HlmMenuItemCheck,
352
+ HlmMenuShortcut,
353
+ HlmMenuItemCheckbox,
354
+ HlmMenuItemRadio,
355
+ ];
356
+ const HlmMenuStructureImports = [HlmMenuLabel, HlmMenuSeparator];
357
+ const HlmMenuImports = [...HlmMenuItemImports, ...HlmMenuStructureImports, HlmMenu, HlmSubMenu];
358
+ const HlmMenuBarImports = [...HlmMenuImports, HlmMenuBar, HlmMenuBarItem];
359
+ class HlmMenuItemModule {
360
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
361
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemModule, imports: [HlmMenuItem,
362
+ HlmMenuItemIcon,
363
+ HlmMenuGroup,
364
+ HlmMenuItemSubIndicator,
365
+ HlmMenuItemRadioIndicator,
366
+ HlmMenuItemCheck,
367
+ HlmMenuShortcut,
368
+ HlmMenuItemCheckbox,
369
+ HlmMenuItemRadio], exports: [HlmMenuItem,
370
+ HlmMenuItemIcon,
371
+ HlmMenuGroup,
372
+ HlmMenuItemSubIndicator,
373
+ HlmMenuItemRadioIndicator,
374
+ HlmMenuItemCheck,
375
+ HlmMenuShortcut,
376
+ HlmMenuItemCheckbox,
377
+ HlmMenuItemRadio] });
378
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemModule, imports: [HlmMenuItemSubIndicator,
379
+ HlmMenuItemRadioIndicator,
380
+ HlmMenuItemCheck] });
381
+ }
382
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuItemModule, decorators: [{
383
+ type: NgModule,
384
+ args: [{
385
+ imports: [...HlmMenuItemImports],
386
+ exports: [...HlmMenuItemImports],
387
+ }]
388
+ }] });
389
+ class HlmMenuModule {
390
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
391
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuModule, imports: [HlmMenuItem,
392
+ HlmMenuItemIcon,
393
+ HlmMenuGroup,
394
+ HlmMenuItemSubIndicator,
395
+ HlmMenuItemRadioIndicator,
396
+ HlmMenuItemCheck,
397
+ HlmMenuShortcut,
398
+ HlmMenuItemCheckbox,
399
+ HlmMenuItemRadio, HlmMenuLabel, HlmMenuSeparator, HlmMenu, HlmSubMenu], exports: [HlmMenuItem,
400
+ HlmMenuItemIcon,
401
+ HlmMenuGroup,
402
+ HlmMenuItemSubIndicator,
403
+ HlmMenuItemRadioIndicator,
404
+ HlmMenuItemCheck,
405
+ HlmMenuShortcut,
406
+ HlmMenuItemCheckbox,
407
+ HlmMenuItemRadio, HlmMenuLabel, HlmMenuSeparator, HlmMenu, HlmSubMenu] });
408
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuModule, imports: [HlmMenuItemSubIndicator,
409
+ HlmMenuItemRadioIndicator,
410
+ HlmMenuItemCheck] });
411
+ }
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuModule, decorators: [{
413
+ type: NgModule,
414
+ args: [{
415
+ imports: [...HlmMenuImports],
416
+ exports: [...HlmMenuImports],
417
+ }]
418
+ }] });
419
+ class HlmMenuBarModule {
420
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
421
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuBarModule, imports: [HlmMenuItem,
422
+ HlmMenuItemIcon,
423
+ HlmMenuGroup,
424
+ HlmMenuItemSubIndicator,
425
+ HlmMenuItemRadioIndicator,
426
+ HlmMenuItemCheck,
427
+ HlmMenuShortcut,
428
+ HlmMenuItemCheckbox,
429
+ HlmMenuItemRadio, HlmMenuLabel, HlmMenuSeparator, HlmMenu, HlmSubMenu, HlmMenuBar, HlmMenuBarItem], exports: [HlmMenuItem,
430
+ HlmMenuItemIcon,
431
+ HlmMenuGroup,
432
+ HlmMenuItemSubIndicator,
433
+ HlmMenuItemRadioIndicator,
434
+ HlmMenuItemCheck,
435
+ HlmMenuShortcut,
436
+ HlmMenuItemCheckbox,
437
+ HlmMenuItemRadio, HlmMenuLabel, HlmMenuSeparator, HlmMenu, HlmSubMenu, HlmMenuBar, HlmMenuBarItem] });
438
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuBarModule, imports: [HlmMenuItemSubIndicator,
439
+ HlmMenuItemRadioIndicator,
440
+ HlmMenuItemCheck] });
441
+ }
442
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMenuBarModule, decorators: [{
443
+ type: NgModule,
444
+ args: [{
445
+ imports: [...HlmMenuBarImports],
446
+ exports: [...HlmMenuBarImports],
447
+ }]
448
+ }] });
449
+
450
+ /**
451
+ * Generated bundle index. Do not edit.
452
+ */
453
+
454
+ export { HlmMenu, HlmMenuBar, HlmMenuBarImports, HlmMenuBarItem, HlmMenuBarModule, HlmMenuGroup, HlmMenuImports, HlmMenuItem, HlmMenuItemCheck, HlmMenuItemCheckbox, HlmMenuItemIcon, HlmMenuItemImports, HlmMenuItemModule, HlmMenuItemRadio, HlmMenuItemRadioIndicator, HlmMenuItemSubIndicator, HlmMenuLabel, HlmMenuModule, HlmMenuSeparator, HlmMenuShortcut, HlmMenuStructureImports, HlmSubMenu, menuVariants };
455
+
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "menu",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^20.3.0 || ^22.0.0",
6
+ "@angular/core": "^20.3.0 || ^22.0.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": false,
12
+ "module": "fesm2022/menu.mjs",
13
+ "typings": "types/menu.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/menu.d.ts",
20
+ "default": "./fesm2022/menu.mjs"
21
+ }
22
+ },
23
+ "type": "module"
24
+ }