react-hijri-calendar
Version:
A pluggable React calendar component supporting Hijri and Gregorian dates, theming, and custom rendering.
3 lines (2 loc) • 28.3 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),n=require("react"),a=require("date-fns"),t=require("moment-hijri");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=r(n),i=r(t);var l={calendarContainer:"Calendar-module_calendarContainer__rTPS0",header:"Calendar-module_header__yQ8Am",monthYearText:"Calendar-module_monthYearText__CJ3sp",chevronButton:"Calendar-module_chevronButton__GX61I",tableContainer:"Calendar-module_tableContainer__2XyhB",table:"Calendar-module_table__JXfM5",tableHeader:"Calendar-module_tableHeader__5no-M",tableCell:"Calendar-module_tableCell__-AYVb",selected:"Calendar-module_selected__GQis7",unavailable:"Calendar-module_unavailable__d7uzS",currentDay:"Calendar-module_currentDay__PfSpv",available:"Calendar-module_available__MyxUh",cellContent:"Calendar-module_cellContent__PqG7n",dayContainer:"Calendar-module_dayContainer__t1m7Z",notCurrentMonth:"Calendar-module_notCurrentMonth__6sY-p",iconsContainer:"Calendar-module_iconsContainer__1-FPs",actionsContainer:"Calendar-module_actionsContainer__MtSAR",toggleButton:"Calendar-module_toggleButton__fErWb",chevronContainer:"Calendar-module_chevronContainer__-hlub"};!function(e,n){void 0===n&&(n={});var a=n.insertAt;if(e&&"undefined"!=typeof document){var t=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===a&&t.firstChild?t.insertBefore(r,t.firstChild):t.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}(".Calendar-module_calendarContainer__rTPS0 {\n --calendar-primary: #1b8354;\n --calendar-unavailable: #6c737f;\n --border-color: #f3f3f3;\n width: 100%;\n background-color: white;\n border-radius: 8px;\n}\n\n.Calendar-module_header__yQ8Am {\n display: flex;\n height: 48px;\n align-items: center;\n justify-content: space-between;\n background-color: #f9fafb;\n color: #161616;\n padding: 0 24px;\n}\n\n.Calendar-module_monthYearText__CJ3sp span:first-child {\n font-size: 22px;\n padding: 0 8px;\n font-weight: bold;\n}\n\n@media (min-width: 768px) {\n .Calendar-module_calendarContainer__rTPS0 {\n max-width: 92vw;\n font-size: 14px;\n }\n .Calendar-module_header__yQ8Am {\n height: 48px;\n }\n .Calendar-module_monthYearText__CJ3sp span:last-child {\n font-size: 16px;\n }\n}\n\n.Calendar-module_chevronButton__GX61I {\n background-color: transparent;\n border: none;\n padding: 0;\n cursor: pointer;\n}\n\n.Calendar-module_tableContainer__2XyhB {\n overflow-x: auto;\n}\n\n.Calendar-module_table__JXfM5 {\n min-width: 100%;\n border: 3px solid var(--border-color);\n background-color: white;\n /* border-collapse: collapse; */\n /* table-layout: fixed; */\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n.Calendar-module_tableHeader__5no-M {\n padding: 4px;\n font-size: 14px;\n}\n\n@media (min-width: 768px) {\n .Calendar-module_tableHeader__5no-M {\n font-size: 16px;\n }\n}\n\n.Calendar-module_tableCell__-AYVb {\n border: 1px solid var(--border-color);\n text-align: center;\n font-size: 14px;\n font-weight: 600;\n transition: background-color 1000ms;\n cursor: pointer;\n opacity: 1;\n background-color: white;\n color: inherit;\n vertical-align: top;\n padding: 0;\n}\n\n@media (min-width: 768px) {\n .Calendar-module_tableCell__-AYVb {\n border-width: 2px;\n font-size: 16px;\n }\n}\n\n.Calendar-module_selected__GQis7 {\n background-color: var(--calendar-primary) !important;\n color: white !important;\n}\n.Calendar-module_selected__GQis7:hover {\n background-color: var(--calendar-primary) !important;\n color: white !important;\n}\n\n.Calendar-module_unavailable__d7uzS {\n background-color: #e5e7eb !important;\n color: var(--calendar-unavailable) !important;\n cursor: not-allowed !important;\n}\n\n.Calendar-module_currentDay__PfSpv:not(.Calendar-module_selected__GQis7) {\n color: var(--calendar-primary) !important;\n}\n\n.Calendar-module_available__MyxUh:hover {\n background-color: #f3f4f6;\n}\n\n.Calendar-module_unavailable__d7uzS:hover {\n background-color: #e5e7eb !important;\n}\n\n.Calendar-module_cellContent__PqG7n {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n padding: 18px 4px;\n text-align: center;\n}\n\n@media (min-width: 768px) {\n .Calendar-module_cellContent__PqG7n {\n padding: 24px 4px;\n }\n}\n\n.Calendar-module_dayContainer__t1m7Z {\n font-weight: 600;\n opacity: 1;\n}\n\n.Calendar-module_notCurrentMonth__6sY-p .Calendar-module_dayContainer__t1m7Z {\n opacity: 0.7;\n}\n\n.Calendar-module_iconsContainer__1-FPs {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.Calendar-module_actionsContainer__MtSAR {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n}\n\n.Calendar-module_toggleButton__fErWb {\n background-color: transparent;\n border: none;\n cursor: pointer;\n color: var(--calendar-primary);\n font-weight: bold;\n font-size: 16px;\n}\n\n.Calendar-module_actionsContainer__MtSAR {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n}\n\n.Calendar-module_chevronContainer__-hlub {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n");const d=["محرم","صفر","ربيع الأول","ربيع الثاني","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],s=["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'ban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],u=11,c=e=>0===e.month,h=e=>e.month===u,m=e=>{try{return i.default(`${e.year}/${e.month+1}/${e.day}`,"iYYYY/iM/iD").toDate()}catch(e){return new Date}},f=e=>{const n=i.default(e).format("iYYYY/iM/iD"),[a,t,r]=n.split("/").map(Number);return{day:r,month:t-1,year:a}},y=(e,n)=>{try{const a=n===u?0:n+1,t=n===u?e+1:e,r=i.default(`${t}/${a+1}/1`,"iYYYY/iM/iD").clone().subtract(1,"day");return Number.parseInt(r.format("iD"),10)}catch(e){return n%2==0?30:29}},g=(e,n,t)=>e?(e=>{const n=[],t=y(e.year,e.month),r=m({day:1,month:e.month,year:e.year});for(let t=a.getDay(r);t>0;t--){const a=c(e),r=m({day:y(a?e.year-1:e.year,a?u:e.month-1)-t+1,month:a?u:e.month-1,year:a?e.year-1:e.year});n.push(r)}for(let a=1;a<=t;a++){const t=m({day:a,month:e.month,year:e.year});n.push(t)}const o=42-n.length;for(let a=1;a<=o;a++){const t=h(e),r=m({day:a,month:t?0:e.month+1,year:t?e.year+1:e.year});n.push(r)}return n})(t):(e=>{const n=a.startOfMonth(e),t=a.endOfMonth(e),r=[];for(let e=a.getDay(n);e>0;e--)r.push(a.subDays(n,e));for(let t=0;t<a.getDaysInMonth(e);t++)r.push(a.addDays(n,t));const o=42-r.length;for(let e=1;e<=o;e++)r.push(a.addDays(t,e));return r})(n),b=({date:n,isSelected:t,isAvailable:r,isCurrentDay:o,isCurrentMonth:i,isHijri:d,dayCellClassName:s,dayCellStyle:u,onClick:c,renderDayCell:h,availableRowData:m})=>{var y;const g=f(n);return e.jsx("td",{"aria-disabled":!r,"aria-selected":t,className:[l.tableCell,o?l.currentDay:"",i?l.currentMonth:l.notCurrentMonth,s||""].join(" "),role:"gridcell",style:u,tabIndex:-1,onClick:()=>c(n),children:h?h({date:n,isSelected:t,isAvailable:r,isCurrentDay:o,isCurrentMonth:i,hijriDate:g,availableCellData:m}):e.jsx("div",{className:[l.cellContent,t?l.selected:"",r?l.available:l.unavailable].join(" "),children:e.jsx("div",{className:l.dayContainer,children:d?String(null!==(y=g.day)&&void 0!==y?y:""):a.format(n,"d")})})})},p=()=>e.jsx("svg",{fill:"none",height:"13",viewBox:"0 0 7 13",width:"7",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M6.31641 12.2109L6.86328 11.6914C6.97266 11.5547 6.97266 11.3359 6.86328 11.2266L1.91406 6.25L6.86328 1.30078C6.97266 1.19141 6.97266 0.972656 6.86328 0.835938L6.31641 0.316406C6.17969 0.179688 5.98828 0.179688 5.85156 0.316406L0.109375 6.03125C0 6.16797 0 6.35938 0.109375 6.49609L5.85156 12.2109C5.98828 12.3477 6.17969 12.3477 6.31641 12.2109Z",fill:"#161616"})}),v=()=>e.jsx("svg",{fill:"none",height:"25",viewBox:"0 0 24 25",width:"24",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M9.65625 6.31641L9.10938 6.83594C9 6.97266 9 7.19141 9.10938 7.30078L14.0586 12.25L9.10938 17.2266C9 17.3359 9 17.5547 9.10938 17.6914L9.65625 18.2109C9.79297 18.3477 9.98438 18.3477 10.1211 18.2109L15.8633 12.4961C15.9727 12.3594 15.9727 12.168 15.8633 12.0312L10.1211 6.31641C9.98438 6.17969 9.79297 6.17969 9.65625 6.31641Z",fill:"#161616"})}),w=({month:n,year:a,isHijri:t,labels:r,onToggleHijri:o,onPrev:i,onNext:d,lang:s})=>{const u="ar"===s,c=n=>{const a="prev"===n?u?v:p:u?p:v,t="prev"===n?i:d;return e.jsx("button",{className:l.chevronButton,type:"button",onClick:t,children:e.jsx(a,{})})};return e.jsxs("div",{className:l.header,children:[e.jsxs("div",{className:l.monthYearText,children:[e.jsx("span",{children:n}),e.jsx("span",{children:a})]}),e.jsxs("div",{className:l.actionsContainer,children:[e.jsx("button",{"aria-label":"Toggle calendar type",className:l.toggleButton,onClick:o,children:t?r.gregorian:r.hijri}),e.jsxs("span",{className:l.chevronContainer,children:[c("prev"),c("next")]})]})]})},C=({weeks:t,selectedDate:r,availableDatesInfo:i,mode:d,isHijri:s,currentHijriDate:u,currentActiveViewDate:c,dayCellClassName:h,dayCellStyle:m,onDateClick:y,renderDayCell:g,weekDays:p})=>{const v=n.useRef(null),[w,C]=o.default.useState(null);o.default.useEffect(()=>{var e;if(!w&&t.length>0)for(const[n,r]of t.entries())for(const[t,o]of r.entries()){if("allAvailable"===d||!0===(null===(e=null==i?void 0:i.find(e=>e.date===a.format(o,"yyyyMMdd")))||void 0===e?void 0:e.isAvailable))return void C({row:n,col:t})}},[t,i,w,d]);return e.jsxs("table",{ref:v,"aria-label":"Date picker grid",className:l.table,role:"grid",tabIndex:0,onKeyDown:e=>{var n;if(!w)return;const{row:a,col:r}=w;switch(e.key){case"ArrowDown":e.preventDefault(),a<t.length-1&&C({row:a+1,col:r});break;case"ArrowUp":e.preventDefault(),a>0&&C({row:a-1,col:r});break;case"ArrowRight":e.preventDefault(),r<t[a].length-1&&C({row:a,col:r+1});break;case"ArrowLeft":e.preventDefault(),r>0&&C({row:a,col:r-1});break;case"Enter":case" ":{e.preventDefault();const n=t[a][r];y(n);break}case"Escape":e.preventDefault(),null===(n=v.current)||void 0===n||n.blur()}},children:[e.jsx("thead",{children:e.jsx("tr",{children:p.map((n,a)=>e.jsx("th",{className:l.tableHeader,role:"columnheader",scope:"col",children:n},a))})}),e.jsx("tbody",{children:t.map((n,t)=>e.jsx("tr",{role:"row",children:n.map((n,t)=>{const o=!!r&&a.isSameDay(n,r),l=null==i?void 0:i.find(e=>e.date===a.format(n,"yyyyMMdd")),p="allAvailable"===d||!0===(null==l?void 0:l.isAvailable),v=a.isToday(n),w=f(n),C=s?w.month===u.month&&w.year===u.year:a.format(n,"yyyy-MM")===a.format(c,"yyyy-MM");return e.jsx(b,{availableRowData:l,currentActiveViewDate:c,currentHijriDate:u,date:n,dayCellClassName:h,dayCellStyle:m,isAvailable:p,isCurrentDay:v,isCurrentMonth:C,isHijri:s,isSelected:o,renderDayCell:g,onClick:y},t)})},t))})]})},_={en:{hijri:"Hijri",gregorian:"Gregorian",weekdays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},ar:{hijri:"هجري",gregorian:"ميلادي",weekdays:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"]}};function M(e){return(n={})=>{const a=n.width?String(n.width):e.defaultWidth;return e.formats[a]||e.formats[e.defaultWidth]}}function x(e){return(n,a)=>{let t;if("formatting"===(a?.context?String(a.context):"standalone")&&e.formattingValues){const n=e.defaultFormattingWidth||e.defaultWidth,r=a?.width?String(a.width):n;t=e.formattingValues[r]||e.formattingValues[n]}else{const n=e.defaultWidth,r=a?.width?String(a.width):e.defaultWidth;t=e.values[r]||e.values[n]}return t[e.argumentCallback?e.argumentCallback(n):n]}}function j(e){return(n,a={})=>{const t=a.width,r=t&&e.matchPatterns[t]||e.matchPatterns[e.defaultMatchWidth],o=n.match(r);if(!o)return null;const i=o[0],l=t&&e.parsePatterns[t]||e.parsePatterns[e.defaultParseWidth],d=Array.isArray(l)?function(e,n){for(let a=0;a<e.length;a++)if(n(e[a]))return a;return}(l,e=>e.test(i)):function(e,n){for(const a in e)if(Object.prototype.hasOwnProperty.call(e,a)&&n(e[a]))return a;return}(l,e=>e.test(i));let s;s=e.valueCallback?e.valueCallback(d):d,s=a.valueCallback?a.valueCallback(s):s;return{value:s,rest:n.slice(i.length)}}}function D(e){return(n,a={})=>{const t=n.match(e.matchPattern);if(!t)return null;const r=t[0],o=n.match(e.parsePattern);if(!o)return null;let i=e.valueCallback?e.valueCallback(o[0]):o[0];i=a.valueCallback?a.valueCallback(i):i;return{value:i,rest:n.slice(r.length)}}}const k={lessThanXSeconds:{one:"أقل من ثانية واحدة",two:"أقل من ثانتين",threeToTen:"أقل من {{count}} ثواني",other:"أقل من {{count}} ثانية"},xSeconds:{one:"ثانية واحدة",two:"ثانتين",threeToTen:"{{count}} ثواني",other:"{{count}} ثانية"},halfAMinute:"نصف دقيقة",lessThanXMinutes:{one:"أقل من دقيقة",two:"أقل من دقيقتين",threeToTen:"أقل من {{count}} دقائق",other:"أقل من {{count}} دقيقة"},xMinutes:{one:"دقيقة واحدة",two:"دقيقتين",threeToTen:"{{count}} دقائق",other:"{{count}} دقيقة"},aboutXHours:{one:"ساعة واحدة تقريباً",two:"ساعتين تقريباً",threeToTen:"{{count}} ساعات تقريباً",other:"{{count}} ساعة تقريباً"},xHours:{one:"ساعة واحدة",two:"ساعتين",threeToTen:"{{count}} ساعات",other:"{{count}} ساعة"},xDays:{one:"يوم واحد",two:"يومين",threeToTen:"{{count}} أيام",other:"{{count}} يوم"},aboutXWeeks:{one:"أسبوع واحد تقريباً",two:"أسبوعين تقريباً",threeToTen:"{{count}} أسابيع تقريباً",other:"{{count}} أسبوع تقريباً"},xWeeks:{one:"أسبوع واحد",two:"أسبوعين",threeToTen:"{{count}} أسابيع",other:"{{count}} أسبوع"},aboutXMonths:{one:"شهر واحد تقريباً",two:"شهرين تقريباً",threeToTen:"{{count}} أشهر تقريباً",other:"{{count}} شهر تقريباً"},xMonths:{one:"شهر واحد",two:"شهرين",threeToTen:"{{count}} أشهر",other:"{{count}} شهر"},aboutXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"},xYears:{one:"عام واحد",two:"عامين",threeToTen:"{{count}} أعوام",other:"{{count}} عام"},overXYears:{one:"أكثر من عام",two:"أكثر من عامين",threeToTen:"أكثر من {{count}} أعوام",other:"أكثر من {{count}} عام"},almostXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"}},T={date:M({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:M({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:M({formats:{full:"{{date}} 'عند' {{time}}",long:"{{date}} 'عند' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},S={lastWeek:"'أخر' eeee 'عند' p",yesterday:"'أمس عند' p",today:"'اليوم عند' p",tomorrow:"'غداً عند' p",nextWeek:"eeee 'عند' p",other:"P"},P={code:"ar-SA",formatDistance:(e,n,a)=>{let t;const r=k[e];return t="string"==typeof r?r:1===n?r.one:2===n?r.two:n<=10?r.threeToTen.replace("{{count}}",String(n)):r.other.replace("{{count}}",String(n)),a?.addSuffix?a.comparison&&a.comparison>0?"في خلال "+t:"منذ "+t:t},formatLong:T,formatRelative:(e,n,a,t)=>S[e],localize:{ordinalNumber:e=>String(e),era:x({values:{narrow:["ق","ب"],abbreviated:["ق.م.","ب.م."],wide:["قبل الميلاد","بعد الميلاد"]},defaultWidth:"wide"}),quarter:x({values:{narrow:["1","2","3","4"],abbreviated:["ر1","ر2","ر3","ر4"],wide:["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:x({values:{narrow:["ي","ف","م","أ","م","ي","ي","أ","س","أ","ن","د"],abbreviated:["ينا","فبر","مارس","أبريل","مايو","يونـ","يولـ","أغسـ","سبتـ","أكتـ","نوفـ","ديسـ"],wide:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"]},defaultWidth:"wide"}),day:x({values:{narrow:["ح","ن","ث","ر","خ","ج","س"],short:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],abbreviated:["أحد","اثنـ","ثلا","أربـ","خميـ","جمعة","سبت"],wide:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},defaultWidth:"wide"}),dayPeriod:x({values:{narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"}},defaultWidth:"wide",formattingValues:{narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"في الصباح",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"في الصباح",afternoon:"بعد الظهر",evening:"في المساء",night:"في الليل"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:D({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:j({matchPatterns:{narrow:/^(ق|ب)/i,abbreviated:/^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\s?)/i,wide:/^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^قبل/i,/^بعد/i]},defaultParseWidth:"any"}),quarter:j({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^ر[1234]/i,wide:/^الربع [1234]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:j({matchPatterns:{narrow:/^[يفمأمسند]/i,abbreviated:/^(ين|ف|مار|أب|ماي|يون|يول|أغ|س|أك|ن|د)/i,wide:/^(ين|ف|مار|أب|ماي|يون|يول|أغ|س|أك|ن|د)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^ي/i,/^ف/i,/^م/i,/^أ/i,/^م/i,/^ي/i,/^ي/i,/^أ/i,/^س/i,/^أ/i,/^ن/i,/^د/i],any:[/^ين/i,/^ف/i,/^مار/i,/^أب/i,/^ماي/i,/^يون/i,/^يول/i,/^أغ/i,/^س/i,/^أك/i,/^ن/i,/^د/i]},defaultParseWidth:"any"}),day:j({matchPatterns:{narrow:/^[حنثرخجس]/i,short:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,abbreviated:/^(أحد|اثن|ثلا|أرب|خمي|جمعة|سبت)/i,wide:/^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^ح/i,/^ن/i,/^ث/i,/^ر/i,/^خ/i,/^ج/i,/^س/i],wide:[/^الأحد/i,/^الاثنين/i,/^الثلاثاء/i,/^الأربعاء/i,/^الخميس/i,/^الجمعة/i,/^السبت/i],any:[/^أح/i,/^اث/i,/^ث/i,/^أر/i,/^خ/i,/^ج/i,/^س/i]},defaultParseWidth:"any"}),dayPeriod:j({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}},W={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},A={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},N={ordinalNumber:(e,n)=>{const a=Number(e),t=a%100;if(t>20||t<10)switch(t%10){case 1:return a+"st";case 2:return a+"nd";case 3:return a+"rd"}return a+"th"},era:x({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:x({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:x({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:x({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:x({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},Y={ordinalNumber:D({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:j({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:j({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:j({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:j({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:j({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},H={code:"en-US",formatDistance:(e,n,a)=>{let t;const r=W[e];return t="string"==typeof r?r:1===n?r.one:r.other.replace("{{count}}",n.toString()),a?.addSuffix?a.comparison&&a.comparison>0?"in "+t:t+" ago":t},formatLong:{date:M({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:M({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:M({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},formatRelative:(e,n,a,t)=>A[e],localize:N,match:Y,options:{weekStartsOn:0,firstWeekContainsDate:1}},z=({initialSelectedDate:t,setSelectedDate:r,availableDatesInfo:o,mode:i="allAvailable",lang:m="en",calendarType:y,renderDayCell:b,className:p,style:v,dayCellStyle:M,dayCellClassName:x,primaryColor:j="#1b8354",unavailableColor:D="#6c737f"})=>{const[k,T]=n.useState(t||null);"customAvailable"!==i||Array.isArray(o)&&0!==o.length||"production"===process.env.NODE_ENV||console.warn("[Calendar] In customAvailable mode, availableDatesInfo should be a non-empty array. All days will be unavailable.");const S=_[m]||_.en,W="hijri"===y||"gregorian"!==y&&"ar"===m,{weeks:A,currentMonthYear:N,handleDateClick:Y,goToPreviousMonth:z,goToNextMonth:E,toggleHijri:X,isHijri:q,currentHijriDate:B,currentActiveViewDate:O}=((e,t,r,o,i)=>{const[l,m]=n.useState(new Date),[y,b]=n.useState(()=>f(new Date)),[p,v]=n.useState(o),w=n.useMemo(()=>"ar"===r?P:H,[r]),C=n.useCallback(()=>{if(v(!p),!p){const e=f(l);b(e)}},[p,l]),_=[],M=g(p,l,y);for(let e=0;e<M.length;e+=7)_.push(M.slice(e,e+7));const x=new Date(1970,0,1),j=a.setDay(x,0),D=Array.from({length:7}).map((e,n)=>a.format(a.addDays(j,n),w===H?"EE":"EEEE",{locale:w})),k=p?{month:("ar"===r?d:s)[y.month],year:y.year.toString()}:{month:a.format(l,"MMMM",{locale:w}),year:a.getYear(l).toString()};return{weekdayNames:D,weeks:_,handleDateClick:n=>{var r;if("allAvailable"===i)return void t(n);const o=a.format(n,"yyyyMMdd");!0===(null===(r=null==e?void 0:e.find(e=>e.date===o))||void 0===r?void 0:r.isAvailable)&&t(n)},goToPreviousMonth:()=>{if(p){const e=c(y),n=e?u:y.month-1,a=e?y.year-1:y.year;b(Object.assign(Object.assign({},y),{month:n,year:a}))}else m(a.subMonths(l,1))},goToNextMonth:()=>{if(p){const e=h(y),n=e?0:y.month+1,a=e?y.year+1:y.year;b(Object.assign(Object.assign({},y),{month:n,year:a}))}else m(a.addMonths(l,1))},toggleHijri:C,isHijri:p,currentHijriDate:y,currentActiveViewDate:l,currentMonthYear:k}})(o||[],e=>{r&&(r(e),T(e))},m,W,i),J=S.weekdays,L=Object.assign(Object.assign({"--calendar-primary":j,"--calendar-unavailable":D},v),{direction:"ar"===m?"rtl":"ltr"});return e.jsxs("div",{"aria-label":"Calendar",className:`${l.calendarContainer} ${p||""}`,role:"region",style:L,children:[e.jsx(w,{isHijri:q,labels:S,lang:m,month:N.month,year:N.year,onNext:()=>{E()},onPrev:()=>{z()},onToggleHijri:X}),e.jsx("div",{className:l.tableContainer,children:e.jsx(C,{availableDatesInfo:o,currentActiveViewDate:O,currentHijriDate:B,dayCellClassName:x,dayCellStyle:M,isHijri:q,mode:i,renderDayCell:b,selectedDate:k,weekDays:J,weeks:A,onDateClick:Y})})]})};z.displayName="Calendar",exports.Calendar=z;
//# sourceMappingURL=index.cjs.js.map