@frame-kit/ui-ng 0.0.1

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 (220) hide show
  1. package/COMPONENTS.md +683 -0
  2. package/DEVELOPMENT_GUIDE.md +1102 -0
  3. package/LICENSE +21 -0
  4. package/README.md +69 -0
  5. package/THEMING.md +130 -0
  6. package/core/headline/README.md +121 -0
  7. package/core/icon/README.md +173 -0
  8. package/core/image/README.md +210 -0
  9. package/core/link/README.md +297 -0
  10. package/core/separator/README.md +145 -0
  11. package/core/text/README.md +240 -0
  12. package/directives/infinite-scroll/README.md +102 -0
  13. package/directives/spotlight/README.md +154 -0
  14. package/directives/tooltip/README.md +147 -0
  15. package/docs/endpoint-link/README.md +142 -0
  16. package/docs/method-badge/README.md +154 -0
  17. package/fesm2022/frame-kit-ui-ng-core-headline.mjs +122 -0
  18. package/fesm2022/frame-kit-ui-ng-core-headline.mjs.map +1 -0
  19. package/fesm2022/frame-kit-ui-ng-core-icon.mjs +189 -0
  20. package/fesm2022/frame-kit-ui-ng-core-icon.mjs.map +1 -0
  21. package/fesm2022/frame-kit-ui-ng-core-image.mjs +123 -0
  22. package/fesm2022/frame-kit-ui-ng-core-image.mjs.map +1 -0
  23. package/fesm2022/frame-kit-ui-ng-core-link.mjs +369 -0
  24. package/fesm2022/frame-kit-ui-ng-core-link.mjs.map +1 -0
  25. package/fesm2022/frame-kit-ui-ng-core-separator.mjs +59 -0
  26. package/fesm2022/frame-kit-ui-ng-core-separator.mjs.map +1 -0
  27. package/fesm2022/frame-kit-ui-ng-core-text.mjs +204 -0
  28. package/fesm2022/frame-kit-ui-ng-core-text.mjs.map +1 -0
  29. package/fesm2022/frame-kit-ui-ng-directives-infinite-scroll.mjs +74 -0
  30. package/fesm2022/frame-kit-ui-ng-directives-infinite-scroll.mjs.map +1 -0
  31. package/fesm2022/frame-kit-ui-ng-directives-spotlight.mjs +76 -0
  32. package/fesm2022/frame-kit-ui-ng-directives-spotlight.mjs.map +1 -0
  33. package/fesm2022/frame-kit-ui-ng-directives-tooltip.mjs +425 -0
  34. package/fesm2022/frame-kit-ui-ng-directives-tooltip.mjs.map +1 -0
  35. package/fesm2022/frame-kit-ui-ng-docs-endpoint-link.mjs +63 -0
  36. package/fesm2022/frame-kit-ui-ng-docs-endpoint-link.mjs.map +1 -0
  37. package/fesm2022/frame-kit-ui-ng-docs-method-badge.mjs +43 -0
  38. package/fesm2022/frame-kit-ui-ng-docs-method-badge.mjs.map +1 -0
  39. package/fesm2022/frame-kit-ui-ng-forms.mjs +3632 -0
  40. package/fesm2022/frame-kit-ui-ng-forms.mjs.map +1 -0
  41. package/fesm2022/frame-kit-ui-ng-layouts-app-shell.mjs +239 -0
  42. package/fesm2022/frame-kit-ui-ng-layouts-app-shell.mjs.map +1 -0
  43. package/fesm2022/frame-kit-ui-ng-layouts-content-split.mjs +132 -0
  44. package/fesm2022/frame-kit-ui-ng-layouts-content-split.mjs.map +1 -0
  45. package/fesm2022/frame-kit-ui-ng-services-overlay-orchestrator.mjs +133 -0
  46. package/fesm2022/frame-kit-ui-ng-services-overlay-orchestrator.mjs.map +1 -0
  47. package/fesm2022/frame-kit-ui-ng-services-spotlight.mjs +60 -0
  48. package/fesm2022/frame-kit-ui-ng-services-spotlight.mjs.map +1 -0
  49. package/fesm2022/frame-kit-ui-ng-services-toast.mjs +166 -0
  50. package/fesm2022/frame-kit-ui-ng-services-toast.mjs.map +1 -0
  51. package/fesm2022/frame-kit-ui-ng-ui-accordion.mjs +214 -0
  52. package/fesm2022/frame-kit-ui-ng-ui-accordion.mjs.map +1 -0
  53. package/fesm2022/frame-kit-ui-ng-ui-alert.mjs +82 -0
  54. package/fesm2022/frame-kit-ui-ng-ui-alert.mjs.map +1 -0
  55. package/fesm2022/frame-kit-ui-ng-ui-avatar-stack.mjs +76 -0
  56. package/fesm2022/frame-kit-ui-ng-ui-avatar-stack.mjs.map +1 -0
  57. package/fesm2022/frame-kit-ui-ng-ui-avatar.mjs +81 -0
  58. package/fesm2022/frame-kit-ui-ng-ui-avatar.mjs.map +1 -0
  59. package/fesm2022/frame-kit-ui-ng-ui-badge.mjs +81 -0
  60. package/fesm2022/frame-kit-ui-ng-ui-badge.mjs.map +1 -0
  61. package/fesm2022/frame-kit-ui-ng-ui-breadcrumb.mjs +68 -0
  62. package/fesm2022/frame-kit-ui-ng-ui-breadcrumb.mjs.map +1 -0
  63. package/fesm2022/frame-kit-ui-ng-ui-button.mjs +108 -0
  64. package/fesm2022/frame-kit-ui-ng-ui-button.mjs.map +1 -0
  65. package/fesm2022/frame-kit-ui-ng-ui-callout.mjs +58 -0
  66. package/fesm2022/frame-kit-ui-ng-ui-callout.mjs.map +1 -0
  67. package/fesm2022/frame-kit-ui-ng-ui-card.mjs +70 -0
  68. package/fesm2022/frame-kit-ui-ng-ui-card.mjs.map +1 -0
  69. package/fesm2022/frame-kit-ui-ng-ui-copyable-field.mjs +113 -0
  70. package/fesm2022/frame-kit-ui-ng-ui-copyable-field.mjs.map +1 -0
  71. package/fesm2022/frame-kit-ui-ng-ui-data-table.mjs +1288 -0
  72. package/fesm2022/frame-kit-ui-ng-ui-data-table.mjs.map +1 -0
  73. package/fesm2022/frame-kit-ui-ng-ui-dialog.mjs +456 -0
  74. package/fesm2022/frame-kit-ui-ng-ui-dialog.mjs.map +1 -0
  75. package/fesm2022/frame-kit-ui-ng-ui-drawer.mjs +398 -0
  76. package/fesm2022/frame-kit-ui-ng-ui-drawer.mjs.map +1 -0
  77. package/fesm2022/frame-kit-ui-ng-ui-dropdown-menu.mjs +398 -0
  78. package/fesm2022/frame-kit-ui-ng-ui-dropdown-menu.mjs.map +1 -0
  79. package/fesm2022/frame-kit-ui-ng-ui-editable-field.mjs +125 -0
  80. package/fesm2022/frame-kit-ui-ng-ui-editable-field.mjs.map +1 -0
  81. package/fesm2022/frame-kit-ui-ng-ui-icon-badge.mjs +113 -0
  82. package/fesm2022/frame-kit-ui-ng-ui-icon-badge.mjs.map +1 -0
  83. package/fesm2022/frame-kit-ui-ng-ui-icon-list.mjs +111 -0
  84. package/fesm2022/frame-kit-ui-ng-ui-icon-list.mjs.map +1 -0
  85. package/fesm2022/frame-kit-ui-ng-ui-inline-edit.mjs +103 -0
  86. package/fesm2022/frame-kit-ui-ng-ui-inline-edit.mjs.map +1 -0
  87. package/fesm2022/frame-kit-ui-ng-ui-list-editor.mjs +135 -0
  88. package/fesm2022/frame-kit-ui-ng-ui-list-editor.mjs.map +1 -0
  89. package/fesm2022/frame-kit-ui-ng-ui-loader.mjs +81 -0
  90. package/fesm2022/frame-kit-ui-ng-ui-loader.mjs.map +1 -0
  91. package/fesm2022/frame-kit-ui-ng-ui-menu-item.mjs +79 -0
  92. package/fesm2022/frame-kit-ui-ng-ui-menu-item.mjs.map +1 -0
  93. package/fesm2022/frame-kit-ui-ng-ui-nav-brand.mjs +40 -0
  94. package/fesm2022/frame-kit-ui-ng-ui-nav-brand.mjs.map +1 -0
  95. package/fesm2022/frame-kit-ui-ng-ui-nav-group.mjs +110 -0
  96. package/fesm2022/frame-kit-ui-ng-ui-nav-group.mjs.map +1 -0
  97. package/fesm2022/frame-kit-ui-ng-ui-nav-separator.mjs +91 -0
  98. package/fesm2022/frame-kit-ui-ng-ui-nav-separator.mjs.map +1 -0
  99. package/fesm2022/frame-kit-ui-ng-ui-node-tree-breadcrumb.mjs +86 -0
  100. package/fesm2022/frame-kit-ui-ng-ui-node-tree-breadcrumb.mjs.map +1 -0
  101. package/fesm2022/frame-kit-ui-ng-ui-node-tree.mjs +443 -0
  102. package/fesm2022/frame-kit-ui-ng-ui-node-tree.mjs.map +1 -0
  103. package/fesm2022/frame-kit-ui-ng-ui-note.mjs +56 -0
  104. package/fesm2022/frame-kit-ui-ng-ui-note.mjs.map +1 -0
  105. package/fesm2022/frame-kit-ui-ng-ui-numbered-list.mjs +105 -0
  106. package/fesm2022/frame-kit-ui-ng-ui-numbered-list.mjs.map +1 -0
  107. package/fesm2022/frame-kit-ui-ng-ui-pagination.mjs +110 -0
  108. package/fesm2022/frame-kit-ui-ng-ui-pagination.mjs.map +1 -0
  109. package/fesm2022/frame-kit-ui-ng-ui-progress-bar.mjs +129 -0
  110. package/fesm2022/frame-kit-ui-ng-ui-progress-bar.mjs.map +1 -0
  111. package/fesm2022/frame-kit-ui-ng-ui-sidenav-link.mjs +42 -0
  112. package/fesm2022/frame-kit-ui-ng-ui-sidenav-link.mjs.map +1 -0
  113. package/fesm2022/frame-kit-ui-ng-ui-tabs.mjs +894 -0
  114. package/fesm2022/frame-kit-ui-ng-ui-tabs.mjs.map +1 -0
  115. package/fesm2022/frame-kit-ui-ng-ui-timeline.mjs +81 -0
  116. package/fesm2022/frame-kit-ui-ng-ui-timeline.mjs.map +1 -0
  117. package/fesm2022/frame-kit-ui-ng-ui-toast.mjs +179 -0
  118. package/fesm2022/frame-kit-ui-ng-ui-toast.mjs.map +1 -0
  119. package/fesm2022/frame-kit-ui-ng-ui-user-menu.mjs +143 -0
  120. package/fesm2022/frame-kit-ui-ng-ui-user-menu.mjs.map +1 -0
  121. package/fesm2022/frame-kit-ui-ng-ui-wizard-dialog.mjs +191 -0
  122. package/fesm2022/frame-kit-ui-ng-ui-wizard-dialog.mjs.map +1 -0
  123. package/fesm2022/frame-kit-ui-ng.mjs +58 -0
  124. package/fesm2022/frame-kit-ui-ng.mjs.map +1 -0
  125. package/layouts/app-shell/README.md +357 -0
  126. package/layouts/content-split/README.md +180 -0
  127. package/package.json +253 -0
  128. package/services/overlay-orchestrator/README.md +184 -0
  129. package/services/spotlight/README.md +61 -0
  130. package/services/toast/README.md +118 -0
  131. package/types/frame-kit-ui-ng-core-headline.d.ts +38 -0
  132. package/types/frame-kit-ui-ng-core-icon.d.ts +74 -0
  133. package/types/frame-kit-ui-ng-core-image.d.ts +93 -0
  134. package/types/frame-kit-ui-ng-core-link.d.ts +251 -0
  135. package/types/frame-kit-ui-ng-core-separator.d.ts +28 -0
  136. package/types/frame-kit-ui-ng-core-text.d.ts +186 -0
  137. package/types/frame-kit-ui-ng-directives-infinite-scroll.d.ts +42 -0
  138. package/types/frame-kit-ui-ng-directives-spotlight.d.ts +51 -0
  139. package/types/frame-kit-ui-ng-directives-tooltip.d.ts +70 -0
  140. package/types/frame-kit-ui-ng-docs-endpoint-link.d.ts +43 -0
  141. package/types/frame-kit-ui-ng-docs-method-badge.d.ts +30 -0
  142. package/types/frame-kit-ui-ng-forms.d.ts +1674 -0
  143. package/types/frame-kit-ui-ng-layouts-app-shell.d.ts +75 -0
  144. package/types/frame-kit-ui-ng-layouts-content-split.d.ts +43 -0
  145. package/types/frame-kit-ui-ng-services-overlay-orchestrator.d.ts +96 -0
  146. package/types/frame-kit-ui-ng-services-spotlight.d.ts +32 -0
  147. package/types/frame-kit-ui-ng-services-toast.d.ts +100 -0
  148. package/types/frame-kit-ui-ng-ui-accordion.d.ts +86 -0
  149. package/types/frame-kit-ui-ng-ui-alert.d.ts +34 -0
  150. package/types/frame-kit-ui-ng-ui-avatar-stack.d.ts +38 -0
  151. package/types/frame-kit-ui-ng-ui-avatar.d.ts +36 -0
  152. package/types/frame-kit-ui-ng-ui-badge.d.ts +33 -0
  153. package/types/frame-kit-ui-ng-ui-breadcrumb.d.ts +45 -0
  154. package/types/frame-kit-ui-ng-ui-button.d.ts +48 -0
  155. package/types/frame-kit-ui-ng-ui-callout.d.ts +26 -0
  156. package/types/frame-kit-ui-ng-ui-card.d.ts +30 -0
  157. package/types/frame-kit-ui-ng-ui-copyable-field.d.ts +62 -0
  158. package/types/frame-kit-ui-ng-ui-data-table.d.ts +482 -0
  159. package/types/frame-kit-ui-ng-ui-dialog.d.ts +166 -0
  160. package/types/frame-kit-ui-ng-ui-drawer.d.ts +130 -0
  161. package/types/frame-kit-ui-ng-ui-dropdown-menu.d.ts +77 -0
  162. package/types/frame-kit-ui-ng-ui-editable-field.d.ts +65 -0
  163. package/types/frame-kit-ui-ng-ui-icon-badge.d.ts +45 -0
  164. package/types/frame-kit-ui-ng-ui-icon-list.d.ts +67 -0
  165. package/types/frame-kit-ui-ng-ui-inline-edit.d.ts +44 -0
  166. package/types/frame-kit-ui-ng-ui-list-editor.d.ts +56 -0
  167. package/types/frame-kit-ui-ng-ui-loader.d.ts +32 -0
  168. package/types/frame-kit-ui-ng-ui-menu-item.d.ts +27 -0
  169. package/types/frame-kit-ui-ng-ui-nav-brand.d.ts +25 -0
  170. package/types/frame-kit-ui-ng-ui-nav-group.d.ts +60 -0
  171. package/types/frame-kit-ui-ng-ui-nav-separator.d.ts +33 -0
  172. package/types/frame-kit-ui-ng-ui-node-tree-breadcrumb.d.ts +35 -0
  173. package/types/frame-kit-ui-ng-ui-node-tree.d.ts +135 -0
  174. package/types/frame-kit-ui-ng-ui-note.d.ts +22 -0
  175. package/types/frame-kit-ui-ng-ui-numbered-list.d.ts +52 -0
  176. package/types/frame-kit-ui-ng-ui-pagination.d.ts +49 -0
  177. package/types/frame-kit-ui-ng-ui-progress-bar.d.ts +50 -0
  178. package/types/frame-kit-ui-ng-ui-sidenav-link.d.ts +24 -0
  179. package/types/frame-kit-ui-ng-ui-tabs.d.ts +266 -0
  180. package/types/frame-kit-ui-ng-ui-timeline.d.ts +42 -0
  181. package/types/frame-kit-ui-ng-ui-toast.d.ts +56 -0
  182. package/types/frame-kit-ui-ng-ui-user-menu.d.ts +87 -0
  183. package/types/frame-kit-ui-ng-ui-wizard-dialog.d.ts +116 -0
  184. package/types/frame-kit-ui-ng.d.ts +53 -0
  185. package/ui/accordion/README.md +261 -0
  186. package/ui/alert/README.md +211 -0
  187. package/ui/avatar/README.md +167 -0
  188. package/ui/avatar-stack/README.md +164 -0
  189. package/ui/badge/README.md +162 -0
  190. package/ui/breadcrumb/README.md +240 -0
  191. package/ui/button/README.md +184 -0
  192. package/ui/callout/README.md +159 -0
  193. package/ui/card/README.md +174 -0
  194. package/ui/copyable-field/README.md +235 -0
  195. package/ui/data-table/README.md +408 -0
  196. package/ui/dialog/README.md +222 -0
  197. package/ui/drawer/README.md +274 -0
  198. package/ui/dropdown-menu/README.md +336 -0
  199. package/ui/editable-field/README.md +171 -0
  200. package/ui/icon-badge/README.md +131 -0
  201. package/ui/icon-list/README.md +205 -0
  202. package/ui/inline-edit/README.md +135 -0
  203. package/ui/list-editor/README.md +162 -0
  204. package/ui/loader/README.md +160 -0
  205. package/ui/menu-item/README.md +204 -0
  206. package/ui/nav-brand/README.md +111 -0
  207. package/ui/nav-group/README.md +145 -0
  208. package/ui/nav-separator/README.md +44 -0
  209. package/ui/node-tree/README.md +278 -0
  210. package/ui/node-tree-breadcrumb/README.md +164 -0
  211. package/ui/note/README.md +146 -0
  212. package/ui/numbered-list/README.md +187 -0
  213. package/ui/pagination/README.md +174 -0
  214. package/ui/progress-bar/README.md +223 -0
  215. package/ui/sidenav-link/README.md +214 -0
  216. package/ui/tabs/README.md +204 -0
  217. package/ui/timeline/README.md +285 -0
  218. package/ui/toast/README.md +243 -0
  219. package/ui/user-menu/README.md +260 -0
  220. package/ui/wizard-dialog/README.md +283 -0
