UNPKG

aura-glass

Version:

A comprehensive glassmorphism design system for React applications with 142+ production-ready components

242 lines (240 loc) 6.85 kB
/** * Date Adapters * Provides adapters for different date libraries (date-fns, dayjs, luxon, etc.) */ /** * Create date-fns adapter * Requires date-fns to be installed: npm install date-fns */ const createDateFnsAdapter = () => { let dateFns; try { // Dynamic import to avoid bundling if not used dateFns = require('date-fns'); } catch (e) { throw new Error('date-fns is not installed. Please install it: npm install date-fns'); } return { format: (date, formatStr) => { const dateObj = typeof date === 'string' ? new Date(date) : date; return dateFns.format(dateObj, formatStr); }, parse: (dateStr, formatStr) => { return dateFns.parse(dateStr, formatStr, new Date()); }, isValid: date => { return dateFns.isValid(new Date(date)); }, addDays: (date, days) => { return dateFns.addDays(date, days); }, addMonths: (date, months) => { return dateFns.addMonths(date, months); }, addYears: (date, years) => { return dateFns.addYears(date, years); }, startOfDay: date => { return dateFns.startOfDay(date); }, startOfWeek: date => { return dateFns.startOfWeek(date); }, startOfMonth: date => { return dateFns.startOfMonth(date); }, startOfYear: date => { return dateFns.startOfYear(date); }, endOfDay: date => { return dateFns.endOfDay(date); }, endOfWeek: date => { return dateFns.endOfWeek(date); }, endOfMonth: date => { return dateFns.endOfMonth(date); }, endOfYear: date => { return dateFns.endOfYear(date); }, isBefore: (date, dateToCompare) => { return dateFns.isBefore(date, dateToCompare); }, isAfter: (date, dateToCompare) => { return dateFns.isAfter(date, dateToCompare); }, isSameDay: (date, dateToCompare) => { return dateFns.isSameDay(date, dateToCompare); }, getDaysInMonth: date => { return dateFns.getDaysInMonth(date); } }; }; /** * Create Day.js adapter * Requires dayjs to be installed: npm install dayjs */ const createDayJsAdapter = () => { let dayjs; try { dayjs = require('dayjs'); } catch (e) { throw new Error('dayjs is not installed. Please install it: npm install dayjs'); } return { format: (date, formatStr) => { return dayjs(date).format(formatStr); }, parse: (dateStr, formatStr) => { return dayjs(dateStr, formatStr).toDate(); }, isValid: date => { return dayjs(date).isValid(); }, addDays: (date, days) => { return dayjs(date).add(days, 'day').toDate(); }, addMonths: (date, months) => { return dayjs(date).add(months, 'month').toDate(); }, addYears: (date, years) => { return dayjs(date).add(years, 'year').toDate(); }, startOfDay: date => { return dayjs(date).startOf('day').toDate(); }, startOfWeek: date => { return dayjs(date).startOf('week').toDate(); }, startOfMonth: date => { return dayjs(date).startOf('month').toDate(); }, startOfYear: date => { return dayjs(date).startOf('year').toDate(); }, endOfDay: date => { return dayjs(date).endOf('day').toDate(); }, endOfWeek: date => { return dayjs(date).endOf('week').toDate(); }, endOfMonth: date => { return dayjs(date).endOf('month').toDate(); }, endOfYear: date => { return dayjs(date).endOf('year').toDate(); }, isBefore: (date, dateToCompare) => { return dayjs(date).isBefore(dayjs(dateToCompare)); }, isAfter: (date, dateToCompare) => { return dayjs(date).isAfter(dayjs(dateToCompare)); }, isSameDay: (date, dateToCompare) => { return dayjs(date).isSame(dayjs(dateToCompare), 'day'); }, getDaysInMonth: date => { return dayjs(date).daysInMonth(); } }; }; /** * Create native Date adapter (no dependencies) */ const createNativeDateAdapter = () => { return { format: (date, formatStr) => { const dateObj = new Date(date); // Simple format implementation return dateObj.toLocaleDateString(); }, parse: (dateStr, formatStr) => { return new Date(dateStr); }, isValid: date => { const d = new Date(date); return d instanceof Date && !isNaN(d.getTime()); }, addDays: (date, days) => { const result = new Date(date); result.setDate(result.getDate() + days); return result; }, addMonths: (date, months) => { const result = new Date(date); result.setMonth(result.getMonth() + months); return result; }, addYears: (date, years) => { const result = new Date(date); result.setFullYear(result.getFullYear() + years); return result; }, startOfDay: date => { const result = new Date(date); result.setHours(0, 0, 0, 0); return result; }, startOfWeek: date => { const result = new Date(date); const day = result.getDay(); const diff = result.getDate() - day; result.setDate(diff); result.setHours(0, 0, 0, 0); return result; }, startOfMonth: date => { const result = new Date(date); result.setDate(1); result.setHours(0, 0, 0, 0); return result; }, startOfYear: date => { const result = new Date(date); result.setMonth(0, 1); result.setHours(0, 0, 0, 0); return result; }, endOfDay: date => { const result = new Date(date); result.setHours(23, 59, 59, 999); return result; }, endOfWeek: date => { const result = new Date(date); const day = result.getDay(); const diff = 6 - day; result.setDate(result.getDate() + diff); result.setHours(23, 59, 59, 999); return result; }, endOfMonth: date => { const result = new Date(date); result.setMonth(result.getMonth() + 1, 0); result.setHours(23, 59, 59, 999); return result; }, endOfYear: date => { const result = new Date(date); result.setMonth(11, 31); result.setHours(23, 59, 59, 999); return result; }, isBefore: (date, dateToCompare) => { return date.getTime() < dateToCompare.getTime(); }, isAfter: (date, dateToCompare) => { return date.getTime() > dateToCompare.getTime(); }, isSameDay: (date, dateToCompare) => { return date.getFullYear() === dateToCompare.getFullYear() && date.getMonth() === dateToCompare.getMonth() && date.getDate() === dateToCompare.getDate(); }, getDaysInMonth: date => { return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(); } }; }; export { createDateFnsAdapter, createDayJsAdapter, createNativeDateAdapter }; //# sourceMappingURL=dateAdapters.js.map