Skip to content

Calendar

Lab Available in release assets

Evaluate a bounded progressive calendar surface while retaining the native date input and ordinary server request as the canonical, locale-aware path.

Calendar primary example

Show code
<section class="thin-calendar" aria-labelledby="calendar-title">
  <h2 id="calendar-title">Choose a report date</h2>
  <form action="/reports" method="get">
    <label for="report-date">Date</label>
    <input class="thin-input" id="report-date" name="date" type="date" min="2026-08-01" max="2026-08-31" required />
    <small>Dates use your locale; the server interprets this as America/Chicago.</small>
    <button class="thin-button">Continue</button>
  </form>
  <details>
    <summary>Open experimental calendar surface</summary>
    <div role="group" aria-label="August 2026 calendar">
      <p><a href="?date=2026-08-14">Friday, August 14</a></p>
      <p><span aria-disabled="true">Saturday, August 15 unavailable</span></p>
      <p><a href="?date=2026-08-16">Sunday, August 16</a></p>
    </div>
  </details>
</section>

Each authored example uses the production assets and includes copyable markup.

Anatomy

  • Native date form
  • Explicit server timezone guidance
  • Optional disclosure
  • Durable date links
  • Disabled-date text

Variants and sizes

  • Native only — shown above
  • Single-date experimental surface — shown above
  • Locale-specific week start — shown above

Rendered fixtures exercise authored content and constrained layouts with the same production assets.

  • No JavaScript — shown above
  • Keyboard navigation — shown above
  • Focus return — shown above
  • Disabled date — shown above
  • Range guidance — shown above
  • Server validation error — shown above
  • Locale and week start — shown above
  • Timezone boundary — shown above
  • Reconnect after morph — shown above

Interaction and keyboard behavior

The native input submits normally. Any experimental surface must mirror server-authored dates, preserve keyboard and focus behavior, and refresh after morph; it never invents availability, ranges, or scheduling rules.

Accessibility

Keep the native input labelled and available, state timezone assumptions, expose disabled dates in text, preserve logical focus, and return server validation beside the canonical field.

Contract
NATIVE
Basis
Native date input and links/disclosure; no APG Grid claim while the fixture remains a link-based calendar
Evidence
  • tests/unit/library/calendar.test.ts

API

Use section.thin-calendar around a native input[type=date] form. Optional calendar markup is progressive evidence only and remains Lab.

Behavior tier: dependency-free

Structured host, property, and example tables are not authored for this item yet. Use the summary above and the primary example.

Fallback

The native date input, constraints, guidance, and ordinary form submission remain complete without the experimental surface.

Assets and dependencies

  • /foundation.css
  • /labs.css

Dependencies: None

Source: packages/ui/src/items/calendar/style.ts

Composition

Derived from the examples and style specs, not authored.

Composes