@@ -0,0 +1,130 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Type } from '@angular/core';
3
+ import { Observable } from 'rxjs';
4
+
5
+ type DrawerWidth = 'sm' | 'md' | 'lg' | 'xl';
6
+ type DrawerAnimation = 'slide-right' | 'fade' | 'none';
7
+ type DrawerCanCloseFn = () => boolean | Promise<boolean>;
8
+
9
+ declare class DrawerComponent {
10
+ /** Controls whether the drawer is open. */
11
+ readonly open: _angular_core.InputSignal<boolean>;
12
+ /** When true, shows the close button in the drawer header. */
13
+ readonly closable: _angular_core.InputSignal<boolean>;
14
+ /** When true, pressing Escape closes the drawer. */
15
+ readonly closeOnEscape: _angular_core.InputSignal<boolean>;
16
+ /** When true, clicking the backdrop overlay closes the drawer. */
17
+ readonly closeOnBackdrop: _angular_core.InputSignal<boolean>;
18
+ /** Width variant of the drawer panel. */
19
+ readonly width: _angular_core.InputSignal<DrawerWidth>;
20
+ /** Optional title text rendered in the drawer header. */
21
+ readonly header: _angular_core.InputSignal<string | null>;
22
+ /** When true, focus returns to the previously focused element when the drawer closes. */
23
+ readonly restoreFocus: _angular_core.InputSignal<boolean>;
24
+ /** When true, CDK auto-focus is applied when the drawer opens. */
25
+ readonly autoFocus: _angular_core.InputSignal<boolean>;
26
+ /** Entry/exit animation applied to the drawer panel. */
27
+ readonly animation: _angular_core.InputSignal<DrawerAnimation>;
28
+ /** When true, all close mechanisms are blocked. */
29
+ readonly preventClose: _angular_core.InputSignal<boolean>;
30
+ /** Async guard function called before closing; return false to cancel the close. */
31
+ readonly canClose: _angular_core.InputSignal<DrawerCanCloseFn | null>;
32
+ readonly className: _angular_core.InputSignal<string>;
33
+ readonly id: _angular_core.InputSignal<string | null>;
34
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
35
+ /** Fires when the drawer's open state should change, emitting the new boolean. */
36
+ readonly openChange: _angular_core.OutputEmitterRef<boolean>;
37
+ /** Fires immediately before the drawer begins its open animation. */
38
+ readonly beforeOpen: _angular_core.OutputEmitterRef<void>;
39
+ /** Fires after the drawer is fully open. */
40
+ readonly opened: _angular_core.OutputEmitterRef<void>;
41
+ /** Fires immediately before the drawer begins its close animation. */
42
+ readonly beforeClose: _angular_core.OutputEmitterRef<void>;
43
+ /** Fires after the drawer is fully closed. */
44
+ readonly closed: _angular_core.OutputEmitterRef<void>;
45
+ private readonly doc;
46
+ private readonly destroyRef;
47
+ readonly titleId: string;
48
+ private previouslyFocusedElement;
49
+ private closeGuardRunning;
50
+ readonly visible: _angular_core.WritableSignal<boolean>;
51
+ readonly animatingOut: _angular_core.WritableSignal<boolean>;
52
+ readonly classes: _angular_core.Signal<string>;
53
+ readonly ariaLabelledBy: _angular_core.Signal<string | null>;
54
+ constructor();
55
+ get hostClass(): string;
56
+ get hostId(): string | null;
57
+ onEscapeKey(): void;
58
+ /** Closes the drawer, running any `canClose` guard first; no-ops when `preventClose` is true. */
59
+ close(): Promise<void>;
60
+ onOverlayClick(): void;
61
+ onExitAnimationDone(): void;
62
+ private onDrawerOpen;
63
+ private onDrawerClose;
64
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DrawerComponent, never>;
65
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DrawerComponent, "fk-drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "preventClose": { "alias": "preventClose"; "required": false; "isSignal": true; }; "canClose": { "alias": "canClose"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; "beforeOpen": "beforeOpen"; "opened": "opened"; "beforeClose": "beforeClose"; "closed": "closed"; }, never, ["*", "[fkDrawerFooter]"], true, never>;
66
+ }
67
+
68
+ interface DrawerConfig<TData = unknown> {
69
+ closable?: boolean;
70
+ closeOnEscape?: boolean;
71
+ closeOnBackdrop?: boolean;
72
+ width?: DrawerWidth;
73
+ animation?: DrawerAnimation;
74
+ header?: string | null;
75
+ restoreFocus?: boolean;
76
+ autoFocus?: boolean;
77
+ preventClose?: boolean;
78
+ canClose?: DrawerCanCloseFn;
79
+ className?: string;
80
+ ariaLabel?: string | null;
81
+ data?: TData;
82
+ /** Element to append the drawer into. Must have `position: relative`. Defaults to `document.body`. */
83
+ container?: HTMLElement;
84
+ }
85
+ declare const DEFAULT_DRAWER_CONFIG: DrawerConfig;
86
+
87
+ declare class DrawerRef<TResult = unknown, TData = unknown> {
88
+ private readonly beforeOpenSubject;
89
+ private readonly afterOpenedSubject;
90
+ private readonly beforeCloseSubject;
91
+ private readonly afterClosedSubject;
92
+ private closed;
93
+ private closeGuard;
94
+ readonly config: DrawerConfig<TData>;
95
+ constructor(config?: DrawerConfig<TData>);
96
+ get data(): TData | undefined;
97
+ setCanClose(guard: DrawerCanCloseFn | null): void;
98
+ close(result?: TResult): Promise<void>;
99
+ beforeOpen(): Observable<void>;
100
+ afterOpened(): Observable<void>;
101
+ beforeClose(): Observable<void>;
102
+ afterClosed(): Observable<TResult | undefined>;
103
+ /** @internal */
104
+ markBeforeOpen(): void;
105
+ /** @internal */
106
+ markOpened(): void;
107
+ }
108
+
109
+ declare const DRAWER_DATA: unique symbol;
110
+ declare const DRAWER_REF: unique symbol;
111
+ declare class DrawerService {
112
+ private readonly appRef;
113
+ private readonly injector;
114
+ private readonly doc;
115
+ private readonly orchestrator;
116
+ private activeDrawers;
117
+ private overlayIds;
118
+ get openCount(): number;
119
+ open<TResult = unknown, TData = unknown>(content: Type<unknown>, config?: DrawerConfig<TData>): DrawerRef<TResult, TData>;
120
+ closeAll(): void;
121
+ private applyContainerBounds;
122
+ private applyZIndex;
123
+ private applyConfig;
124
+ private destroyDrawer;
125
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DrawerService, never>;
126
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<DrawerService>;
127
+ }
128
+
129
+ export { DEFAULT_DRAWER_CONFIG, DRAWER_DATA, DRAWER_REF, DrawerComponent, DrawerRef, DrawerService };
130
+ export type { DrawerAnimation, DrawerCanCloseFn, DrawerConfig, DrawerWidth };
@@ -0,0 +1,77 @@
1
+ import * as _frame_kit_ui_ng_ui_dropdown_menu from '@frame-kit/ui-ng/ui/dropdown-menu';
2
+ import * as _angular_core from '@angular/core';
3
+ import { ElementRef, TemplateRef, InjectionToken } from '@angular/core';
4
+
5
+ type DropdownPlacement = 'bottom-start' | 'bottom-end';
6
+
7
+ declare class DropdownMenuComponent {
8
+ /** Preferred placement of the panel relative to the trigger. */
9
+ readonly placement: _angular_core.InputSignal<DropdownPlacement>;
10
+ /** When true, the trigger is non-interactive and the panel cannot open. */
11
+ readonly disabled: _angular_core.InputSignal<boolean>;
12
+ /** When true, the panel is appended to `document.body` instead of rendered inline. */
13
+ readonly portal: _angular_core.InputSignal<boolean>;
14
+ /** Extra CSS class applied to the floating panel element. */
15
+ readonly panelClass: _angular_core.InputSignal<string | null>;
16
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
17
+ readonly className: _angular_core.InputSignal<string>;
18
+ readonly id: _angular_core.InputSignal<string | null>;
19
+ /** Fires when the dropdown panel opens. */
20
+ readonly menuOpen: _angular_core.OutputEmitterRef<void>;
21
+ /** Fires when the dropdown panel closes. */
22
+ readonly menuClose: _angular_core.OutputEmitterRef<void>;
23
+ readonly isOpen: _angular_core.WritableSignal<boolean>;
24
+ readonly triggerRef: _angular_core.Signal<_frame_kit_ui_ng_ui_dropdown_menu.DropdownTriggerDirective | undefined>;
25
+ readonly panelRef: _angular_core.Signal<_frame_kit_ui_ng_ui_dropdown_menu.DropdownPanelDirective | undefined>;
26
+ readonly menuPanelEl: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
27
+ private readonly elRef;
28
+ private readonly destroyRef;
29
+ private portalCleanup;
30
+ constructor();
31
+ readonly classes: _angular_core.Signal<string>;
32
+ get hostClass(): string;
33
+ get hostId(): string | null;
34
+ onHostClick(event: Event): void;
35
+ onHostKeydown(event: KeyboardEvent): void;
36
+ onDocumentClick(event: MouseEvent): void;
37
+ onDocumentKeydown(event: KeyboardEvent): void;
38
+ /** Toggles the dropdown panel open or closed if not disabled. */
39
+ toggle(): void;
40
+ /** Opens the dropdown panel and positions it relative to the trigger. */
41
+ open(): void;
42
+ /** Closes the dropdown panel and cleans up any portal attachment. */
43
+ close(): void;
44
+ onPanelItemSelect(): void;
45
+ private onTriggerKeydown;
46
+ private getMenuItems;
47
+ private focusNext;
48
+ private focusPrev;
49
+ private focusFirst;
50
+ private focusLast;
51
+ private focusTrigger;
52
+ private updateTriggerAria;
53
+ private attachPortal;
54
+ private cleanupPortal;
55
+ private positionPanel;
56
+ private positionPortalPanel;
57
+ private positionInlinePanel;
58
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownMenuComponent, never>;
59
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownMenuComponent, "fk-dropdown-menu", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "portal": { "alias": "portal"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, { "menuOpen": "menuOpen"; "menuClose": "menuClose"; }, ["triggerRef", "panelRef"], ["[fkDropdownTrigger]"], true, never>;
60
+ }
61
+
62
+ declare const FK_DROPDOWN_PANEL: InjectionToken<DropdownPanelDirective>;
63
+ declare class DropdownPanelDirective {
64
+ readonly templateRef: TemplateRef<any>;
65
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownPanelDirective, never>;
66
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DropdownPanelDirective, "[fkDropdownPanel]", never, {}, {}, never, never, true, never>;
67
+ }
68
+
69
+ declare const FK_DROPDOWN_TRIGGER: InjectionToken<DropdownTriggerDirective>;
70
+ declare class DropdownTriggerDirective {
71
+ readonly elRef: ElementRef<any>;
72
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownTriggerDirective, never>;
73
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DropdownTriggerDirective, "[fkDropdownTrigger]", never, {}, {}, never, never, true, never>;
74
+ }
75
+
76
+ export { DropdownMenuComponent, DropdownPanelDirective, DropdownTriggerDirective, FK_DROPDOWN_PANEL, FK_DROPDOWN_TRIGGER };
77
+ export type { DropdownPlacement };
@@ -0,0 +1,65 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ElementRef } from '@angular/core';
3
+
4
+ type EditableFieldSize = 'sm' | 'md' | 'lg';
5
+
6
+ /**
7
+ * A single-line text field that lives in two states:
8
+ *
9
+ * - **Display** — the field reads as a regular bordered input
10
+ * showing the current value. A pencil icon sits inside the
11
+ * trailing edge. Clicking anywhere on the field surface enters
12
+ * edit mode.
13
+ * - **Edit** — the field becomes a live `<input>`. The pencil slot
14
+ * swaps to a cancel (✗) icon inside the trailing edge. A
15
+ * separate Save button slides in as a sibling to the field's
16
+ * right.
17
+ *
18
+ * Distinct from `fk-inline-edit`, which renders the value as a span +
19
+ * an Edit button as siblings. `fk-editable-field` is meant for form-
20
+ * shaped surfaces (billing details, profile pages) where every row
21
+ * should *look* like a regular input even in display mode.
22
+ *
23
+ * The save / cancel / pencil icons can be overridden via the named
24
+ * content slots `[editIcon]`, `[cancelIcon]`, and `[saveIcon]`.
25
+ */
26
+ declare class EditableFieldComponent {
27
+ /** Current committed value displayed in read mode. */
28
+ readonly value: _angular_core.InputSignal<string>;
29
+ /** Placeholder text shown in the input when the edit buffer is empty. */
30
+ readonly placeholder: _angular_core.InputSignal<string>;
31
+ /** Size variant controlling the font and spacing of the component. */
32
+ readonly size: _angular_core.InputSignal<EditableFieldSize>;
33
+ /** Text displayed in read mode when the committed value is empty. */
34
+ readonly emptyText: _angular_core.InputSignal<string>;
35
+ readonly className: _angular_core.InputSignal<string>;
36
+ readonly id: _angular_core.InputSignal<string | null>;
37
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
38
+ readonly ariaDescribedBy: _angular_core.InputSignal<string | null>;
39
+ readonly disabled: _angular_core.InputSignal<boolean>;
40
+ /** Fires when the user saves an edit, emitting the trimmed new value. */
41
+ readonly valueChange: _angular_core.OutputEmitterRef<string>;
42
+ /** Fires when the component enters edit mode. */
43
+ readonly editStart: _angular_core.OutputEmitterRef<void>;
44
+ /** Fires when the user cancels an in-progress edit without saving. */
45
+ readonly editCancel: _angular_core.OutputEmitterRef<void>;
46
+ readonly editing: _angular_core.WritableSignal<boolean>;
47
+ readonly editValue: _angular_core.WritableSignal<string>;
48
+ readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
49
+ readonly classes: _angular_core.Signal<string>;
50
+ get hostClass(): string;
51
+ get hostId(): string | null;
52
+ /** Enters edit mode and focuses the input, copying the current value into the edit buffer. */
53
+ startEdit(): void;
54
+ /** Commits the current edit buffer, exits edit mode, and emits the trimmed value. */
55
+ save(): void;
56
+ /** Discards the current edit buffer and exits edit mode. */
57
+ cancel(): void;
58
+ onKeydown(event: KeyboardEvent): void;
59
+ onInput(event: Event): void;
60
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditableFieldComponent, never>;
61
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditableFieldComponent, "fk-editable-field", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "editStart": "editStart"; "editCancel": "editCancel"; }, never, ["[cancelIcon]", "[saveIcon]", "[editIcon]"], true, never>;
62
+ }
63
+
64
+ export { EditableFieldComponent };
65
+ export type { EditableFieldSize };
@@ -0,0 +1,45 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { IconSize, IconColor } from '@frame-kit/ui-ng/core/icon';
3
+
4
+ type IconBadgeShape = 'circle' | 'rounded' | 'square';
5
+ type IconBadgeSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | (string & {});
6
+
7
+ declare class IconBadgeComponent {
8
+ /** Name of the icon rendered inside the badge container. */
9
+ readonly name: _angular_core.InputSignal<string>;
10
+ /** Size of the icon within the badge. */
11
+ readonly size: _angular_core.InputSignal<IconSize>;
12
+ /** Size of the badge container; defaults to matching `size` when null. */
13
+ readonly badgeSize: _angular_core.InputSignal<IconBadgeSize | null>;
14
+ /** Shape of the badge container — circle or square. */
15
+ readonly shape: _angular_core.InputSignal<IconBadgeShape>;
16
+ /** Color of the icon. */
17
+ readonly color: _angular_core.InputSignal<IconColor>;
18
+ /** Custom border color applied directly to the host element. */
19
+ readonly borderColor: _angular_core.InputSignal<string | null>;
20
+ /** Custom background color applied directly to the host element. */
21
+ readonly backgroundColor: _angular_core.InputSignal<string | null>;
22
+ readonly className: _angular_core.InputSignal<string>;
23
+ readonly id: _angular_core.InputSignal<string | null>;
24
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
25
+ /** Explicit aria-hidden override; when null it defaults to true unless `ariaLabel` is set. */
26
+ readonly ariaHidden: _angular_core.InputSignal<boolean | null>;
27
+ private readonly badgeSizePresets;
28
+ readonly effectiveBadgeSize: _angular_core.Signal<(string & {}) | "xs" | "sm" | "md" | "lg" | "xl">;
29
+ readonly isCustomBadgeSize: _angular_core.Signal<boolean>;
30
+ readonly effectiveAriaHidden: _angular_core.Signal<boolean>;
31
+ readonly classes: _angular_core.Signal<string>;
32
+ get hostClass(): string;
33
+ get hostRole(): string | null;
34
+ get hostAriaLabel(): string | null;
35
+ get hostAriaHidden(): string | null;
36
+ get hostId(): string | null;
37
+ get hostPadding(): string | null;
38
+ get hostBorderColor(): string | null;
39
+ get hostBackgroundColor(): string | null;
40
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconBadgeComponent, never>;
41
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconBadgeComponent, "fk-icon-badge", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "badgeSize": { "alias": "badgeSize"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "borderColor": { "alias": "borderColor"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaHidden": { "alias": "ariaHidden"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
42
+ }
43
+
44
+ export { IconBadgeComponent };
45
+ export type { IconBadgeShape, IconBadgeSize };
@@ -0,0 +1,67 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Signal } from '@angular/core';
3
+
4
+ type IconListVariant = 'default' | 'primary' | 'success' | 'warning' | 'danger';
5
+ type IconListSize = 'sm' | 'md' | 'lg';
6
+ interface IconListItem {
7
+ /** The label text shown after the icon. */
8
+ label: string;
9
+ /** Optional per-item icon name. Overrides the list-level `icon` prop. */
10
+ icon?: string;
11
+ }
12
+
13
+ /**
14
+ * Parent contract exposed by `fk-icon-list` to `fk-icon-list-item` children.
15
+ * Lives in its own file so the two components can reference it without the
16
+ * circular ES-module import that a direct `IconListComponent` type import
17
+ * would create (item -> list -> item).
18
+ */
19
+ interface IconListParent {
20
+ readonly icon: Signal<string | null>;
21
+ readonly variant: Signal<IconListVariant>;
22
+ readonly size: Signal<IconListSize>;
23
+ }
24
+
25
+ declare class IconListComponent implements IconListParent {
26
+ /** Optional array of items to render declaratively; when null, projected `fk-icon-list-item` elements are used. */
27
+ readonly items: _angular_core.InputSignal<readonly IconListItem[] | null>;
28
+ /** Default icon name inherited by all child items that don't specify their own. */
29
+ readonly icon: _angular_core.InputSignal<string | null>;
30
+ /** Color variant applied to the icon in each list item. */
31
+ readonly variant: _angular_core.InputSignal<IconListVariant>;
32
+ /** Size applied to the icon and text in each list item. */
33
+ readonly size: _angular_core.InputSignal<IconListSize>;
34
+ readonly className: _angular_core.InputSignal<string>;
35
+ readonly id: _angular_core.InputSignal<string | null>;
36
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
37
+ readonly classes: _angular_core.Signal<string>;
38
+ get hostClass(): string;
39
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconListComponent, never>;
40
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconListComponent, "fk-icon-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
41
+ }
42
+
43
+ declare class IconListItemComponent {
44
+ private readonly parent;
45
+ /** Icon name for this item; falls back to the parent list's `icon` when null. */
46
+ readonly icon: _angular_core.InputSignal<string | null>;
47
+ /** Color variant for this item's icon; falls back to the parent list's `variant` when null. */
48
+ readonly variant: _angular_core.InputSignal<IconListVariant | null>;
49
+ /** Size for this item; falls back to the parent list's `size` when null. */
50
+ readonly size: _angular_core.InputSignal<IconListSize | null>;
51
+ readonly className: _angular_core.InputSignal<string>;
52
+ readonly id: _angular_core.InputSignal<string | null>;
53
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
54
+ protected readonly resolvedIcon: _angular_core.Signal<string | null>;
55
+ protected readonly resolvedVariant: _angular_core.Signal<IconListVariant>;
56
+ protected readonly resolvedSize: _angular_core.Signal<IconListSize>;
57
+ readonly classes: _angular_core.Signal<string>;
58
+ get hostClass(): string;
59
+ get hostRole(): string | null;
60
+ get hostId(): string | null;
61
+ get hostAriaLabel(): string | null;
62
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconListItemComponent, never>;
63
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconListItemComponent, "fk-icon-list-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
64
+ }
65
+
66
+ export { IconListComponent, IconListItemComponent };
67
+ export type { IconListItem, IconListSize, IconListVariant };
@@ -0,0 +1,44 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ElementRef } from '@angular/core';
3
+
4
+ type InlineEditSize = 'sm' | 'md' | 'lg';
5
+
6
+ declare class InlineEditComponent {
7
+ readonly className: _angular_core.InputSignal<string>;
8
+ readonly id: _angular_core.InputSignal<string | null>;
9
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
10
+ readonly disabled: _angular_core.InputSignal<boolean>;
11
+ /** Current committed value displayed in read mode. */
12
+ readonly value: _angular_core.InputSignal<string>;
13
+ /** Placeholder text shown in the input when the edit value is empty. */
14
+ readonly placeholder: _angular_core.InputSignal<string>;
15
+ /** Size variant controlling the font and spacing of the component. */
16
+ readonly size: _angular_core.InputSignal<InlineEditSize>;
17
+ /** Text displayed in read mode when the committed value is empty. */
18
+ readonly emptyText: _angular_core.InputSignal<string>;
19
+ /** Fires when the user saves an edit, emitting the trimmed new value. */
20
+ readonly valueChange: _angular_core.OutputEmitterRef<string>;
21
+ /** Fires when the component enters edit mode. */
22
+ readonly editStart: _angular_core.OutputEmitterRef<void>;
23
+ /** Fires when the user cancels an in-progress edit without saving. */
24
+ readonly editCancel: _angular_core.OutputEmitterRef<void>;
25
+ readonly editing: _angular_core.WritableSignal<boolean>;
26
+ readonly editValue: _angular_core.WritableSignal<string>;
27
+ readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
28
+ readonly classes: _angular_core.Signal<string>;
29
+ get hostClass(): string;
30
+ get hostId(): string | null;
31
+ /** Enters edit mode and focuses the input, copying the current value into the edit buffer. */
32
+ startEdit(): void;
33
+ /** Commits the current edit buffer, exits edit mode, and emits the trimmed value. */
34
+ save(): void;
35
+ /** Discards the current edit buffer and exits edit mode. */
36
+ cancel(): void;
37
+ onKeydown(event: KeyboardEvent): void;
38
+ onInput(event: Event): void;
39
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InlineEditComponent, never>;
40
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InlineEditComponent, "fk-inline-edit", never, { "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "editStart": "editStart"; "editCancel": "editCancel"; }, never, ["[saveIcon]", "[cancelIcon]", "[editIcon]"], true, never>;
41
+ }
42
+
43
+ export { InlineEditComponent };
44
+ export type { InlineEditSize };
@@ -0,0 +1,56 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { CdkDragDrop } from '@angular/cdk/drag-drop';
3
+
4
+ type ListEditorSize = 'sm' | 'md';
5
+
6
+ declare class ListEditorComponent {
7
+ /** The current list of string items; two-way bindable via `[(items)]`. */
8
+ readonly items: _angular_core.ModelSignal<string[]>;
9
+ /** Placeholder text for the new-item input field. */
10
+ readonly placeholder: _angular_core.InputSignal<string>;
11
+ /** Message displayed when the list is empty. */
12
+ readonly emptyMessage: _angular_core.InputSignal<string>;
13
+ /** Label for the add button. */
14
+ readonly addLabel: _angular_core.InputSignal<string>;
15
+ /** When true, items can be reordered via drag-and-drop. */
16
+ readonly orderable: _angular_core.InputSignal<boolean>;
17
+ /** When true, shows a numeric position indicator next to each item. */
18
+ readonly showOrder: _angular_core.InputSignal<boolean>;
19
+ /** Size variant controlling the spacing and font of the component. */
20
+ readonly size: _angular_core.InputSignal<ListEditorSize>;
21
+ /** Items that cannot be removed by the user (matched case-insensitively). */
22
+ readonly lockedItems: _angular_core.InputSignal<string[]>;
23
+ readonly className: _angular_core.InputSignal<string>;
24
+ readonly disabled: _angular_core.InputSignal<boolean>;
25
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
26
+ /** Fires whenever the items array changes, emitting the full updated array. */
27
+ readonly itemsChange: _angular_core.OutputEmitterRef<string[]>;
28
+ /** Fires when a new item is successfully added, emitting the added value. */
29
+ readonly itemAdded: _angular_core.OutputEmitterRef<string>;
30
+ /** Fires when an item is removed, emitting the removed value and its former index. */
31
+ readonly itemRemoved: _angular_core.OutputEmitterRef<{
32
+ item: string;
33
+ index: number;
34
+ }>;
35
+ readonly newItemValue: _angular_core.WritableSignal<string>;
36
+ readonly canAdd: _angular_core.Signal<boolean>;
37
+ readonly hasDuplicates: _angular_core.Signal<boolean>;
38
+ readonly hasEmptyItems: _angular_core.Signal<boolean>;
39
+ readonly classes: _angular_core.Signal<string>;
40
+ get hostClass(): string;
41
+ /** Adds the current input value as a new item if it is non-empty and not a duplicate. */
42
+ addItem(): void;
43
+ /** Removes the item at the given index unless it is locked or the component is disabled. */
44
+ removeItem(index: number): void;
45
+ /** Updates the item at the given index with a new value and emits the changed array. */
46
+ updateItem(index: number, value: string): void;
47
+ onDrop(event: CdkDragDrop<string[]>): void;
48
+ /** Returns true if the given item matches any entry in `lockedItems`. */
49
+ isLocked(item: string): boolean;
50
+ onKeydown(event: KeyboardEvent): void;
51
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListEditorComponent, never>;
52
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListEditorComponent, "fk-list-editor", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "addLabel": { "alias": "addLabel"; "required": false; "isSignal": true; }; "orderable": { "alias": "orderable"; "required": false; "isSignal": true; }; "showOrder": { "alias": "showOrder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "lockedItems": { "alias": "lockedItems"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; "itemsChange": "itemsChange"; "itemAdded": "itemAdded"; "itemRemoved": "itemRemoved"; }, never, never, true, never>;
53
+ }
54
+
55
+ export { ListEditorComponent };
56
+ export type { ListEditorSize };
@@ -0,0 +1,32 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AfterContentInit } from '@angular/core';
3
+
4
+ type LoaderSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
+ type LoaderColor = 'inherit' | 'default' | 'muted' | 'primary' | 'danger' | 'success';
6
+
7
+ declare class FkLoaderIconDirective {
8
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkLoaderIconDirective, never>;
9
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkLoaderIconDirective, "[fkLoaderIcon]", never, {}, {}, never, never, true, never>;
10
+ }
11
+ declare class LoaderComponent implements AfterContentInit {
12
+ private customIcon?;
13
+ hasCustomIcon: boolean;
14
+ /** Size of the spinning loader indicator. */
15
+ readonly size: _angular_core.InputSignal<LoaderSize>;
16
+ /** Color of the spinner; "inherit" adopts the nearest ancestor's color. */
17
+ readonly color: _angular_core.InputSignal<LoaderColor>;
18
+ readonly className: _angular_core.InputSignal<string>;
19
+ readonly id: _angular_core.InputSignal<string | null>;
20
+ readonly ariaLabel: _angular_core.InputSignal<string>;
21
+ readonly classes: _angular_core.Signal<string>;
22
+ get hostClass(): string;
23
+ get hostRole(): string;
24
+ get hostAriaLabel(): string;
25
+ get hostId(): string | null;
26
+ ngAfterContentInit(): void;
27
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoaderComponent, never>;
28
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoaderComponent, "fk-loader", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, ["customIcon"], ["[fkLoaderIcon]"], true, never>;
29
+ }
30
+
31
+ export { FkLoaderIconDirective, LoaderComponent };
32
+ export type { LoaderColor, LoaderSize };
@@ -0,0 +1,27 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ElementRef } from '@angular/core';
3
+
4
+ declare class MenuItemComponent {
5
+ /** Optional icon name rendered to the leading side of the label. */
6
+ readonly icon: _angular_core.InputSignal<string | null>;
7
+ /** When true, applies destructive (danger) color styling to the item. */
8
+ readonly danger: _angular_core.InputSignal<boolean>;
9
+ /** When true, prevents interaction and applies disabled styling. */
10
+ readonly disabled: _angular_core.InputSignal<boolean>;
11
+ /** Fires when the user activates the item via click or keyboard. */
12
+ readonly itemClick: _angular_core.OutputEmitterRef<void>;
13
+ readonly elRef: ElementRef<any>;
14
+ readonly classes: _angular_core.Signal<string>;
15
+ get hostClass(): string;
16
+ onClick(): void;
17
+ onKeydown(event: KeyboardEvent): void;
18
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemComponent, never>;
19
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuItemComponent, "fk-menu-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "danger": { "alias": "danger"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, ["*"], true, never>;
20
+ }
21
+
22
+ declare class MenuSeparatorComponent {
23
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSeparatorComponent, never>;
24
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuSeparatorComponent, "fk-menu-separator", never, {}, {}, never, never, true, never>;
25
+ }
26
+
27
+ export { MenuItemComponent, MenuSeparatorComponent };
@@ -0,0 +1,25 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ declare class NavBrandComponent {
4
+ /** Brand or application name rendered as the nav logo text. */
5
+ readonly brandText: _angular_core.InputSignal<string>;
6
+ /** Router path the brand link navigates to when clicked. */
7
+ readonly href: _angular_core.InputSignal<string>;
8
+ readonly id: _angular_core.InputSignal<string | null>;
9
+ readonly className: _angular_core.InputSignal<string>;
10
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
11
+ readonly classes: _angular_core.Signal<string>;
12
+ get hostClass(): string;
13
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavBrandComponent, never>;
14
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavBrandComponent, "fk-nav-brand", never, { "brandText": { "alias": "brandText"; "required": true; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[navLogo]"], true, never>;
15
+ }
16
+
17
+ interface NavBrandProps {
18
+ /** Text displayed adjacent to the logo */
19
+ brandText: string;
20
+ /** Optional link destination (defaults to '/') */
21
+ href?: string;
22
+ }
23
+
24
+ export { NavBrandComponent };
25
+ export type { NavBrandProps };