kalendly 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +492 -0
- package/dist/core/index.d.mts +181 -0
- package/dist/core/index.d.ts +181 -0
- package/dist/core/index.js +349 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/index.mjs +309 -0
- package/dist/core/index.mjs.map +1 -0
- package/dist/index.d.mts +623 -0
- package/dist/index.d.ts +623 -0
- package/dist/index.js +1445 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1403 -0
- package/dist/index.mjs.map +1 -0
- package/dist/react/index.d.mts +208 -0
- package/dist/react/index.d.ts +208 -0
- package/dist/react/index.js +558 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/index.mjs +516 -0
- package/dist/react/index.mjs.map +1 -0
- package/dist/react-native/index.d.mts +465 -0
- package/dist/react-native/index.d.ts +465 -0
- package/dist/react-native/index.js +894 -0
- package/dist/react-native/index.js.map +1 -0
- package/dist/react-native/index.mjs +851 -0
- package/dist/react-native/index.mjs.map +1 -0
- package/dist/styles/calendar.css +500 -0
- package/dist/vanilla/index.d.mts +214 -0
- package/dist/vanilla/index.d.ts +214 -0
- package/dist/vanilla/index.js +621 -0
- package/dist/vanilla/index.js.map +1 -0
- package/dist/vanilla/index.mjs +579 -0
- package/dist/vanilla/index.mjs.map +1 -0
- package/dist/vanilla/index.umd.js +604 -0
- package/dist/vanilla/index.umd.js.map +1 -0
- package/dist/vue/index.js +1 -0
- package/dist/vue/index.mjs +439 -0
- package/package.json +161 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/core/utils.ts","../src/core/calendar-engine.ts","../src/react/index.tsx","../src/react/components/Calendar.tsx","../src/react/components/DatePopup.tsx","../src/react-native/index.tsx","../src/react-native/components/Calendar.tsx","../src/react-native/components/DatePopup.tsx","../src/styles/react-native-styles.ts","../src/vanilla/index.ts","../src/vanilla/Calendar.ts"],"sourcesContent":["// Main entry point - exports core functionality\n// For framework-specific implementations, use:\n// - kalendly/vanilla\n// - kalendly/react\n// - kalendly/vue\n// - kalendly/react-native\n\n// Core exports\nexport * from './core';\n\n// Framework-specific exports (Vue is excluded as it's built separately with Vite)\nexport * as React from './react';\nexport * as ReactNative from './react-native';\nexport * as Vanilla from './vanilla';\n\n// Main package info\nexport const version = '1.0.0';\nexport const name = 'kalendly';\n\n// Convenience re-exports for common usage\nexport { Calendar as ReactCalendar } from './react';\nexport { Calendar as ReactNativeCalendar } from './react-native';\nexport { createCalendar as createVanillaCalendar } from './vanilla';\n\n// Note: For Vue, import directly from 'kalendly/vue'\n","import { CalendarEvent, CalendarDate } from './types';\n\nexport const MONTHS = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n];\n\nexport const DAYS = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n];\n\n/**\n * Normalizes a date to midnight (00:00:00) for comparison purposes\n */\nexport function normalizeDate(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n}\n\n/**\n * Checks if two dates are the same day\n */\nexport function isSameDay(date1: Date, date2: Date): boolean {\n return normalizeDate(date1).getTime() === normalizeDate(date2).getTime();\n}\n\n/**\n * Checks if a date is today\n */\nexport function isToday(date: Date): boolean {\n return isSameDay(date, new Date());\n}\n\n/**\n * Generates an array of years for the year selector\n */\nexport function generateYears(minYear?: number, maxYear?: number): number[] {\n const currentYear = new Date().getFullYear();\n const min = minYear ?? currentYear - 30;\n const max = maxYear ?? currentYear + 10;\n\n return Array.from({ length: max - min + 1 }, (_, i) => min + i);\n}\n\n/**\n * Gets events for a specific date\n */\nexport function getEventsForDate(\n events: CalendarEvent[],\n date: Date\n): CalendarEvent[] {\n const normalizedTargetDate = normalizeDate(date);\n\n return events.filter(event => {\n const eventDate = normalizeDate(new Date(event.date));\n return eventDate.getTime() === normalizedTargetDate.getTime();\n });\n}\n\n/**\n * Checks if a date has any events\n */\nexport function hasEvents(events: CalendarEvent[], date: Date): boolean {\n return getEventsForDate(events, date).length > 0;\n}\n\n/**\n * Generates calendar dates for a given month and year\n */\nexport function generateCalendarDates(\n year: number,\n month: number,\n events: CalendarEvent[] = [],\n weekStartsOn: 0 | 1 = 0\n): (CalendarDate | null)[][] {\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const daysInMonth = lastDay.getDate();\n\n // Adjust first day based on week start preference\n let firstDayOfWeek = firstDay.getDay();\n if (weekStartsOn === 1) {\n firstDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;\n }\n\n const dates: (CalendarDate | null)[][] = [];\n let day = 1;\n\n for (let week = 0; week < 6; week++) {\n const weekDates: (CalendarDate | null)[] = [];\n\n for (let dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) {\n if (week === 0 && dayOfWeek < firstDayOfWeek) {\n weekDates.push(null);\n } else if (day > daysInMonth) {\n weekDates.push(null);\n } else {\n const currentDate = new Date(year, month, day);\n const dateEvents = getEventsForDate(events, currentDate);\n\n weekDates.push({\n date: currentDate,\n isCurrentMonth: true,\n isToday: isToday(currentDate),\n hasEvents: dateEvents.length > 0,\n events: dateEvents,\n });\n day++;\n }\n }\n\n dates.push(weekDates);\n\n // Break early if we've filled all days and the rest of the row is empty\n if (day > daysInMonth && weekDates.every(date => date === null)) {\n break;\n }\n }\n\n return dates;\n}\n\n/**\n * Gets the popup position class based on the selected day index\n */\nexport function getPopupPositionClass(selectedDayIndex: number | null): string {\n if (selectedDayIndex === null) return 'popup-center-bottom';\n\n if (selectedDayIndex < 3) {\n return 'popup-right';\n } else if (selectedDayIndex > 4) {\n return 'popup-left';\n } else {\n return 'popup-center-bottom';\n }\n}\n\n/**\n * Gets CSS classes for a calendar cell\n */\nexport function getCellClasses(calendarDate: CalendarDate | null): string[] {\n if (!calendarDate) return [];\n\n const classes: string[] = [];\n\n if (calendarDate.isToday) {\n classes.push('schedule--current--exam');\n }\n\n if (calendarDate.hasEvents) {\n classes.push('has--event');\n }\n\n return classes;\n}\n\n/**\n * Formats a date for display\n */\nexport function formatDateForDisplay(date: Date): string {\n return `${DAYS[date.getDay()]} ${date.getDate()}`;\n}\n\n/**\n * Gets month and year text for display\n */\nexport function getMonthYearText(year: number, month: number): string {\n return `${MONTHS[month]} ${year}`;\n}\n","import {\n CalendarEvent,\n CalendarState,\n CalendarConfig,\n CalendarActions,\n CalendarViewModel,\n} from './types';\nimport {\n generateCalendarDates,\n getEventsForDate,\n generateYears,\n getPopupPositionClass,\n getMonthYearText,\n formatDateForDisplay,\n MONTHS,\n DAYS,\n} from './utils';\n\nexport class CalendarEngine {\n private state: CalendarState;\n private config: CalendarConfig;\n private listeners: Set<() => void> = new Set();\n\n constructor(config: CalendarConfig) {\n this.config = config;\n\n const initialDate = config.initialDate || new Date();\n this.state = {\n currentYear: initialDate.getFullYear(),\n currentMonth: initialDate.getMonth(),\n currentDate: initialDate.getDate(),\n selectedDate: null,\n selectedDayIndex: null,\n tasks: [],\n };\n }\n\n /**\n * Subscribe to state changes\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n /**\n * Notify all listeners of state changes\n */\n private notify(): void {\n this.listeners.forEach(listener => listener());\n }\n\n /**\n * Get current state\n */\n getState(): CalendarState {\n return { ...this.state };\n }\n\n /**\n * Get view model with computed properties\n */\n getViewModel(): CalendarViewModel {\n const calendarDates = generateCalendarDates(\n this.state.currentYear,\n this.state.currentMonth,\n this.config.events,\n this.config.weekStartsOn\n );\n\n return {\n ...this.state,\n months: MONTHS,\n days: DAYS,\n years: generateYears(this.config.minYear, this.config.maxYear),\n monthAndYearText: getMonthYearText(\n this.state.currentYear,\n this.state.currentMonth\n ),\n scheduleDay: this.state.selectedDate\n ? formatDateForDisplay(this.state.selectedDate)\n : '',\n calendarDates,\n popupPositionClass: getPopupPositionClass(this.state.selectedDayIndex),\n };\n }\n\n /**\n * Get actions object\n */\n getActions(): CalendarActions {\n return {\n next: this.next.bind(this),\n previous: this.previous.bind(this),\n jump: this.jump.bind(this),\n selectDate: this.selectDate.bind(this),\n updateTasks: this.updateTasks.bind(this),\n };\n }\n\n /**\n * Navigate to next month\n */\n private next(): void {\n if (this.state.currentMonth === 11) {\n this.state.currentMonth = 0;\n this.state.currentYear++;\n } else {\n this.state.currentMonth++;\n }\n\n this.state.selectedDate = null;\n this.state.selectedDayIndex = null;\n this.updateTasks();\n this.notify();\n }\n\n /**\n * Navigate to previous month\n */\n private previous(): void {\n if (this.state.currentMonth === 0) {\n this.state.currentMonth = 11;\n this.state.currentYear--;\n } else {\n this.state.currentMonth--;\n }\n\n this.state.selectedDate = null;\n this.state.selectedDayIndex = null;\n this.updateTasks();\n this.notify();\n }\n\n /**\n * Jump to specific month and year\n */\n private jump(year: number, month: number): void {\n this.state.currentYear = year;\n this.state.currentMonth = month;\n this.state.selectedDate = null;\n this.state.selectedDayIndex = null;\n this.updateTasks();\n this.notify();\n }\n\n /**\n * Select a specific date\n */\n private selectDate(date: Date, dayIndex?: number): void {\n this.state.selectedDate = date;\n this.state.selectedDayIndex = dayIndex ?? null;\n this.state.currentDate = date.getDate();\n this.state.currentMonth = date.getMonth();\n this.state.currentYear = date.getFullYear();\n this.updateTasks();\n this.notify();\n }\n\n /**\n * Update tasks for the currently selected date\n */\n private updateTasks(): void {\n if (!this.state.selectedDate) {\n this.state.tasks = [];\n return;\n }\n\n this.state.tasks = getEventsForDate(\n this.config.events,\n this.state.selectedDate\n );\n }\n\n /**\n * Update events configuration\n */\n updateEvents(events: CalendarEvent[]): void {\n this.config.events = events;\n this.updateTasks();\n this.notify();\n }\n\n /**\n * Handle date cell click\n */\n handleDateClick(date: Date, dayIndex?: number): void {\n this.selectDate(date, dayIndex);\n }\n\n /**\n * Check if date has events\n */\n hasEventsForDate(date: Date): boolean {\n return getEventsForDate(this.config.events, date).length > 0;\n }\n\n /**\n * Get events for a specific date\n */\n getEventsForDate(date: Date): CalendarEvent[] {\n return getEventsForDate(this.config.events, date);\n }\n\n /**\n * Clear selected date\n */\n clearSelection(): void {\n this.state.selectedDate = null;\n this.state.selectedDayIndex = null;\n this.state.tasks = [];\n this.notify();\n }\n\n /**\n * Destroy the engine and cleanup listeners\n */\n destroy(): void {\n this.listeners.clear();\n }\n}\n","export { Calendar } from './components/Calendar';\nexport { DatePopup } from './components/DatePopup';\nexport * from './types';\n\n// Re-export core types and utilities for convenience\nexport * from '../core';\n","import React, { useEffect, useState, useCallback, useMemo } from 'react';\nimport { CalendarEngine, getCellClasses } from '../../core';\nimport { CalendarComponentProps } from '../types';\nimport { DatePopup } from './DatePopup';\n\nexport const Calendar: React.FC<CalendarComponentProps> = ({\n events,\n initialDate,\n minYear,\n maxYear,\n weekStartsOn = 0,\n onDateSelect,\n onEventClick,\n onMonthChange,\n className = '',\n style,\n renderEvent,\n renderNoEvents,\n title = 'Event Schedule',\n}) => {\n const engine = useMemo(\n () =>\n new CalendarEngine({\n events,\n initialDate,\n minYear,\n maxYear,\n weekStartsOn,\n }),\n []\n );\n\n const [, forceUpdate] = useState({});\n const rerender = useCallback(() => forceUpdate({}), []);\n\n useEffect(() => {\n const unsubscribe = engine.subscribe(rerender);\n return unsubscribe;\n }, [engine, rerender]);\n\n useEffect(() => {\n engine.updateEvents(events);\n }, [engine, events]);\n\n useEffect(() => {\n return () => {\n engine.destroy();\n };\n }, [engine]);\n\n const viewModel = engine.getViewModel();\n const actions = engine.getActions();\n const { selectedDate, tasks, selectedDayIndex } = viewModel;\n\n const handleDateClick = (\n event: React.MouseEvent<HTMLTableSectionElement>\n ) => {\n const td = (event.target as HTMLElement).closest('td');\n if (!td) return;\n\n const cellContent = td.textContent?.trim();\n if (!cellContent) return;\n\n const clickedDate = new Date(\n viewModel.currentYear,\n viewModel.currentMonth,\n parseInt(cellContent)\n );\n\n const dayIndex = td.parentNode\n ? Array.from(td.parentNode.children).indexOf(td)\n : 0;\n engine.handleDateClick(clickedDate, dayIndex);\n\n onDateSelect?.(clickedDate);\n };\n\n const handleMonthChange = () => {\n onMonthChange?.(viewModel.currentYear, viewModel.currentMonth);\n };\n\n const handleYearChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const year = parseInt(event.target.value);\n actions.jump(year, viewModel.currentMonth);\n handleMonthChange();\n };\n\n const handleMonthSelectChange = (\n event: React.ChangeEvent<HTMLSelectElement>\n ) => {\n const month = parseInt(event.target.value);\n actions.jump(viewModel.currentYear, month);\n handleMonthChange();\n };\n\n const handleNext = () => {\n actions.next();\n handleMonthChange();\n };\n\n const handlePrevious = () => {\n actions.previous();\n handleMonthChange();\n };\n\n return (\n <div className={`kalendly-calendar ${className}`} style={style}>\n {title && (\n <div className=\"page--title\">\n <h1>{title}</h1>\n </div>\n )}\n\n <div className=\"calendar--content\">\n <div className=\"calendar--card\">\n <h3 className=\"calendar--card--header\">\n {viewModel.monthAndYearText}\n </h3>\n\n <table className=\"calendar--table calendar--table--bordered\">\n <thead>\n <tr>\n {viewModel.days.map(day => (\n <th key={day}>{day.slice(0, 3)}</th>\n ))}\n </tr>\n </thead>\n <tbody onClick={handleDateClick}>\n {viewModel.calendarDates.map((week, weekIndex) => (\n <tr key={weekIndex}>\n {week.map((calendarDate, dayIndex) => {\n const cellClasses = getCellClasses(calendarDate);\n return (\n <td\n key={`${weekIndex}-${dayIndex}`}\n className={cellClasses.join(' ')}\n >\n {calendarDate?.date.getDate() || ''}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n\n <div className=\"calendar--navigation--buttons\">\n <button\n className=\"calendar--navigation--btn\"\n onClick={handlePrevious}\n >\n Previous\n </button>\n <button className=\"calendar--navigation--btn\" onClick={handleNext}>\n Next\n </button>\n </div>\n\n <form className=\"calendar--form--jump\">\n <div className=\"calendar--lead\">Jump To:</div>\n <div>\n <label className=\"calendar--form--jump--item\">\n <select\n value={viewModel.currentMonth}\n onChange={handleMonthSelectChange}\n aria-label=\"Select month\"\n >\n {viewModel.months.map((month, index) => (\n <option key={index} value={index}>\n {month}\n </option>\n ))}\n </select>\n </label>\n </div>\n <div>\n <label className=\"calendar--form--jump--item\">\n <select\n value={viewModel.currentYear}\n onChange={handleYearChange}\n aria-label=\"Select year\"\n >\n {viewModel.years.map(year => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </select>\n </label>\n </div>\n </form>\n\n <DatePopup\n isVisible={!!selectedDate}\n selectedDate={selectedDate}\n events={tasks}\n scheduleDay={viewModel.scheduleDay}\n popupPositionClass={viewModel.popupPositionClass}\n onClose={() => engine.clearSelection()}\n onEventClick={onEventClick}\n renderEvent={renderEvent}\n renderNoEvents={renderNoEvents}\n />\n </div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { DatePopupProps } from '../types';\n\nexport const DatePopup: React.FC<DatePopupProps> = ({\n isVisible,\n selectedDate,\n events,\n scheduleDay,\n popupPositionClass,\n onEventClick,\n onClose,\n renderEvent,\n renderNoEvents,\n}) => {\n if (!isVisible || !selectedDate) return null;\n\n const handleEventClick = (event: any) => {\n onEventClick?.(event);\n };\n\n const defaultRenderEvent = (event: any) => (\n <li\n key={event.id || event.name}\n className={`event--item${onEventClick ? ' clickable' : ''}`}\n onClick={() => handleEventClick(event)}\n >\n {event.name}\n </li>\n );\n\n const defaultRenderNoEvents = () => (\n <div className=\"no-events-message\">No events scheduled for this day.</div>\n );\n\n return (\n <div className={`date-popup ${popupPositionClass}`}>\n <button\n type=\"button\"\n className=\"popup-close\"\n onClick={onClose}\n aria-label=\"Close\"\n >\n ✕\n </button>\n <div className=\"schedule--wrapper\">\n <div className=\"schedule--block\">\n <h2 className=\"schedule--day\">{scheduleDay}</h2>\n </div>\n\n {events.length > 0 ? (\n <div className=\"event--wrapper\">\n <ul>\n {events.map(event =>\n renderEvent ? (\n <li\n key={event.id || event.name}\n className={`event--item${onEventClick ? ' clickable' : ''}`}\n onClick={() => handleEventClick(event)}\n >\n {renderEvent(event)}\n </li>\n ) : (\n defaultRenderEvent(event)\n )\n )}\n </ul>\n </div>\n ) : renderNoEvents ? (\n renderNoEvents()\n ) : (\n defaultRenderNoEvents()\n )}\n </div>\n </div>\n );\n};\n","export { Calendar } from './components/Calendar';\nexport { DatePopup } from './components/DatePopup';\nexport * from './types';\nexport { calendarStyles } from '../styles/react-native-styles';\n\n// Re-export core types and utilities for convenience\nexport * from '../core';\n","import React, { useEffect, useState, useCallback, useMemo } from 'react';\nimport { View, Text, TouchableOpacity, ScrollView, Alert } from 'react-native';\nimport { CalendarEngine, getCellClasses } from '../../core';\nimport { CalendarComponentProps, SelectProps } from '../types';\nimport { DatePopup } from './DatePopup';\nimport { calendarStyles } from '../../styles/react-native-styles';\n\n// Simple Select component for React Native\nconst Select: React.FC<SelectProps> = ({\n options,\n selectedValue,\n onValueChange,\n style,\n textStyle,\n}) => {\n const selectedOption = options.find(opt => opt.value === selectedValue);\n\n const showPicker = () => {\n Alert.alert(\n 'Select Option',\n '',\n options.map(option => ({\n text: option.label,\n onPress: () => onValueChange(option.value),\n }))\n );\n };\n\n return (\n <TouchableOpacity\n style={[calendarStyles.jumpSelect, style]}\n onPress={showPicker}\n >\n <Text style={[calendarStyles.jumpSelectText, textStyle]}>\n {selectedOption?.label}\n </Text>\n </TouchableOpacity>\n );\n};\n\nexport const Calendar: React.FC<CalendarComponentProps> = ({\n events,\n initialDate,\n minYear,\n maxYear,\n weekStartsOn = 0,\n onDateSelect,\n onEventClick,\n onMonthChange,\n style,\n containerStyle,\n headerStyle,\n headerTextStyle,\n cellStyle,\n cellTextStyle,\n renderEvent,\n renderNoEvents,\n title = 'Event Schedule',\n showCloseButton = true,\n}) => {\n const engine = useMemo(\n () =>\n new CalendarEngine({\n events,\n initialDate,\n minYear,\n maxYear,\n weekStartsOn,\n }),\n []\n );\n\n const [, forceUpdate] = useState({});\n const rerender = useCallback(() => forceUpdate({}), []);\n\n useEffect(() => {\n const unsubscribe = engine.subscribe(rerender);\n return unsubscribe;\n }, [engine, rerender]);\n\n useEffect(() => {\n engine.updateEvents(events);\n }, [engine, events]);\n\n const viewModel = engine.getViewModel();\n const actions = engine.getActions();\n const { selectedDate, tasks } = viewModel;\n\n const handleDatePress = (date: Date, dayIndex: number) => {\n engine.handleDateClick(date, dayIndex);\n onDateSelect?.(date);\n };\n\n const handleNext = () => {\n actions.next();\n onMonthChange?.(viewModel.currentYear, viewModel.currentMonth);\n };\n\n const handlePrevious = () => {\n actions.previous();\n onMonthChange?.(viewModel.currentYear, viewModel.currentMonth);\n };\n\n const handleMonthChange = (month: number) => {\n actions.jump(viewModel.currentYear, month);\n onMonthChange?.(viewModel.currentYear, month);\n };\n\n const handleYearChange = (year: number) => {\n actions.jump(year, viewModel.currentMonth);\n onMonthChange?.(year, viewModel.currentMonth);\n };\n\n const closePopup = () => {\n engine.clearSelection();\n };\n\n const monthOptions = viewModel.months.map((month, index) => ({\n label: month,\n value: index,\n }));\n\n const yearOptions = viewModel.years.map(year => ({\n label: year.toString(),\n value: year,\n }));\n\n return (\n <ScrollView style={[calendarStyles.container, containerStyle]}>\n {title && (\n <View style={calendarStyles.titleContainer}>\n <Text style={calendarStyles.title}>{title}</Text>\n </View>\n )}\n\n <View style={[calendarStyles.contentContainer, style]}>\n <View style={calendarStyles.card}>\n <View style={[calendarStyles.cardHeader, headerStyle]}>\n <Text style={[calendarStyles.cardHeaderText, headerTextStyle]}>\n {viewModel.monthAndYearText}\n </Text>\n </View>\n\n <View style={calendarStyles.table}>\n {/* Table Header */}\n <View style={calendarStyles.tableHeader}>\n {viewModel.days.map(day => (\n <View key={day} style={calendarStyles.tableHeaderCell}>\n <Text style={calendarStyles.tableHeaderText}>\n {day.slice(0, 3)}\n </Text>\n </View>\n ))}\n </View>\n\n {/* Calendar Rows */}\n {viewModel.calendarDates.map((week, weekIndex) => (\n <View key={weekIndex} style={calendarStyles.tableRow}>\n {week.map((calendarDate, dayIndex) => {\n const cellClasses = getCellClasses(calendarDate);\n const isToday = cellClasses.includes(\n 'schedule--current--exam'\n );\n const hasEvents = cellClasses.includes('has--event');\n\n return (\n <TouchableOpacity\n key={`${weekIndex}-${dayIndex}`}\n style={[\n calendarStyles.tableCell,\n cellStyle,\n isToday && calendarStyles.cellToday,\n hasEvents && calendarStyles.cellWithEvents,\n ]}\n onPress={() => {\n if (calendarDate) {\n handleDatePress(calendarDate.date, dayIndex);\n }\n }}\n disabled={!calendarDate}\n >\n {calendarDate && (\n <>\n <Text\n style={[\n calendarStyles.tableCellText,\n cellTextStyle,\n isToday && calendarStyles.cellTodayText,\n ]}\n >\n {calendarDate.date.getDate()}\n </Text>\n {hasEvents && (\n <View style={calendarStyles.eventIndicator} />\n )}\n </>\n )}\n </TouchableOpacity>\n );\n })}\n </View>\n ))}\n </View>\n\n {/* Navigation Buttons */}\n <View style={calendarStyles.navigationContainer}>\n <TouchableOpacity\n style={calendarStyles.navigationButton}\n onPress={handlePrevious}\n >\n <Text style={calendarStyles.navigationButtonText}>Previous</Text>\n </TouchableOpacity>\n <TouchableOpacity\n style={calendarStyles.navigationButton}\n onPress={handleNext}\n >\n <Text style={calendarStyles.navigationButtonText}>Next</Text>\n </TouchableOpacity>\n </View>\n\n {/* Jump Form */}\n <View style={calendarStyles.jumpForm}>\n <Text style={calendarStyles.jumpLabel}>Jump To:</Text>\n <Select\n options={monthOptions}\n selectedValue={viewModel.currentMonth}\n onValueChange={handleMonthChange}\n />\n <Select\n options={yearOptions}\n selectedValue={viewModel.currentYear}\n onValueChange={handleYearChange}\n />\n </View>\n </View>\n </View>\n\n <DatePopup\n visible={!!selectedDate}\n selectedDate={selectedDate}\n events={tasks}\n scheduleDay={viewModel.scheduleDay}\n onClose={closePopup}\n renderEvent={renderEvent}\n renderNoEvents={renderNoEvents}\n showCloseButton={showCloseButton}\n />\n </ScrollView>\n );\n};\n","import React from 'react';\nimport { Modal, View, Text, TouchableOpacity, ScrollView } from 'react-native';\nimport { DatePopupProps } from '../types';\nimport { calendarStyles } from '../../styles/react-native-styles';\n\nexport const DatePopup: React.FC<DatePopupProps> = ({\n visible,\n selectedDate,\n events,\n scheduleDay,\n onClose,\n renderEvent,\n renderNoEvents,\n showCloseButton = true,\n}) => {\n if (!selectedDate) return null;\n\n const defaultRenderEvent = (event: any) => (\n <View key={event.id || event.name} style={calendarStyles.eventItem}>\n <Text style={calendarStyles.eventItemText}>{event.name}</Text>\n </View>\n );\n\n const defaultRenderNoEvents = () => (\n <View style={calendarStyles.noEventsMessage}>\n <Text style={calendarStyles.noEventsText}>\n No events scheduled for this day.\n </Text>\n </View>\n );\n\n return (\n <Modal\n visible={visible}\n transparent\n animationType=\"fade\"\n onRequestClose={onClose}\n >\n <TouchableOpacity\n style={calendarStyles.popupOverlay}\n activeOpacity={1}\n onPress={onClose}\n >\n <TouchableOpacity\n style={calendarStyles.popup}\n activeOpacity={1}\n onPress={e => e.stopPropagation()}\n >\n <View style={calendarStyles.popupWrapper}>\n {showCloseButton && (\n <TouchableOpacity\n style={calendarStyles.popupCloseButton}\n onPress={onClose}\n accessibilityLabel=\"Close\"\n >\n <Text style={calendarStyles.popupCloseText}>✕</Text>\n </TouchableOpacity>\n )}\n <View style={calendarStyles.popupBlock}>\n <Text style={calendarStyles.popupDay}>{scheduleDay}</Text>\n </View>\n\n <ScrollView showsVerticalScrollIndicator={false}>\n {events.length > 0 ? (\n <View style={calendarStyles.eventsList}>\n {events.map(event =>\n renderEvent ? renderEvent(event) : defaultRenderEvent(event)\n )}\n </View>\n ) : renderNoEvents ? (\n renderNoEvents()\n ) : (\n defaultRenderNoEvents()\n )}\n </ScrollView>\n </View>\n\n {showCloseButton && (\n <TouchableOpacity\n style={calendarStyles.popupCloseButton}\n onPress={onClose}\n >\n <Text style={calendarStyles.popupCloseText}>×</Text>\n </TouchableOpacity>\n )}\n </TouchableOpacity>\n </TouchableOpacity>\n </Modal>\n );\n};\n","import { StyleSheet, Dimensions } from 'react-native';\n\nconst { width } = Dimensions.get('window');\nconst cellSize = (width - 60) / 7; // Account for padding\n\nexport const colors = {\n primary: '#fc8917',\n secondary: '#fca045',\n tertiary: '#fdb873',\n text: '#2c3e50',\n border: '#dee2e6',\n todayOutline: '#f7db04',\n eventIndicator: '#1890ff',\n background: '#fff',\n white: '#ffffff',\n};\n\nexport const calendarStyles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: colors.background,\n },\n\n titleContainer: {\n paddingVertical: 20,\n alignItems: 'center',\n },\n\n title: {\n fontSize: 24,\n fontWeight: '600',\n color: colors.text,\n },\n\n contentContainer: {\n marginHorizontal: 20,\n marginTop: 20,\n },\n\n card: {\n backgroundColor: colors.background,\n borderRadius: 8,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.1,\n shadowRadius: 3.84,\n elevation: 5,\n overflow: 'hidden',\n },\n\n cardHeader: {\n backgroundColor: colors.tertiary,\n paddingVertical: 15,\n paddingHorizontal: 20,\n borderBottomWidth: 1,\n borderBottomColor: colors.border,\n },\n\n cardHeaderText: {\n fontSize: 18,\n fontWeight: '500',\n color: colors.text,\n textAlign: 'center',\n },\n\n // Calendar Table Styles\n table: {\n backgroundColor: colors.background,\n },\n\n tableHeader: {\n flexDirection: 'row',\n backgroundColor: 'rgba(252, 137, 23, 0.1)',\n borderBottomWidth: 2,\n borderBottomColor: colors.border,\n },\n\n tableHeaderCell: {\n flex: 1,\n paddingVertical: 12,\n borderRightWidth: 1,\n borderRightColor: colors.border,\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n tableHeaderText: {\n fontSize: 14,\n fontWeight: '600',\n color: colors.text,\n },\n\n tableRow: {\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomColor: colors.border,\n },\n\n tableCell: {\n flex: 1,\n height: cellSize,\n borderRightWidth: 1,\n borderRightColor: colors.border,\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n },\n\n tableCellText: {\n fontSize: 16,\n color: colors.text,\n },\n\n // Calendar Cell States\n cellToday: {\n borderWidth: 2,\n borderColor: colors.todayOutline,\n },\n\n cellTodayText: {\n fontWeight: 'bold',\n },\n\n cellWithEvents: {\n backgroundColor: 'rgba(252, 160, 69, 0.3)',\n },\n\n eventIndicator: {\n position: 'absolute',\n bottom: 2,\n width: 4,\n height: 4,\n backgroundColor: colors.eventIndicator,\n borderRadius: 2,\n },\n\n // Navigation Buttons\n navigationContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 20,\n paddingVertical: 20,\n gap: 15,\n },\n\n navigationButton: {\n flex: 1,\n backgroundColor: 'transparent',\n borderWidth: 1,\n borderColor: colors.primary,\n borderRadius: 6,\n paddingVertical: 12,\n paddingHorizontal: 16,\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n navigationButtonText: {\n color: colors.primary,\n fontSize: 16,\n fontWeight: '500',\n },\n\n navigationButtonPressed: {\n backgroundColor: colors.primary,\n },\n\n navigationButtonTextPressed: {\n color: colors.white,\n },\n\n // Jump Form\n jumpForm: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 20,\n paddingBottom: 20,\n gap: 10,\n },\n\n jumpLabel: {\n fontSize: 18,\n fontWeight: '300',\n color: colors.text,\n },\n\n jumpSelect: {\n borderWidth: 1,\n borderColor: colors.border,\n borderRadius: 6,\n paddingHorizontal: 12,\n paddingVertical: 8,\n backgroundColor: colors.background,\n minWidth: 80,\n },\n\n jumpSelectText: {\n fontSize: 16,\n color: colors.text,\n textAlign: 'center',\n },\n\n // Popup Styles\n popupOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1000,\n },\n\n popup: {\n backgroundColor: colors.background,\n borderRadius: 12,\n padding: 0,\n width: width * 0.8,\n maxWidth: 300,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 4,\n },\n shadowOpacity: 0.3,\n shadowRadius: 6,\n elevation: 8,\n },\n\n popupWrapper: {\n backgroundColor: colors.secondary,\n borderRadius: 12,\n padding: 12,\n },\n\n popupBlock: {\n backgroundColor: colors.primary,\n borderRadius: 8,\n paddingVertical: 8,\n paddingHorizontal: 12,\n marginBottom: 10,\n },\n\n popupDay: {\n fontSize: 16,\n fontWeight: '600',\n color: colors.white,\n textAlign: 'center',\n },\n\n eventsList: {\n gap: 6,\n },\n\n eventItem: {\n backgroundColor: colors.tertiary,\n borderRadius: 6,\n padding: 12,\n },\n\n eventItemText: {\n fontSize: 14,\n color: colors.text,\n },\n\n noEventsMessage: {\n backgroundColor: colors.tertiary,\n borderRadius: 6,\n padding: 12,\n alignItems: 'center',\n },\n\n noEventsText: {\n fontSize: 14,\n color: colors.text,\n textAlign: 'center',\n },\n\n popupCloseButton: {\n position: 'absolute',\n top: -10,\n right: -10,\n backgroundColor: colors.primary,\n borderRadius: 15,\n width: 30,\n height: 30,\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n popupCloseText: {\n color: colors.white,\n fontSize: 16,\n fontWeight: 'bold',\n },\n});\n\nexport default calendarStyles;\n","export { VanillaCalendar, createCalendar } from './Calendar';\nexport * from './types';\n\n// Re-export core types and utilities for convenience\nexport * from '../core';\n","import { CalendarEngine, getCellClasses } from '../core';\nimport { VanillaCalendarProps, VanillaCalendarInstance } from './types';\n\nexport class VanillaCalendar implements VanillaCalendarInstance {\n private engine: CalendarEngine;\n private container: HTMLElement;\n private unsubscribe: (() => void) | null = null;\n private props: VanillaCalendarProps;\n private actions: ReturnType<CalendarEngine['getActions']>;\n\n constructor(props: VanillaCalendarProps) {\n this.props = props;\n\n // Get container element\n if (typeof props.container === 'string') {\n const element = document.querySelector(props.container);\n if (!element) {\n throw new Error(`Container element \"${props.container}\" not found`);\n }\n this.container = element as HTMLElement;\n } else {\n this.container = props.container;\n }\n\n // Initialize engine\n this.engine = new CalendarEngine({\n events: props.events,\n initialDate: props.initialDate,\n minYear: props.minYear,\n maxYear: props.maxYear,\n weekStartsOn: props.weekStartsOn,\n });\n\n // Cache actions for event handlers\n this.actions = this.engine.getActions();\n\n this.init();\n }\n\n private init(): void {\n // Add CSS class to container\n this.container.classList.add('kalendly-calendar');\n if (this.props.className) {\n this.container.classList.add(this.props.className);\n }\n\n // Subscribe to engine changes\n this.unsubscribe = this.engine.subscribe(() => {\n this.render();\n });\n\n // Initial render\n this.render();\n }\n\n private render(): void {\n const viewModel = this.engine.getViewModel();\n\n const defaultRenderEvent = (event: any) =>\n `<li class=\"event--item\">${event.name}</li>`;\n const defaultRenderNoEvents = () =>\n '<div class=\"no-events-message\">No events scheduled for this day.</div>';\n\n const renderEvent = this.props.renderEvent || defaultRenderEvent;\n const renderNoEvents = this.props.renderNoEvents || defaultRenderNoEvents;\n\n const html = `\n ${\n this.props.title\n ? `\n <div class=\"page--title\">\n <h1>${this.props.title}</h1>\n </div>\n `\n : ''\n }\n \n <div class=\"calendar--content\">\n <div class=\"calendar--card\">\n <h3 class=\"calendar--card--header\">${viewModel.monthAndYearText}</h3>\n \n <table class=\"calendar--table calendar--table--bordered\">\n <thead>\n <tr>\n ${viewModel.days.map(day => `<th>${day.slice(0, 3)}</th>`).join('')}\n </tr>\n </thead>\n <tbody data-calendar-body>\n ${viewModel.calendarDates\n .map(\n (week, weekIndex) => `\n <tr>\n ${week\n .map((calendarDate, dayIndex) => {\n const classes = getCellClasses(calendarDate);\n const dateString = calendarDate\n ? calendarDate.date.toISOString()\n : '';\n return `\n <td \n class=\"${classes.join(' ')}\" \n data-date=\"${dateString}\"\n data-day-index=\"${dayIndex}\"\n ${calendarDate ? 'data-clickable=\"true\"' : ''}\n >\n ${calendarDate?.date.getDate() || ''}\n </td>\n `;\n })\n .join('')}\n </tr>\n `\n )\n .join('')}\n </tbody>\n </table>\n\n ${\n viewModel.selectedDate\n ? `\n <div class=\"date-popup ${viewModel.popupPositionClass}\">\n <button type=\"button\" class=\"popup-close\" data-action=\"close-popup\" aria-label=\"Close\">✕</button>\n <div class=\"schedule--wrapper\">\n <div class=\"schedule--block\">\n <h2 class=\"schedule--day\">${viewModel.scheduleDay}</h2>\n </div>\n ${\n viewModel.tasks.length > 0\n ? `\n <div class=\"event--wrapper\">\n <ul>\n ${viewModel.tasks.map(event => renderEvent(event)).join('')}\n </ul>\n </div>\n `\n : renderNoEvents()\n }\n </div>\n </div>\n `\n : ''\n }\n\n <div class=\"calendar--navigation--buttons\">\n <button class=\"calendar--navigation--btn\" data-action=\"previous\">\n Previous\n </button>\n <button class=\"calendar--navigation--btn\" data-action=\"next\">\n Next\n </button>\n </div>\n\n <form class=\"calendar--form--jump\">\n <div class=\"calendar--lead\">Jump To:</div>\n <div>\n <label class=\"calendar--form--jump--item\">\n <select data-month-select>\n ${viewModel.months\n .map(\n (month, index) => `\n <option value=\"${index}\" ${index === viewModel.currentMonth ? 'selected' : ''}>\n ${month}\n </option>\n `\n )\n .join('')}\n </select>\n </label>\n </div>\n <div>\n <label class=\"calendar--form--jump--item\">\n <select data-year-select>\n ${viewModel.years\n .map(\n year => `\n <option value=\"${year}\" ${year === viewModel.currentYear ? 'selected' : ''}>\n ${year}\n </option>\n `\n )\n .join('')}\n </select>\n </label>\n </div>\n </form>\n </div>\n </div>\n `;\n\n this.container.innerHTML = html;\n this.attachEventListeners();\n }\n\n private attachEventListeners(): void {\n // Date cell clicks\n const tableBody = this.container.querySelector('[data-calendar-body]');\n if (tableBody) {\n tableBody.addEventListener('click', e => {\n const target = e.target as HTMLElement;\n const cell = target.closest('td[data-clickable=\"true\"]') as HTMLElement;\n\n if (cell && cell.dataset.date) {\n const date = new Date(cell.dataset.date);\n const dayIndex = parseInt(cell.dataset.dayIndex || '0');\n this.engine.handleDateClick(date, dayIndex);\n\n // Trigger custom event\n this.container.dispatchEvent(\n new CustomEvent('dateSelect', {\n detail: { date, dayIndex },\n })\n );\n }\n });\n }\n\n // Navigation buttons\n const prevBtn = this.container.querySelector('[data-action=\"previous\"]');\n const nextBtn = this.container.querySelector('[data-action=\"next\"]');\n\n if (prevBtn) {\n prevBtn.addEventListener('click', () => {\n this.actions.previous();\n this.container.dispatchEvent(\n new CustomEvent('monthChange', {\n detail: {\n year: this.engine.getViewModel().currentYear,\n month: this.engine.getViewModel().currentMonth,\n },\n })\n );\n });\n }\n\n if (nextBtn) {\n nextBtn.addEventListener('click', () => {\n this.actions.next();\n this.container.dispatchEvent(\n new CustomEvent('monthChange', {\n detail: {\n year: this.engine.getViewModel().currentYear,\n month: this.engine.getViewModel().currentMonth,\n },\n })\n );\n });\n }\n\n // Month/Year selects\n const monthSelect = this.container.querySelector(\n '[data-month-select]'\n ) as HTMLSelectElement;\n const yearSelect = this.container.querySelector(\n '[data-year-select]'\n ) as HTMLSelectElement;\n\n if (monthSelect) {\n monthSelect.addEventListener('change', e => {\n const target = e.target as HTMLSelectElement;\n const month = parseInt(target.value);\n const year = this.engine.getViewModel().currentYear;\n this.actions.jump(year, month);\n\n this.container.dispatchEvent(\n new CustomEvent('monthChange', {\n detail: { year, month },\n })\n );\n });\n }\n\n if (yearSelect) {\n yearSelect.addEventListener('change', e => {\n const target = e.target as HTMLSelectElement;\n const year = parseInt(target.value);\n const month = this.engine.getViewModel().currentMonth;\n this.actions.jump(year, month);\n\n this.container.dispatchEvent(\n new CustomEvent('monthChange', {\n detail: { year, month },\n })\n );\n });\n }\n\n // Close popup button\n const closeBtn = this.container.querySelector(\n '[data-action=\"close-popup\"]'\n );\n if (closeBtn) {\n closeBtn.addEventListener('click', e => {\n e.stopPropagation();\n this.engine.clearSelection();\n });\n }\n\n // Close popup on outside click\n document.addEventListener('click', e => {\n const target = e.target as HTMLElement;\n const popup = this.container.querySelector('.date-popup');\n\n if (\n popup &&\n !popup.contains(target) &&\n !target.closest('[data-calendar-body]')\n ) {\n this.engine.clearSelection();\n }\n });\n }\n\n // Public API methods\n public updateEvents(events: import('../core').CalendarEvent[]): void {\n this.engine.updateEvents(events);\n }\n\n public getCurrentDate(): Date | null {\n return this.engine.getViewModel().selectedDate;\n }\n\n public goToDate(date: Date): void {\n this.actions.jump(date.getFullYear(), date.getMonth());\n }\n\n public getEngine(): CalendarEngine {\n return this.engine;\n }\n\n public destroy(): void {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n\n this.engine.destroy();\n this.container.innerHTML = '';\n this.container.classList.remove('kalendly-calendar');\n\n if (this.props.className) {\n this.container.classList.remove(this.props.className);\n }\n }\n}\n\n// Factory function for easier usage\nexport function createCalendar(\n props: VanillaCalendarProps\n): VanillaCalendarInstance {\n return new VanillaCalendar(props);\n}\n"],"mappings":"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","names":["Calendar","import_jsx_runtime","Calendar","DatePopup","import_react","import_react_native","import_react_native","import_jsx_runtime","DatePopup","import_jsx_runtime","Calendar","isToday","hasEvents","DatePopup"]}
|