# Event Schedule

> A practical two-day event programme with day selection, session filters and preparation notes, framed by a bold photographic event rail.

Canonical: https://gsapvault.com/sections/event-schedule-section
Live demo: https://gsapvault.com/demos/event-schedule-section/index.html

| Property | Value |
|----------|-------|
| Type | section |
| Tier | paid |
| Price | Included only in the Vault |
| Difficulty | intermediate |
| Plugins | Core GSAP only |
| Techniques | accessible-filtering, state-transition, progressive-enhancement, keyboard-navigation, container-queries, responsive-section |
| Uses Lenis | No |

## Lighthouse, as measured

Google Lighthouse on the demo, 15 September 2026. A measurement of the demo as shipped, not a promise for your page.

| Category | Score |
|----------|-------|
| Accessibility | 100 |
| Best practices | 100 |

No performance score is published: it depends on the deployment (server compression, caching, CDN, connection and device) rather than on the code, so measure it where it will live.

## Overview

Event Schedule helps visitors plan their time at a conference, workshop or community event. A bold event rail holds the identity, date, venue, booking information and a contextual photograph. Beside it, a chronological programme makes session times, durations, formats and rooms easy to scan. The fictional Assembly example presents two days of design talks and practical making workshops in Sheffield.

Day and format controls keep the programme focused. Native session disclosures reveal what each session covers and what to bring; booking information is explicitly sample content. The same composition becomes a compact introduction followed by adjacent controls and agenda on phones.

Every session remains readable without JavaScript or GSAP. Root-scoped styling, ordinary local photography and markup-derived navigation make the section straightforward to adapt to a different event.

## Features

- Complete event context with dates, venue, photograph and booking information
- Two-day chronological programme with eight sample sessions
- Markup-derived day controls and All, Talks and Workshops filters
- Session time, duration, format, room and native preparation-note disclosures
- Short interruptible agenda transitions that settle on the latest selection
- Keyboard day navigation, native touch controls and polite result counts
- Live reduced-motion support and complete no-JS or missing-GSAP fallback
- Local generated workshop photograph with ordinary image and crop edit points
- Named container queries, scoped brand variables and independent instances
- Public mount, select, filter and per-instance teardown API

## Use Cases

- Design conferences and creative workshop weekends
- Museum events and public learning programmes
- Professional development and training schedules
- Community festivals with talks and hands-on sessions

## Vibe-Code Ready Setup

This website section includes `START-HERE-AI.md`, a product-specific copy-paste setup prompt for Cursor, Claude Code, ChatGPT, GitHub Copilot, Windsurf, and other coding assistants. It tells the assistant to inspect the existing stack, integrate the supplied files, preserve the design, scope selectors, retain accessibility and responsive behaviour, add framework-appropriate GSAP cleanup, and report what it tested.

