keyspot 0.3.0
keyspot: ^0.3.0 copied to clipboard
Drift-free spotlight highlights and animated hand-pointer gestures for onboarding and feature tours. Anchored to GlobalKeys, tracked live every frame.
0.3.0 #
Implements the full 0.1–0.3 surface described in SPEC.md. The package is
feature-complete and unpublished; the API may still move before 1.0.
Spotlight #
KeyspotController.spotlight()withSpotShape.auto/circle/rrect/stadium/path, configurable ring stacks, and per-ring opacity pulses.- Action-scoped spotlights via
until:, timed viaduration:, or held untilhideSpotlight(). SpotBarrierwithpassthrough,block(default),dismissOnTapandtargetOnly— the last forwards the tap to the real widget and resolves.- Automatic scroll-into-view before the spotlight appears.
- Graceful fade-out and future resolution when the target unmounts mid-spotlight.
Pointer #
KeyspotPointer.show/moveTo/sweep/tapPulse/hide, every future completing on real animation completion rather than a guessed delay.- Rotation as an explicit
Rotation.degrees/radiansvalue type, animated from the current angle along the shortest path. MotionPath.lineandMotionPath.arctrajectories.- Built-in
CustomPainterhand with no assets, replaceable by any widget throughPointerStyle.builder.
Tours #
KeyspotTour,KeyspotStep,TourSessionwithnext/previous/skip.StepAdvance.tapTarget/tapAnywhere/manual/after(duration), each mapping to a sensible default barrier.KeyspotTourStorageinterface plusInMemoryTourStorage; plug your own persistence in.- Step content cards positioned automatically above or below the cut-out.
Tracking and accessibility #
KeyspotAnchorTrackerexposed publicly withTrackingMode.everyFrame,onScrollAndMetricsandonce.- Reduced motion honoured through
MediaQuery.disableAnimations. semanticLabelannouncements, RTL-aware alignments, andflipForRtlartwork.
Foundations #
KeyspotThemeas aThemeExtension, resolved parameter → scope → theme → defaults.- Injected logger, silent by default.
- Disposal-safe notifications: every pending future completes rather than erroring.
0.0.1 #
- Initial development preview. Claims the package name and publishes the planned API surface (see README). First functional release will be 0.1.0.