forty-cdk 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/accordion/README.md +122 -0
  2. package/aspect-ratio/README.md +76 -0
  3. package/avatar/README.md +100 -0
  4. package/breadcrumbs/README.md +49 -0
  5. package/breakpoints/README.md +81 -0
  6. package/button/README.md +49 -0
  7. package/calendar/README.md +458 -0
  8. package/carousel/README.md +358 -0
  9. package/checkbox/README.md +146 -0
  10. package/combobox/README.md +535 -0
  11. package/context-menu/README.md +139 -0
  12. package/date-field/README.md +184 -0
  13. package/date-picker/README.md +338 -0
  14. package/dialog/README.md +388 -0
  15. package/disclosure/README.md +114 -0
  16. package/drag-drop/README.md +359 -0
  17. package/drawer/README.md +560 -0
  18. package/dropdown-menu/README.md +176 -0
  19. package/fesm2022/forty-cdk-accordion.mjs +348 -0
  20. package/fesm2022/forty-cdk-accordion.mjs.map +1 -0
  21. package/fesm2022/forty-cdk-aspect-ratio.mjs +74 -0
  22. package/fesm2022/forty-cdk-aspect-ratio.mjs.map +1 -0
  23. package/fesm2022/forty-cdk-avatar.mjs +308 -0
  24. package/fesm2022/forty-cdk-avatar.mjs.map +1 -0
  25. package/fesm2022/forty-cdk-breadcrumbs.mjs +125 -0
  26. package/fesm2022/forty-cdk-breadcrumbs.mjs.map +1 -0
  27. package/fesm2022/forty-cdk-breakpoints.mjs +117 -0
  28. package/fesm2022/forty-cdk-breakpoints.mjs.map +1 -0
  29. package/fesm2022/forty-cdk-button.mjs +134 -0
  30. package/fesm2022/forty-cdk-button.mjs.map +1 -0
  31. package/fesm2022/forty-cdk-calendar.mjs +2034 -0
  32. package/fesm2022/forty-cdk-calendar.mjs.map +1 -0
  33. package/fesm2022/forty-cdk-carousel.mjs +968 -0
  34. package/fesm2022/forty-cdk-carousel.mjs.map +1 -0
  35. package/fesm2022/forty-cdk-checkbox.mjs +226 -0
  36. package/fesm2022/forty-cdk-checkbox.mjs.map +1 -0
  37. package/fesm2022/forty-cdk-combobox.mjs +2596 -0
  38. package/fesm2022/forty-cdk-combobox.mjs.map +1 -0
  39. package/fesm2022/forty-cdk-context-menu.mjs +413 -0
  40. package/fesm2022/forty-cdk-context-menu.mjs.map +1 -0
  41. package/fesm2022/forty-cdk-core.mjs +9022 -0
  42. package/fesm2022/forty-cdk-core.mjs.map +1 -0
  43. package/fesm2022/forty-cdk-date-field.mjs +744 -0
  44. package/fesm2022/forty-cdk-date-field.mjs.map +1 -0
  45. package/fesm2022/forty-cdk-date-picker.mjs +1011 -0
  46. package/fesm2022/forty-cdk-date-picker.mjs.map +1 -0
  47. package/fesm2022/forty-cdk-dialog.mjs +707 -0
  48. package/fesm2022/forty-cdk-dialog.mjs.map +1 -0
  49. package/fesm2022/forty-cdk-disclosure.mjs +190 -0
  50. package/fesm2022/forty-cdk-disclosure.mjs.map +1 -0
  51. package/fesm2022/forty-cdk-drag-drop.mjs +1180 -0
  52. package/fesm2022/forty-cdk-drag-drop.mjs.map +1 -0
  53. package/fesm2022/forty-cdk-drawer.mjs +1641 -0
  54. package/fesm2022/forty-cdk-drawer.mjs.map +1 -0
  55. package/fesm2022/forty-cdk-dropdown-menu.mjs +350 -0
  56. package/fesm2022/forty-cdk-dropdown-menu.mjs.map +1 -0
  57. package/fesm2022/forty-cdk-field.mjs +425 -0
  58. package/fesm2022/forty-cdk-field.mjs.map +1 -0
  59. package/fesm2022/forty-cdk-fieldset.mjs +164 -0
  60. package/fesm2022/forty-cdk-fieldset.mjs.map +1 -0
  61. package/fesm2022/forty-cdk-file-upload.mjs +221 -0
  62. package/fesm2022/forty-cdk-file-upload.mjs.map +1 -0
  63. package/fesm2022/forty-cdk-hover-card.mjs +496 -0
  64. package/fesm2022/forty-cdk-hover-card.mjs.map +1 -0
  65. package/fesm2022/forty-cdk-input.mjs +274 -0
  66. package/fesm2022/forty-cdk-input.mjs.map +1 -0
  67. package/fesm2022/forty-cdk-internationalized-date.mjs +1 -1
  68. package/fesm2022/forty-cdk-internationalized-date.mjs.map +1 -1
  69. package/fesm2022/forty-cdk-listbox.mjs +1279 -0
  70. package/fesm2022/forty-cdk-listbox.mjs.map +1 -0
  71. package/fesm2022/forty-cdk-menu.mjs +1439 -0
  72. package/fesm2022/forty-cdk-menu.mjs.map +1 -0
  73. package/fesm2022/forty-cdk-menubar.mjs +787 -0
  74. package/fesm2022/forty-cdk-menubar.mjs.map +1 -0
  75. package/fesm2022/forty-cdk-meter.mjs +211 -0
  76. package/fesm2022/forty-cdk-meter.mjs.map +1 -0
  77. package/fesm2022/forty-cdk-navigation-menu.mjs +1145 -0
  78. package/fesm2022/forty-cdk-navigation-menu.mjs.map +1 -0
  79. package/fesm2022/forty-cdk-number-input.mjs +559 -0
  80. package/fesm2022/forty-cdk-number-input.mjs.map +1 -0
  81. package/fesm2022/forty-cdk-otp-input.mjs +527 -0
  82. package/fesm2022/forty-cdk-otp-input.mjs.map +1 -0
  83. package/fesm2022/forty-cdk-pagination.mjs +323 -0
  84. package/fesm2022/forty-cdk-pagination.mjs.map +1 -0
  85. package/fesm2022/forty-cdk-pane-resizer.mjs +297 -0
  86. package/fesm2022/forty-cdk-pane-resizer.mjs.map +1 -0
  87. package/fesm2022/forty-cdk-popover.mjs +698 -0
  88. package/fesm2022/forty-cdk-popover.mjs.map +1 -0
  89. package/fesm2022/forty-cdk-progress.mjs +226 -0
  90. package/fesm2022/forty-cdk-progress.mjs.map +1 -0
  91. package/fesm2022/forty-cdk-radio-group.mjs +378 -0
  92. package/fesm2022/forty-cdk-radio-group.mjs.map +1 -0
  93. package/fesm2022/forty-cdk-scroll-area.mjs +640 -0
  94. package/fesm2022/forty-cdk-scroll-area.mjs.map +1 -0
  95. package/fesm2022/forty-cdk-search.mjs +205 -0
  96. package/fesm2022/forty-cdk-search.mjs.map +1 -0
  97. package/fesm2022/forty-cdk-select.mjs +1661 -0
  98. package/fesm2022/forty-cdk-select.mjs.map +1 -0
  99. package/fesm2022/forty-cdk-separator.mjs +82 -0
  100. package/fesm2022/forty-cdk-separator.mjs.map +1 -0
  101. package/fesm2022/forty-cdk-signal-forms.mjs +97 -0
  102. package/fesm2022/forty-cdk-signal-forms.mjs.map +1 -0
  103. package/fesm2022/forty-cdk-slider.mjs +803 -0
  104. package/fesm2022/forty-cdk-slider.mjs.map +1 -0
  105. package/fesm2022/forty-cdk-stepper.mjs +886 -0
  106. package/fesm2022/forty-cdk-stepper.mjs.map +1 -0
  107. package/fesm2022/forty-cdk-switch.mjs +137 -0
  108. package/fesm2022/forty-cdk-switch.mjs.map +1 -0
  109. package/fesm2022/forty-cdk-table.mjs +1518 -0
  110. package/fesm2022/forty-cdk-table.mjs.map +1 -0
  111. package/fesm2022/forty-cdk-tabs.mjs +400 -0
  112. package/fesm2022/forty-cdk-tabs.mjs.map +1 -0
  113. package/fesm2022/forty-cdk-time-field.mjs +593 -0
  114. package/fesm2022/forty-cdk-time-field.mjs.map +1 -0
  115. package/fesm2022/forty-cdk-time-picker.mjs +1013 -0
  116. package/fesm2022/forty-cdk-time-picker.mjs.map +1 -0
  117. package/fesm2022/forty-cdk-toast.mjs +1153 -0
  118. package/fesm2022/forty-cdk-toast.mjs.map +1 -0
  119. package/fesm2022/forty-cdk-toggle.mjs +516 -0
  120. package/fesm2022/forty-cdk-toggle.mjs.map +1 -0
  121. package/fesm2022/forty-cdk-toolbar.mjs +374 -0
  122. package/fesm2022/forty-cdk-toolbar.mjs.map +1 -0
  123. package/fesm2022/forty-cdk-tooltip.mjs +672 -0
  124. package/fesm2022/forty-cdk-tooltip.mjs.map +1 -0
  125. package/fesm2022/forty-cdk-tree.mjs +2007 -0
  126. package/fesm2022/forty-cdk-tree.mjs.map +1 -0
  127. package/fesm2022/forty-cdk-virtualization.mjs +1 -1
  128. package/fesm2022/forty-cdk-virtualization.mjs.map +1 -1
  129. package/fesm2022/forty-cdk.mjs +0 -43310
  130. package/fesm2022/forty-cdk.mjs.map +1 -1
  131. package/field/README.md +97 -0
  132. package/fieldset/README.md +86 -0
  133. package/file-upload/README.md +73 -0
  134. package/hover-card/README.md +171 -0
  135. package/input/README.md +156 -0
  136. package/listbox/README.md +424 -0
  137. package/menu/README.md +181 -0
  138. package/menubar/README.md +140 -0
  139. package/meter/README.md +128 -0
  140. package/navigation-menu/README.md +253 -0
  141. package/number-input/README.md +171 -0
  142. package/otp-input/README.md +198 -0
  143. package/package.json +213 -1
  144. package/pagination/README.md +61 -0
  145. package/pane-resizer/README.md +136 -0
  146. package/popover/README.md +262 -0
  147. package/progress/README.md +115 -0
  148. package/radio-group/README.md +129 -0
  149. package/scroll-area/README.md +184 -0
  150. package/search/README.md +42 -0
  151. package/select/README.md +488 -0
  152. package/separator/README.md +84 -0
  153. package/signal-forms/README.md +72 -0
  154. package/slider/README.md +152 -0
  155. package/stepper/README.md +292 -0
  156. package/switch/README.md +116 -0
  157. package/table/README.md +769 -0
  158. package/tabs/README.md +130 -0
  159. package/time-field/README.md +157 -0
  160. package/time-picker/README.md +172 -0
  161. package/toast/README.md +398 -0
  162. package/toggle/README.md +224 -0
  163. package/toolbar/README.md +109 -0
  164. package/tooltip/README.md +274 -0
  165. package/tree/README.md +708 -0
  166. package/types/forty-cdk-accordion.d.ts +242 -0
  167. package/types/forty-cdk-aspect-ratio.d.ts +59 -0
  168. package/types/forty-cdk-avatar.d.ts +133 -0
  169. package/types/forty-cdk-breadcrumbs.d.ts +92 -0
  170. package/types/forty-cdk-breakpoints.d.ts +141 -0
  171. package/types/forty-cdk-button.d.ts +80 -0
  172. package/types/forty-cdk-calendar.d.ts +914 -0
  173. package/types/forty-cdk-carousel.d.ts +530 -0
  174. package/types/forty-cdk-checkbox.d.ts +141 -0
  175. package/types/forty-cdk-combobox.d.ts +1259 -0
  176. package/types/forty-cdk-context-menu.d.ts +313 -0
  177. package/types/forty-cdk-core.d.ts +5774 -0
  178. package/types/forty-cdk-date-field.d.ts +307 -0
  179. package/types/forty-cdk-date-picker.d.ts +622 -0
  180. package/types/forty-cdk-dialog.d.ts +546 -0
  181. package/types/forty-cdk-disclosure.d.ts +127 -0
  182. package/types/forty-cdk-drag-drop.d.ts +456 -0
  183. package/types/forty-cdk-drawer.d.ts +871 -0
  184. package/types/forty-cdk-dropdown-menu.d.ts +242 -0
  185. package/types/forty-cdk-field.d.ts +236 -0
  186. package/types/forty-cdk-fieldset.d.ts +119 -0
  187. package/types/forty-cdk-file-upload.d.ts +124 -0
  188. package/types/forty-cdk-hover-card.d.ts +320 -0
  189. package/types/forty-cdk-input.d.ts +169 -0
  190. package/types/forty-cdk-internationalized-date.d.ts +1 -1
  191. package/types/forty-cdk-listbox.d.ts +513 -0
  192. package/types/forty-cdk-menu.d.ts +629 -0
  193. package/types/forty-cdk-menubar.d.ts +451 -0
  194. package/types/forty-cdk-meter.d.ts +122 -0
  195. package/types/forty-cdk-navigation-menu.d.ts +514 -0
  196. package/types/forty-cdk-number-input.d.ts +319 -0
  197. package/types/forty-cdk-otp-input.d.ts +248 -0
  198. package/types/forty-cdk-pagination.d.ts +214 -0
  199. package/types/forty-cdk-pane-resizer.d.ts +145 -0
  200. package/types/forty-cdk-popover.d.ts +509 -0
  201. package/types/forty-cdk-progress.d.ts +143 -0
  202. package/types/forty-cdk-radio-group.d.ts +222 -0
  203. package/types/forty-cdk-scroll-area.d.ts +258 -0
  204. package/types/forty-cdk-search.d.ts +142 -0
  205. package/types/forty-cdk-select.d.ts +899 -0
  206. package/types/forty-cdk-separator.d.ts +59 -0
  207. package/types/forty-cdk-signal-forms.d.ts +58 -0
  208. package/types/forty-cdk-slider.d.ts +379 -0
  209. package/types/forty-cdk-stepper.d.ts +650 -0
  210. package/types/forty-cdk-switch.d.ts +87 -0
  211. package/types/forty-cdk-table.d.ts +723 -0
  212. package/types/forty-cdk-tabs.d.ts +235 -0
  213. package/types/forty-cdk-time-field.d.ts +307 -0
  214. package/types/forty-cdk-time-picker.d.ts +578 -0
  215. package/types/forty-cdk-toast.d.ts +598 -0
  216. package/types/forty-cdk-toggle.d.ts +310 -0
  217. package/types/forty-cdk-toolbar.d.ts +217 -0
  218. package/types/forty-cdk-tooltip.d.ts +436 -0
  219. package/types/forty-cdk-tree.d.ts +688 -0
  220. package/types/forty-cdk.d.ts +1 -19743
