Financial calendar

Embed a team's financial calendar of upcoming and past reporting dates, with add-to-calendar links (<ic-financial-calendar>).

Overview

<ic-financial-calendar> renders a team's financial calendar — upcoming and past reporting dates (interim reports, the AGM, capital markets days, etc.) — as a Date / Content table with a Future / Past tab toggle. Each row offers add-to-calendar links (Google, Yahoo, and a downloadable .ics file).

It ships in the same bundle as the reports widgets (ic-reports.js) and is themed per team the same way. The Future/Past toggle is client-side only — no server round-trip on tab switch.

How to Embed

Add the shared Datastar runtime importmap, the reports bundle, and the calendar element:

<!-- 1. Shared Datastar runtime (required once per page) -->
<script type="importmap">
  {
    "imports": {
      "datastar-pro-alpha1": "https://events-cdn.investorcaller.com/widget/v1/datastar-pro-alpha1.js"
    }
  }
</script>

<!-- 2. Reports bundle (also registers the calendar element) -->
<script type="module" src="https://events-cdn.investorcaller.com/widget-reports/v1/ic-reports.js"></script>

<!-- 3. Add the widget element -->
<ic-financial-calendar team="your-team-slug" locale="en"></ic-financial-calendar>

To override the API origin for staging, add data-api-url to the loading <script> tag (an explicit api-url attribute on the element wins).

Attributes Reference

AttributeTypeDefaultDescription
team string required Team slug. Normalized to trimmed, lower-case, kebab-case.
api-url string https://events.investorcaller.com Override the API origin (useful for staging).
locale string team default → en BCP-47 locale forwarded to the SSE stream as ?locale=. See Localization.

Add-to-calendar Links

Every calendar row renders three add-to-calendar actions:

  • Google Calendar — opens a pre-filled calendar.google.com event template.
  • Yahoo Calendar — opens a pre-filled calendar.yahoo.com event template.
  • iCal download — downloads an RFC 5545 .ics file from /api/teams/<team>/calendar/<id>.ics for import into any calendar app.

All entries are modeled as all-day, floating-date events (the database stores a date with no time). This avoids timezone drift — an event never shows up a day early or late regardless of the viewer's timezone.

Event titles are constructed from the event type and reporting-period year in the resolved locale (e.g. Interim report Q1 2026 / Osavuosikatsaus Q1 2026), not from a single editorial string.

Multiple Instances on One Page

You can place more than one <ic-financial-calendar> on the same page (even for the same team). Each element derives a unique instance_id automatically and namespaces its SSE morph target, so instances never clobber each other. No attribute is required.

Localization

UI strings — tab labels, column headers, link labels, and event titles — ship in English (en), Finnish (fi), and Swedish (sv). The server resolves the locale per request:

  1. The locale attribute (forwarded as ?locale=).
  2. The team's configured default locale.
  3. The literal en.

Theming

The calendar uses the same per-team theming as the reports widgets: the server emits one scoped <style id="ic-theme-<slug>"> block mapping the canonical token vocabulary to --ic-* CSS variables. See Reports → Theming for the full token table.

Troubleshooting

Calendar not loading

  • Ensure both <script> tags have type="module" and the datastar-pro-alpha1 importmap is present.
  • Check the browser console for errors and verify the bundle URL is reachable.

No entries shown

  • Confirm the team has financial calendar entries configured.
  • Check the Future / Past tab — upcoming and past dates are split between them.

Wrong language

  • Set the locale attribute explicitly, or configure the team default.

CORS errors

  • The API allows requests from *.investorcaller.com by default.
  • For other domains, contact support to add the origin to the allowlist.