Reading Progress
Track reading progress with interactive progress indicators using existing Sparkles reading progress system.
Top Progress Bar
Live Progress Bar (Top Position)
This is demo content to show reading progress. Scroll within this area to see the progress bar update in real-time.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
<div x-data="sparklesReadingProgress({ displayMode: 'bar', position: 'top' })"
x-init="init()"
class="reading-progress reading-progress--bar reading-progress--top">
<div class="w-full bg-gray-200 rounded-full h-2">
<div class="bg-blue-600 h-2 rounded-full" :style="`width: ${progress}%`"></div>
</div>
</div>
Circular Progress Indicator
Circle Progress Indicator
Scroll here to see circular progress update.
More content to demonstrate the circular reading progress indicator functionality.
This area has scrollable content that will update the circular progress.
Additional text to provide more scrollable content for demonstration purposes.
Percentage Display
Scroll to see percentage update.
Content for percentage display demo.
More scrollable text content here.
Final paragraph for demonstration.
Advanced Features
Jump to Progress
Auto-Hide Progress
Start scrolling to show progress.
Progress appears after threshold.
Auto-hides when at top.
More content for demo purposes.
Configuration Options
Available Configuration
Display Modes
bar- Horizontal progress barcircle- Circular progress indicatorpercentage- Percentage display
Positions
top- Top of viewportbottom- Bottom of viewportsidebar- Side positioning
Behaviors
autoHide- Show/hide automaticallyanimated- Smooth transitionsthreshold- Activation point
Implementation Guide
Basic Usage
<!-- Include the Sparkles Reading Progress JS -->
<script src="/sparkles-design-library/alpine-components/sparkles-reading-progress.js"></script>
<!-- Basic Progress Bar -->
<div x-data="sparklesReadingProgress()" x-init="init()">
<div class="progress-bar" :style="`width: ${progress}%`"></div>
</div>
<!-- With Configuration -->
<div x-data="sparklesReadingProgress({
displayMode: 'circle',
position: 'sidebar',
autoHide: true,
threshold: 100
})" x-init="init()">
<!-- Your progress indicator markup -->
</div>
💡 Pro Tips
- • Use
contentSelectorto target specific content areas - • Set
thresholdto control when progress becomes visible - • Enable
smoothingfor ultra-smooth progress updates - • Use
jumpToProgress()method for table of contents navigation
Usage Examples
<div x-data="sparklesReadingProgress({
displayMode: 'bar',
position: 'top',
contentSelector: '.content',
threshold: 0,
autoHide: false
})" x-init="init()">
<div class="w-full bg-gray-200 rounded-full h-2">
<div class="bg-blue-600 h-2 rounded-full"
:style="`width: ${progress}%`"></div>
</div>
</div>
<div x-data="sparklesReadingProgress({ displayMode: 'circle' })"
x-init="init()">
<svg class="w-24 h-24 transform -rotate-90" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="45" stroke="currentColor"
stroke-width="8" fill="transparent" class="text-gray-200"/>
<circle cx="50" cy="50" r="45" stroke="currentColor"
stroke-width="8" fill="transparent"
class="text-blue-600" :style="getProgressBarStyles()"/>
</svg>
</div>
<div x-data="sparklesReadingProgress({
autoHide: true,
threshold: 50,
contentSelector: '.article-content'
})" x-init="init()">
<div x-show="isVisible"
x-transition
class="sparkles-progress-bar">
<div :style="`width: ${progress}%`"></div>
</div>
</div>
Performance & Accessibility
Performance Features
- • Scroll event throttling reduces CPU usage during rapid scrolling
- • Progress calculations use requestAnimationFrame for smooth updates
- • Auto-hide functionality prevents unnecessary DOM updates when not visible
- • Configurable content selectors allow targeting specific reading areas
Accessibility Support
- • Progress indicators include ARIA progressbar role with current values
- • Jump-to-progress functionality supports keyboard navigation
- • Progress announcements respect user's motion preferences
- • High contrast mode compatible with customizable color schemes