Timeline y Pasos de Progreso para Angular | ng-hub-ui-milestones

Componente timeline y de pasos de progreso para Angular: vertical u horizontal, nodos totalmente personalizables, contenido dentro y junto a cada paso, con theming por variables CSS.

Última actualización 6 sept 2026

Visión General

Por qué los equipos buscan esta librería

Elige este componente timeline para Angular cuando necesites un indicador de progreso presentacional — onboarding, seguimiento de pedidos, roadmaps — con nodos personalizables y layouts vertical y horizontal.

Instalación

npm install ng-hub-ui-milestones

Ir a

Ideal para

  • flujos de onboarding
  • seguimiento de pedidos
  • roadmaps
  • pasos de un proceso

Sobre milestones

ng-hub-ui-milestones dispone una serie de pasos conectados por una línea, en vertical u horizontal. Cada nodo es totalmente personalizable — número, icono, avatar o cualquier marcado dentro del círculo, más contenido enriquecido a su lado — y cada color, tamaño y conector es una variable CSS, así que se re-temiza en tiempo de ejecución.

Guías de uso

Orientación

Dispón la línea de tiempo en vertical (la opción por defecto, ideal para asistentes y feeds de actividad) o en horizontal (pasos de progreso a lo largo de la parte superior de una página). Los nodos se numeran automáticamente en orden del DOM.

Ejemplos:
Línea de tiempo vertical

Línea de tiempo vertical

Information

Account details captured and verified.

Shipping

Delivery address confirmed.

Payment

Enter your payment method to continue.

Review

Place the order once everything looks right.

Pasos de progreso horizontales

Pasos de progreso horizontales

Information

Account verified.

Shipping

Address confirmed.

Payment

In progress.

Review

Last step.

Estados de nodo

Cada `hub-milestone` lleva un `state` —complete, active, pending o error— que determina los colores del nodo y del conector. El input `label` renderiza el texto de fallback dentro del círculo.

Ejemplos:
Estados de nodo

Estados de nodo

Complete

A finished step.

Active

The current step, highlighted with a ring.

Error

Something needs attention here.

Pending

Not started yet.

Nodos personalizados y tematización

Proyecta cualquier contenido dentro del círculo con `<ng-template hubMilestoneNode>` (números, iconos, emoji, avatares), sobrescribe un nodo individual con `color`, o vuelve a tematizar toda la línea de tiempo mediante las variables CSS `--hub-milestone-*`.

Ejemplos:
Nodos personalizados y color por nodo

Nodos personalizados y color por nodo

Drafted

Article written and saved.

Reviewed

Approved by the editor.

Publishing

Going live across channels.

Promotion

Scheduled for next week.

Tematización con variables CSS

Tematización con variables CSS

Kickoff

Project scoped and approved.

Build

Core features shipped.

Launch

Rolling out to production.

Animación

Cuando el timeline entra en el viewport, completa su trazo de acento hasta el nodo activo — activado por defecto y configurable globalmente con `provideHubMilestones`. Añade `[pulse]` para que el nodo activo emita una onda suave. Ambas animaciones respetan `prefers-reduced-motion`.

Ejemplos:
Horizontal con pulso activo

Horizontal con pulso activo

Ordered

Payment received.

Packed

Ready to ship.

In transit

Out for delivery now.

Delivered

Arriving soon.

Características clave

Cambios recientes

Version 22.3.3 - 9/6/26, 12:00 AM

fixed: The documentation no longer denies the ng-hub-ui-utils dependency the package requires. Both READMEs advertised zero runtime dependencies and an install line naming this package alone, while peerDependencies has demanded ng-hub-ui-utils since 22.3.0, so a reader installing by hand ended up with an application that cannot resolve resolveHubAccent. The install block now names both packages and states the peer range.

fixed: hubMilestoneNode is described as what it is: an attribute directive. Calling it structural set the wrong expectation about where its content appears. It only tags a template, and hub-milestone is what renders it inside the circle.

fixed: HUB_MILESTONES_CONFIG is in the API reference. The token is exported from public-api.ts and is the only way to read the resolved application defaults, yet neither README named it.

fixed: The Styling section documents the SCSS the package ships. The theming mixin and the styles entry point have been published since 22.2.0 with no trace in either README, leaving the one-call theming path visible only to whoever read the changelog.

Version 22.3.2 - 9/1/26, 12:00 AM

changed: The homepage in the manifest points at this library's own documentation page rather than at the site root. It is the link a registry shows beside the package and the one a reader clicks from it, and landing on a front page they then have to search is a worse answer than landing on the reference for the package they were already looking at. Metadata only — no code, no types, no styles change, and nothing a consumer imports is affected.

Version 22.3.1 - 8/8/26, 12:00 AM