@@ -0,0 +1,650 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { InjectionToken, Signal, Provider } from '@angular/core';
3
+ import { WritingDirection, RovingTabindex, ListNavigationAction } from 'forty-cdk/core';
4
+ import * as forty_cdk_stepper from 'forty-cdk/stepper';
5
+ import { FieldTree } from '@angular/forms/signals';
6
+
7
+ /** Activation timing for interactive-mode arrow navigation. */
8
+ type StepperActivationMode = 'automatic' | 'manual';
9
+ /** Accessibility model: interactive Tabs pattern vs display-only progress list. */
10
+ type StepperMode = 'interactive' | 'progress';
11
+ /**
12
+ * Registry entry for one step, owned by `ForStepperItem`. Drives index
13
+ * derivation and linear gating.
14
+ */
15
+ interface ForStepperItemHandle {
16
+ /** Host element, used for DOM-order sorting in the collection. */
17
+ readonly host: HTMLElement;
18
+ /** Whether this step has been marked as completed by the consumer. */
19
+ readonly completed: Signal<boolean>;
20
+ /** Whether this step can be skipped when the stepper is in linear mode. */
21
+ readonly optional: Signal<boolean>;
22
+ /** Whether this step is disabled (own `disabled` OR root `disabled`). */
23
+ readonly effectiveDisabled: Signal<boolean>;
24
+ /** Whether this step has an error condition. */
25
+ readonly hasError: Signal<boolean>;
26
+ /** The resolved `data-state` string for this step. */
27
+ readonly resolvedState: Signal<string>;
28
+ }
29
+ /**
30
+ * Registry entry for one trigger (roving participant and id source). Used by
31
+ * the root to wire roving tabindex, id lookups, and navigation.
32
+ */
33
+ interface ForStepperTriggerHandle {
34
+ /** Host element, used for DOM-order sorting and focus moves. */
35
+ readonly host: HTMLElement;
36
+ /** The trigger's own host id, for `aria-labelledby` on content panels. */
37
+ readonly id: Signal<string>;
38
+ /**
39
+ * Whether this trigger can be focused and activated. `false` when the step
40
+ * is disabled or not yet reachable in linear mode.
41
+ */
42
+ readonly selectable: Signal<boolean>;
43
+ /**
44
+ * Inverse of `selectable`. Required by `firstEnabledHost` and
45
+ * `reconcileRovingActive`, which read a `disabled` signal per handle.
46
+ */
47
+ readonly disabled: Signal<boolean>;
48
+ }
49
+ /**
50
+ * Registry entry for one content panel (id source; positional). The content's
51
+ * position in this collection determines its associated step index.
52
+ */
53
+ interface ForStepperContentHandle {
54
+ /** Host element, used for DOM-order sorting and index derivation. */
55
+ readonly host: HTMLElement;
56
+ /** The panel's own host id, for `aria-controls` on triggers. */
57
+ readonly id: Signal<string>;
58
+ }
59
+ /**
60
+ * Coordination contract owned by `ForStepper`. Triggers, items, and content
61
+ * panels register here; navigation and selection flow back through these
62
+ * methods.
63
+ *
64
+ * Implements the [WAI-ARIA Tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/)
65
+ * in `mode="interactive"` and a `<ol>`-based progress list with
66
+ * `aria-current="step"` in `mode="progress"`.
67
+ */
68
+ interface ForStepperContext {
69
+ /** Two-way bindable selected step index. */
70
+ readonly selectedIndex: Signal<number>;
71
+ /** When true, steps are only reachable after all preceding steps are completed or optional. */
72
+ readonly linear: Signal<boolean>;
73
+ /** Accessibility model — `'interactive'` (Tabs APG) or `'progress'` (progress list). */
74
+ readonly mode: Signal<StepperMode>;
75
+ /** Layout axis for the step list. */
76
+ readonly orientation: Signal<'horizontal' | 'vertical'>;
77
+ /** Arrow-key activation timing when in interactive mode. */
78
+ readonly activationMode: Signal<StepperActivationMode>;
79
+ /** Resolved writing direction (`'ltr'` or `'rtl'`). */
80
+ readonly dir: Signal<WritingDirection>;
81
+ /** Whether the entire stepper is disabled. */
82
+ readonly disabled: Signal<boolean>;
83
+ /** Total number of registered step items. */
84
+ readonly count: Signal<number>;
85
+ /**
86
+ * True when the stepper has reached the terminal completed state
87
+ * (`selectedIndex()` >= `count()`).
88
+ */
89
+ readonly isCompleted: Signal<boolean>;
90
+ /** Roving tabindex tracker for interactive-mode triggers. */
91
+ readonly roving: RovingTabindex;
92
+ /** Returns the DOM-order index of `item` in the item collection, or -1 if not found. */
93
+ indexOf(item: ForStepperItemHandle): number;
94
+ /** Returns true when `index` matches the currently selected step. */
95
+ isCurrent(index: number): boolean;
96
+ /**
97
+ * Returns true when step `index` can be navigated to in linear mode. Index 0
98
+ * is always reachable; subsequent steps require all preceding steps to be
99
+ * completed or optional.
100
+ */
101
+ isReachable(index: number): boolean;
102
+ /** Returns the resolved `data-state` string for step at `index`. */
103
+ resolvedStateFor(index: number): string;
104
+ /**
105
+ * Selects step `index`. No-op when the root is disabled, when `index` is
106
+ * out of range, or when the step is not reachable in linear mode.
107
+ */
108
+ select(index: number): void;
109
+ /**
110
+ * Advances to the next step, or into the terminal completed state when on
111
+ * the last step. No-op when the root is disabled, when already in the terminal state, or
112
+ * (in linear mode) when the current step is neither completed nor optional.
113
+ */
114
+ next(): void;
115
+ /**
116
+ * Retreats to the previous step. No-op when the root is disabled or the
117
+ * first step is already selected. Bypasses the linear reachability gate —
118
+ * going back always works.
119
+ */
120
+ previous(): void;
121
+ /**
122
+ * Returns true when the Next button can advance — including advancing the last
123
+ * step into the terminal completed state. False when disabled, already in the
124
+ * terminal state, or (in linear mode) the current step is not completed/optional.
125
+ */
126
+ canAdvance(): boolean;
127
+ /** Returns true when the Previous button can retreat. False when disabled or at the first step. */
128
+ canRetreat(): boolean;
129
+ /**
130
+ * Moves focus from `currentTrigger` according to `action` (interactive mode
131
+ * only). In automatic activation mode, also selects the target step.
132
+ * Disabled / unreachable triggers are skipped.
133
+ */
134
+ navigate(currentTrigger: HTMLElement, action: ListNavigationAction): void;
135
+ /** Registers a step item handle into the item collection. */
136
+ registerItem(h: ForStepperItemHandle): void;
137
+ /** Unregisters a step item handle from the item collection. */
138
+ unregisterItem(h: ForStepperItemHandle): void;
139
+ /** Registers a trigger handle into the trigger collection. */
140
+ registerTrigger(h: ForStepperTriggerHandle): void;
141
+ /** Unregisters a trigger handle from the trigger collection and the roving tracker. */
142
+ unregisterTrigger(h: ForStepperTriggerHandle): void;
143
+ /** Registers a content panel handle into the content collection. */
144
+ registerContent(h: ForStepperContentHandle): void;
145
+ /** Unregisters a content panel handle from the content collection. */
146
+ unregisterContent(h: ForStepperContentHandle): void;
147
+ /**
148
+ * Returns the id of the trigger at `index`, or `null` if there is no
149
+ * registered trigger at that position.
150
+ */
151
+ triggerIdFor(index: number): string | null;
152
+ /**
153
+ * Returns the id of the content panel at `index`, or `null` if there is no
154
+ * registered panel at that position.
155
+ */
156
+ contentIdFor(index: number): string | null;
157
+ /**
158
+ * Returns the DOM-order index of the content panel whose host is `host`, or
159
+ * -1 if not registered. Used by `ForStepperContent` to derive its step index
160
+ * reactively.
161
+ */
162
+ indexOfContent(host: HTMLElement): number;
163
+ /**
164
+ * True when `el` is the first selectable trigger (the roving entry-point
165
+ * fallback when no step is selected or the roving pointer is stale).
166
+ */
167
+ isFirstSelectableTrigger(el: HTMLElement): boolean;
168
+ /**
169
+ * True when some registered trigger corresponds to the currently selected
170
+ * step. Distinguishes "the current step owns the tab stop" from "the selected
171
+ * index points at a missing or unreachable trigger" so the per-trigger
172
+ * tabindex fallback can re-engage the first-selectable entry point.
173
+ */
174
+ hasCurrentTrigger(): boolean;
175
+ }
176
+ /**
177
+ * Per-step state contract. Provided by `ForStepperItem`; consumed by
178
+ * `ForStepperTrigger`, `ForStepperIndicator`, and `ForStepperSeparator`.
179
+ */
180
+ interface ForStepperItemContext {
181
+ /** DOM-order index of this step within the stepper. */
182
+ readonly index: Signal<number>;
183
+ /** True when this step is the currently selected step. */
184
+ readonly current: Signal<boolean>;
185
+ /**
186
+ * True when this step can be focused and activated (reachable and not
187
+ * effectively disabled).
188
+ */
189
+ readonly selectable: Signal<boolean>;
190
+ /** Whether this step has been marked as completed. */
191
+ readonly completed: Signal<boolean>;
192
+ /** Whether this step can be skipped when the stepper is in linear mode. */
193
+ readonly optional: Signal<boolean>;
194
+ /** Whether this step is disabled (own `disabled` OR root `disabled`). */
195
+ readonly effectiveDisabled: Signal<boolean>;
196
+ /** Whether this step has an error condition. */
197
+ readonly hasError: Signal<boolean>;
198
+ /** Resolved `data-state` string (precedence: custom state > error > active > completed > pending). */
199
+ readonly resolvedState: Signal<string>;
200
+ /**
201
+ * Selects this step. Delegates to `ForStepperContext.select(index)` — the
202
+ * linear reachability and disabled guards apply.
203
+ */
204
+ select(): void;
205
+ }
206
+ /** Injection token for the root stepper context (`ForStepper`). */
207
+ declare const FOR_STEPPER_CONTEXT: InjectionToken<ForStepperContext>;
208
+ /** Injection token for the per-step item context (`ForStepperItem`). */
209
+ declare const FOR_STEPPER_ITEM_CONTEXT: InjectionToken<ForStepperItemContext>;
210
+
211
+ /**
212
+ * Root of the Stepper primitive. Owns the selected step index, linear
213
+ * progression, accessibility mode, orientation, and disabled state. Provides
214
+ * the shared context to descendant directives.
215
+ *
216
+ * Implements the [WAI-ARIA Tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/)
217
+ * in `mode="interactive"` (roving tabindex, `role="tablist"`, `aria-selected`)
218
+ * and an ordered-list progress pattern with `aria-current="step"` in
219
+ * `mode="progress"`.
220
+ *
221
+ * `activationMode='manual'` (default): arrow navigation only moves focus;
222
+ * Space / Enter activates. Recommended for wizards where step activation
223
+ * triggers validation. `activationMode='automatic'`: arrow navigation moves
224
+ * focus AND selects the step.
225
+ */
226
+ declare class ForStepper implements ForStepperContext {
227
+ #private;
228
+ /**
229
+ * Two-way bindable selected step index in the inclusive range `0 … count`.
230
+ * Defaults to `0`. The terminal value `=== count()` (one past the last step) is
231
+ * the **completed** state (see `isCompleted` / `complete`). The `model()` change
232
+ * emitter (`(selectedIndexChange)`) fires only on internal selection changes
233
+ * (trigger click, Next/Previous, automatic-mode arrow navigation), never on
234
+ * consumer writes via `[(selectedIndex)]`.
235
+ */
236
+ readonly selectedIndex: _angular_core.ModelSignal<number>;
237
+ /**
238
+ * Emits once each time the stepper transitions **into** the completed terminal
239
+ * state — i.e. when `selectedIndex()` reaches `count()`. Does not re-emit while
240
+ * it stays completed; retreating via `previous()` and re-entering emits again.
241
+ */
242
+ readonly complete: _angular_core.OutputEmitterRef<void>;
243
+ /**
244
+ * When true, steps are only reachable after all preceding steps are completed
245
+ * or optional. Navigating back (`previous()`) always works regardless of this
246
+ * flag.
247
+ */
248
+ readonly linear: _angular_core.InputSignalWithTransform<boolean, unknown>;
249
+ /**
250
+ * Accessibility model. `'interactive'` (default): full WAI-ARIA Tabs pattern
251
+ * — `role="tablist"`, `role="tab"`, `role="tabpanel"`, roving tabindex, arrow
252
+ * navigation. `'progress'`: ordered list with `aria-current="step"` on the
253
+ * active trigger — no tab stop manipulation.
254
+ */
255
+ readonly mode: _angular_core.InputSignal<StepperMode>;
256
+ /**
257
+ * Layout axis for the step list. Affects `aria-orientation` on the list and
258
+ * which arrow keys navigate in interactive mode.
259
+ */
260
+ readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
261
+ /**
262
+ * Arrow-key activation timing in interactive mode. Defaults to the value from
263
+ * `provideForStepperDefaults` for the surrounding scope (library default:
264
+ * `'manual'`).
265
+ */
266
+ readonly activationMode: _angular_core.InputSignal<StepperActivationMode>;
267
+ /**
268
+ * Whether arrow navigation wraps around past the first / last selectable
269
+ * trigger. Defaults to the value from `provideForStepperDefaults` for the
270
+ * surrounding scope (library default: `true`).
271
+ */
272
+ readonly loop: _angular_core.InputSignalWithTransform<boolean, unknown>;
273
+ /**
274
+ * When true, all step triggers are non-interactive and the root carries
275
+ * `data-disabled`.
276
+ */
277
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
278
+ /**
279
+ * Writing direction. When unset (default `null`), the inherited ambient
280
+ * direction is resolved from the nearest ancestor carrying a `dir` attribute
281
+ * (or `<html dir>`), defaulting to `'ltr'`. An explicit `[dir]` always wins.
282
+ * The resolved value is reflected to the host `dir` attribute and swaps
283
+ * ArrowLeft / ArrowRight semantics in RTL.
284
+ */
285
+ readonly _dirInput: _angular_core.InputSignal<WritingDirection | null>;
286
+ readonly dir: _angular_core.Signal<WritingDirection>;
287
+ readonly roving: RovingTabindex;
288
+ /** Total number of registered step items. */
289
+ readonly count: _angular_core.Signal<number>;
290
+ /**
291
+ * True when the stepper is in the terminal **completed** state: `selectedIndex()`
292
+ * has reached `count()` (one past the last step). No step is current and every
293
+ * `[forStepperContent]` panel is inactive while this holds.
294
+ */
295
+ readonly isCompleted: _angular_core.Signal<boolean>;
296
+ constructor();
297
+ indexOf(item: ForStepperItemHandle): number;
298
+ isCurrent(index: number): boolean;
299
+ isReachable(index: number): boolean;
300
+ resolvedStateFor(index: number): string;
301
+ select(index: number): void;
302
+ next(): void;
303
+ previous(): void;
304
+ canAdvance(): boolean;
305
+ canRetreat(): boolean;
306
+ navigate(currentTrigger: HTMLElement, action: ListNavigationAction): void;
307
+ registerItem(h: ForStepperItemHandle): void;
308
+ unregisterItem(h: ForStepperItemHandle): void;
309
+ registerTrigger(h: ForStepperTriggerHandle): void;
310
+ unregisterTrigger(h: ForStepperTriggerHandle): void;
311
+ registerContent(h: ForStepperContentHandle): void;
312
+ unregisterContent(h: ForStepperContentHandle): void;
313
+ triggerIdFor(index: number): string | null;
314
+ contentIdFor(index: number): string | null;
315
+ indexOfContent(host: HTMLElement): number;
316
+ isFirstSelectableTrigger(el: HTMLElement): boolean;
317
+ hasCurrentTrigger(): boolean;
318
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepper, never>;
319
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepper, "[forStepper]", ["forStepper"], { "selectedIndex": { "alias": "selectedIndex"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "activationMode": { "alias": "activationMode"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "_dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; }, { "selectedIndex": "selectedIndexChange"; "complete": "complete"; }, never, never, true, never>;
320
+ }
321
+
322
+ /**
323
+ * The step-list container. In `mode="interactive"` renders as `role="tablist"`
324
+ * with `aria-orientation`; in `mode="progress"` renders as `role="list"`.
325
+ *
326
+ * Apply on an `<ol>` (recommended for semantic list markup) wrapping the
327
+ * `[forStepperItem]` elements. The `[forStepperContent]` panels live as
328
+ * siblings of the list.
329
+ */
330
+ declare class ForStepperList {
331
+ protected readonly ctx: forty_cdk_stepper.ForStepperContext;
332
+ /** Accessible name for the step list. Defers to a consumer `aria-labelledby`. */
333
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
334
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepperList, never>;
335
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepperList, "[forStepperList]", ["forStepperList"], { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
336
+ }
337
+
338
+ /**
339
+ * One step within a `ForStepper`. Owns per-step state (`completed`, `optional`,
340
+ * `disabled`, `hasError`, `state`) and exposes the `ForStepperItemContext` that
341
+ * child `[forStepperTrigger]`, `[forStepperIndicator]`, and
342
+ * `[forStepperSeparator]` directives consume.
343
+ *
344
+ * Apply on a list item element (e.g. `<li forStepperItem>`). The step's index
345
+ * is derived reactively from its DOM position within the stepper via the root's
346
+ * item collection.
347
+ */
348
+ declare class ForStepperItem implements ForStepperItemContext, ForStepperItemHandle {
349
+ protected readonly ctx: forty_cdk_stepper.ForStepperContext;
350
+ /** Host element — satisfies `ForStepperItemHandle.host` for collection registration. */
351
+ readonly host: HTMLElement;
352
+ /**
353
+ * Manual completion flag. When `true`, the step is completed regardless of any
354
+ * bound `field()`. Bind via `[completed]`.
355
+ */
356
+ readonly _completedInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
357
+ /** Marks this step as optional (can be skipped in linear mode). */
358
+ readonly optional: _angular_core.InputSignalWithTransform<boolean, unknown>;
359
+ /** When true, this step's trigger ignores clicks and the step is unreachable by keyboard. */
360
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
361
+ /**
362
+ * Manual error flag. When `true`, the step reflects the `'error'` resolved state
363
+ * (unless current) regardless of any bound `field()`. Bind via `[hasError]`.
364
+ */
365
+ readonly _hasErrorInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
366
+ /**
367
+ * Optional Signal Forms field. When bound, the step's `completed` and
368
+ * `hasError` derive from the field's reactive validity: `completed` is `true`
369
+ * when the field is valid and touched; `hasError` is `true` when the field is
370
+ * touched and invalid. A manual `[completed]` / `[hasError]` input always wins
371
+ * when set. Leave unset to drive completion manually.
372
+ *
373
+ * The `@angular/forms` peer is optional: the field *type* is imported with
374
+ * `import type`, so binding `[field]` requires the peer but the primitive
375
+ * compiles and tree-shakes without it for consumers who never use it.
376
+ */
377
+ readonly field: _angular_core.InputSignal<FieldTree<unknown> | null>;
378
+ /**
379
+ * Whether this step is completed. A manual `[completed]` input wins; otherwise,
380
+ * when a `field()` is bound, derives `true` from `field` valid + touched.
381
+ */
382
+ readonly completed: _angular_core.Signal<boolean>;
383
+ /**
384
+ * Whether this step has an error. A manual `[hasError]` input wins; otherwise,
385
+ * when a `field()` is bound, derives `true` from `field` touched + invalid.
386
+ */
387
+ readonly hasError: _angular_core.Signal<boolean>;
388
+ /**
389
+ * Custom state string override. When non-empty, wins over the derived resolved
390
+ * state (`error`, `active`, `completed`, `pending`) and drives every
391
+ * `data-state` attribute on this step.
392
+ */
393
+ readonly state: _angular_core.InputSignal<string | null>;
394
+ /** Whether this step is disabled — own `disabled` OR the root stepper's `disabled`. */
395
+ readonly effectiveDisabled: _angular_core.Signal<boolean>;
396
+ /** DOM-order index of this step within the stepper. */
397
+ readonly index: _angular_core.Signal<number>;
398
+ /** True when this step is the currently selected step. */
399
+ readonly current: _angular_core.Signal<boolean>;
400
+ /**
401
+ * True when this step can be focused and activated. False when the step is
402
+ * effectively disabled or not yet reachable in linear mode.
403
+ */
404
+ readonly selectable: _angular_core.Signal<boolean>;
405
+ /**
406
+ * Resolved `data-state` string. Precedence:
407
+ * 1. Custom `state()` when non-empty.
408
+ * 2. `'error'` when `hasError()` and not current.
409
+ * 3. `'active'` when current.
410
+ * 4. `'completed'` when `completed()`.
411
+ * 5. `'pending'` otherwise.
412
+ */
413
+ readonly resolvedState: _angular_core.Signal<string>;
414
+ constructor();
415
+ /** Selects this step. Delegates to `ForStepperContext.select(index)`. */
416
+ select(): void;
417
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepperItem, never>;
418
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepperItem, "[forStepperItem]", ["forStepperItem"], { "_completedInput": { "alias": "completed"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "_hasErrorInput": { "alias": "hasError"; "required": false; "isSignal": true; }; "field": { "alias": "field"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
419
+ }
420
+
421
+ /**
422
+ * Header for one step. In `mode="interactive"` carries `role="tab"`, participates
423
+ * in the roving tabindex, and wires `aria-selected` / `aria-controls` /
424
+ * `aria-disabled`. In `mode="progress"` carries `aria-current="step"` on the
425
+ * active step only and is a static element (no tab-stop manipulation).
426
+ *
427
+ * Apply on a `<button type="button">` for interactive mode so Enter / Space
428
+ * activation is native. A static element (`<span>`) is acceptable for progress
429
+ * mode.
430
+ *
431
+ * Disabled triggers in interactive mode keep their tab stop (`aria-disabled`
432
+ * instead of native `disabled`) so assistive tech can announce them.
433
+ */
434
+ declare class ForStepperTrigger {
435
+ #private;
436
+ protected readonly ctx: forty_cdk_stepper.ForStepperContext;
437
+ protected readonly item: forty_cdk_stepper.ForStepperItemContext;
438
+ /** Generated (or consumer-set static) id for this trigger. Used by content panels for `aria-labelledby`. */
439
+ readonly id: _angular_core.Signal<string>;
440
+ /** Id of the content panel this trigger controls (the matching panel by step index). */
441
+ protected readonly controlsId: _angular_core.Signal<string | null>;
442
+ /**
443
+ * APG tabindex cascade (interactive mode only). In progress mode returns
444
+ * `null` so no tab-stop attribute is emitted. In interactive mode:
445
+ * - `null` when not selectable (disabled or unreachable in linear mode).
446
+ * - Roving-tracker value once any trigger has been focused.
447
+ * - `0` when this step is current.
448
+ * - `-1` when another trigger owns the current step.
449
+ * - `0` if this is the first selectable trigger (fallback entry point).
450
+ * - `-1` otherwise.
451
+ */
452
+ protected readonly tabindex: _angular_core.Signal<0 | -1 | null>;
453
+ constructor();
454
+ protected onClick(): void;
455
+ protected onFocus(): void;
456
+ protected onKeyDown(event: KeyboardEvent): void;
457
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepperTrigger, never>;
458
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepperTrigger, "[forStepperTrigger]", ["forStepperTrigger"], {}, {}, never, never, true, never>;
459
+ }
460
+
461
+ /**
462
+ * Decorative icon slot for a step. Hidden from the accessibility tree
463
+ * (`aria-hidden="true"`). Reflects the step's resolved `data-state` so
464
+ * consumers can swap icons via CSS `[data-state="completed"]`,
465
+ * `[data-state="error"]`, etc., or with `@if` keyed on the exported
466
+ * `#indicator="forStepperIndicator"` reference.
467
+ *
468
+ * Must be used inside a `[forStepperItem]` element.
469
+ */
470
+ declare class ForStepperIndicator {
471
+ protected readonly item: forty_cdk_stepper.ForStepperItemContext;
472
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepperIndicator, never>;
473
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepperIndicator, "[forStepperIndicator]", ["forStepperIndicator"], {}, {}, never, never, true, never>;
474
+ }
475
+
476
+ /**
477
+ * Decorative connector between steps. Hidden from the accessibility tree
478
+ * (`aria-hidden="true"`). Reflects `data-state="completed"` when the preceding
479
+ * step is marked completed, `data-state="pending"` otherwise. Also reflects
480
+ * `data-orientation` so consumers can style horizontal vs vertical separators
481
+ * differently.
482
+ *
483
+ * Must be used inside a `[forStepperItem]` element.
484
+ */
485
+ declare class ForStepperSeparator {
486
+ protected readonly ctx: forty_cdk_stepper.ForStepperContext;
487
+ protected readonly item: forty_cdk_stepper.ForStepperItemContext;
488
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepperSeparator, never>;
489
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepperSeparator, "[forStepperSeparator]", ["forStepperSeparator"], {}, {}, never, never, true, never>;
490
+ }
491
+
492
+ /**
493
+ * Panel for one step. Correlates to a step by **position** — the Nth
494
+ * `[forStepperContent]` panel in registration (DOM document) order corresponds
495
+ * to the Nth step.
496
+ *
497
+ * In `mode="interactive"` the panel carries `role="tabpanel"` and is a tab
498
+ * stop (`tabindex="0"`) only when it has no focusable content of its own
499
+ * (WAI-ARIA Tabs APG rule). In `mode="progress"` the panel carries
500
+ * `role="group"` and is never a tab stop.
501
+ *
502
+ * While inactive the directive reflects `aria-hidden="true"` and `inert` so
503
+ * mounted-but-inactive panels are removed from the accessibility tree and focus
504
+ * order automatically. DOM presence is the consumer's responsibility — wrap
505
+ * with `@if (current())` to unmount or leave mounted and toggle visibility with
506
+ * CSS via `[data-state="inactive"]`.
507
+ */
508
+ declare class ForStepperContent {
509
+ #private;
510
+ protected readonly ctx: forty_cdk_stepper.ForStepperContext;
511
+ /** Generated (or consumer-set static) id for this panel. Used by triggers for `aria-controls`. */
512
+ readonly id: _angular_core.Signal<string>;
513
+ /** True when this panel corresponds to the currently selected step. */
514
+ readonly current: _angular_core.Signal<boolean>;
515
+ /** Id of the trigger that labels this panel (`aria-labelledby`). */
516
+ protected readonly labelledBy: _angular_core.Signal<string | null>;
517
+ /**
518
+ * APG tabindex: `'0'` only when in interactive mode and the panel has no
519
+ * focusable content of its own, so screen-reader users can reach the panel
520
+ * itself. A panel containing buttons / links / form controls gets no
521
+ * `tabindex`, avoiding a redundant tab stop.
522
+ */
523
+ protected readonly tabindex: _angular_core.Signal<"0" | null>;
524
+ constructor();
525
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepperContent, never>;
526
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepperContent, "[forStepperContent]", ["forStepperContent"], {}, {}, never, never, true, never>;
527
+ }
528
+
529
+ /**
530
+ * Terminal "all steps complete" panel. Shown (active) only while the stepper is in
531
+ * the completed state (`selectedIndex` has reached `count`); gated the same way as
532
+ * `[forStepperContent]` — `aria-hidden` / `inert` / `data-state` flip with
533
+ * `isCompleted()`. The natural place for a wizard's final success panel.
534
+ *
535
+ * DOM presence is the consumer's responsibility — wrap with `@if` driven by the same
536
+ * completed condition, or leave it mounted and toggle visibility with CSS via
537
+ * `[data-state="active"]`.
538
+ */
539
+ declare class ForStepperCompletedContent {
540
+ protected readonly ctx: forty_cdk_stepper.ForStepperContext;
541
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepperCompletedContent, never>;
542
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepperCompletedContent, "[forStepperCompletedContent]", ["forStepperCompletedContent"], {}, {}, never, never, true, never>;
543
+ }
544
+
545
+ /**
546
+ * "Next" button for the stepper. Apply on a `<button>` element. Reflects
547
+ * `aria-disabled="true"` when `canAdvance()` is false (last step reached, root
548
+ * disabled, or in linear mode the current step is not completed / optional).
549
+ *
550
+ * The button retains its native `type="button"` attribute via the `type` host
551
+ * binding to prevent accidental form submission.
552
+ *
553
+ * Clicking while `aria-disabled` is a no-op because `next()` guards internally.
554
+ */
555
+ declare class ForStepperNext {
556
+ protected readonly ctx: forty_cdk_stepper.ForStepperContext;
557
+ protected onClick(): void;
558
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepperNext, never>;
559
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepperNext, "button[forStepperNext]", ["forStepperNext"], {}, {}, never, never, true, never>;
560
+ }
561
+
562
+ /**
563
+ * "Previous" button for the stepper. Apply on a `<button>` element. Reflects
564
+ * `aria-disabled="true"` when `canRetreat()` is false (first step reached or
565
+ * root disabled).
566
+ *
567
+ * The button retains its native `type="button"` attribute via the `type` host
568
+ * binding to prevent accidental form submission.
569
+ *
570
+ * Clicking while `aria-disabled` is a no-op because `previous()` guards
571
+ * internally.
572
+ */
573
+ declare class ForStepperPrevious {
574
+ protected readonly ctx: forty_cdk_stepper.ForStepperContext;
575
+ protected onClick(): void;
576
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepperPrevious, never>;
577
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepperPrevious, "button[forStepperPrevious]", ["forStepperPrevious"], {}, {}, never, never, true, never>;
578
+ }
579
+
580
+ /**
581
+ * Optional progress indicator for the Stepper. Reads the stepper context and
582
+ * reflects how far through the steps the user is as a WAI-ARIA
583
+ * [`progressbar`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/progressbar_role):
584
+ * `aria-valuemin="0"`, `aria-valuemax="100"`, `aria-valuenow` = the computed
585
+ * percent, and an `aria-valuetext` describing the position. Publishes a
586
+ * `--for-stepper-progress` (0–1) custom property for styling; ships no visuals.
587
+ *
588
+ * Must be used inside a `[forStepper]` element.
589
+ */
590
+ declare class ForStepperProgress {
591
+ #private;
592
+ protected readonly ctx: forty_cdk_stepper.ForStepperContext;
593
+ /**
594
+ * Basis for the reported percent. `'index'` (default) derives progress from
595
+ * the current step index; `'completed'`
596
+ * derives it from the count of steps whose resolved state is `completed`.
597
+ */
598
+ readonly valueBy: _angular_core.InputSignal<"completed" | "index">;
599
+ /**
600
+ * Accessible name for the progressbar. Defaults to `null`, emitting no
601
+ * `aria-label`; prefer a visible label referenced via `aria-labelledby` when
602
+ * one exists.
603
+ */
604
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
605
+ /**
606
+ * Progress as a whole-number percent in `[0, 100]`, reflected to
607
+ * `aria-valuenow` and (divided by 100) to the `--for-stepper-progress`
608
+ * custom property.
609
+ */
610
+ readonly percent: _angular_core.Signal<number>;
611
+ /**
612
+ * Human-readable position string reflected to `aria-valuetext`: `"Step X of N"`
613
+ * on the `'index'` basis, `"P% complete"` on the `'completed'` basis.
614
+ */
615
+ readonly valueText: _angular_core.Signal<string>;
616
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForStepperProgress, never>;
617
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ForStepperProgress, "[forStepperProgress]", ["forStepperProgress"], { "valueBy": { "alias": "valueBy"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
618
+ }
619
+
620
+ /**
621
+ * Defaults inherited by descendant steppers in the surrounding injector scope.
622
+ * Configure with `provideForStepperDefaults` either at the application root or
623
+ * in any component's `providers` array; partial overrides merge with the parent
624
+ * scope.
625
+ */
626
+ interface ForStepperDefaults {
627
+ /**
628
+ * `'manual'` (default): arrow navigation only moves focus; the user must
629
+ * press Space / Enter to activate. Recommended for wizards where step
630
+ * activation often triggers validation. `'automatic'`: arrow navigation moves
631
+ * focus AND selects the step.
632
+ */
633
+ activationMode: StepperActivationMode;
634
+ /**
635
+ * Whether arrow navigation wraps around past the first / last selectable
636
+ * trigger.
637
+ */
638
+ loop: boolean;
639
+ }
640
+ /** Token holding the resolved stepper defaults for the current scope. */
641
+ declare const FOR_STEPPER_DEFAULTS: _angular_core.InjectionToken<ForStepperDefaults>;
642
+ /**
643
+ * Configures forty-cdk stepper defaults for this injector scope. Partial
644
+ * overrides inherit unspecified keys from the parent scope (or library defaults
645
+ * at the root).
646
+ */
647
+ declare function provideForStepperDefaults(defaults?: Partial<ForStepperDefaults>): Provider[];
648
+
649
+ export { FOR_STEPPER_CONTEXT, FOR_STEPPER_DEFAULTS, FOR_STEPPER_ITEM_CONTEXT, ForStepper, ForStepperCompletedContent, ForStepperContent, ForStepperIndicator, ForStepperItem, ForStepperList, ForStepperNext, ForStepperPrevious, ForStepperProgress, ForStepperSeparator, ForStepperTrigger, provideForStepperDefaults };
650
+ export type { ForStepperContentHandle, ForStepperContext, ForStepperDefaults, ForStepperItemContext, ForStepperItemHandle, ForStepperTriggerHandle, StepperActivationMode, StepperMode };