@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,75 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ type AppShellMode = 'side' | 'over' | 'icon';
4
+
5
+ declare class AppShellComponent {
6
+ /** Layout mode for the primary sidenav — `"side"` pushes content, `"over"` floats above it, `"icon"` collapses to an icon rail. */
7
+ readonly mode: _angular_core.InputSignal<AppShellMode>;
8
+ /** Width of the primary sidenav when fully open. */
9
+ readonly sidenavWidth: _angular_core.InputSignal<string>;
10
+ /** Width of the primary sidenav when collapsed to icon-rail mode. */
11
+ readonly collapsedWidth: _angular_core.InputSignal<string>;
12
+ /** CSS media query used to determine mobile breakpoint for the primary sidenav. */
13
+ readonly breakpoint: _angular_core.InputSignal<string>;
14
+ /** When true, the main header sticks to the top of the viewport during scroll. */
15
+ readonly sticky: _angular_core.InputSignal<boolean>;
16
+ /** When true and on mobile, the sidenav collapses to the icon rail instead of hiding entirely. */
17
+ readonly collapseOnMobile: _angular_core.InputSignal<boolean>;
18
+ /** Layout mode for the end (trailing) panel. */
19
+ readonly endMode: _angular_core.InputSignal<AppShellMode>;
20
+ /** Width of the end panel when fully open. */
21
+ readonly endWidth: _angular_core.InputSignal<string>;
22
+ /** Width of the end panel when collapsed to icon-rail mode. */
23
+ readonly endCollapsedWidth: _angular_core.InputSignal<string>;
24
+ private readonly orchestrator;
25
+ private navOverlayId;
26
+ private endOverlayId;
27
+ readonly stickyPreference: _angular_core.WritableSignal<"closed" | null>;
28
+ readonly tempOpen: _angular_core.WritableSignal<boolean>;
29
+ readonly isMobile: _angular_core.WritableSignal<boolean>;
30
+ readonly endStickyPreference: _angular_core.WritableSignal<"closed" | null>;
31
+ readonly endTempOpen: _angular_core.WritableSignal<boolean>;
32
+ /**
33
+ * Transitions are opt-in: only enabled after a user action (toggle, open,
34
+ * close, dismiss). Viewport changes clear this flag so layout shifts are
35
+ * always instant — no flash of the aside sliding in/out on resize.
36
+ */
37
+ readonly animate: _angular_core.WritableSignal<boolean>;
38
+ readonly sidenavOpen: _angular_core.Signal<boolean>;
39
+ readonly showOverlay: _angular_core.Signal<boolean>;
40
+ readonly isCollapsed: _angular_core.Signal<boolean>;
41
+ readonly endOpen: _angular_core.Signal<boolean>;
42
+ readonly showEndOverlay: _angular_core.Signal<boolean>;
43
+ readonly isEndCollapsed: _angular_core.Signal<boolean>;
44
+ readonly classes: _angular_core.Signal<string>;
45
+ get hostStyle(): {
46
+ '--fk-app-shell-sidenav-width': string;
47
+ '--fk-app-shell-collapsed-width': string;
48
+ '--fk-app-shell-end-width': string;
49
+ '--fk-app-shell-end-collapsed-width': string;
50
+ };
51
+ private readonly breakpointObserver;
52
+ private readonly destroyRef;
53
+ constructor();
54
+ /** Open the primary sidenav, registering it with the overlay orchestrator on mobile. */
55
+ openSidenav(): void;
56
+ /** Close the primary sidenav and unregister it from the overlay orchestrator. */
57
+ closeSidenav(): void;
58
+ /** Toggle the primary sidenav between open and closed. */
59
+ toggleSidenav(): void;
60
+ /** Dismiss the sidenav overlay on mobile without marking it as permanently closed. */
61
+ dismissSidenav(): void;
62
+ /** Open the end panel, registering it with the overlay orchestrator on mobile. */
63
+ openEnd(): void;
64
+ /** Close the end panel and unregister it from the overlay orchestrator. */
65
+ closeEnd(): void;
66
+ /** Toggle the end panel between open and closed. */
67
+ toggleEnd(): void;
68
+ /** Dismiss the end panel overlay and unregister it from the overlay orchestrator. */
69
+ dismissEnd(): void;
70
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppShellComponent, never>;
71
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppShellComponent, "fk-app-shell", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "sidenavWidth": { "alias": "sidenavWidth"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "breakpoint": { "alias": "breakpoint"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "collapseOnMobile": { "alias": "collapseOnMobile"; "required": false; "isSignal": true; }; "endMode": { "alias": "endMode"; "required": false; "isSignal": true; }; "endWidth": { "alias": "endWidth"; "required": false; "isSignal": true; }; "endCollapsedWidth": { "alias": "endCollapsedWidth"; "required": false; "isSignal": true; }; }, {}, never, ["[appShellHeader]", "[appShellSidenav]", "[appShellContent]", "[appShellEnd]", "[appShellFooter]"], true, never>;
72
+ }
73
+
74
+ export { AppShellComponent };
75
+ export type { AppShellMode };
@@ -0,0 +1,43 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ type ContentSplitLayout = 'wide' | 'narrow';
4
+
5
+ declare class FkContentSplitComponent {
6
+ private readonly el;
7
+ private readonly ngZone;
8
+ private readonly destroyRef;
9
+ private readonly platformId;
10
+ readonly className: _angular_core.InputSignal<string>;
11
+ /** Width of the left panel when the layout is in wide mode. */
12
+ readonly leftWidth: _angular_core.InputSignal<string>;
13
+ /** Width of the left panel when collapsed to a narrow icon rail. */
14
+ readonly railWidth: _angular_core.InputSignal<string>;
15
+ /** Host element pixel width below which the layout switches to narrow mode. */
16
+ readonly breakpoint: _angular_core.InputSignal<number>;
17
+ /** Two-way binding for the collapsed state of the left panel. */
18
+ readonly collapsed: _angular_core.ModelSignal<boolean>;
19
+ readonly layout: _angular_core.WritableSignal<ContentSplitLayout>;
20
+ readonly animate: _angular_core.WritableSignal<boolean>;
21
+ private observer;
22
+ readonly isNarrow: _angular_core.Signal<boolean>;
23
+ readonly isWide: _angular_core.Signal<boolean>;
24
+ readonly showOverlay: _angular_core.Signal<boolean>;
25
+ readonly classes: _angular_core.Signal<string>;
26
+ get hostClass(): string;
27
+ get hostLeftWidth(): string;
28
+ get hostRailWidth(): string;
29
+ constructor();
30
+ /** Expand the left panel. */
31
+ open(): void;
32
+ /** Collapse the left panel. */
33
+ close(): void;
34
+ /** Toggle the left panel between expanded and collapsed. */
35
+ toggle(): void;
36
+ /** Dismiss the left panel overlay on narrow viewports (alias for `close`). */
37
+ dismiss(): void;
38
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkContentSplitComponent, never>;
39
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FkContentSplitComponent, "fk-content-split", never, { "className": { "alias": "className"; "required": false; "isSignal": true; }; "leftWidth": { "alias": "leftWidth"; "required": false; "isSignal": true; }; "railWidth": { "alias": "railWidth"; "required": false; "isSignal": true; }; "breakpoint": { "alias": "breakpoint"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["[contentSplitLeft]", "[contentSplitToggleIcon]", "[contentSplitRight]"], true, never>;
40
+ }
41
+
42
+ export { FkContentSplitComponent };
43
+ export type { ContentSplitLayout };
@@ -0,0 +1,96 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * Default priority levels for common overlay types.
5
+ * Higher number = higher priority = stays open when lower-priority overlays open.
6
+ *
7
+ * Consumers can use any number — these are conventions, not constraints.
8
+ */
9
+ declare const OVERLAY_PRIORITY: {
10
+ /** Tooltips, inline popovers */
11
+ readonly TOOLTIP: 0;
12
+ /** Dropdown menus, kebab menus, popovers */
13
+ readonly POPOVER: 10;
14
+ /** Side panels, detail drawers */
15
+ readonly DRAWER: 20;
16
+ /** Modal dialogs, confirmations */
17
+ readonly DIALOG: 30;
18
+ /** App-level navigation (sidebar, mobile nav) */
19
+ readonly NAVIGATION: 40;
20
+ };
21
+ interface OverlayEntry {
22
+ /** Unique identifier for this overlay instance */
23
+ id: string;
24
+ /** Priority level — higher stays open, lower gets closed */
25
+ priority: number;
26
+ /** Overlay type label (for debugging/logging) */
27
+ type: string;
28
+ /** Called by the orchestrator to close this overlay */
29
+ close: () => void;
30
+ }
31
+
32
+ /**
33
+ * Centralized overlay orchestrator.
34
+ *
35
+ * Tracks all open overlays (dialogs, drawers, popovers, navigation, tooltips)
36
+ * in a priority-based stack. When a new overlay opens:
37
+ *
38
+ * - All overlays with LOWER priority are closed automatically.
39
+ * - Overlays with EQUAL or HIGHER priority are left open.
40
+ *
41
+ * This prevents UI conflicts like drawers staying open behind dialogs,
42
+ * or kebab menus persisting when a modal pops up.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const id = orchestrator.register({
47
+ * priority: OVERLAY_PRIORITY.DRAWER,
48
+ * type: 'drawer',
49
+ * close: () => drawerRef.close(),
50
+ * });
51
+ *
52
+ * // Later, when the overlay closes:
53
+ * orchestrator.unregister(id);
54
+ * ```
55
+ */
56
+ declare class OverlayOrchestrator {
57
+ private readonly entries;
58
+ /** Whether any overlay is currently open. */
59
+ readonly hasActiveOverlay: _angular_core.Signal<boolean>;
60
+ /** The topmost (highest priority) overlay. */
61
+ readonly topOverlay: _angular_core.Signal<OverlayEntry | null>;
62
+ /** Current number of active overlays. */
63
+ readonly count: _angular_core.Signal<number>;
64
+ /**
65
+ * Register an overlay and close all overlays with lower priority.
66
+ *
67
+ * @returns The unique overlay ID — pass this to `unregister()` when closing.
68
+ */
69
+ register(entry: Omit<OverlayEntry, 'id'>): string;
70
+ /**
71
+ * Unregister an overlay by ID. Call this when the overlay closes.
72
+ */
73
+ unregister(id: string): void;
74
+ /**
75
+ * Check if an overlay with the given priority or higher is currently open.
76
+ * Useful for guards that want to prevent opening lower-priority overlays.
77
+ */
78
+ hasOverlayAtOrAbove(priority: number): boolean;
79
+ /**
80
+ * Check if any overlay of a specific type is open.
81
+ */
82
+ hasOverlayOfType(type: string): boolean;
83
+ /**
84
+ * Close all overlays. Closes from lowest to highest priority.
85
+ */
86
+ closeAll(): void;
87
+ /**
88
+ * Close all overlays at or below the given priority.
89
+ */
90
+ closeAtOrBelow(priority: number): void;
91
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayOrchestrator, never>;
92
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<OverlayOrchestrator>;
93
+ }
94
+
95
+ export { OVERLAY_PRIORITY, OverlayOrchestrator };
96
+ export type { OverlayEntry };
@@ -0,0 +1,32 @@
1
+ import * as i0 from '@angular/core';
2
+
3
+ /**
4
+ * Coordinates "spotlight" pulses across unrelated DOM trees.
5
+ *
6
+ * A holder calls `activate(key)`; every element registered as a target of
7
+ * the same key picks up the spotlight animation in sync. `deactivate`
8
+ * releases that holder. Holders are reference-counted — multiple callers
9
+ * (a hover trigger and a programmatic one-shot, say) can hold the same
10
+ * key concurrently, and the key only clears once every holder has
11
+ * released. This lets a programmatic "auto-spotlight on docs-panel open"
12
+ * coexist with the hover-driven trigger without one cancelling the
13
+ * other prematurely.
14
+ *
15
+ * The model is still a single global active key — last activation wins
16
+ * if a different key arrives while one is held; the primary use case
17
+ * (onboarding "find this button" cues) is mutually exclusive by nature.
18
+ */
19
+ declare class SpotlightService {
20
+ private readonly _activeKey;
21
+ private readonly holders;
22
+ /** Read-only signal exposing the currently active spotlight key, or `null` when none is active. */
23
+ readonly activeKey: i0.Signal<string | null>;
24
+ /** Activate the spotlight for the given key, incrementing its holder count. */
25
+ activate(key: string): void;
26
+ /** Release one holder of the given key; clears the active key when the last holder deactivates. */
27
+ deactivate(key: string): void;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpotlightService, never>;
29
+ static ɵprov: i0.ɵɵInjectableDeclaration<SpotlightService>;
30
+ }
31
+
32
+ export { SpotlightService };
@@ -0,0 +1,100 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Type, InjectionToken, Provider, EnvironmentProviders } from '@angular/core';
3
+
4
+ type ToastSeverity = 'success' | 'error' | 'warning' | 'info';
5
+ interface Toast {
6
+ id: string;
7
+ severity: ToastSeverity;
8
+ summary: string;
9
+ detail?: string;
10
+ duration: number;
11
+ component?: Type<unknown>;
12
+ data?: unknown;
13
+ }
14
+ interface ToastConfig {
15
+ icons?: Partial<Record<ToastSeverity, string>>;
16
+ defaultDuration?: number;
17
+ errorDuration?: number;
18
+ }
19
+ declare const DEFAULT_TOAST_CONFIG: ToastConfig;
20
+
21
+ declare const TOAST_DATA: InjectionToken<unknown>;
22
+ declare const TOAST_REF: InjectionToken<ToastRef>;
23
+ /**
24
+ * Reference to an active toast. Injected into custom toast components
25
+ * so they can dismiss themselves.
26
+ */
27
+ declare class ToastRef {
28
+ readonly id: string;
29
+ private readonly dismissFn;
30
+ constructor(id: string, dismissFn: (id: string) => void);
31
+ dismiss(): void;
32
+ }
33
+
34
+ declare const TOAST_CONFIG: InjectionToken<ToastConfig>;
35
+ /**
36
+ * Global toast notification service.
37
+ *
38
+ * Default toasts:
39
+ * ```ts
40
+ * this.toast.success("Saved successfully");
41
+ * this.toast.error("Something went wrong", "Please try again.");
42
+ * ```
43
+ *
44
+ * Custom component toasts:
45
+ * ```ts
46
+ * this.toast.open(RetryToastComponent, {
47
+ * severity: "error",
48
+ * data: { message: "Failed to save", retryFn: () => this.save() },
49
+ * });
50
+ * ```
51
+ */
52
+ declare class ToastService {
53
+ private readonly config;
54
+ private readonly timers;
55
+ private readonly _toasts;
56
+ /** Current toast stack (read-only). */
57
+ readonly toasts: i0.Signal<Toast[]>;
58
+ /** Resolved config with defaults. */
59
+ readonly resolvedConfig: Required<Pick<ToastConfig, 'defaultDuration' | 'errorDuration'>> & ToastConfig;
60
+ /**
61
+ * Show a default toast. Returns the toast ID for manual dismissal.
62
+ */
63
+ show(options: {
64
+ severity: ToastSeverity;
65
+ summary: string;
66
+ detail?: string;
67
+ duration?: number;
68
+ }): string;
69
+ /**
70
+ * Show a custom component toast. The component receives TOAST_DATA
71
+ * and TOAST_REF via injection. Returns a ToastRef for external dismissal.
72
+ */
73
+ open<TData = unknown>(component: Type<unknown>, options?: {
74
+ severity?: ToastSeverity;
75
+ data?: TData;
76
+ duration?: number;
77
+ }): ToastRef;
78
+ /** Dismiss a specific toast by ID. */
79
+ dismiss(id: string): void;
80
+ /** Clear all toasts. */
81
+ clear(): void;
82
+ /** Show a success toast and return its ID. */
83
+ success(summary: string, detail?: string): string;
84
+ /** Show an error toast and return its ID. */
85
+ error(summary: string, detail?: string): string;
86
+ /** Show a warning toast and return its ID. */
87
+ warning(summary: string, detail?: string): string;
88
+ /** Show an informational toast and return its ID. */
89
+ info(summary: string, detail?: string): string;
90
+ private scheduleAutoDismiss;
91
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToastService, never>;
92
+ static ɵprov: i0.ɵɵInjectableDeclaration<ToastService>;
93
+ }
94
+ /**
95
+ * Provide toast configuration at the application level.
96
+ */
97
+ declare function provideToastConfig(config: ToastConfig): (Provider | EnvironmentProviders)[];
98
+
99
+ export { DEFAULT_TOAST_CONFIG, TOAST_CONFIG, TOAST_DATA, TOAST_REF, ToastRef, ToastService, provideToastConfig };
100
+ export type { Toast, ToastConfig, ToastSeverity };
@@ -0,0 +1,86 @@
1
+ import * as _frame_kit_ui_ng_ui_accordion from '@frame-kit/ui-ng/ui/accordion';
2
+ import * as _angular_core from '@angular/core';
3
+ import { OnInit, InjectionToken } from '@angular/core';
4
+
5
+ type AccordionSize = 'sm' | 'md';
6
+
7
+ declare class AccordionComponent implements OnInit {
8
+ private readonly group;
9
+ private readonly destroyRef;
10
+ /** Heading text shown in the trigger row. */
11
+ readonly title: _angular_core.InputSignal<string>;
12
+ /** Optional supporting text rendered beneath the title. */
13
+ readonly description: _angular_core.InputSignal<string | null>;
14
+ /** Short label rendered to the leading side of the trigger row. */
15
+ readonly leadingText: _angular_core.InputSignal<string | null>;
16
+ /** Controls the size variant of the accordion trigger and content. */
17
+ readonly size: _angular_core.InputSignal<AccordionSize>;
18
+ /** When true the accordion cannot be opened or closed by the user. */
19
+ readonly disabled: _angular_core.InputSignal<boolean>;
20
+ /** Whether the panel starts in the expanded state on first render. */
21
+ readonly defaultExpanded: _angular_core.InputSignal<boolean>;
22
+ readonly leadingIconRef: _angular_core.Signal<_frame_kit_ui_ng_ui_accordion.FkAccordionLeadingIconDirective | undefined>;
23
+ readonly chevronRef: _angular_core.Signal<_frame_kit_ui_ng_ui_accordion.FkAccordionChevronDirective | undefined>;
24
+ /** Fires whenever the panel opens or closes, emitting the new expanded state. */
25
+ readonly expandedChange: _angular_core.OutputEmitterRef<boolean>;
26
+ readonly className: _angular_core.InputSignal<string>;
27
+ readonly id: _angular_core.InputSignal<string | null>;
28
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
29
+ private readonly _expanded;
30
+ private readonly uid;
31
+ readonly expanded: _angular_core.Signal<boolean>;
32
+ protected readonly triggerId: _angular_core.Signal<string>;
33
+ protected readonly panelId: _angular_core.Signal<string>;
34
+ readonly classes: _angular_core.Signal<string>;
35
+ get hostClass(): string;
36
+ ngOnInit(): void;
37
+ /** Toggles the expanded state if the accordion is not disabled. */
38
+ toggle(): void;
39
+ /**
40
+ * Set the expanded state imperatively. Reserved for
41
+ * `AccordionGroupCoordinator` to force-collapse siblings when a new
42
+ * accordion opens within the same group. Does not notify the
43
+ * coordinator (to avoid re-entrance loops).
44
+ */
45
+ setExpanded(expanded: boolean): void;
46
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionComponent, never>;
47
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionComponent, "fk-accordion", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "leadingText": { "alias": "leadingText"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "defaultExpanded": { "alias": "defaultExpanded"; "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; }; }, { "expandedChange": "expandedChange"; }, ["leadingIconRef", "chevronRef"], ["[fkAccordionLeadingIcon]", "[fkAccordionChevron]", "*"], true, never>;
48
+ }
49
+
50
+ declare const FK_ACCORDION_CHEVRON: InjectionToken<FkAccordionChevronDirective>;
51
+ declare class FkAccordionChevronDirective {
52
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkAccordionChevronDirective, never>;
53
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkAccordionChevronDirective, "[fkAccordionChevron]", never, {}, {}, never, never, true, never>;
54
+ }
55
+
56
+ declare class AccordionGroupComponent {
57
+ readonly className: _angular_core.InputSignal<string>;
58
+ readonly classes: _angular_core.Signal<string>;
59
+ get hostClass(): string;
60
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionGroupComponent, never>;
61
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionGroupComponent, "fk-accordion-group", never, { "className": { "alias": "className"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
62
+ }
63
+
64
+ /**
65
+ * Coordinator scoped to a single `<fk-accordion-group>`. Any
66
+ * `<fk-accordion>` rendered inside a group picks this up via DI and
67
+ * reports its toggle state. The coordinator enforces single-open:
68
+ * when a new accordion opens, the previously active one is collapsed.
69
+ */
70
+ declare class AccordionGroupCoordinator {
71
+ private active;
72
+ register(accordion: AccordionComponent): void;
73
+ unregister(accordion: AccordionComponent): void;
74
+ notifyExpandedChange(accordion: AccordionComponent, nextExpanded: boolean): void;
75
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionGroupCoordinator, never>;
76
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AccordionGroupCoordinator>;
77
+ }
78
+
79
+ declare const FK_ACCORDION_LEADING_ICON: InjectionToken<FkAccordionLeadingIconDirective>;
80
+ declare class FkAccordionLeadingIconDirective {
81
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkAccordionLeadingIconDirective, never>;
82
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkAccordionLeadingIconDirective, "[fkAccordionLeadingIcon]", never, {}, {}, never, never, true, never>;
83
+ }
84
+
85
+ export { AccordionComponent, AccordionGroupComponent, AccordionGroupCoordinator, FK_ACCORDION_CHEVRON, FK_ACCORDION_LEADING_ICON, FkAccordionChevronDirective, FkAccordionLeadingIconDirective };
86
+ export type { AccordionSize };
@@ -0,0 +1,34 @@
1
+ import * as _frame_kit_ui_ng_ui_alert from '@frame-kit/ui-ng/ui/alert';
2
+ import * as _angular_core from '@angular/core';
3
+ import { InjectionToken } from '@angular/core';
4
+
5
+ type AlertVariant = 'info' | 'success' | 'warning' | 'error';
6
+
7
+ declare class AlertComponent {
8
+ /** Semantic variant that drives the alert color scheme and icon. */
9
+ readonly variant: _angular_core.InputSignal<AlertVariant>;
10
+ /** Override the text color as a CSS value, bypassing the variant token. */
11
+ readonly color: _angular_core.InputSignal<string | null>;
12
+ /** Override the background color as a CSS value, bypassing the variant token. */
13
+ readonly backgroundColor: _angular_core.InputSignal<string | null>;
14
+ /** Override the border color as a CSS value, bypassing the variant token. */
15
+ readonly borderColor: _angular_core.InputSignal<string | null>;
16
+ readonly iconStartRef: _angular_core.Signal<_frame_kit_ui_ng_ui_alert.FkAlertIconStartDirective | undefined>;
17
+ readonly className: _angular_core.InputSignal<string>;
18
+ readonly classes: _angular_core.Signal<string>;
19
+ get hostClass(): string;
20
+ get hostColor(): string | null;
21
+ get hostBackgroundColor(): string | null;
22
+ get hostBorderColor(): string | null;
23
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertComponent, never>;
24
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertComponent, "fk-alert", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "borderColor": { "alias": "borderColor"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; }, {}, ["iconStartRef"], ["[fkAlertIconStart]", "*"], true, never>;
25
+ }
26
+
27
+ declare const FK_ALERT_ICON_START: InjectionToken<FkAlertIconStartDirective>;
28
+ declare class FkAlertIconStartDirective {
29
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkAlertIconStartDirective, never>;
30
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkAlertIconStartDirective, "[fkAlertIconStart]", never, {}, {}, never, never, true, never>;
31
+ }
32
+
33
+ export { AlertComponent, FK_ALERT_ICON_START, FkAlertIconStartDirective };
34
+ export type { AlertVariant };
@@ -0,0 +1,38 @@
1
+ import * as _frame_kit_ui_ng_ui_avatar from '@frame-kit/ui-ng/ui/avatar';
2
+ import { AvatarSize } from '@frame-kit/ui-ng/ui/avatar';
3
+ import * as _angular_core from '@angular/core';
4
+
5
+ interface AvatarStackUser {
6
+ id: string;
7
+ name: string;
8
+ avatarUrl?: string | null;
9
+ }
10
+ type AvatarStackSize = AvatarSize;
11
+
12
+ declare class AvatarStackComponent {
13
+ /** Array of user objects to render as overlapping avatars. */
14
+ readonly users: _angular_core.InputSignal<AvatarStackUser[]>;
15
+ /** Maximum number of avatars displayed before an overflow counter appears. */
16
+ readonly maxVisible: _angular_core.InputSignal<number>;
17
+ /** Size applied to every avatar in the stack. */
18
+ readonly size: _angular_core.InputSignal<_frame_kit_ui_ng_ui_avatar.AvatarSize>;
19
+ readonly className: _angular_core.InputSignal<string>;
20
+ readonly id: _angular_core.InputSignal<string | null>;
21
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
22
+ /** Fires when the user clicks an individual avatar, emitting that user's data. */
23
+ readonly avatarClick: _angular_core.OutputEmitterRef<AvatarStackUser>;
24
+ /** Fires when the user clicks the overflow counter showing hidden avatars. */
25
+ readonly overflowClick: _angular_core.OutputEmitterRef<void>;
26
+ readonly visibleUsers: _angular_core.Signal<AvatarStackUser[]>;
27
+ readonly overflowCount: _angular_core.Signal<number>;
28
+ readonly overflowTooltip: _angular_core.Signal<string>;
29
+ readonly classes: _angular_core.Signal<string>;
30
+ get hostClass(): string;
31
+ get hostId(): string | null;
32
+ get hostAriaLabel(): string | null;
33
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarStackComponent, never>;
34
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarStackComponent, "fk-avatar-stack", never, { "users": { "alias": "users"; "required": false; "isSignal": true; }; "maxVisible": { "alias": "maxVisible"; "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; }; }, { "avatarClick": "avatarClick"; "overflowClick": "overflowClick"; }, never, never, true, never>;
35
+ }
36
+
37
+ export { AvatarStackComponent };
38
+ export type { AvatarStackSize, AvatarStackUser };
@@ -0,0 +1,36 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ type AvatarSize = 'sm' | 'md' | 'lg';
4
+ type AvatarStatus = 'online' | 'offline' | 'away' | 'busy';
5
+
6
+ declare class AvatarComponent {
7
+ /** Full display name used to derive initials when no explicit initials or image are provided. */
8
+ readonly name: _angular_core.InputSignal<string>;
9
+ /** URL of the avatar image; falls back to initials when the image fails to load. */
10
+ readonly avatarUrl: _angular_core.InputSignal<string | null>;
11
+ /** Explicit two-character initials that override the name-derived fallback. */
12
+ readonly initials: _angular_core.InputSignal<string | null>;
13
+ /** Online/offline/away status to reflect on the indicator dot. */
14
+ readonly status: _angular_core.InputSignal<AvatarStatus | null>;
15
+ /** When true, renders the status indicator dot over the avatar. */
16
+ readonly showStatus: _angular_core.InputSignal<boolean>;
17
+ /** Controls the avatar size. */
18
+ readonly size: _angular_core.InputSignal<AvatarSize>;
19
+ readonly className: _angular_core.InputSignal<string>;
20
+ readonly id: _angular_core.InputSignal<string | null>;
21
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
22
+ readonly derivedInitials: _angular_core.Signal<string>;
23
+ readonly showIndicator: _angular_core.Signal<boolean>;
24
+ readonly classes: _angular_core.Signal<string>;
25
+ get hostClass(): string;
26
+ get hostId(): string | null;
27
+ readonly imgError: {
28
+ value: boolean;
29
+ };
30
+ onImgError(): void;
31
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarComponent, never>;
32
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarComponent, "fk-avatar", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "avatarUrl": { "alias": "avatarUrl"; "required": false; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "showStatus": { "alias": "showStatus"; "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, never, true, never>;
33
+ }
34
+
35
+ export { AvatarComponent };
36
+ export type { AvatarSize, AvatarStatus };
@@ -0,0 +1,33 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ type BadgeVariant = 'default' | 'primary' | 'success' | 'warning' | 'danger';
4
+
5
+ declare class BadgeComponent {
6
+ /** Visual style variant that drives the badge color scheme. */
7
+ readonly variant: _angular_core.InputSignal<BadgeVariant>;
8
+ /** Override the text color as a CSS value. */
9
+ readonly color: _angular_core.InputSignal<string | null>;
10
+ /** Override the background color as a CSS value. */
11
+ readonly backgroundColor: _angular_core.InputSignal<string | null>;
12
+ /** Override the border color as a CSS value; renders as a 1px solid border. */
13
+ readonly borderColor: _angular_core.InputSignal<string | null>;
14
+ /** Custom padding shorthand applied to all sides. */
15
+ readonly padding: _angular_core.InputSignal<string | null>;
16
+ /** Custom inline (left/right) padding applied independently. */
17
+ readonly paddingInline: _angular_core.InputSignal<string | null>;
18
+ readonly className: _angular_core.InputSignal<string>;
19
+ readonly id: _angular_core.InputSignal<string | null>;
20
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
21
+ readonly classes: _angular_core.Signal<string>;
22
+ get hostClass(): string;
23
+ get hostColor(): string | null;
24
+ get hostBackgroundColor(): string | null;
25
+ get hostBorder(): string | null;
26
+ get hostPadding(): string | null;
27
+ get hostPaddingInline(): string | null;
28
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeComponent, never>;
29
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "fk-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "borderColor": { "alias": "borderColor"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "paddingInline": { "alias": "paddingInline"; "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>;
30
+ }
31
+
32
+ export { BadgeComponent };
33
+ export type { BadgeVariant };
@@ -0,0 +1,45 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
3
+
4
+ interface BreadcrumbItem {
5
+ label: string;
6
+ routerLink?: string | any[];
7
+ icon?: string;
8
+ }
9
+
10
+ /**
11
+ * Generic route-driven breadcrumb.
12
+ *
13
+ * Consumers pass an ordered list of crumbs — the final crumb is always the
14
+ * "current location" (rendered as plain text with `aria-current="page"`),
15
+ * every earlier crumb with a `routerLink` renders as an `<a [routerLink]>`
16
+ * and navigates via the Angular router. Earlier crumbs without a
17
+ * `routerLink` render as plain text so consumers can include
18
+ * non-navigable ancestors (e.g. a section header) when needed.
19
+ *
20
+ * The chevron separator between crumbs ships as an inline SVG so the
21
+ * component renders correctly with no consumer setup. Consumers can
22
+ * replace the separator by projecting an `<ng-template #fkBreadcrumbSeparator>`
23
+ * with any content — the template is instantiated once per gap between
24
+ * crumbs.
25
+ *
26
+ * For breadcrumbs that reflect a tree/hierarchy selection (e.g. org nodes),
27
+ * use `fk-node-tree-breadcrumb` instead — that component walks a `TreeNode`
28
+ * array by `parentId` and emits node-select events rather than navigating.
29
+ */
30
+ declare class BreadcrumbComponent {
31
+ /** Ordered list of crumb items; the last item is always treated as the current page. */
32
+ readonly items: _angular_core.InputSignal<readonly BreadcrumbItem[]>;
33
+ readonly className: _angular_core.InputSignal<string>;
34
+ readonly ariaLabel: _angular_core.InputSignal<string>;
35
+ readonly separatorRef: _angular_core.Signal<TemplateRef<unknown> | undefined>;
36
+ readonly classes: _angular_core.Signal<string>;
37
+ get hostClass(): string;
38
+ readonly role = "navigation";
39
+ get hostAriaLabel(): string;
40
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BreadcrumbComponent, never>;
41
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BreadcrumbComponent, "fk-breadcrumb", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, ["separatorRef"], never, true, never>;
42
+ }
43
+
44
+ export { BreadcrumbComponent };
45
+ export type { BreadcrumbItem };