Solid.js Demo

Live <kal-calendar> below — loaded via script tag. See the integration guide for Solid.js project setup.

Event Log

Solid.js Integration Guide
# Install the package
npm install kalendly

# Import styles in your root component or index.css
import 'kalendly/styles';
// Calendar.tsx
import 'kalendly';

interface Props {
  events?: CalendarEvent[];
  title?: string;
  onDateSelect?: (e: CustomEvent) => void;
  onMonthChange?: (e: CustomEvent) => void;
}

export function Calendar(props: Props) {
  return (
    <kal-calendar
      title={props.title}
      prop:events={props.events ?? []}
      on:cal-date-select={props.onDateSelect}
      on:cal-month-change={props.onMonthChange}
    />
  );
}
// App.tsx
import { createSignal } from 'solid-js';
import { Calendar } from './Calendar';
import type { CalendarEvent } from 'kalendly/core';

export function App() {
  const [events, setEvents] = createSignal<CalendarEvent[]>([
    { id: 1, name: 'Team Standup', date: new Date() },
  ]);

  function onDateSelect(e: CustomEvent) {
    console.log('Selected:', e.detail.date, e.detail.events);
  }

  return (
    <Calendar
      events={events()}
      title="My Calendar"
      onDateSelect={onDateSelect}
    />
  );
}
// src/types/solid-ce.d.ts
// Extend Solid's JSX namespace for kal-calendar
import type { CalendarEvent } from 'kalendly/core';

declare module 'solid-js' {
  namespace JSX {
    interface IntrinsicElements {
      'kal-calendar': {
        title?: string;
        'initial-date'?: string;
        'week-starts-on'?: '0' | '1';
        'prop:events'?: CalendarEvent[];
        'on:cal-date-select'?: (e: CustomEvent) => void;
        'on:cal-month-change'?: (e: CustomEvent) => void;
      };
    }
  }
}