Embeddable OTE widgets

opentechevents.org

Two Web Components that render or link to events from any OTE JSON feed. No framework, no build step, no package to install — one <script> tag and one element. Try each widget below; the snippet panel always reflects exactly what you're seeing. Switch to Reference for versioning and host-app integration docs.

Basics
data source

The URL of an OTE feed.json document. Enter several, comma-separated, to combine them (uses the feeds attribute instead of feed).

Optional. Renders only the event with this OTE id — for an event's own page. Ignores show-past, since an id is an explicit request for that event. No match shows "Event not found".

Optional maximum number of events to show. Default: no limit.

Appearance

Optional. Cards use a built-in placeholder when an event has no image.

Optional CSS font-family for the widget.

Optional base font-size for the widget.

Cards layout only. Minimum card width in the responsive grid — also accepts any raw CSS length via the attribute (e.g. card-width="280px"), or set --ote-card-min-width directly in CSS.

Behavior
fields — preview / detail

Which optional pieces of each event show on the card (Preview) versus the detail modal / list layout's expanded row (Detail). Ignored entirely by the calendar layout.

Field Preview Detail
image
when
location
attendance
description
price
tags
organizer
eligibility
cfp
group-events

Cards layout only. Collapses events that share the same partOf.id into one stacked card with a badge; the detail modal gains prev/next between occurrences. Off by default. To try it, switch to JSON source mode above and paste events whose partOf field shares an id, e.g. "partOf": {"id": "https://example.org/series/monthly", "type": "series"}.

Language of the widget's own UI text (loading/empty/error messages). "auto" follows the visitor's browser language.

Include events whose start date has already passed. Default: on.

Actions

What happens when a visitor selects an event. Default: modal.

event-actions

Native actions. The default placement is the event detail view.

Adds a custom action with an icon that shows an alert for the selected event.

Live preview

Copy-paste snippet

This is the exact markup for the configuration above.

The snippet uses a fixed widget version. Use /embed/latest/ only when you explicitly want automatic updates.