Generate countdown timers that count down to a specific date/time. Perfect for product launches, events, sales, or deadlines.
Generates countdown timer blocks for Greenshift with customizable styles and animations.
/plugin marketplace add vcode-sh/vibe-tools/plugin install greenshift-blocks@vibe-toolsGenerate countdown timers that count down to a specific date/time. Perfect for product launches, events, sales, or deadlines.
greenshift-blocks skill documentation, specifically docs/08-variations.md for countdown structure<!-- wp:greenshift-blocks/element {"id":"gsbp-XXXXXXX","type":"inner","className":"gs_countdown_XXX gs_countdown","localId":"gsbp-XXXXXXX","styleAttributes":{...},"isVariation":"countdown","endtime":"2024-12-31T23:59:59"} -->
<div class="gs_countdown_XXX gs_countdown gsbp-XXXXXXX" data-end="2024-12-31T23:59:59">
<!-- Time units here -->
</div>
<!-- /wp:greenshift-blocks/element -->
{
"isVariation": "countdown",
"className": "gs_countdown_XXX gs_countdown",
"endtime": "2024-12-31T23:59:59",
"styleAttributes": {
"display": ["flex"],
"flexDirection": ["row"],
"rowGap": ["5px"],
"columnGap": ["5px"],
"alignItems": ["center"],
"justifyContent": ["flex-start"]
}
}
{
"tag": "span",
"textContent": "00",
"className": "gs_days gs_countdown_item"
}
{
"tag": "span",
"textContent": ":",
"className": "gs_date_divider"
}
| Class | Element | Purpose |
|---|---|---|
.gs_countdown | Container | Main countdown wrapper |
.gs_countdown_item | All units | Common styling for numbers |
.gs_days | Span | Days value |
.gs_hours | Span | Hours value |
.gs_minutes | Span | Minutes value |
.gs_seconds | Span | Seconds value |
.gs_date_divider | Span | Separator (colon) |
The countdown uses ISO date format:
data-end="2024-12-31T23:59:59"
Format: YYYY-MM-DDTHH:mm:ss
Countdown Container (gs_countdown)
├── Days Box
│ ├── Number (gs_days gs_countdown_item)
│ └── Label "Days"
├── Divider ":"
├── Hours Box
│ ├── Number (gs_hours gs_countdown_item)
│ └── Label "Hours"
├── Divider ":"
├── Minutes Box
│ ├── Number (gs_minutes gs_countdown_item)
│ └── Label "Minutes"
├── Divider ":"
└── Seconds Box
├── Number (gs_seconds gs_countdown_item)
└── Label "Seconds"
{
"dynamicGClasses": [{
"value": "gs_countdown_XXX",
"type": "local",
"selectors": [
{
"value": " .gs_countdown_item",
"attributes": {
"styleAttributes": {
"fontSize": ["2rem"],
"fontWeight": ["bold"],
"lineHeight": ["2.3rem"]
}
}
},
{
"value": " .gs_date_divider",
"attributes": {
"styleAttributes": {
"fontSize": ["1.7rem"],
"lineHeight": ["2.3rem"]
}
}
}
]
}]
}
Each unit in a styled box:
{
"styleAttributes": {
"display": ["flex"],
"flexDirection": ["column"],
"alignItems": ["center"],
"justifyContent": ["center"],
"backgroundColor": ["var(--wp--preset--color--lightbg, #f5f5f5)"],
"borderRadius": ["var(--wp--custom--border-radius--small, 10px)"],
"padding": ["var(--wp--preset--spacing--50, 1.5rem)"],
"minWidth": ["80px"]
}
}
{
"styleAttributes": {
"fontSize": ["var(--wp--preset--font-size--giant, 4rem)", "var(--wp--preset--font-size--giga, 3rem)", "var(--wp--preset--font-size--grand, 2rem)", "var(--wp--preset--font-size--xl, 1.5rem)"],
"fontWeight": ["700"],
"columnGap": ["var(--wp--preset--spacing--50, 1.5rem)"]
}
}
{
"styleAttributes": {
"fontSize": ["var(--wp--preset--font-size--m, 1.2rem)"],
"columnGap": ["var(--wp--preset--spacing--30, 0.5rem)"]
}
}
{
"styleAttributes": {
"fontSize": ["var(--wp--preset--font-size--xs, 0.85rem)"],
"textTransform": ["uppercase"],
"letterSpacing": ["0.05em"],
"opacity": ["0.7"],
"marginTop": ["var(--wp--preset--spacing--30, 0.5rem)"]
}
}
Section (alignfull, dark background)
└── Content Area (centered)
├── Heading "Event Starts In"
├── Countdown Timer
└── CTA Button "Register Now"
| Use Case | Recommended Style |
|---|---|
| Product launch | Box style, hero placement |
| Sale ending | Inline, header/banner |
| Event countdown | Large, centered with CTA |
| Limited offer | Compact, near CTA button |
countdown-launch.html)IMPORTANT: Always save output to a .html file. Never just display the code in chat.