[{"data":1,"prerenderedAt":433},["ShallowReactive",2],{"blog-slugs":3,"project-taqwim-ar":8},{"en":4,"ar":7},[5,6],"dynamic-generic-slots","from-renderless-component-to-composable-function",[5,6],{"id":9,"title":10,"body":11,"description":426,"extension":427,"meta":428,"navigation":79,"path":429,"seo":430,"stem":431,"__hash__":432},"projects/projects/ar/taqwim.md","Taqwim",{"type":12,"value":13,"toc":419},"minimark",[14,18,22,26,221,228,232,243,384,387,390,397,401,412,415],[15,16,17],"h2",{"id":17},"المشكلة",[19,20,21],"p",{},"تقويم أم القرى يُؤخذ من جدول ولا يُحسب بمعادلة، فالاختصارات الحسابية قد تخطئ اليوم. ومكوّنات التقويم تزيد المشكلة: خمسة أطر عمل تعني في العادة خمسة تنفيذات، وأخطاء كل تنفيذ على حدة.",[15,23,25],{"id":24},"تحويل-التواريخ-وتنسيقها","تحويل التواريخ وتنسيقها",[27,28,33],"pre",{"className":29,"code":30,"language":31,"meta":32,"style":32},"language-ts shiki shiki-themes site-light site-light site-dark","import { formatHijriDate, toGregorian, toHijri } from '@taqwim/core'\n\ntoHijri(new Date('2024-03-11'))\n// => { hy: 1445, hm: 9, hd: 1 }\n\ntoGregorian({ hy: 1445, hm: 9, hd: 1 })\n// => Mon Mar 11 2024\n\nformatHijriDate({ hy: 1445, hm: 9, hd: 1 }, 'iYYYY/iMM/iDD', 'ar')\n// => ١٤٤٥/٠٩/٠١\n","ts","",[34,35,36,74,81,105,112,117,160,166,171,215],"code",{"__ignoreMap":32},[37,38,41,45,49,53,56,59,61,64,67,70],"span",{"class":39,"line":40},"line",1,[37,42,44],{"class":43},"sZ9Zp","import",[37,46,48],{"class":47},"sXnUm"," {",[37,50,52],{"class":51},"sBiod"," formatHijriDate",[37,54,55],{"class":47},",",[37,57,58],{"class":51}," toGregorian",[37,60,55],{"class":47},[37,62,63],{"class":51}," toHijri ",[37,65,66],{"class":47},"}",[37,68,69],{"class":43}," from",[37,71,73],{"class":72},"sgVH1"," '@taqwim/core'\n",[37,75,77],{"class":39,"line":76},2,[37,78,80],{"emptyLinePlaceholder":79},true,"\n",[37,82,84,88,91,94,97,99,102],{"class":39,"line":83},3,[37,85,87],{"class":86},"sUqqj","toHijri",[37,89,90],{"class":47},"(",[37,92,93],{"class":43},"new",[37,95,96],{"class":86}," Date",[37,98,90],{"class":47},[37,100,101],{"class":72},"'2024-03-11'",[37,103,104],{"class":47},"))\n",[37,106,108],{"class":39,"line":107},4,[37,109,111],{"class":110},"s5c__","// => { hy: 1445, hm: 9, hd: 1 }\n",[37,113,115],{"class":39,"line":114},5,[37,116,80],{"emptyLinePlaceholder":79},[37,118,120,123,126,130,133,137,139,142,144,147,149,152,154,157],{"class":39,"line":119},6,[37,121,122],{"class":86},"toGregorian",[37,124,125],{"class":47},"({",[37,127,129],{"class":128},"snYWn"," hy",[37,131,132],{"class":47},":",[37,134,136],{"class":135},"sJ-0L"," 1445",[37,138,55],{"class":47},[37,140,141],{"class":128}," hm",[37,143,132],{"class":47},[37,145,146],{"class":135}," 9",[37,148,55],{"class":47},[37,150,151],{"class":128}," hd",[37,153,132],{"class":47},[37,155,156],{"class":135}," 1",[37,158,159],{"class":47}," })\n",[37,161,163],{"class":39,"line":162},7,[37,164,165],{"class":110},"// => Mon Mar 11 2024\n",[37,167,169],{"class":39,"line":168},8,[37,170,80],{"emptyLinePlaceholder":79},[37,172,174,177,179,181,183,185,187,189,191,193,195,197,199,201,204,207,209,212],{"class":39,"line":173},9,[37,175,176],{"class":86},"formatHijriDate",[37,178,125],{"class":47},[37,180,129],{"class":128},[37,182,132],{"class":47},[37,184,136],{"class":135},[37,186,55],{"class":47},[37,188,141],{"class":128},[37,190,132],{"class":47},[37,192,146],{"class":135},[37,194,55],{"class":47},[37,196,151],{"class":128},[37,198,132],{"class":47},[37,200,156],{"class":135},[37,202,203],{"class":47}," },",[37,205,206],{"class":72}," 'iYYYY/iMM/iDD'",[37,208,55],{"class":47},[37,210,211],{"class":72}," 'ar'",[37,213,214],{"class":47},")\n",[37,216,218],{"class":39,"line":217},10,[37,219,220],{"class":110},"// => ١٤٤٥/٠٩/٠١\n",[19,222,223,224,227],{},"التحويل الافتراضي وفق تقويم أم القرى يعتمد على جدول يغطي الأعوام من 1343 إلى 1500 هـ (1924 إلى 2077 م). وإذا طُلب تاريخ خارج هذا المدى أطلق الخطأ ",[34,225,226],{},"HijriRangeError"," ولم يُرجع تاريخًا خاطئًا. أما التقويم الهجري المدني وتقويم TBLA فخياران تستوردهما وتمرّرهما صراحةً. وحساب أيام العمل يعدّ الجمعة والسبت عطلة، ويمكن تغيير ذلك في كل استدعاء.",[15,229,231],{"id":230},"آلة-حالات-واحدة-لخمسة-أطر-عمل","آلة حالات واحدة لخمسة أطر عمل",[19,233,234,235,238,239,242],{},"تتولّى آلة حالات واحدة لا ترتبط بأي إطار عمل بناء شبكة الأيام وإدارة التحديد والتنقّل بين الأشهر وباستخدام لوحة المفاتيح، وتحدّد خصائص ",[34,236,237],{},"data-*"," و ",[34,240,241],{},"aria-*",". وترتبط بها حزم Vue و React و Svelte و Solid و Angular، فتتشارك هذا المنطق. وعندما يكون الخطأ في النواة المشتركة، يُصلح فيها مرة واحدة. وتفحص الاختبارات الشاملة التقويم عبر DOM في الأطر التي تغطيها.",[27,244,248],{"className":245,"code":246,"language":247,"meta":32,"style":32},"language-vue shiki shiki-themes site-light site-light site-dark","\u003Cscript setup lang=\"ts\">\nimport { HijriCalendar } from '@taqwim/vue-styled'\nimport { ref } from 'vue'\n\nconst date = ref()\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CHijriCalendar v-model=\"date\" theme=\"islamic\" locale=\"ar\" dir=\"rtl\" />\n\u003C/template>\n","vue",[34,249,250,271,287,303,307,325,330,334,339,379],{"__ignoreMap":32},[37,251,252,255,259,262,265,268],{"class":39,"line":40},[37,253,254],{"class":43},"\u003Cscript",[37,256,258],{"class":257},"sSzyk"," setup",[37,260,261],{"class":257}," lang",[37,263,264],{"class":47},"=",[37,266,267],{"class":72},"\"ts\"",[37,269,270],{"class":43},">\n",[37,272,273,275,277,280,282,284],{"class":39,"line":76},[37,274,44],{"class":43},[37,276,48],{"class":47},[37,278,279],{"class":51}," HijriCalendar ",[37,281,66],{"class":47},[37,283,69],{"class":43},[37,285,286],{"class":72}," '@taqwim/vue-styled'\n",[37,288,289,291,293,296,298,300],{"class":39,"line":83},[37,290,44],{"class":43},[37,292,48],{"class":47},[37,294,295],{"class":51}," ref ",[37,297,66],{"class":47},[37,299,69],{"class":43},[37,301,302],{"class":72}," 'vue'\n",[37,304,305],{"class":39,"line":107},[37,306,80],{"emptyLinePlaceholder":79},[37,308,309,312,315,319,322],{"class":39,"line":114},[37,310,311],{"class":43},"const",[37,313,314],{"class":135}," date",[37,316,318],{"class":317},"sZ7qJ"," =",[37,320,321],{"class":86}," ref",[37,323,324],{"class":47},"()\n",[37,326,327],{"class":39,"line":119},[37,328,329],{"class":43},"\u003C/script>\n",[37,331,332],{"class":39,"line":162},[37,333,80],{"emptyLinePlaceholder":79},[37,335,336],{"class":39,"line":168},[37,337,338],{"class":43},"\u003Ctemplate>\n",[37,340,341,344,347,349,352,355,357,360,363,365,368,371,373,376],{"class":39,"line":173},[37,342,343],{"class":43},"  \u003CHijriCalendar",[37,345,346],{"class":257}," v-model",[37,348,264],{"class":47},[37,350,351],{"class":72},"\"date\"",[37,353,354],{"class":257}," theme",[37,356,264],{"class":47},[37,358,359],{"class":72},"\"islamic\"",[37,361,362],{"class":257}," locale",[37,364,264],{"class":47},[37,366,367],{"class":72},"\"ar\"",[37,369,370],{"class":257}," dir",[37,372,264],{"class":47},[37,374,375],{"class":72},"\"rtl\"",[37,377,378],{"class":43}," />\n",[37,380,381],{"class":39,"line":217},[37,382,383],{"class":43},"\u003C/template>\n",[19,385,386],{},"لكل إطار عمل حزمتان: حزمة مجرّدة من التنسيق فيها السلوك وخصائص ARIA، وحزمة منسّقة مبنية على الأجزاء العامة للأولى. والمجموع ثلاث عشرة حزمة تصدر معًا برقم إصدار واحد.",[15,388,389],{"id":389},"السمات",[19,391,392,393,396],{},"ثلاث وثلاثون سمة مبنية على خصائص CSS مخصّصة، وتُختار بالخاصية ",[34,394,395],{},"data-taqwim-theme"," دون استيراد ملف أنماط آخر. فيمكن أن تجتمع عدة سمات في صفحة واحدة، وتبديل السمة أثناء التشغيل تغيير في الحالة لا أكثر.",[15,398,400],{"id":399},"إمكانية-الوصول","إمكانية الوصول",[19,402,403,404,407,408,411],{},"الشبكة تحمل ",[34,405,406],{},"role=\"grid\"","، والتركيز فيها يتنقّل كما يُنتظر من منتقي التاريخ: مفتاح Tab يدخلها ويخرج منها دون المرور على اثنين وأربعين زرًّا، ومفاتيح الأسهم تتنقّل بين الأيام، وتنعكس مع ",[34,409,410],{},"dir=\"rtl\"",". وتفحص اختبارات الوحدات تباين كل سمة مدمجة مقابل حدود WCAG AA في كل تشغيل، ويفحص axe التقويم بعد عرضه في الاختبارات الشاملة.",[19,413,414],{},"وثمّة نقص معروف: الاختبارات الشاملة لا تغطي Angular بعد.",[416,417,418],"style",{},"html pre.shiki code .sZ9Zp, html code.shiki .sZ9Zp{--shiki-light:#994920;--shiki-default:#994920;--shiki-dark:#ECA457}html pre.shiki code .sXnUm, html code.shiki .sXnUm{--shiki-light:#6D6863;--shiki-default:#6D6863;--shiki-dark:#96918C}html pre.shiki code .sBiod, html code.shiki .sBiod{--shiki-light:#322C28;--shiki-default:#322C28;--shiki-dark:#DBD7D0}html pre.shiki code .sgVH1, html code.shiki .sgVH1{--shiki-light:#3A6830;--shiki-default:#3A6830;--shiki-dark:#A5CF93}html pre.shiki code .sUqqj, html code.shiki .sUqqj{--shiki-light:#4A3170;--shiki-default:#4A3170;--shiki-dark:#D9BDF0}html pre.shiki code .s5c__, html code.shiki .s5c__{--shiki-light:#736D67;--shiki-light-font-style:italic;--shiki-default:#736D67;--shiki-default-font-style:italic;--shiki-dark:#979189;--shiki-dark-font-style:italic}html pre.shiki code .snYWn, html code.shiki .snYWn{--shiki-light:#624727;--shiki-default:#624727;--shiki-dark:#E2C69F}html pre.shiki code .sJ-0L, html code.shiki .sJ-0L{--shiki-light:#2D54A0;--shiki-default:#2D54A0;--shiki-dark:#93BDF5}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sSzyk, html code.shiki .sSzyk{--shiki-light:#5E4784;--shiki-default:#5E4784;--shiki-dark:#CFB0EA}html pre.shiki code .sZ7qJ, html code.shiki .sZ7qJ{--shiki-light:#6D6863;--shiki-default:#6D6863;--shiki-dark:#A39E98}",{"title":32,"searchDepth":76,"depth":76,"links":420},[421,422,423,424,425],{"id":17,"depth":76,"text":17},{"id":24,"depth":76,"text":25},{"id":230,"depth":76,"text":231},{"id":389,"depth":76,"text":389},{"id":399,"depth":76,"text":400},"أدوات للتاريخ الهجري، ومكوّن تقويم يراعي إمكانية الوصول، لـ Vue و React و Svelte و Solid و Angular.","md",{},"/projects/ar/taqwim",{"title":10,"description":426},"projects/ar/taqwim","UGxUi2pHUTg-aFSxDR26Wom5yAon6lRQXcPSsIq14gg",1791794148133]