fixed: Documentation links now point at the canonical localized URLs. The README linked to https://hubui.dev/<path> with no locale prefix and no trailing slash, and both forms are 301-redirected, so every reader arriving from npm or GitHub landed on a redirect instead of the canonical page.

Version 22.3.0 - 7/28/26, 12:00 AM

changed: Accent resolution now imports the canonical resolveHubAccent from ng-hub-ui-utils. The private copy under src/lib/shared/resolve-hub-accent.ts has been deleted in favour of the single, tested implementation shared family-wide. Behaviour is identical (the copy had not diverged): a bareword resolves to var(--hub-sys-color-<name>, <name>), a literal colour passes through unchanged, an empty value yields null.

added: NEW peer dependency: ng-hub-ui-utils >=22.7.0. Consumers must have ng-hub-ui-utils installed alongside this library (it is where resolveHubAccent lives). Users installing via ng add ng-hub-ui get it automatically; manual installs need npm i ng-hub-ui-utils.

Version 22.2.1 - 7/28/26, 12:00 AM

fixed: Each milestone exposes role=listitem and the active node announces aria-current=step, completing the list semantics the container already declared.

Version 22.2.0 - 7/7/26, 12:00 AM

added: hub-milestones-theme(...) SCSS mixin — one-call token theming for <hub-milestones>, covering the full --hub-milestone-* surface: completed steps ($node-color, $node-text, $node-size, $node-font-size, $connector-bg, $connector-thickness), upcoming steps ($pending-bg, $pending-border, $pending-color, $connector-pending-bg), the error state ($error-bg), the step body ($body-color, $body-muted) and layout ($gap, $spacing). Every parameter is null-defaulted and additive.

changed: Packaging — the library now ships its SCSS at /styles. src/lib/styles is emitted to dist/milestones/styles, exposing hub-milestones-theme as a first-class package entry: @use 'ng-hub-ui-milestones/styles' as *;

Version 22.1.0 - 7/7/26, 12:00 AM

changed: <hub-milestone> color accepts ANY colour. On top of the built-in semantic accents, the input now also accepts a registered custom accent and a literal colour (#ff0000, rgb(...), oklch(...), a CSS named colour), resolved through the shared resolveHubAccent resolver: a bareword becomes var(--hub-sys-color-<name>, <name>); a literal is used as-is. Built-in colours are unchanged.

changed: Internal — host bindings moved to the host metadata object. @HostBinding / @HostListener decorators were replaced by the host object in the component and directive metadata (Angular style guide). No public API or behaviour change.

Version 22.0.3 - 6/25/26, 12:00 AM

changed: Widened the Angular peer dependency range from ^22.0.0 to >=21.0.0, so the library installs on Angular 21 projects as well, aligning it with the rest of the ng-hub-ui family. No code changes.

Version 22.0.2 - 6/25/26, 12:00 AM

added: Viewport reveal — when a <hub-milestones> scrolls into view it plays a one-shot animation, filling the accent trail from the first node up to the active node. On by default; set it globally with provideHubMilestones({ reveal: false }) or per instance with [reveal]. Tunable via --hub-milestone-reveal-duration / --hub-milestone-reveal-stagger, SSR-safe and disabled under prefers-reduced-motion.

added: provideHubMilestones() provider and HubMilestonesConfig for app-wide defaults, plus the [pulse] input on <hub-milestones> — an opt-in soft wave on the active node whose colour follows the node accent and is overridable via --hub-milestone-pulse-color / --hub-milestone-pulse-duration / --hub-milestone-pulse-spread.

fixed: Connectors now reach from node to node: the connector is absolutely positioned and always spans node edge to next-node edge, in both orientations. Its colour follows the theme accent (--hub-milestone-node-color) instead of the hardcoded purple-to-orange gradient, the accent trail stops at the active node so the timeline reads as a real progress indicator, and layout, connectors and the reveal flip correctly under dir='rtl'.

Version 22.0.1 - 6/25/26, 12:00 AM

fixed: Design-token consistency pass: aligned inline fallback defaults with the canonical ng-hub-ui-ds values and routed hardcoded literals (z-index, font-weight, line-height, radii and theme-aware colours) through their --hub-sys-* / --hub-ref-* tokens, so they follow the active theme. No visual change when the ds tokens are loaded.

Version 22.0.0 - 6/17/26, 12:00 AM

changed: Aligned with Angular 22. README documentation standardized.

Version 21.0.0 - 6/14/26, 12:00 AM

added: Initial release: hub-milestones container (vertical / horizontal orientation, auto-numbered nodes) and hub-milestone node with complete/active/pending/error states.

added: Per-node color override, label fallback and custom in-circle content via the hubMilestoneNode template directive.

added: Full --hub-milestone-* CSS-variable theming for node, connector, states and spacing.