Skip to content

feat: add ProgressIndicatorStyle.PILL for multi-step progress indicators - #52

Closed
paul-at-equal wants to merge 1 commit into
aldefy:mainfrom
paul-at-equal:feature/progress-indicator-pill-style
Closed

paul-at-equal wants to merge 1 commit into
aldefy:mainfrom
paul-at-equal:feature/progress-indicator-pill-style

Conversation

@paul-at-equal

Copy link
Copy Markdown
Contributor

Summary

  • Adds ProgressIndicatorStyle (DOTS default / PILL) so the current step in a multi-step tooltip's progress indicator can render as an elongated pill instead of a same-size dot — an iOS-style page indicator look, requested to match a reference onboarding screen.
  • New CoachmarkConfig.progressIndicatorStyle and CoachmarkConfig.progressActivePillWidth (default 20.dp) control it. No new color config needed — reuses existing CoachmarkColors.progressActiveColor / progressInactiveColor.
  • DOTS behavior is unchanged (steps up to and including the current one fill in, matching current default behavior exactly).
  • PILL highlights only the current step; every other step (before or after) stays a plain dot.
  • Added a "Start Tour (Pill)" button to the Multi-Step Sequence sample so both styles are easy to compare side by side.
  • Bumped to 1.0.0-beta16 and updated CHANGELOG.md.

This is independent of #51 (the TEARDROP connector PR) — branched from main directly so it can be reviewed/merged on its own.

Test plan

  • ./gradlew :lumen:compileDebugKotlinAndroid :lumen:compileKotlinJvm :lumen:compileKotlinIosArm64 :lumen:compileKotlinIosSimulatorArm64 :lumen:compileKotlinIosX64 :sample:compileDebugKotlinAndroid — all targets compile
  • ./gradlew :lumen:apiDump / :lumen:apiCheck — API dumps regenerated and verified
  • ./gradlew :lumen:testDebugUnitTest :lumen:jvmTest — full suite green, including a new Roborazzi golden (tooltip_multiStep_pillIndicator.png) and a new ProgressIndicatorStyle.entries unit test
  • Visually confirmed the recorded screenshot matches the requested reference (pill on the current step, small dots elsewhere)

🤖 Generated with Claude Code

Adds an alternative visual style for the multi-step tooltip progress
indicator: instead of every step being a same-size dot, the current
step renders as an elongated pill while the other steps stay small
dots — matching an iOS-style page indicator, per a requested reference
design (a "MyGate Security" style onboarding screen).

- ProgressIndicatorStyle enum: DOTS (existing fill-up-to-current-step
  look, now the explicit default) and PILL (only the current step is
  highlighted, as a pill; other steps are plain dots regardless of
  whether they're before or after the current one).
- CoachmarkConfig.progressIndicatorStyle selects the style;
  CoachmarkConfig.progressActivePillWidth sizes the pill (height
  matches the existing 8dp dot size, so PILL is a proper stadium
  shape via RoundedCornerShape rather than a stretched ellipse).
- Reuses the existing CoachmarkColors.progressActiveColor /
  progressInactiveColor — no new color config needed.
- Added a "Start Tour (Pill)" button to the Multi-Step Sequence
  sample to demo the new style alongside the existing dots tour.

Bumped to 1.0.0-beta16 and updated CHANGELOG.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@aldefy

aldefy commented Aug 20, 2026

Copy link
Copy Markdown
Owner

Closing as superseded — ProgressIndicatorStyle.PILL merged to main via #53, cherry-picked with your authorship intact (commit 145e9ed, feat: add ProgressIndicatorStyle.PILL for multi-step progress indicators).

Context: reviewing this alongside #51 against the actual design driving both showed a pattern of new visual requirements landing as new enum cases + config fields in :lumen for things that are really app-specific. #53 adds three general extension points (progressIndicator composable slot, customConnector lambda, CutoutShape.Custom) so future asks like this don't need a library change at all — but PILL specifically is common enough (iOS-style page indicator) that it was worth keeping as a built-in convenience on top of the slot, rather than only leaving it as an app-side example. So this PR's actual feature shipped as-is, just via #53's branch instead of this one.

Thanks for building it — no rework needed on your end.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants