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
| Attribute | Type | Default | Description |
|---|---|---|---|
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.comevent template. - Yahoo Calendar — opens a pre-filled
calendar.yahoo.comevent template. - iCal download — downloads an RFC 5545
.icsfile from/api/teams/<team>/calendar/<id>.icsfor 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:
- The
localeattribute (forwarded as?locale=). - The team's configured default locale.
- 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 havetype="module"and thedatastar-pro-alpha1importmap 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
localeattribute explicitly, or configure the team default.
CORS errors
- The API allows requests from
*.investorcaller.comby default. - For other domains, contact support to add the origin to the allowlist.