{"version":3,"file":"forty-cdk-stepper.mjs","sources":["../../../projects/forty-cdk/stepper/src/stepper-context.ts","../../../projects/forty-cdk/stepper/src/stepper-defaults.ts","../../../projects/forty-cdk/stepper/src/stepper.ts","../../../projects/forty-cdk/stepper/src/stepper-list.ts","../../../projects/forty-cdk/stepper/src/stepper-item.ts","../../../projects/forty-cdk/stepper/src/stepper-trigger.ts","../../../projects/forty-cdk/stepper/src/stepper-indicator.ts","../../../projects/forty-cdk/stepper/src/stepper-separator.ts","../../../projects/forty-cdk/stepper/src/stepper-content.ts","../../../projects/forty-cdk/stepper/src/stepper-completed-content.ts","../../../projects/forty-cdk/stepper/src/stepper-next.ts","../../../projects/forty-cdk/stepper/src/stepper-previous.ts","../../../projects/forty-cdk/stepper/src/stepper-progress.ts","../../../projects/forty-cdk/stepper/src/forty-cdk-stepper.ts"],"sourcesContent":["import { inject, InjectionToken, type Signal } from '@angular/core';\n\nimport {\n  type ListNavigationAction,\n  orphanContextError,\n  type RovingTabindex,\n  type WritingDirection,\n} from 'forty-cdk/core';\n\n/** Activation timing for interactive-mode arrow navigation. */\nexport type StepperActivationMode = 'automatic' | 'manual';\n\n/** Accessibility model: interactive Tabs pattern vs display-only progress list. */\nexport type StepperMode = 'interactive' | 'progress';\n\n/**\n * Registry entry for one step, owned by `ForStepperItem`. Drives index\n * derivation and linear gating.\n */\nexport interface ForStepperItemHandle {\n  /** Host element, used for DOM-order sorting in the collection. */\n  readonly host: HTMLElement;\n  /** Whether this step has been marked as completed by the consumer. */\n  readonly completed: Signal<boolean>;\n  /** Whether this step can be skipped when the stepper is in linear mode. */\n  readonly optional: Signal<boolean>;\n  /** Whether this step is disabled (own `disabled` OR root `disabled`). */\n  readonly effectiveDisabled: Signal<boolean>;\n  /** Whether this step has an error condition. */\n  readonly hasError: Signal<boolean>;\n  /** The resolved `data-state` string for this step. */\n  readonly resolvedState: Signal<string>;\n}\n\n/**\n * Registry entry for one trigger (roving participant and id source). Used by\n * the root to wire roving tabindex, id lookups, and navigation.\n */\nexport interface ForStepperTriggerHandle {\n  /** Host element, used for DOM-order sorting and focus moves. */\n  readonly host: HTMLElement;\n  /**\n   * DOM-order index of the step this trigger belongs to (from the item\n   * context), used to map a trigger position back to its step index for\n   * selection.\n   */\n  readonly index: Signal<number>;\n  /** The trigger's own host id, for `aria-labelledby` on content panels. */\n  readonly id: Signal<string>;\n  /**\n   * Whether this trigger can be focused and activated. `false` when the step\n   * is disabled or not yet reachable in linear mode.\n   */\n  readonly selectable: Signal<boolean>;\n  /**\n   * Inverse of `selectable`. Required by `firstEnabledHost` and the roving\n   * tracker's reconciliation, which read a `disabled` signal per handle.\n   */\n  readonly disabled: Signal<boolean>;\n}\n\n/**\n * Registry entry for one content panel (id source). The panel's step index is\n * carried on the handle, so a lookup never conflates it with the panel's\n * position in the content collection.\n */\nexport interface ForStepperContentHandle {\n  /** Host element, used for DOM-order sorting and index derivation. */\n  readonly host: HTMLElement;\n  /**\n   * Index of the step this panel is paired with — the explicit `[step]` when\n   * bound, else the panel's DOM-order position among the registered panels.\n   */\n  readonly index: Signal<number>;\n  /** The panel's own host id, for `aria-controls` on triggers. */\n  readonly id: Signal<string>;\n}\n\n/**\n * Coordination contract owned by `ForStepper`. Triggers, items, and content\n * panels register here; navigation and selection flow back through these\n * methods.\n *\n * Implements the [WAI-ARIA Tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/)\n * in `mode=\"interactive\"` and a `<ol>`-based progress list with\n * `aria-current=\"step\"` in `mode=\"progress\"`.\n */\nexport interface ForStepperContext {\n  /** Two-way bindable selected step index. */\n  readonly selectedIndex: Signal<number>;\n  /** When true, steps are only reachable after all preceding steps are completed or optional. */\n  readonly linear: Signal<boolean>;\n  /** Accessibility model — `'interactive'` (Tabs APG) or `'progress'` (progress list). */\n  readonly mode: Signal<StepperMode>;\n  /** Layout axis for the step list. */\n  readonly orientation: Signal<'horizontal' | 'vertical'>;\n  /** Arrow-key activation timing when in interactive mode. */\n  readonly activationMode: Signal<StepperActivationMode>;\n  /** Resolved writing direction (`'ltr'` or `'rtl'`). */\n  readonly dir: Signal<WritingDirection>;\n  /** Whether the entire stepper is disabled. */\n  readonly disabled: Signal<boolean>;\n  /** Total number of registered step items. */\n  readonly count: Signal<number>;\n  /**\n   * True when the stepper has reached the terminal completed state\n   * (`selectedIndex()` >= `count()`).\n   */\n  readonly isCompleted: Signal<boolean>;\n  /** Roving tabindex tracker for interactive-mode triggers. */\n  readonly roving: RovingTabindex;\n\n  /** Returns the DOM-order index of `item` in the item collection, or -1 if not found. */\n  indexOf(item: ForStepperItemHandle): number;\n  /** Returns true when `index` matches the currently selected step. */\n  isCurrent(index: number): boolean;\n  /**\n   * Returns true when step `index` can be navigated to in linear mode. Index 0\n   * is always reachable; subsequent steps require all preceding steps to be\n   * completed or optional.\n   */\n  isReachable(index: number): boolean;\n  /** Returns the resolved `data-state` string for step at `index`. */\n  resolvedStateFor(index: number): string;\n  /**\n   * Selects step `index`. No-op when the root is disabled, when `index` is\n   * out of range, or when the step is not reachable in linear mode.\n   */\n  select(index: number): void;\n  /**\n   * Advances to the next step, or into the terminal completed state when on\n   * the last step. No-op when the root is disabled, when already in the terminal state, or\n   * (in linear mode) when the current step is neither completed nor optional.\n   */\n  next(): void;\n  /**\n   * Retreats to the previous step. No-op when the root is disabled or the\n   * first step is already selected. Bypasses the linear reachability gate —\n   * going back always works.\n   */\n  previous(): void;\n  /**\n   * Returns true when the Next button can advance — including advancing the last\n   * step into the terminal completed state. False when disabled, already in the\n   * terminal state, or (in linear mode) the current step is not completed/optional.\n   */\n  canAdvance(): boolean;\n  /** Returns true when the Previous button can retreat. False when disabled or at the first step. */\n  canRetreat(): boolean;\n  /**\n   * Moves focus from `currentTrigger` according to `action` (interactive mode\n   * only). Arrow navigation lands on disabled / linear-unreachable triggers\n   * too (they stay focusable per the APG); automatic-mode selection is guarded\n   * so it never activates a non-selectable step. Selection resolves the target\n   * step by its item index (carried on the trigger handle), not by the trigger's\n   * position in the trigger collection.\n   */\n  navigate(currentTrigger: HTMLElement, action: ListNavigationAction): void;\n\n  /** Registers a step item handle into the item collection. */\n  registerItem(h: ForStepperItemHandle): void;\n  /** Unregisters a step item handle from the item collection. */\n  unregisterItem(h: ForStepperItemHandle): void;\n  /** Registers a trigger handle into the trigger collection. */\n  registerTrigger(h: ForStepperTriggerHandle): void;\n  /** Unregisters a trigger handle from the trigger collection and the roving tracker. */\n  unregisterTrigger(h: ForStepperTriggerHandle): void;\n  /** Registers a content panel handle into the content collection. */\n  registerContent(h: ForStepperContentHandle): void;\n  /** Unregisters a content panel handle from the content collection. */\n  unregisterContent(h: ForStepperContentHandle): void;\n\n  /**\n   * Returns the id of the trigger belonging to step `index`, or `null` when no\n   * registered trigger claims that step. Resolved through the trigger handle's\n   * item index, so a structurally hidden trigger never shifts the pairing.\n   */\n  triggerIdFor(index: number): string | null;\n  /**\n   * Returns the id of the content panel paired with step `index`, or `null`\n   * when no registered panel claims that step. Resolved through the content\n   * handle's step index, so a structurally absent panel never shifts the\n   * pairing.\n   */\n  contentIdFor(index: number): string | null;\n  /**\n   * Returns the DOM-order index of the content panel whose host is `host`, or\n   * -1 if not registered. Used by `ForStepperContent` as the positional\n   * fallback when the panel declares no explicit `[step]`.\n   */\n  indexOfContent(host: HTMLElement): number;\n  /**\n   * True when `el` is the first selectable trigger (the roving entry-point\n   * fallback when no step is selected or the roving pointer is stale).\n   */\n  isFirstSelectableTrigger(el: HTMLElement): boolean;\n  /**\n   * True when some registered trigger corresponds to the currently selected\n   * step. Distinguishes \"the current step owns the tab stop\" from \"the selected\n   * index points at a missing or unreachable trigger\" so the per-trigger\n   * tabindex fallback can re-engage the first-selectable entry point. Matched on\n   * the trigger handle's item index, never on its collection position.\n   */\n  hasCurrentTrigger(): boolean;\n}\n\n/**\n * Per-step state contract. Provided by `ForStepperItem`; consumed by\n * `ForStepperTrigger`, `ForStepperIndicator`, and `ForStepperSeparator`.\n */\nexport interface ForStepperItemContext {\n  /** DOM-order index of this step within the stepper. */\n  readonly index: Signal<number>;\n  /** True when this step is the currently selected step. */\n  readonly current: Signal<boolean>;\n  /**\n   * True when this step can be focused and activated (reachable and not\n   * effectively disabled).\n   */\n  readonly selectable: Signal<boolean>;\n  /** Whether this step has been marked as completed. */\n  readonly completed: Signal<boolean>;\n  /** Whether this step can be skipped when the stepper is in linear mode. */\n  readonly optional: Signal<boolean>;\n  /** Whether this step is disabled (own `disabled` OR root `disabled`). */\n  readonly effectiveDisabled: Signal<boolean>;\n  /** Whether this step has an error condition. */\n  readonly hasError: Signal<boolean>;\n  /** Resolved `data-state` string (precedence: custom state > error > active > completed > pending). */\n  readonly resolvedState: Signal<string>;\n  /**\n   * Selects this step. Delegates to `ForStepperContext.select(index)` — the\n   * linear reachability and disabled guards apply.\n   */\n  select(): void;\n}\n\n/** Injection token for the root stepper context (`ForStepper`). */\nexport const FOR_STEPPER_CONTEXT = new InjectionToken<ForStepperContext>('FOR_STEPPER_CONTEXT');\n\n/** Injection token for the per-step item context (`ForStepperItem`). */\nexport const FOR_STEPPER_ITEM_CONTEXT = new InjectionToken<ForStepperItemContext>(\n  'FOR_STEPPER_ITEM_CONTEXT',\n);\n\nexport function injectStepperContext(piece: string): ForStepperContext {\n  const ctx = inject(FOR_STEPPER_CONTEXT, { optional: true });\n  if (!ctx) {\n    throw orphanContextError({\n      code: 'FORCDK-STEPPER-001',\n      piece,\n      root: '[forStepper]',\n      token: 'FOR_STEPPER_CONTEXT',\n    });\n  }\n  return ctx;\n}\n\nexport function injectStepperItemContext(piece: string): ForStepperItemContext {\n  const ctx = inject(FOR_STEPPER_ITEM_CONTEXT, { optional: true });\n  if (!ctx) {\n    throw orphanContextError({\n      code: 'FORCDK-STEPPER-002',\n      piece,\n      root: '[forStepperItem]',\n      token: 'FOR_STEPPER_ITEM_CONTEXT',\n    });\n  }\n  return ctx;\n}\n","import { type Provider } from '@angular/core';\n\nimport { createDefaults } from 'forty-cdk/core';\nimport type { StepperActivationMode } from './stepper-context';\n\n/**\n * Defaults inherited by descendant steppers in the surrounding injector scope.\n * Configure with `provideForStepperDefaults` either at the application root or\n * in any component's `providers` array; partial overrides merge with the parent\n * scope.\n */\nexport interface ForStepperDefaults {\n  /**\n   * `'manual'` (default): arrow navigation only moves focus; the user must\n   * press Space / Enter to activate. Recommended for wizards where step\n   * activation often triggers validation. `'automatic'`: arrow navigation moves\n   * focus AND selects the step.\n   */\n  activationMode: StepperActivationMode;\n  /**\n   * Whether arrow navigation wraps around past the first / last selectable\n   * trigger.\n   */\n  loop: boolean;\n  /**\n   * Builds the `aria-valuetext` for `[forStepperProgress]` on the `'index'`\n   * basis (default `\"Step N of M\"`). Override to localize centrally. `current`\n   * is the 1-based current step and `total` is the step count.\n   */\n  stepValueText: (current: number, total: number) => string;\n  /**\n   * Builds the `aria-valuetext` for `[forStepperProgress]` on the `'completed'`\n   * basis (default `\"P% complete\"`). Override to localize centrally. `percent`\n   * is the whole-number completion percent in `[0, 100]`.\n   */\n  progressValueText: (percent: number) => string;\n}\n\n/**\n * Library fallback for stepper defaults, read at the root injector when no\n * consumer has called `provideForStepperDefaults`. Exported for the shared\n * defaults contract spec; not re-exported from the primitive's public entry.\n */\nexport const FOR_STEPPER_FALLBACK_DEFAULTS: ForStepperDefaults = {\n  activationMode: 'manual',\n  loop: true,\n  stepValueText: (current, total) => `Step ${current} of ${total}`,\n  progressValueText: (percent) => `${percent}% complete`,\n};\n\nconst { token, provideDefaults } = createDefaults<ForStepperDefaults>(\n  'FOR_STEPPER_DEFAULTS',\n  FOR_STEPPER_FALLBACK_DEFAULTS,\n);\n\n/** Token holding the resolved stepper defaults for the current scope. */\nexport const FOR_STEPPER_DEFAULTS = token;\n\n/**\n * Configures forty-cdk stepper defaults for this injector scope. Partial\n * overrides inherit unspecified keys from the parent scope (or library defaults\n * at the root).\n */\nexport function provideForStepperDefaults(defaults: Partial<ForStepperDefaults> = {}): Provider[] {\n  return provideDefaults(defaults);\n}\n","import {\n  booleanAttribute,\n  computed,\n  Directive,\n  effect,\n  inject,\n  input,\n  model,\n  output,\n} from '@angular/core';\n\nimport {\n  Collection,\n  firstEnabledHost,\n  type ListNavigationAction,\n  rovingListTarget,\n  type WritingDirection,\n  RovingTabindex,\n  injectTextDirection,\n} from 'forty-cdk/core';\nimport {\n  FOR_STEPPER_CONTEXT,\n  type ForStepperContentHandle,\n  type ForStepperContext,\n  type ForStepperItemHandle,\n  type ForStepperTriggerHandle,\n  type StepperActivationMode,\n  type StepperMode,\n} from './stepper-context';\nimport { FOR_STEPPER_DEFAULTS } from './stepper-defaults';\n\n/**\n * Root of the Stepper primitive. Owns the selected step index, linear\n * progression, accessibility mode, orientation, and disabled state. Provides\n * the shared context to descendant directives.\n *\n * Implements the [WAI-ARIA Tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/)\n * in `mode=\"interactive\"` (roving tabindex, `role=\"tablist\"`, `aria-selected`)\n * and an ordered-list progress pattern with `aria-current=\"step\"` in\n * `mode=\"progress\"`.\n *\n * `activationMode='manual'` (default): arrow navigation only moves focus;\n * Space / Enter activates. Recommended for wizards where step activation\n * triggers validation. `activationMode='automatic'`: arrow navigation moves\n * focus AND selects the step.\n */\n@Directive({\n  selector: '[forStepper]',\n  exportAs: 'forStepper',\n  host: {\n    '[attr.data-orientation]': 'orientation()',\n    '[attr.data-mode]': 'mode()',\n    '[attr.data-disabled]': 'disabled() ? \"\" : null',\n    '[attr.dir]': 'dir()',\n  },\n  providers: [{ provide: FOR_STEPPER_CONTEXT, useExisting: ForStepper }],\n})\nexport class ForStepper implements ForStepperContext {\n  readonly #defaults = inject(FOR_STEPPER_DEFAULTS);\n\n  /**\n   * Two-way bindable selected step index in the inclusive range `0 … count`.\n   * Defaults to `0`. The terminal value `=== count()` (one past the last step) is\n   * the **completed** state (see `isCompleted` / `complete`). The `model()` change\n   * emitter (`(selectedIndexChange)`) fires only on internal selection changes\n   * (trigger click, Next/Previous, automatic-mode arrow navigation), never on\n   * consumer writes via `[(selectedIndex)]`.\n   */\n  readonly selectedIndex = model<number>(0);\n\n  /**\n   * Emits once each time the stepper transitions **into** the completed terminal\n   * state — i.e. when `selectedIndex()` reaches `count()`. Does not re-emit while\n   * it stays completed; retreating via `previous()` and re-entering emits again.\n   */\n  readonly complete = output<void>();\n\n  /**\n   * When true, steps are only reachable after all preceding steps are completed\n   * or optional. Navigating back (`previous()`) always works regardless of this\n   * flag.\n   */\n  readonly linear = input(false, { transform: booleanAttribute });\n\n  /**\n   * Accessibility model. `'interactive'` (default): full WAI-ARIA Tabs pattern\n   * — `role=\"tablist\"`, `role=\"tab\"`, `role=\"tabpanel\"`, roving tabindex, arrow\n   * navigation. `'progress'`: ordered list with `aria-current=\"step\"` on the\n   * active trigger — no tab stop manipulation.\n   */\n  readonly mode = input<StepperMode>('interactive');\n\n  /**\n   * Layout axis for the step list. Affects `aria-orientation` on the list and\n   * which arrow keys navigate in interactive mode.\n   */\n  readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n  /**\n   * Arrow-key activation timing in interactive mode. Defaults to the value from\n   * `provideForStepperDefaults` for the surrounding scope (library default:\n   * `'manual'`).\n   */\n  readonly activationMode = input<StepperActivationMode>(this.#defaults.activationMode);\n\n  /**\n   * Whether arrow navigation wraps around past the first / last selectable\n   * trigger. Defaults to the value from `provideForStepperDefaults` for the\n   * surrounding scope (library default: `true`).\n   */\n  readonly loop = input(this.#defaults.loop, { transform: booleanAttribute });\n\n  /**\n   * When true, all step triggers are non-interactive and the root carries\n   * `data-disabled`.\n   */\n  readonly disabled = input(false, { transform: booleanAttribute });\n\n  /**\n   * Writing direction. When unset (default `null`), the inherited ambient\n   * direction is resolved from the nearest ancestor carrying a `dir` attribute\n   * (or `<html dir>`), defaulting to `'ltr'`. An explicit `[dir]` always wins.\n   * The resolved value is reflected to the host `dir` attribute and swaps\n   * ArrowLeft / ArrowRight semantics in RTL.\n   */\n  readonly _dirInput = input<WritingDirection | null>(null, { alias: 'dir' });\n  readonly dir = injectTextDirection(this._dirInput);\n\n  readonly roving = new RovingTabindex(() => this.#triggers.items());\n\n  readonly #items = new Collection<ForStepperItemHandle>();\n  readonly #triggers = new Collection<ForStepperTriggerHandle>();\n  readonly #contents = new Collection<ForStepperContentHandle>();\n\n  /** Total number of registered step items. */\n  readonly count = computed(() => this.#items.items().length);\n\n  /**\n   * True when the stepper is in the terminal **completed** state: `selectedIndex()`\n   * has reached `count()` (one past the last step). No step is current and every\n   * `[forStepperContent]` panel is inactive while this holds.\n   */\n  readonly isCompleted = computed(() => this.selectedIndex() >= this.count());\n\n  readonly #firstSelectableTriggerHost = computed(() => firstEnabledHost(this.#triggers.items()));\n\n  constructor() {\n    let wasCompleted = this.isCompleted();\n    effect(() => {\n      const completed = this.isCompleted();\n      if (completed && !wasCompleted) {\n        this.complete.emit();\n      }\n      wasCompleted = completed;\n    });\n  }\n\n  indexOf(item: ForStepperItemHandle): number {\n    return this.#items.items().indexOf(item);\n  }\n\n  isCurrent(index: number): boolean {\n    return this.selectedIndex() === index;\n  }\n\n  isReachable(index: number): boolean {\n    if (!this.linear()) {\n      return true;\n    }\n    if (index === 0) {\n      return true;\n    }\n    const items = this.#items.items();\n    for (let i = 0; i < index; i++) {\n      const item = items[i];\n      if (!item || (!item.completed() && !item.optional())) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  resolvedStateFor(index: number): string {\n    return this.#items.items()[index]?.resolvedState() ?? 'pending';\n  }\n\n  select(index: number): void {\n    if (this.disabled()) {\n      return;\n    }\n    const count = this.count();\n    if (count === 0) {\n      return;\n    }\n    const clamped = Math.max(0, Math.min(index, count));\n    if (!this.isReachable(clamped)) {\n      return;\n    }\n    this.selectedIndex.set(clamped);\n  }\n\n  next(): void {\n    if (!this.canAdvance()) {\n      return;\n    }\n    this.selectedIndex.set(this.selectedIndex() + 1);\n  }\n\n  previous(): void {\n    if (this.disabled() || this.selectedIndex() <= 0) {\n      return;\n    }\n    this.selectedIndex.set(this.selectedIndex() - 1);\n  }\n\n  canAdvance(): boolean {\n    if (this.disabled() || this.selectedIndex() >= this.count()) {\n      return false;\n    }\n    if (!this.linear()) {\n      return true;\n    }\n    const current = this.#items.items()[this.selectedIndex()];\n    return (current?.completed() ?? false) || (current?.optional() ?? false);\n  }\n\n  canRetreat(): boolean {\n    return this.selectedIndex() > 0 && !this.disabled();\n  }\n\n  navigate(currentTrigger: HTMLElement, action: ListNavigationAction): void {\n    if (this.disabled()) {\n      return;\n    }\n    const triggers = this.#triggers.items();\n    const target = rovingListTarget(triggers, currentTrigger, action, { loop: this.loop() });\n    if (!target) {\n      return;\n    }\n    target.host.focus();\n    if (this.activationMode() === 'automatic' && target.selectable()) {\n      this.selectedIndex.set(target.index());\n    }\n  }\n\n  registerItem(h: ForStepperItemHandle): void {\n    this.#items.register(h);\n  }\n\n  unregisterItem(h: ForStepperItemHandle): void {\n    this.#items.unregister(h);\n  }\n\n  registerTrigger(h: ForStepperTriggerHandle): void {\n    this.#triggers.register(h);\n  }\n\n  unregisterTrigger(h: ForStepperTriggerHandle): void {\n    this.#triggers.unregister(h);\n    this.roving.unregister(h.host);\n  }\n\n  registerContent(h: ForStepperContentHandle): void {\n    this.#contents.register(h);\n  }\n\n  unregisterContent(h: ForStepperContentHandle): void {\n    this.#contents.unregister(h);\n  }\n\n  triggerIdFor(index: number): string | null {\n    return this.#triggerForStep(index)?.id() ?? null;\n  }\n\n  contentIdFor(index: number): string | null {\n    return this.#contentForStep(index)?.id() ?? null;\n  }\n\n  indexOfContent(host: HTMLElement): number {\n    return this.#contents.indexOfHost(host);\n  }\n\n  isFirstSelectableTrigger(el: HTMLElement): boolean {\n    return this.#firstSelectableTriggerHost() === el;\n  }\n\n  hasCurrentTrigger(): boolean {\n    return this.#triggerForStep(this.selectedIndex())?.selectable() ?? false;\n  }\n\n  #triggerForStep(index: number): ForStepperTriggerHandle | undefined {\n    return this.#triggers.items().find((t) => t.index() === index);\n  }\n\n  #contentForStep(index: number): ForStepperContentHandle | undefined {\n    return this.#contents.items().find((c) => c.index() === index);\n  }\n}\n","import { Directive, input } from '@angular/core';\n\nimport { hostAriaLabel } from 'forty-cdk/core';\n\nimport { injectStepperContext } from './stepper-context';\n\n/**\n * The step-list container. In `mode=\"interactive\"` renders as `role=\"tablist\"`\n * with `aria-orientation`; in `mode=\"progress\"` renders as `role=\"list\"`.\n *\n * Apply on an `<ol>` (recommended for semantic list markup) wrapping the\n * `[forStepperItem]` elements. The `[forStepperContent]` panels live as\n * siblings of the list.\n */\n@Directive({\n  selector: '[forStepperList]',\n  exportAs: 'forStepperList',\n  host: {\n    '[attr.role]': \"ctx.mode() === 'interactive' ? 'tablist' : 'list'\",\n    '[attr.aria-orientation]': \"ctx.mode() === 'interactive' ? ctx.orientation() : null\",\n    '[attr.aria-label]': 'resolvedAriaLabel()',\n    '[attr.data-orientation]': 'ctx.orientation()',\n  },\n})\nexport class ForStepperList {\n  protected readonly ctx = injectStepperContext('ForStepperList');\n\n  /** Accessible name for the step list. Defers to a consumer `aria-labelledby`. */\n  readonly ariaLabel = input<string | null>(null);\n\n  protected readonly resolvedAriaLabel = hostAriaLabel(() => this.ariaLabel() || null);\n}\n","import { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport type { FieldTree } from '@angular/forms/signals';\n\nimport { registerHandle } from 'forty-cdk/core';\nimport {\n  FOR_STEPPER_ITEM_CONTEXT,\n  type ForStepperItemContext,\n  type ForStepperItemHandle,\n  injectStepperContext,\n} from './stepper-context';\n\n/**\n * One step within a `ForStepper`. Owns per-step state (`completed`, `optional`,\n * `disabled`, `hasError`, `state`) and exposes the `ForStepperItemContext` that\n * child `[forStepperTrigger]`, `[forStepperIndicator]`, and\n * `[forStepperSeparator]` directives consume.\n *\n * Apply on a list item element (e.g. `<li forStepperItem>`). The step's index\n * is derived reactively from its DOM position within the stepper via the root's\n * item collection.\n *\n * In `mode=\"interactive\"` the host carries `role=\"presentation\"` so the\n * `ForStepperList` `role=\"tablist\"` owns the `role=\"tab\"` triggers directly — an\n * interposed implicit `listitem` would violate the tablist's required-owned-\n * elements contract. In `mode=\"progress\"` the implicit `listitem` is kept (it\n * sits correctly under the list's `role=\"list\"`).\n */\n@Directive({\n  selector: '[forStepperItem]',\n  exportAs: 'forStepperItem',\n  host: {\n    '[attr.role]': \"ctx.mode() === 'interactive' ? 'presentation' : null\",\n    '[attr.data-state]': 'resolvedState()',\n    '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : null',\n    '[attr.data-orientation]': 'ctx.orientation()',\n  },\n  providers: [{ provide: FOR_STEPPER_ITEM_CONTEXT, useExisting: ForStepperItem }],\n})\nexport class ForStepperItem implements ForStepperItemContext, ForStepperItemHandle {\n  protected readonly ctx = injectStepperContext('ForStepperItem');\n\n  /** Host element — satisfies `ForStepperItemHandle.host` for collection registration. */\n  readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n  /**\n   * Manual completion flag. When `true`, the step is completed regardless of any\n   * bound `field()`. Bind via `[completed]`.\n   */\n  readonly _completedInput = input(false, { transform: booleanAttribute, alias: 'completed' });\n\n  /** Marks this step as optional (can be skipped in linear mode). */\n  readonly optional = input(false, { transform: booleanAttribute });\n\n  /** When true, this step's trigger ignores clicks and the step is unreachable by keyboard. */\n  readonly disabled = input(false, { transform: booleanAttribute });\n\n  /**\n   * Manual error flag. When `true`, the step reflects the `'error'` resolved state\n   * (unless current) regardless of any bound `field()`. Bind via `[hasError]`.\n   */\n  readonly _hasErrorInput = input(false, { transform: booleanAttribute, alias: 'hasError' });\n\n  /**\n   * Optional Signal Forms field. When bound, the step's `completed` and\n   * `hasError` derive from the field's reactive validity: `completed` is `true`\n   * when the field is valid and touched; `hasError` is `true` when the field is\n   * touched and invalid. A manual `[completed]` / `[hasError]` input always wins\n   * when set. Leave unset to drive completion manually.\n   *\n   * The `@angular/forms` peer is optional: the field *type* is imported with\n   * `import type`, so binding `[field]` requires the peer but the primitive\n   * compiles and tree-shakes without it for consumers who never use it.\n   */\n  readonly field = input<FieldTree<unknown> | null>(null);\n\n  /**\n   * Whether this step is completed. A manual `[completed]` input wins; otherwise,\n   * when a `field()` is bound, derives `true` from `field` valid + touched.\n   */\n  readonly completed = computed<boolean>(() => {\n    if (this._completedInput()) {\n      return true;\n    }\n    const f = this.field();\n    if (!f) {\n      return false;\n    }\n    const state = f();\n    return state.valid() && state.touched();\n  });\n\n  /**\n   * Whether this step has an error. A manual `[hasError]` input wins; otherwise,\n   * when a `field()` is bound, derives `true` from `field` touched + invalid.\n   */\n  readonly hasError = computed<boolean>(() => {\n    if (this._hasErrorInput()) {\n      return true;\n    }\n    const f = this.field();\n    if (!f) {\n      return false;\n    }\n    const state = f();\n    return state.touched() && state.invalid();\n  });\n\n  /**\n   * Custom state string override. When non-empty, wins over the derived resolved\n   * state (`error`, `active`, `completed`, `pending`) and drives every\n   * `data-state` attribute on this step.\n   */\n  readonly state = input<string | null>(null);\n\n  /** Whether this step is disabled — own `disabled` OR the root stepper's `disabled`. */\n  readonly effectiveDisabled = computed(() => this.disabled() || this.ctx.disabled());\n\n  /** DOM-order index of this step within the stepper. */\n  readonly index = computed(() => this.ctx.indexOf(this));\n\n  /** True when this step is the currently selected step. */\n  readonly current = computed(() => this.ctx.isCurrent(this.index()));\n\n  /**\n   * True when this step can be focused and activated. False when the step is\n   * effectively disabled or not yet reachable in linear mode.\n   */\n  readonly selectable = computed(\n    () => this.ctx.isReachable(this.index()) && !this.effectiveDisabled(),\n  );\n\n  /**\n   * Resolved `data-state` string. Precedence:\n   * 1. Custom `state()` when non-empty.\n   * 2. `'error'` when `hasError()` and not current.\n   * 3. `'active'` when current.\n   * 4. `'completed'` when `completed()`.\n   * 5. `'pending'` otherwise.\n   */\n  readonly resolvedState = computed<string>(() => {\n    const custom = this.state();\n    if (custom) {\n      return custom;\n    }\n    if (this.hasError() && !this.current()) {\n      return 'error';\n    }\n    if (this.current()) {\n      return 'active';\n    }\n    if (this.completed()) {\n      return 'completed';\n    }\n    return 'pending';\n  });\n\n  constructor() {\n    registerHandle(\n      this,\n      (h) => this.ctx.registerItem(h),\n      (h) => this.ctx.unregisterItem(h),\n    );\n  }\n\n  /** Selects this step. Delegates to `ForStepperContext.select(index)`. */\n  select(): void {\n    this.ctx.select(this.index());\n  }\n}\n","import { computed, Directive, ElementRef, inject } from '@angular/core';\n\nimport { registerHandle, hostId, resolveListNavigation, rovingTabStop } from 'forty-cdk/core';\nimport { injectStepperContext, injectStepperItemContext } from './stepper-context';\n\n/**\n * Header for one step. In `mode=\"interactive\"` carries `role=\"tab\"`, participates\n * in the roving tabindex, and wires `aria-selected` / `aria-controls` /\n * `aria-disabled`. In `mode=\"progress\"` carries `aria-current=\"step\"` on the\n * active step only and is a static element (no tab-stop manipulation).\n *\n * Apply on a `<button type=\"button\">` for interactive mode so Enter / Space\n * activation is native. A static element (`<span>`) is acceptable for progress\n * mode.\n *\n * Disabled triggers in interactive mode reflect `aria-disabled` + `data-disabled`\n * (never the native `disabled` attribute) and drop out of the Tab sequence\n * (`tabindex` `-1`), but REMAIN reachable by arrow navigation: focus lands on\n * them and activation is a no-op, so assistive tech announces them in both\n * browse and focus / interaction modes.\n */\n@Directive({\n  selector: '[forStepperTrigger]',\n  exportAs: 'forStepperTrigger',\n  host: {\n    '[attr.role]': \"ctx.mode() === 'interactive' ? 'tab' : null\",\n    '[id]': 'id()',\n    '[attr.aria-selected]':\n      \"ctx.mode() === 'interactive' ? (item.current() ? 'true' : 'false') : null\",\n    '[attr.aria-controls]': \"ctx.mode() === 'interactive' && item.current() ? controlsId() : null\",\n    '[attr.aria-current]': \"ctx.mode() === 'progress' && item.current() ? 'step' : null\",\n    '[attr.aria-disabled]': \"ctx.mode() === 'interactive' && !item.selectable() ? 'true' : null\",\n    '[attr.tabindex]': 'tabindex()',\n    '[attr.data-state]': 'item.resolvedState()',\n    '[attr.data-disabled]': 'item.effectiveDisabled() ? \"\" : null',\n    '[attr.data-orientation]': 'ctx.orientation()',\n    '(click)': 'onClick()',\n    '(focus)': 'onFocus()',\n    '(keydown)': 'onKeyDown($event)',\n  },\n})\nexport class ForStepperTrigger {\n  protected readonly ctx = injectStepperContext('ForStepperTrigger');\n  protected readonly item = injectStepperItemContext('ForStepperTrigger');\n  readonly #host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n  /** Generated (or consumer-set static) id for this trigger. Used by content panels for `aria-labelledby`. */\n  readonly id = hostId('for-stepper-trigger');\n\n  /** Id of the content panel this trigger controls (the matching panel by step index). */\n  protected readonly controlsId = computed(() => this.ctx.contentIdFor(this.item.index()));\n\n  /**\n   * APG tabindex cascade (interactive mode only). In progress mode returns\n   * `null` so no tab-stop attribute is emitted. In interactive mode:\n   * - `-1` when not selectable (disabled or unreachable in linear mode).\n   * - Roving-tracker value once any trigger has been focused.\n   * - `0` when this step is current.\n   * - `-1` when another trigger owns the current step.\n   * - `0` if this is the first selectable trigger (fallback entry point).\n   * - `-1` otherwise.\n   */\n  protected readonly tabindex = computed<0 | -1 | null>(() => {\n    if (this.ctx.mode() !== 'interactive') {\n      return null;\n    }\n    return rovingTabStop({\n      disabled: !this.item.selectable(),\n      selected: this.item.current(),\n      hasSelected: this.ctx.hasCurrentTrigger(),\n      isFirstEnabled: this.ctx.isFirstSelectableTrigger(this.#host),\n      roving: this.ctx.roving,\n      host: this.#host,\n    });\n  });\n\n  constructor() {\n    const handle = {\n      host: this.#host,\n      index: this.item.index,\n      id: this.id,\n      selectable: this.item.selectable,\n      disabled: computed(() => !this.item.selectable()),\n    };\n    registerHandle(\n      handle,\n      (h) => this.ctx.registerTrigger(h),\n      (h) => this.ctx.unregisterTrigger(h),\n    );\n  }\n\n  protected onClick(): void {\n    if (this.ctx.mode() !== 'interactive' || !this.item.selectable()) {\n      return;\n    }\n    this.item.select();\n  }\n\n  protected onFocus(): void {\n    if (this.ctx.mode() !== 'interactive' || !this.item.selectable()) {\n      return;\n    }\n    this.ctx.roving.setActive(this.#host);\n  }\n\n  protected onKeyDown(event: KeyboardEvent): void {\n    if (this.ctx.mode() !== 'interactive') {\n      return;\n    }\n    const action = resolveListNavigation(event, {\n      orientation: this.ctx.orientation(),\n      dir: this.ctx.dir(),\n    });\n    if (!action) {\n      return;\n    }\n    event.preventDefault();\n    this.ctx.navigate(this.#host, action);\n  }\n}\n","import { Directive } from '@angular/core';\n\nimport { injectStepperItemContext } from './stepper-context';\n\n/**\n * Decorative icon slot for a step. Hidden from the accessibility tree\n * (`aria-hidden=\"true\"`). Reflects the step's resolved `data-state` so\n * consumers can swap icons via CSS `[data-state=\"completed\"]`,\n * `[data-state=\"error\"]`, etc., or with `@if` keyed on the exported\n * `#indicator=\"forStepperIndicator\"` reference.\n *\n * Must be used inside a `[forStepperItem]` element.\n */\n@Directive({\n  selector: '[forStepperIndicator]',\n  exportAs: 'forStepperIndicator',\n  host: {\n    'aria-hidden': 'true',\n    '[attr.data-state]': 'item.resolvedState()',\n  },\n})\nexport class ForStepperIndicator {\n  protected readonly item = injectStepperItemContext('ForStepperIndicator');\n}\n","import { Directive } from '@angular/core';\n\nimport { injectStepperContext, injectStepperItemContext } from './stepper-context';\n\n/**\n * Decorative connector between steps. Hidden from the accessibility tree\n * (`aria-hidden=\"true\"`). Reflects `data-state=\"completed\"` when the preceding\n * step is marked completed, `data-state=\"pending\"` otherwise. Also reflects\n * `data-orientation` so consumers can style horizontal vs vertical separators\n * differently.\n *\n * Must be used inside a `[forStepperItem]` element.\n */\n@Directive({\n  selector: '[forStepperSeparator]',\n  exportAs: 'forStepperSeparator',\n  host: {\n    'aria-hidden': 'true',\n    '[attr.data-state]': \"item.completed() ? 'completed' : 'pending'\",\n    '[attr.data-orientation]': 'ctx.orientation()',\n  },\n})\nexport class ForStepperSeparator {\n  protected readonly ctx = injectStepperContext('ForStepperSeparator');\n  protected readonly item = injectStepperItemContext('ForStepperSeparator');\n}\n","import { computed, Directive, ElementRef, inject, input } from '@angular/core';\n\nimport { registerHandle, injectHasFocusableContent, hostId, hostLabelledBy } from 'forty-cdk/core';\nimport { injectStepperContext } from './stepper-context';\n\n/**\n * Panel for one step. Pairs with a step through the explicit `[step]` index\n * when bound; otherwise by **position** — the Nth `[forStepperContent]` panel in\n * registration (DOM document) order corresponds to the Nth step. Bind `[step]`\n * whenever panels are conditionally rendered or ordered independently of the\n * steps, since the positional fallback renumbers the remaining panels.\n *\n * In `mode=\"interactive\"` the panel carries `role=\"tabpanel\"` and is a tab\n * stop (`tabindex=\"0\"`) only when it has no focusable content of its own\n * (WAI-ARIA Tabs APG rule). In `mode=\"progress\"` the panel carries\n * `role=\"group\"` and is never a tab stop.\n *\n * While inactive the directive reflects `aria-hidden=\"true\"` and `inert` so\n * mounted-but-inactive panels are removed from the accessibility tree and focus\n * order automatically. DOM presence is the consumer's responsibility — wrap\n * with `@if (current())` to unmount or leave mounted and toggle visibility with\n * CSS via `[data-state=\"inactive\"]`.\n */\n@Directive({\n  selector: '[forStepperContent]',\n  exportAs: 'forStepperContent',\n  host: {\n    '[attr.role]': \"ctx.mode() === 'interactive' ? 'tabpanel' : 'group'\",\n    '[id]': 'id()',\n    '[attr.aria-labelledby]': 'labelledBy()',\n    '[attr.tabindex]': 'tabindex()',\n    '[attr.aria-hidden]': 'current() ? null : \"true\"',\n    '[attr.inert]': 'current() ? null : \"\"',\n    '[attr.data-state]': 'current() ? \"active\" : \"inactive\"',\n    '[attr.data-orientation]': 'ctx.orientation()',\n  },\n})\nexport class ForStepperContent {\n  protected readonly ctx = injectStepperContext('ForStepperContent');\n  readonly #host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n  /**\n   * Index of the step this panel belongs to. Leave unset (default `null`) to\n   * pair by DOM-order position among the registered panels; bind it when panels\n   * are conditionally rendered or ordered independently of the steps, so the\n   * pairing survives a structurally absent panel.\n   */\n  readonly step = input<number | null>(null);\n\n  /** Generated (or consumer-set static) id for this panel. Used by triggers for `aria-controls`. */\n  readonly id = hostId('for-stepper-content');\n\n  readonly #hasFocusableContent = injectHasFocusableContent();\n\n  /** Resolved step index — the explicit `step()` when bound, else the positional fallback. */\n  readonly index = computed(() => this.step() ?? this.ctx.indexOfContent(this.#host));\n\n  /** True when this panel corresponds to the currently selected step. */\n  readonly current = computed(() => this.ctx.isCurrent(this.index()));\n\n  /**\n   * Resolved `aria-labelledby`: a consumer-set static value when present, else\n   * the id of the trigger that labels this panel.\n   */\n  protected readonly labelledBy = hostLabelledBy(() => this.ctx.triggerIdFor(this.index()));\n\n  /**\n   * APG tabindex: `'0'` only when in interactive mode and the panel has no\n   * focusable content of its own, so screen-reader users can reach the panel\n   * itself. A panel containing buttons / links / form controls gets no\n   * `tabindex`, avoiding a redundant tab stop.\n   */\n  protected readonly tabindex = computed<'0' | null>(() => {\n    if (this.ctx.mode() !== 'interactive') {\n      return null;\n    }\n    return this.#hasFocusableContent() ? null : '0';\n  });\n\n  constructor() {\n    const handle = { host: this.#host, index: this.index, id: this.id };\n    registerHandle(\n      handle,\n      (h) => this.ctx.registerContent(h),\n      (h) => this.ctx.unregisterContent(h),\n    );\n  }\n}\n","import { Directive } from '@angular/core';\n\nimport { injectStepperContext } from './stepper-context';\n\n/**\n * Terminal \"all steps complete\" panel. Shown (active) only while the stepper is in\n * the completed state (`selectedIndex` has reached `count`); gated the same way as\n * `[forStepperContent]` — `aria-hidden` / `inert` / `data-state` flip with\n * `isCompleted()`. The natural place for a wizard's final success panel.\n *\n * DOM presence is the consumer's responsibility — wrap with `@if` driven by the same\n * completed condition, or leave it mounted and toggle visibility with CSS via\n * `[data-state=\"active\"]`.\n */\n@Directive({\n  selector: '[forStepperCompletedContent]',\n  exportAs: 'forStepperCompletedContent',\n  host: {\n    role: 'group',\n    '[attr.aria-hidden]': 'ctx.isCompleted() ? null : \"true\"',\n    '[attr.inert]': 'ctx.isCompleted() ? null : \"\"',\n    '[attr.data-state]': 'ctx.isCompleted() ? \"active\" : \"inactive\"',\n  },\n})\nexport class ForStepperCompletedContent {\n  protected readonly ctx = injectStepperContext('ForStepperCompletedContent');\n}\n","import { Directive } from '@angular/core';\n\nimport { hostButtonType } from 'forty-cdk/core';\nimport { injectStepperContext } from './stepper-context';\n\n/**\n * \"Next\" button for the stepper. Apply on a `<button>` element. Reflects\n * `aria-disabled=\"true\"` when `canAdvance()` is false (last step reached, root\n * disabled, or in linear mode the current step is not completed / optional).\n *\n * The directive forces `type=\"button\"` through a host binding, so a consumer\n * `type=\"submit\"` on the host cannot make advancing a step submit a surrounding\n * `<form>`.\n *\n * Clicking while `aria-disabled` is a no-op.\n */\n@Directive({\n  selector: 'button[forStepperNext]',\n  exportAs: 'forStepperNext',\n  host: {\n    '[attr.type]': 'buttonType()',\n    '[attr.aria-disabled]': '!ctx.canAdvance() ? \"true\" : null',\n    '(click)': 'onClick()',\n  },\n})\nexport class ForStepperNext {\n  protected readonly buttonType = hostButtonType();\n\n  protected readonly ctx = injectStepperContext('ForStepperNext');\n\n  protected onClick(): void {\n    this.ctx.next();\n  }\n}\n","import { Directive } from '@angular/core';\n\nimport { hostButtonType } from 'forty-cdk/core';\nimport { injectStepperContext } from './stepper-context';\n\n/**\n * \"Previous\" button for the stepper. Apply on a `<button>` element. Reflects\n * `aria-disabled=\"true\"` when `canRetreat()` is false (first step reached or\n * root disabled).\n *\n * The directive forces `type=\"button\"` through a host binding, so a consumer\n * `type=\"submit\"` on the host cannot make going back a step submit a\n * surrounding `<form>`.\n *\n * Clicking while `aria-disabled` is a no-op.\n */\n@Directive({\n  selector: 'button[forStepperPrevious]',\n  exportAs: 'forStepperPrevious',\n  host: {\n    '[attr.type]': 'buttonType()',\n    '[attr.aria-disabled]': '!ctx.canRetreat() ? \"true\" : null',\n    '(click)': 'onClick()',\n  },\n})\nexport class ForStepperPrevious {\n  protected readonly buttonType = hostButtonType();\n\n  protected readonly ctx = injectStepperContext('ForStepperPrevious');\n\n  protected onClick(): void {\n    this.ctx.previous();\n  }\n}\n","import { computed, Directive, inject, input } from '@angular/core';\n\nimport { hostAriaLabel } from 'forty-cdk/core';\n\nimport { injectStepperContext } from './stepper-context';\nimport { FOR_STEPPER_DEFAULTS } from './stepper-defaults';\n\n/**\n * Optional progress indicator for the Stepper. Reads the stepper context and\n * reflects how far through the steps the user is as a WAI-ARIA\n * [`progressbar`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/progressbar_role):\n * `aria-valuemin=\"0\"`, `aria-valuemax=\"100\"`, `aria-valuenow` = the computed\n * percent, and an `aria-valuetext` describing the position. Publishes a\n * `--for-stepper-progress` (0–1) custom property for styling; ships no visuals.\n *\n * Must be used inside a `[forStepper]` element.\n */\n@Directive({\n  selector: '[forStepperProgress]',\n  exportAs: 'forStepperProgress',\n  host: {\n    role: 'progressbar',\n    '[attr.aria-valuemin]': '0',\n    '[attr.aria-valuemax]': '100',\n    '[attr.aria-valuenow]': 'percent()',\n    '[attr.aria-valuetext]': 'valueText()',\n    '[attr.aria-label]': 'resolvedAriaLabel()',\n    '[attr.data-orientation]': 'ctx.orientation()',\n    '[style.--for-stepper-progress]': 'percent() / 100',\n  },\n})\nexport class ForStepperProgress {\n  protected readonly ctx = injectStepperContext('ForStepperProgress');\n  readonly #defaults = inject(FOR_STEPPER_DEFAULTS);\n\n  /**\n   * Basis for the reported percent. `'index'` (default) derives progress from\n   * the current step index; `'completed'`\n   * derives it from the count of steps whose resolved state is `completed`.\n   * In both cases the percent is `value / count`, so `aria-valuenow` reaches\n   * `100` only in the terminal completed state (`selectedIndex === count`) or,\n   * on the `'completed'` basis, when every step is completed; standing on the\n   * last step before completion reports less than `100`.\n   */\n  readonly valueBy = input<'index' | 'completed'>('index');\n\n  /**\n   * Accessible name for the progressbar. Defaults to `null`, emitting no\n   * `aria-label`; prefer a visible label referenced via `aria-labelledby` when\n   * one exists.\n   */\n  readonly ariaLabel = input<string | null>(null);\n\n  protected readonly resolvedAriaLabel = hostAriaLabel(() => this.ariaLabel() || null);\n\n  readonly #completedCount = computed<number>(() => {\n    const total = this.ctx.count();\n    let n = 0;\n    for (let i = 0; i < total; i++) {\n      if (this.ctx.resolvedStateFor(i) === 'completed') {\n        n++;\n      }\n    }\n    return n;\n  });\n\n  readonly #value = computed<number>(() =>\n    this.valueBy() === 'completed' ? this.#completedCount() : this.ctx.selectedIndex(),\n  );\n\n  /**\n   * Progress as a whole-number percent in `[0, 100]`, reflected to\n   * `aria-valuenow` and (divided by 100) to the `--for-stepper-progress`\n   * custom property. Computed as `value / count`, so it reaches `100` only in\n   * the terminal completed state (`selectedIndex === count`) or, on the\n   * `'completed'` basis, when every step is completed; the last non-terminal\n   * step reports less than `100`.\n   */\n  readonly percent = computed<number>(() => {\n    const total = this.ctx.count();\n    if (total === 0) {\n      return 0;\n    }\n    const raw = Math.round((this.#value() / total) * 100);\n    return Math.min(100, Math.max(0, raw));\n  });\n\n  /**\n   * Human-readable position string reflected to `aria-valuetext`: `\"Step X of N\"`\n   * on the `'index'` basis, `\"P% complete\"` on the `'completed'` basis. Both\n   * strings are built from the scope's `stepValueText` / `progressValueText`\n   * defaults, localizable via `provideForStepperDefaults`.\n   */\n  readonly valueText = computed<string>(() =>\n    this.valueBy() === 'completed'\n      ? this.#defaults.progressValueText(this.percent())\n      : this.#defaults.stepValueText(\n          Math.min(this.ctx.selectedIndex() + 1, this.ctx.count()),\n          this.ctx.count(),\n        ),\n  );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}