@hamedf/svelte-persian-datepicker
Version:
A comprehensive Svelte 5 Persian/Jalali DateTime picker component with multi-calendar support (Jalali, Gregorian, Hijri), multiple selection modes (single, range, multiple), and extensive customization options
188 lines (180 loc) • 5.52 kB
JavaScript
/**
* AI/LLM Guide for Persian DatePicker Component
*
* This file provides structured information to help AI coding assistants
* understand and work with the Persian DatePicker component effectively.
*
* @fileoverview AI-friendly component documentation and usage patterns
* @version 1.0.3
* @author Hamed Fallah
*/
// ====================================================================
// AI/LLM COMPONENT USAGE PATTERNS
// Common patterns and configurations for AI coding assistance
// ====================================================================
/**
* AI Usage Patterns - Copy these for common scenarios
*/
export const AI_USAGE_PATTERNS = {
// Basic single date selection
SINGLE_DATE: `
<script>
let selectedDate: string;
</script>
<DatePicker bind:model={selectedDate} />
`,
// Persian calendar date range
PERSIAN_RANGE: `
<script>
let dateRange: string[];
</script>
<DatePicker
bind:model={dateRange}
mode="range"
locale="fa"
dual_input={true}
/>
`,
// Multiple date selection
MULTIPLE_DATES: `
<script>
let multipleDates: string[];
</script>
<DatePicker
bind:model={multipleDates}
mode="multiple"
auto_submit={false}
/>
`,
// Time picker only
TIME_ONLY: `
<script>
let selectedTime: string;
</script>
<DatePicker
bind:model={selectedTime}
type="time"
from="08:00"
to="20:00"
/>
`,
// DateTime with validation
DATETIME_VALIDATED: `
<script>
let dateTime: string;
const disableWeekends = (date) => [0, 6].includes(date.weekday());
</script>
<DatePicker
bind:model={dateTime}
type="datetime"
from="1403/01/01"
to="1405/12/29"
disable={disableWeekends}
/>
`,
// Multi-language support
MULTI_LANGUAGE: `
<script>
let date: string;
</script>
<DatePicker
bind:model={date}
locale="fa,en"
input_calendar="auto"
/>
`,
// Modal with custom styling
MODAL_STYLED: `
<script>
let date: string;
</script>
<DatePicker
bind:model={date}
modal={true}
color="blue"
clearable={true}
/>
`
};
// ====================================================================
// AI TROUBLESHOOTING GUIDE
// Common issues and solutions for AI assistants
// ====================================================================
export const AI_TROUBLESHOOTING = {
'No date shows in input': 'Check if model is bound correctly with bind:model',
'Date format wrong': 'Use from/to props for boundaries, format prop for model format',
'Calendar not showing': 'Verify locale prop and input_calendar setting',
'Range selection not working': "Set mode='range' and consider dual_input={true}",
'Disabled dates not working': 'Check disable prop format - array, function, or regex',
'Styling issues': 'Use color prop for themes, styles prop for custom CSS',
'Modal not responsive': 'Use modal={true} and check viewport settings',
'Time picker missing': "Set type='time' or type='datetime'",
'Multiple selection issues': "Set mode='multiple' and auto_submit={false}",
'Validation not working': 'Use from/to for boundaries, disable for specific dates'
};
// ====================================================================
// COMPONENT CONFIGURATIONS FOR COMMON USE CASES
// Ready-to-use configurations that AI can recommend
// ====================================================================
export const AI_CONFIGURATIONS = {
// Standard Persian date picker
STANDARD_PERSIAN: {
locale: 'fa',
type: 'date',
mode: 'single',
clearable: true,
auto_submit: true
},
// Business date range picker
BUSINESS_RANGE: {
mode: 'range',
dual_input: true,
locale: 'fa',
color: 'blue',
clearable: true
},
// Event scheduling picker
EVENT_SCHEDULER: {
type: 'datetime',
mode: 'multiple',
auto_submit: false,
modal: true,
clearable: true
},
// Working hours time picker
WORKING_HOURS: {
type: 'time',
from: '08:00',
to: '18:00',
mode: 'range',
dual_input: true
},
// International date picker
INTERNATIONAL: {
locale: 'fa,en',
input_calendar: 'auto',
type: 'date',
color: 'green'
}
};
/**
* AI Quick Reference for Props
* Essential props that AI should know about
*/
export const AI_ESSENTIAL_PROPS = {
// MUST KNOW - These are essential for basic functionality
BINDABLE_MODEL: 'bind:model - The main data binding prop',
SELECTION_MODE: "mode - 'single' | 'range' | 'multiple'",
PICKER_TYPE: "type - 'date' | 'time' | 'datetime'",
LOCALE_SETTING: "locale - 'fa' | 'en' | 'ar' | combined",
// SHOULD KNOW - These solve common requirements
DATE_BOUNDARIES: 'from/to - Set date/time limits',
DISABLE_DATES: 'disable - Array, function, or regex to disable dates',
DUAL_INPUTS: 'dual_input - Separate inputs for range mode',
AUTO_SUBMIT: 'auto_submit - Auto-submit on selection',
// NICE TO KNOW - These enhance UX
COLOR_THEME: 'color - Visual theme colors',
MODAL_MODE: 'modal - Show as overlay',
CLEARABLE: 'clearable - Show clear button',
CLICK_BEHAVIOR: 'click_on - What triggers opening'
};