Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Time Tracking Task List Block for Vue

A task list with a Start and Stop timer on every row, one running at a time, a pulsing dot and the word Running on the active row, and a day total that adds what is running to what was logged.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

Log hours against the task you are on, with this time tracking to-do list block for Vue with Ark UI. Six tasks each show the time already logged today and a Start button; pressing it starts that task's timer, and starting another stops the first and says where it stopped ("Paused 'Invoice run' at 0:41:12"). The running row shows a pulsing dot and the word Running, and the band above the list adds what is running to what was logged ("Tracked today 1h 09m"). Each task is a Checkbox, and ticking one stops its timer. Nothing starts by itself and nothing reads the clock: a running timer counts its own seconds while the page is open, and stops when it is left. Guides rule the bands. For freelancers, agencies and anyone billing by the hour.

FAQ

Why can only one timer run?

Time is one thing you spend once. Starting a second timer stops the first, adds the seconds it counted to that task's log, and the status line says which task paused and at what time.

Does it use the real clock?

No. A running timer adds one second a second to its own counter while the page is open, so the block renders the same on every visit and adds no time until you press Start. It does not catch up for a hidden tab or a closed page.

What does a screen reader hear?

The ticking digits are hidden from assistive technology so they don't chatter. The row says "Running", the polite status line announces each start, stop and pause, and each row has the minutes logged in text.

What happens with reduced motion?

The dot beside Running stops pulsing and stays as a still dot. The timer still counts, because you started it.

What stays local, and how do I wire it for real?

The logged seconds live in the page and reset on reload. In an app, keep a start and an end time per span on the server, write the span from stop and start, and compute the elapsed time from those so a closed tab doesn't lose time.

How does it look on a phone?

Each row keeps the checkbox, the title with its project, the time and the round Start button on one line, and the totals stay in two cells above. Nothing scrolls sideways at 320 pixels.