[How AI-assisted setup works](https://gsapvault.com/vibe-coding)

## How It Works

The programme starts as complete day articles containing native session disclosures. Each session keeps its time, format, room, title and preparation notes in editable HTML. Without JavaScript or GSAP both days remain available in normal reading order.

With enhancement, the section derives its day and format controls from those articles. Selecting a day or session format updates the relevant agenda immediately and introduces the visible rows with a brief transition. Repeated choices settle on the final request, while a polite result count confirms the selection. Native details reveal practical information without an extra interaction framework.

Reduced motion switches state without animation, including when the preference changes during a visit. Each instance owns its controls, listeners and GSAP context; teardown restores the complete original programme without affecting the host page.

## Documentation

How this website section works and how it goes into a page. The reference you use once you own the files (worked examples, events, the programmatic API, the class list) ships with the download.

### Quick start

Open `index.html` to see the section. For an existing page, copy the `<section class="es-schedule" data-event-schedule>` element and its complete contents. Copy the `assets/` directory beside your page, then load:

_Code snippet omitted: it ships with the download._

There is no build step or plugin dependency. The preview `<main>` and its `body { margin: 0 }` style are host furniture; do not copy them into an existing page. The section does not require full-screen height, sticky positioning or a particular scroll library.

### Make it yours

Edit the event name, introductory copy, date, venue, session text and `<time datetime>` values directly in `index.html`. Update the root `aria-label` as well. The two top-level headings are `h2`; change their tags to suit your page hierarchy without changing their classes.

The booking action is a native disclosure explaining that this is a sample event. Replace the complete `.es-booking` disclosure with an ordinary registration link styled using your site's button class. The `.es-booking` styles are designed for the supplied disclosure, not an anchor. Set its actual ticket-provider destination; this package has no booking backend, payment handling or calendar integration.

The first block of `assets/style.css` contains brand controls on `.es-schedule`: paper, ink, muted text, rules, accent, accent text, focus colour, body/display fonts, content width, spacing, corners and photo crop. For example, change `--es-accent` to `#245747`, change the name to your museum and replace the workshop copy with open-studio activities. Recheck contrast after changing colours. System fonts work immediately; use your own licensed webfont by changing the font variables.

#### Replace the photograph

The image is `assets/img/workshop.webp`, a 1200×800 local WebP. Replace it with an ordinary photograph or edit the `<img src>` to your new file. Set the image's intrinsic `width` and `height` and write a relevant `alt`. A landscape image with its subject near the centre is recommended. No generated art, SVG or animation editing is needed.

The desktop frame uses `--es-photo-ratio` (2.1 by default) and `--es-photo-position` (50% 47%). Mobile uses a 2.6 ratio in the named container query to keep the introduction compact. Adjust that rule if your photo needs a taller phone crop. The image loads promptly and reserves its space; there are no hidden responsive sources to replace. Update the caption and remove the generated-image disclosure when your own real photography replaces it.

#### Change the programme

Each `[data-event-day]` article is one day. `data-day-label` supplies its control label; `.es-day-heading` supplies its fallback heading. Duplicate, remove or reorder a whole article to change the days. Each `[data-session]` details element is one session. Duplicate, remove or reorder it within a day and edit the title, time, duration, room and preparation notes. Keep sessions in chronological markup order.

`data-session-type="Workshop"` determines its format filter. The visible metadata should use the same label. Filters and counts are generated from the markup, with no separate content array or fixed number of days/sessions. The shipped simple English labels pluralise by adding “s”; edit the label expression in `script.js` if your language needs another plural form. One day hides day selection; one format hides format selection. An empty selected day shows an explicit no-sessions message. There is no code limit, but long programmes benefit from concise summaries.

When modifying repeated content after mount, destroy and mount that root again so controls match the new markup.

### Behaviour and options

`data-motion-duration="0.24"` controls the row transition, in seconds, clamped to 0–0.6. Set 0 for immediate changes. This is independent of the brand controls.

The script automatically mounts each `[data-event-schedule]` once. For dynamically inserted content:

_Code snippet omitted: it ships with the download._

The same API is available as `root.eventSchedule`. Destroy before removing a root in a client-side router. Repeated mount calls return its existing instance. Separate roots own their state and cleanup. To change an event's contents, call destroy, edit its semantic markup, then mount again.

### Accessibility and integration

Native buttons work with pointer, keyboard and touch. Day controls also support Left/Right, Home and End. Pressed state identifies the active day/format and a polite status announces the matching count. Session and booking disclosures retain native Enter/Space behaviour. Focus indicators are visible on both surfaces.

Without JavaScript or GSAP, all days remain readable and every native disclosure works. Reduced motion is respected on mount and when the preference changes while mounted. No content is hidden before enhancement. The section uses a named container query to stack in narrow columns, does not alter host typography or scrolling, and needs no page-wide reset. Allow its natural height to grow when details expand. It has been exercised at laptop, desktop, phone and narrow-host sizes, including two independent instances and destroy/remount.

### Dependencies and credits

- GSAP 3.15.0 core from jsDelivr. No plugins or Lenis. Use is subject to the applicable GSAP licence: https://gsap.com/standard-license/.
- One locally bundled, generated concept photograph created with OpenAI image generation for this fictional example. It does not document a real event, real workshop attendees or a testimonial.
- System Arial/Helvetica/sans-serif fonts; no font files or third-party photography are required.
- Section code is covered by the GSAP Vault licence supplied with your download. The included image may be replaced normally; no image-generation service is needed to use this section.

## What You Get

- `index.html`: working demo page
- `assets/script.js`: commented, readable source
- `assets/style.css`: effect styles
- `README.md`: full documentation with examples and framework integration notes
- `START-HERE-AI.md`: product-specific copy-paste prompt for AI-assisted setup
- `LICENSE.txt`: standard license terms
- Lifetime updates: re-download anytime from your library

## Get the Code

This website section is included only in the Vault, for existing and new owners. It is not sold individually. The standard licence covers unlimited personal and commercial projects; bundled assets retain their own licence requirements.

- [Get the Vault](https://gsapvault.com/pricing)
- [The Vault (£99 one-time, best value): every collection in the Vault library, plus future items added to those collections](https://gsapvault.com/effects)

---

From [GSAP Vault](https://gsapvault.com): production-ready GSAP animation effects. Full catalog for agents: https://gsapvault.com/llms-full.txt
