shadcn.io is not affiliated with official shadcn/ui
Release Calendar Block for Vue
A three-month ruler of three releases with a feature freeze, a release candidate and a ship date each, a derived line for the next freeze and a Download .ics that saves the nine dates.
Installation
Overview
Put a release train on one ruler with this release calendar for Vue with Ark UI. A hairline frame with a plus mark on each corner holds October to December 2026 and one row per release (5.3, 5.4 and 6.0), each with a Feature freeze drawn as a diamond, an RC1 as a ring and a GA as a solid dot, nine dates in all, and a rule at 14 October, the block's fixed "now". A line above the ruler says how far off the next feature freeze is ("Feature freeze for 5.4 in 6 days."), and choosing a mark states it under the ruler ("RC1 for 5.4, Mon 26 Oct, in 12 days."). Each row says what is next for its release. An outline Button saves the nine dates as a real all-day calendar file in UTC that opens in any calendar app. The ruler scrolls sideways under sticky release names, and a legend gives each mark its shape and its word. It's built from Button and Guides, with a CSS entrance only. For release managers, mobile teams and any product that ships on a fixed rhythm.
FAQ
How do I fill it with my releases?
Edit MARKS. Each has an ISO date, a kind of freeze, rc or ga, a release name and a unique id; RELEASES lists the rows in order. Change RULER_START, RULER_DAYS and RULER_MONTHS to draw a different span. The next-freeze line and every "in N days" are worked out from the dates and AS_OF.
What does Download .ics contain?
One all-day event for each mark, such as "Feature freeze for 5.4" on 20 October, with a typed UID and a typed creation stamp, UTC dates and CRLF line ends as the format requires, saved as trainmoor-releases.ics. It is built in the browser from the same array the ruler reads, so the file always matches what you see. To publish a live feed instead, serve the same text from your own URL.
Why is today always 14 October?
Nothing in the block reads the clock. AS_OF is the one moment it treats as now, and the rule, the next-freeze line and every relative date come from it, so the block looks the same on any day and in a screenshot. Marks before it say "ago".
How do I use it with the keyboard?
Every mark is a button that is pressed when it is chosen, named with its kind, release, date and how far off it is. The ruler is also a scroll region you can reach with Tab. The time axis keeps its left-to-right order in right-to-left languages.