{"id":91,"date":"2026-03-02T02:42:23","date_gmt":"2026-03-02T02:42:23","guid":{"rendered":"https:\/\/mcreative.my\/wps\/?page_id=91"},"modified":"2026-04-08T06:21:50","modified_gmt":"2026-04-08T06:21:50","slug":"91-2","status":"publish","type":"page","link":"https:\/\/mcreative.my\/wps\/91-2\/","title":{"rendered":"bahasa arab"},"content":{"rendered":"\n<style>\n\n.program-container{\nmax-width:1100px;\nmargin:auto;\npadding:60px 20px;\nfont-family:system-ui,-apple-system,Segoe UI,Roboto,Arial;\n}\n\n\/* HERO *\/\n.program-hero{\ndisplay:grid;\ngrid-template-columns:420px 1fr;\ngap:60px;\nalign-items:center;\nmargin-bottom:70px;\noverflow:visible;\n}\n\n.program-title{\nfont-size:40px;\nfont-weight:700;\ncolor:#0f172a;\nmargin-bottom:18px;\n}\n\n.program-text{\nfont-size:16px;\nline-height:1.8;\ncolor:#475569;\nmargin-bottom:25px;\n}\n\n\/* IMAGE *\/\n.program-image img{\nwidth:100%;\nborder-radius:18px;\nbox-shadow:0 20px 40px rgba(0,0,0,0.12);\n}\n\n\/* BADGE *\/\n.program-info{\ndisplay:flex;\ngap:12px;\nflex-wrap:wrap;\nmargin-top:10px;\n}\n\n.info-badge{\nbackground:#f1f5f9;\npadding:8px 14px;\nborder-radius:8px;\nfont-size:14px;\nfont-weight:600;\ncolor:#334155;\n}\n\n\/* BUTTON *\/\n.program-action{\nmargin-top:20px;\n}\n\n.btn-wrapper{\nposition:relative;\ndisplay:inline-block;\n}\n\n.btn-jadwal{\ndisplay:inline-flex;\nalign-items:center;\ngap:10px;\nbackground:linear-gradient(135deg,#22c55e,#16a34a);\ncolor:#fff;\npadding:14px 26px;\nborder-radius:999px;\nfont-weight:600;\ntext-decoration:none;\nfont-size:15px;\ntransition:all .3s ease;\nbox-shadow:0 10px 25px rgba(34,197,94,0.4);\nposition:relative;\noverflow:hidden;\n}\n\n.btn-jadwal::before{\ncontent:\"\";\nposition:absolute;\ntop:0;\nleft:-100%;\nwidth:100%;\nheight:100%;\nbackground:linear-gradient(120deg,transparent,rgba(255,255,255,.5),transparent);\ntransition:.7s;\n}\n\n.btn-jadwal:hover::before{\nleft:100%;\n}\n\n.btn-jadwal:hover{\ntransform:translateY(-3px) scale(1.03);\nbox-shadow:0 18px 35px rgba(34,197,94,0.5);\n}\n\n.btn-jadwal[style*=\"pointer-events: none\"]{\ncursor:not-allowed;\n}\n\n.btn-badge{\nposition:absolute;\ntop:-10px;\nright:-10px;\nbackground:#ef4444;\ncolor:#fff;\nfont-size:11px;\nfont-weight:700;\npadding:4px 9px;\nborder-radius:999px;\nbox-shadow:0 6px 15px rgba(0,0,0,0.25);\nz-index:3;\n}\n\n\/* LEVEL *\/\n.level-section{\nmargin-top:30px;\n}\n\n.section-title{\nfont-size:26px;\nfont-weight:700;\nmargin-bottom:25px;\ncolor:#0f172a;\n}\n\n.level-grid{\ndisplay:grid;\ngrid-template-columns:repeat(3,1fr);\ngap:25px;\n}\n\n.level-card{\nbackground:#fff;\npadding:25px;\nborder-radius:16px;\nbox-shadow:0 10px 25px rgba(0,0,0,0.08);\nborder:1px solid #f1f5f9;\ntransition:.3s;\n}\n\n.level-card:hover{\ntransform:translateY(-5px);\nbox-shadow:0 18px 35px rgba(0,0,0,0.12);\n}\n\n.level-title{\nfont-size:18px;\nfont-weight:700;\nmargin-bottom:10px;\n}\n\n.level-desc{\nfont-size:14px;\ncolor:#64748b;\nline-height:1.6;\n}\n\n\/* RESPONSIVE *\/\n@media(max-width:900px){\n.program-hero{\ngrid-template-columns:1fr;\ngap:30px;\n}\n.program-image{\nmax-width:420px;\n}\n.level-grid{\ngrid-template-columns:1fr;\n}\n}\n\n<\/style>\n\n\n\n<div class=\"program-container\">\n\n<div class=\"program-hero\">\n\n<div class=\"program-image\">\n<img decoding=\"async\" src=\"https:\/\/mcreative.my\/wps\/wp-content\/uploads\/2026\/03\/2-3.png\">\n<\/div>\n\n<div>\n\n<div class=\"program-title\">\nPelatihan Bahasa Arab\n<\/div>\n\n<div class=\"program-text\">\ntersedia untuk level Mubtadi (A1 dan A2) serta Muthawasith (B1). Program ini terbuka bagi mahasiswa dan dosen, dilaksanakan selama 10 sesi dengan dua kali pertemuan setiap minggu. Peserta memperoleh modul pelatihan dan sertifikat pelatihan.\n<\/div>\n\n<div class=\"program-info\">\n<div class=\"info-badge\">\ud83d\udcc5 10 Sesi Pelatihan<\/div>\n<div class=\"info-badge\">\ud83d\udc65 Mahasiswa &#038; Dosen<\/div>\n<div class=\"info-badge\">\ud83c\udf93 Sertifikat<\/div>\n<\/div>\n\n<div class=\"program-action\">\n<div class=\"btn-wrapper\">\n\n<a \nid=\"btnJadwal\" \ndata-program=\"arab\"\nclass=\"btn-jadwal\"\n>\n<span>\ud83d\udcc5<\/span>\n<span class=\"btn-text\">Loading&#8230;<\/span>\n<\/a>\n\n<span class=\"btn-badge\">&#8230;<\/span>\n\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n\n\n<div class=\"level-section\">\n\n<div class=\"section-title\">\nLevel Pelatihan\n<\/div>\n\n<div class=\"level-grid\">\n\n<div class=\"level-card\">\n<div class=\"level-title\">A1 \u2013 Mubtadi<\/div>\n<div class=\"level-desc\">Level dasar untuk peserta yang baru memulai belajar bahasa Arab.<\/div>\n<\/div>\n\n<div class=\"level-card\">\n<div class=\"level-title\">A2 \u2013 Mubtadi Lanjutan<\/div>\n<div class=\"level-desc\">Peserta mulai memahami struktur kalimat dan meningkatkan kemampuan membaca.<\/div>\n<\/div>\n\n<div class=\"level-card\">\n<div class=\"level-title\">B1 \u2013 Muthawasith<\/div>\n<div class=\"level-desc\">Level menengah untuk komunikasi akademik.<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n\n\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function(){\n\nconst API = \"https:\/\/sistem.mcreative.my\/api.php\";\n\nconst btn = document.getElementById(\"btnJadwal\");\nif(!btn) return;\n\nconst programID = btn.dataset.program.trim();\nconst btnText = btn.querySelector(\".btn-text\");\nconst badge = document.querySelector(\".btn-badge\");\n\nlet lastStatus = null;\nlet interval = 5000; \/\/ adaptive\n\nbtn.style.pointerEvents = \"none\";\nbtn.style.opacity = \"0.7\";\n\n\n\/\/ ======================\n\/\/ \ud83e\udde0 CACHE (10 detik)\n\/\/ ======================\nfunction getCache(){\n  try{\n    const cache = localStorage.getItem(\"jadwal_cache\");\n    if(!cache) return null;\n\n    const parsed = JSON.parse(cache);\n\n    if(Date.now() > parsed.expired){\n      return null;\n    }\n\n    return parsed.data;\n  }catch{\n    return null;\n  }\n}\n\nfunction setCache(data){\n  localStorage.setItem(\"jadwal_cache\", JSON.stringify({\n    data,\n    expired: Date.now() + 10000\n  }));\n}\n\n\n\/\/ ======================\n\/\/ \ud83c\udf10 FETCH DATA\n\/\/ ======================\nasync function fetchData(){\n\n  const cached = getCache();\n  if(cached) return cached;\n\n  const res = await fetch(API); \/\/ \u274c hapus ?t=Date.now()\n  const data = await res.json();\n\n  const mapped = data.map(d => ({\n    id: (d.id || \"\").trim(),\n    mode: (d.mode || \"\").trim(),\n    jadwal: (d.jadwal || \"\").trim(),\n    tanggal_buka: d.tanggal_buka,\n    tanggal_tutup: d.tanggal_tutup,\n    text_buka: d.text_buka,\n    text_tutup: d.text_tutup,\n    badge_buka: d.badge_buka,\n    badge_tutup: d.badge_tutup,\n    link: d.link\n  }));\n\n  setCache(mapped);\n\n  return mapped;\n}\n\n\n\/\/ ======================\n\/\/ \ud83c\udfa8 APPLY UI\n\/\/ ======================\nfunction applyUI(data){\n\n  const now = new Date();\n  const buka = new Date(data.tanggal_buka.replace(\" \", \"T\"));\n  const tutup = new Date(data.tanggal_tutup.replace(\" \", \"T\"));\n\n  const jadwal = String(data.jadwal) === \"1\";\n\n  let status = false;\n\n  if(data.mode === \"manual\"){\n    status = jadwal;\n  }else{\n    status = (now >= buka && now <= tutup);\n  }\n\n  if(status === lastStatus) return;\n  lastStatus = status;\n\n  if(status){\n    btnText.innerHTML = data.text_buka || \"Gabung Kelas Ini \u2192\";\n    badge.innerHTML = data.badge_buka || \"Dibuka\";\n    badge.style.background = \"#ef4444\";\n\n    btn.style.pointerEvents = \"auto\";\n    btn.style.opacity = \"1\";\n    btn.href = data.link;\n\n    interval = 5000; \/\/ aktif \u2192 cepat\n\n  }else{\n    btnText.innerHTML = data.text_tutup || \"Stay Tune\";\n    badge.innerHTML = data.badge_tutup || \"Ditutup\";\n    badge.style.background = \"#64748b\";\n\n    btn.style.pointerEvents = \"none\";\n    btn.style.opacity = \"0.6\";\n    btn.removeAttribute(\"href\");\n\n    interval = 15000; \/\/ idle \u2192 hemat\n  }\n}\n\n\n\/\/ ======================\n\/\/ \ud83d\udd01 LOOP (adaptive)\n\/\/ ======================\nasync function loop(){\n\n  try{\n    const allData = await fetchData();\n    const selected = allData.find(d => d.id === programID);\n\n    if(selected){\n      applyUI(selected);\n    }else{\n      btnText.innerHTML = \"Program tidak ditemukan\";\n    }\n\n  }catch(e){\n    btnText.innerHTML = \"Gagal load data\";\n    console.error(e);\n  }\n\n  setTimeout(loop, interval);\n}\n\n\n\/\/ ======================\n\/\/ \ud83d\ude80 START\n\/\/ ======================\nloop();\n\n});\n<\/script>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Pelatihan Bahasa Arab tersedia untuk level Mubtadi (A1 dan A2) serta Muthawasith (B1). Program ini terbuka bagi mahasiswa dan dosen, dilaksanakan selama 10 sesi dengan&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-91","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mcreative.my\/wps\/wp-json\/wp\/v2\/pages\/91","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mcreative.my\/wps\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mcreative.my\/wps\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mcreative.my\/wps\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mcreative.my\/wps\/wp-json\/wp\/v2\/comments?post=91"}],"version-history":[{"count":15,"href":"https:\/\/mcreative.my\/wps\/wp-json\/wp\/v2\/pages\/91\/revisions"}],"predecessor-version":[{"id":284,"href":"https:\/\/mcreative.my\/wps\/wp-json\/wp\/v2\/pages\/91\/revisions\/284"}],"wp:attachment":[{"href":"https:\/\/mcreative.my\/wps\/wp-json\/wp\/v2\/media?parent=91"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}