@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,42 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AfterViewInit, OnDestroy } from '@angular/core';
3
+
4
+ /**
5
+ * Infinite Scroll Directive
6
+ *
7
+ * Place on a sentinel element at the bottom of a scrollable list.
8
+ * Uses IntersectionObserver — no scroll event listeners, no throttling.
9
+ *
10
+ * When the sentinel enters the viewport, emits `scrolled`.
11
+ * Remove the sentinel from the DOM (via @if) to stop triggering.
12
+ *
13
+ * @example
14
+ * ```html
15
+ * @for (item of items(); track item.id) {
16
+ * <div>{{ item.name }}</div>
17
+ * }
18
+ *
19
+ * @if (hasMore()) {
20
+ * <div fkInfiniteScroll (scrolled)="loadNextPage()">
21
+ * @if (loading()) { <fk-loader /> }
22
+ * </div>
23
+ * }
24
+ * ```
25
+ */
26
+ declare class FkInfiniteScrollDirective implements AfterViewInit, OnDestroy {
27
+ private readonly el;
28
+ private readonly platformId;
29
+ private observer;
30
+ /** Visibility threshold (0–1). Default 0.1 = 10% visible triggers. */
31
+ readonly threshold: _angular_core.InputSignal<number>;
32
+ /** Root margin to expand/shrink the detection area. */
33
+ readonly rootMargin: _angular_core.InputSignal<string>;
34
+ /** Emits when the sentinel element enters the viewport. */
35
+ readonly scrolled: _angular_core.OutputEmitterRef<void>;
36
+ ngAfterViewInit(): void;
37
+ ngOnDestroy(): void;
38
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkInfiniteScrollDirective, never>;
39
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkInfiniteScrollDirective, "[fkInfiniteScroll]", never, { "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "rootMargin": { "alias": "rootMargin"; "required": false; "isSignal": true; }; }, { "scrolled": "scrolled"; }, never, never, true, never>;
40
+ }
41
+
42
+ export { FkInfiniteScrollDirective };
@@ -0,0 +1,51 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * Visual treatment applied while the spotlight is active.
5
+ *
6
+ * - `pulse` (default) — animated ring around the element. Best for
7
+ * small, action-anchored targets like buttons.
8
+ * - `overlay` — static tinted overlay over the element with a brief
9
+ * fade in/out. Better for wide surfaces (list columns, panels) where
10
+ * the pulsing animation would feel busy.
11
+ */
12
+ type SpotlightTreatment = 'pulse' | 'overlay';
13
+ /**
14
+ * Marks an element to react when its spotlight key is active. By
15
+ * default the visual is a pulsing ring (`pulse` treatment) drawn by the
16
+ * `.fk-spotlight-target::after` pseudo-element. Pass `treatment="overlay"`
17
+ * for a static tinted overlay that's friendlier on wide elements.
18
+ *
19
+ * Many targets may share the same key — they all activate in sync, and
20
+ * each may pick its own treatment.
21
+ */
22
+ declare class SpotlightTargetDirective {
23
+ /** Spotlight key this element reacts to; matches the key set on the trigger. */
24
+ readonly fkSpotlightTarget: _angular_core.InputSignal<string>;
25
+ /** Visual treatment applied when the spotlight is active — `"pulse"` animates a ring, `"overlay"` applies a tinted fade. */
26
+ readonly treatment: _angular_core.InputSignal<SpotlightTreatment>;
27
+ private readonly spotlight;
28
+ protected readonly active: _angular_core.Signal<boolean>;
29
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpotlightTargetDirective, never>;
30
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SpotlightTargetDirective, "[fkSpotlightTarget]", never, { "fkSpotlightTarget": { "alias": "fkSpotlightTarget"; "required": true; "isSignal": true; }; "treatment": { "alias": "treatment"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
31
+ }
32
+
33
+ /**
34
+ * Marks an element as the hover/focus zone that activates a spotlight key.
35
+ *
36
+ * Apply to a container — e.g. a docs-panel section — so the activation
37
+ * area is generous, not just the button itself. Any number of triggers
38
+ * can broadcast the same key; the last enter wins.
39
+ */
40
+ declare class SpotlightTriggerDirective {
41
+ /** Spotlight key this element activates on hover or focus. */
42
+ readonly fkSpotlightTrigger: _angular_core.InputSignal<string>;
43
+ private readonly spotlight;
44
+ protected onEnter(): void;
45
+ protected onLeave(): void;
46
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpotlightTriggerDirective, never>;
47
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SpotlightTriggerDirective, "[fkSpotlightTrigger]", never, { "fkSpotlightTrigger": { "alias": "fkSpotlightTrigger"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
48
+ }
49
+
50
+ export { SpotlightTargetDirective, SpotlightTriggerDirective };
51
+ export type { SpotlightTreatment };
@@ -0,0 +1,70 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ type TooltipPosition = 'top' | 'right' | 'bottom' | 'left';
4
+
5
+ declare class TooltipDirective {
6
+ /** Text content displayed inside the tooltip bubble. */
7
+ readonly fkTooltip: _angular_core.InputSignal<string>;
8
+ /** Preferred position of the tooltip relative to the anchor element. */
9
+ readonly fkTooltipPosition: _angular_core.InputSignal<TooltipPosition>;
10
+ /** Gap in pixels between the anchor element and the tooltip bubble. */
11
+ readonly fkTooltipOffset: _angular_core.InputSignal<number>;
12
+ /** Delay in milliseconds before the tooltip appears after the trigger event. */
13
+ readonly fkTooltipShowDelay: _angular_core.InputSignal<number>;
14
+ /** Delay in milliseconds before the tooltip hides after the leave event. */
15
+ readonly fkTooltipHideDelay: _angular_core.InputSignal<number>;
16
+ /** When true, suppresses all tooltip display entirely. */
17
+ readonly fkTooltipDisabled: _angular_core.InputSignal<boolean>;
18
+ /** Additional CSS class names applied to the tooltip root element. */
19
+ readonly fkTooltipClassName: _angular_core.InputSignal<string>;
20
+ private readonly elRef;
21
+ private readonly renderer;
22
+ private readonly ngZone;
23
+ private readonly destroyRef;
24
+ private tooltipEl;
25
+ private tooltipId;
26
+ private showTimeout;
27
+ private hideTimeout;
28
+ private scrollListeners;
29
+ private resizeListener;
30
+ private escapeListener;
31
+ private visible;
32
+ constructor();
33
+ private readonly onMouseEnter;
34
+ private readonly onMouseLeave;
35
+ private readonly onFocusIn;
36
+ private readonly onFocusOut;
37
+ private readonly onTouchStart;
38
+ private readonly onEscape;
39
+ private scheduleShow;
40
+ private scheduleHide;
41
+ private show;
42
+ private hide;
43
+ private forceHide;
44
+ private createTooltipElement;
45
+ private removeTooltipElement;
46
+ private buildTooltipClasses;
47
+ private updatePosition;
48
+ private attachPositionListeners;
49
+ private detachPositionListeners;
50
+ private clearTimeouts;
51
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipDirective, never>;
52
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[fkTooltip]", never, { "fkTooltip": { "alias": "fkTooltip"; "required": true; "isSignal": true; }; "fkTooltipPosition": { "alias": "fkTooltipPosition"; "required": false; "isSignal": true; }; "fkTooltipOffset": { "alias": "fkTooltipOffset"; "required": false; "isSignal": true; }; "fkTooltipShowDelay": { "alias": "fkTooltipShowDelay"; "required": false; "isSignal": true; }; "fkTooltipHideDelay": { "alias": "fkTooltipHideDelay"; "required": false; "isSignal": true; }; "fkTooltipDisabled": { "alias": "fkTooltipDisabled"; "required": false; "isSignal": true; }; "fkTooltipClassName": { "alias": "fkTooltipClassName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
53
+ }
54
+
55
+ declare const TOOLTIP_STYLES = "\n.fk-tooltip {\n position: fixed;\n z-index: var(--fk-tooltip-z-index, 1100);\n max-width: var(--fk-tooltip-max-width, 20rem);\n padding: var(--fk-tooltip-padding, var(--fk-rhythm-1, 0.25rem) var(--fk-rhythm-2, 0.5rem));\n border-radius: var(--fk-tooltip-border-radius, var(--fk-radius-sm, 0.25rem));\n background-color: var(--fk-tooltip-bg, var(--fk-color-text, #1f2d3d));\n color: var(--fk-tooltip-color, var(--fk-color-surface, #ffffff));\n font-family: var(--fk-tooltip-font-family, var(--fk-font-family-base, sans-serif));\n font-size: var(--fk-tooltip-font-size, var(--fk-typography-caption-font-size, 0.75rem));\n font-weight: var(--fk-tooltip-font-weight, var(--fk-font-weight-medium, 500));\n line-height: var(--fk-tooltip-line-height, var(--fk-typography-caption-line-height, 1.3));\n box-shadow: var(--fk-tooltip-shadow, 0 2px 8px rgba(0, 0, 0, 0.15));\n pointer-events: none;\n white-space: normal;\n word-wrap: break-word;\n opacity: 0;\n transform: scale(0.96);\n transition:\n opacity var(--fk-tooltip-enter-duration, 0.15s) var(--fk-tooltip-easing, ease-out),\n transform var(--fk-tooltip-enter-duration, 0.15s) var(--fk-tooltip-easing, ease-out);\n}\n.fk-tooltip--visible {\n opacity: 1;\n transform: scale(1);\n}\n.fk-tooltip--hiding {\n opacity: 0;\n transform: scale(0.96);\n transition-duration: var(--fk-tooltip-exit-duration, 0.1s);\n}\n.fk-tooltip__text {\n display: block;\n}\n.fk-tooltip__arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-style: solid;\n}\n.fk-tooltip--top .fk-tooltip__arrow {\n bottom: calc(-1 * var(--fk-tooltip-arrow-size, 6px));\n left: var(--fk-tooltip-arrow-offset, 50%);\n transform: translateX(-50%);\n border-width: var(--fk-tooltip-arrow-size, 6px) var(--fk-tooltip-arrow-size, 6px) 0;\n border-color: var(--fk-tooltip-bg, var(--fk-color-text, #1f2d3d)) transparent transparent;\n}\n.fk-tooltip--bottom .fk-tooltip__arrow {\n top: calc(-1 * var(--fk-tooltip-arrow-size, 6px));\n left: var(--fk-tooltip-arrow-offset, 50%);\n transform: translateX(-50%);\n border-width: 0 var(--fk-tooltip-arrow-size, 6px) var(--fk-tooltip-arrow-size, 6px);\n border-color: transparent transparent var(--fk-tooltip-bg, var(--fk-color-text, #1f2d3d));\n}\n.fk-tooltip--left .fk-tooltip__arrow {\n right: calc(-1 * var(--fk-tooltip-arrow-size, 6px));\n top: var(--fk-tooltip-arrow-offset, 50%);\n transform: translateY(-50%);\n border-width: var(--fk-tooltip-arrow-size, 6px) 0 var(--fk-tooltip-arrow-size, 6px) var(--fk-tooltip-arrow-size, 6px);\n border-color: transparent transparent transparent var(--fk-tooltip-bg, var(--fk-color-text, #1f2d3d));\n}\n.fk-tooltip--right .fk-tooltip__arrow {\n left: calc(-1 * var(--fk-tooltip-arrow-size, 6px));\n top: var(--fk-tooltip-arrow-offset, 50%);\n transform: translateY(-50%);\n border-width: var(--fk-tooltip-arrow-size, 6px) var(--fk-tooltip-arrow-size, 6px) var(--fk-tooltip-arrow-size, 6px) 0;\n border-color: transparent var(--fk-tooltip-bg, var(--fk-color-text, #1f2d3d)) transparent transparent;\n}\n@media (prefers-reduced-motion: reduce) {\n .fk-tooltip {\n transition: none;\n }\n}\n";
56
+ declare function injectTooltipStyles(): void;
57
+
58
+ interface PositionResult {
59
+ x: number;
60
+ y: number;
61
+ actualPosition: TooltipPosition;
62
+ arrowOffset: number;
63
+ }
64
+ declare function computeTooltipPosition(anchorRect: DOMRect, tooltipWidth: number, tooltipHeight: number, preferred: TooltipPosition, offset: number, viewport: {
65
+ width: number;
66
+ height: number;
67
+ }): PositionResult;
68
+
69
+ export { TOOLTIP_STYLES, TooltipDirective, computeTooltipPosition, injectTooltipStyles };
70
+ export type { PositionResult, TooltipPosition };
@@ -0,0 +1,43 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { MethodBadgeMethod } from '@frame-kit/ui-ng/docs/method-badge';
3
+ export { MethodBadgeMethod as EndpointLinkMethod } from '@frame-kit/ui-ng/docs/method-badge';
4
+
5
+ /**
6
+ * Sidebar/list item for an API endpoint in developer documentation.
7
+ *
8
+ * Renders a leading `fk-method-badge` followed by the endpoint label as a
9
+ * single clickable router link. Used to list operations (e.g. "GET List
10
+ * permissions", "POST Create identity") in a documentation sidebar or any
11
+ * denser endpoint index.
12
+ *
13
+ * Active state is driven by `routerLinkActive`, matching the behavior of
14
+ * `fk-sidenav-link` so every router-aware nav item in the library resolves
15
+ * active state the same way.
16
+ *
17
+ * When rendered inside an `fk-app-shell`, clicks also call `dismissSidenav`
18
+ * on the ancestor shell — this closes the mobile overlay so the user lands
19
+ * directly on the selected endpoint. On desktop it's a no-op.
20
+ */
21
+ declare class EndpointLinkComponent {
22
+ private readonly shell;
23
+ readonly method: _angular_core.InputSignal<MethodBadgeMethod>;
24
+ readonly label: _angular_core.InputSignal<string>;
25
+ readonly routerLink: _angular_core.InputSignal<string | any[]>;
26
+ /**
27
+ * Whether to require an exact URL match for the active state. Defaults to
28
+ * false — each endpoint has a unique final path segment so prefix matching
29
+ * resolves to the same thing in practice.
30
+ */
31
+ readonly exact: _angular_core.InputSignal<boolean>;
32
+ readonly className: _angular_core.InputSignal<string>;
33
+ readonly classes: _angular_core.Signal<string>;
34
+ readonly activeOptions: _angular_core.Signal<{
35
+ exact: boolean;
36
+ }>;
37
+ get hostClass(): string;
38
+ protected dismiss(): void;
39
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EndpointLinkComponent, never>;
40
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EndpointLinkComponent, "fk-endpoint-link", never, { "method": { "alias": "method"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": true; "isSignal": true; }; "exact": { "alias": "exact"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
41
+ }
42
+
43
+ export { EndpointLinkComponent };
@@ -0,0 +1,30 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * Supported HTTP methods for `fk-method-badge`. Lowercased to match OpenAPI
5
+ * conventions so consumers can pass spec values directly without translation.
6
+ */
7
+ type MethodBadgeMethod = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'head' | 'options';
8
+
9
+ /**
10
+ * Small rectangular badge showing an HTTP method label (e.g. `GET`, `POST`).
11
+ *
12
+ * Each method has its own hue so consumers can identify the verb in a dense
13
+ * list. Background colors are exposed as CSS variables
14
+ * (`--fk-method-badge-bg-get`, etc.) with defaults baked in so the component
15
+ * renders correctly without a theme.
16
+ */
17
+ declare class MethodBadgeComponent {
18
+ readonly method: _angular_core.InputSignal<MethodBadgeMethod>;
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 classes: _angular_core.Signal<string>;
23
+ readonly label: _angular_core.Signal<string>;
24
+ get hostClass(): string;
25
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MethodBadgeComponent, never>;
26
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MethodBadgeComponent, "fk-method-badge", never, { "method": { "alias": "method"; "required": true; "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>;
27
+ }
28
+
29
+ export { MethodBadgeComponent };
30
+ export type { MethodBadgeMethod };