1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/__l5e/assets-v1/95ee6be6-0841-4df1-a9b5-70010dcb36ff/jomportal-logo.png"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Baloo+2:wght@400;500;600;700;800&family=Quicksand:wght@400;500;600;700&family=Nunito:wght@400;500;600;700;800&family=Space+Grotesk:wght@400;500;600;700&family=Orbitron:wght@400;500;600;700;800&family=Playfair+Display:wght@400;500;600;700&display=swap" data-precedence="default"/><link rel="stylesheet" href="/assets/styles-BEjVoYqT.css" data-precedence="default"/><title>Admin Sign In â JomPortal</title><meta name="author" content="JomPortal"/><meta name="twitter:title" content="Hey! Jomm Portal!"/><meta name="twitter:description" content="Build Your School Digital Portal in Minutes"/><meta property="og:image" content="https://storage.googleapis.com/gpt-engineer-file-uploads/Y4JQMqkrOvSclFiSQdCnqva9Aqq1/social-images/social-1785757421264-social-image.webp"/><meta name="twitter:image" content="https://storage.googleapis.com/gpt-engineer-file-uploads/Y4JQMqkrOvSclFiSQdCnqva9Aqq1/social-images/social-1785757421264-social-image.webp"/><meta name="theme-color" content="#4f7cff"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="JomPortal"/><meta name="apple-mobile-web-app-status-bar-style" content="default"/><meta name="mobile-web-app-capable" content="yes"/><meta name="description" content="Sign in to the JomPortal admin panel to create, manage and publish your school digital portal."/><meta property="og:title" content="Admin Sign In â JomPortal"/><meta property="og:description" content="Sign in to the JomPortal admin panel to create, manage and publish your school digital portal."/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="robots" content="noindex, follow"/><link rel="modulepreload" href="/assets/index-DvEvuUoW.js"/><link rel="modulepreload" href="/assets/rolldown-runtime-CNC7AqOf.js"/><link rel="modulepreload" href="/assets/useStore-CzV104MW.js"/><link rel="modulepreload" href="/assets/link-CemwZfB6.js"/><link rel="modulepreload" href="/assets/auth-middleware-D6g4ks7d.js"/><link rel="modulepreload" href="/assets/qss-Bqk2G4CH.js"/><link rel="modulepreload" href="/assets/matchContext-BfH6j0-F.js"/><link rel="modulepreload" href="/assets/redirect-Dhm19zUi.js"/><link rel="modulepreload" href="/assets/jsx-runtime-DiK4U9sA.js"/><link rel="modulepreload" href="/assets/auth-DDBBnmcR.js"/><link rel="modulepreload" href="/assets/arrow-right-C5xRGCdF.js"/><link rel="modulepreload" href="/assets/check-BWAJtC6T.js"/><link rel="modulepreload" href="/assets/eye-D9M6Vvrj.js"/><link rel="modulepreload" href="/assets/loader-circle-8Dms4YG3.js"/><link rel="modulepreload" href="/assets/mail-5YVhMkxK.js"/><link rel="modulepreload" href="/assets/react-6QTV2Hyb.js"/><link rel="modulepreload" href="/assets/AuroraBackground-Ct4S278l.js"/><link rel="modulepreload" href="/assets/label-BHc9bjV7.js"/><link rel="modulepreload" href="/assets/input-hIOST_Bg.js"/><link rel="modulepreload" href="/assets/jomportal-logo.png.asset-B1DlNN2u.js"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="icon" type="image/png" href="/favicon.png"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="manifest" href="/manifest.webmanifest"/>
1<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
1</head><body><!--$--><div class="relative min-h-screen"><div aria-hidden="true" class="pointer-events-none fixed inset-0 -z-10 overflow-hidden bg-canvas"><div class="absolute inset-0 bg-[radial-gradient(ellipse_70%_50%_at_50%_-10%,rgba(79,124,255,0.16),transparent_70%),radial-gradient(ellipse_50%_40%_at_100%_10%,rgba(139,92,246,0.14),transparent_70%),radial-gradient(ellipse_60%_50%_at_0%_40%,rgba(6,182,212,0.10),transparent_70%)]"></div><div class="animate-drift absolute -top-40 -left-32 size-[38rem] rounded-full bg-[radial-gradient(circle,rgba(79,124,255,0.35),transparent_65%)] blur-3xl"></div><div class="animate-drift absolute -top-24 right-[-10rem] size-[34rem] rounded-full bg-[radial-gradient(circle,rgba(139,92,246,0.32),transparent_65%)] blur-3xl [animation-delay:-6s]"></div><div class="animate-drift absolute top-[52%] left-[45%] size-[30rem] rounded-full bg-[radial-gradient(circle,rgba(34,197,94,0.16),transparent_65%)] blur-3xl [animation-delay:-12s]"></div><div class="grid-lines absolute inset-0 opacity-60 [mask-image:radial-gradient(ellipse_75%_60%_at_50%_20%,black,transparent)]"></div><span class="animate-float-slower absolute size-1.5 rounded-full bg-primary/40 blur-[1px]" style="left:12%;top:22%;animation-delay:0s"></span><span class="animate-float-slower absolute size-1 rounded-full bg-primary/40 blur-[1px]" style="left:26%;top:64%;animation-delay:-2s"></span><span class="animate-float-slower absolute size-1 rounded-full bg-primary/40 blur-[1px]" style="left:48%;top:18%;animation-delay:-4s"></span><span class="animate-float-slower absolute size-1.5 rounded-full bg-primary/40 blur-[1px]" style="left:68%;top:48%;animation-delay:-1s"></span><span class="animate-float-slower absolute size-1 rounded-full bg-primary/40 blur-[1px]" style="left:82%;top:26%;animation-delay:-5s"></span><span class="animate-float-slower absolute size-1.5 rounded-full bg-primary/40 blur-[1px]" style="left:90%;top:70%;animation-delay:-3s"></span><div class="noise-layer absolute inset-0 opacity-[0.035] mix-blend-multiply"></div><div class="absolute inset-x-0 bottom-0 h-64 bg-gradient-to-b from-transparent to-background"></div></div><div class="mx-auto grid min-h-screen w-full max-w-6xl grid-cols-1 items-center gap-10 px-5 py-8 sm:px-6 sm:py-12 lg:grid-cols-[1.05fr_minmax(0,440px)] lg:gap-16 lg:py-16"><div class="min-w-0"><a href="/" class="group inline-flex items-center gap-2.5"><img src="/__l5e/assets-v1/95ee6be6-0841-4df1-a9b5-70010dcb36ff/jomportal-logo.png" alt="Logo JomPortal" class="size-9 shrink-0 object-contain transition-transform duration-300 group-hover:scale-105"/><span class="text-base font-semibold tracking-tight">JomPortal</span></a><div class="mt-8 hidden lg:block"><p class="text-[11px] font-semibold tracking-[0.2em] text-primary uppercase">Panel Admin Sekolah</p><h2 class="mt-4 text-[2.75rem] leading-[1.05] font-bold tracking-[-0.04em]">Portal digital sekolah anda,<br/>
1siap dalam beberapa minit.</h2><p class="mt-4 max-w-md text-sm leading-relaxed text-muted-foreground">Satu tempat untuk urus ID digital murid, aplikasi sekolah, tema portal dan penerbitan â tanpa perlu hosting atau coding.</p><ul class="mt-8 space-y-3"><li class="flex items-start gap-3 text-sm text-foreground/80"><span class="mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check size-3" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span class="min-w-0">Wizard 7 langkah â portal siap tanpa coding</span></li><li class="flex items-start gap-3 text-sm text-foreground/80"><span class="mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check size-3" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span class="min-w-0">Data murid kekal dalam Google Sheet sekolah anda</span></li><li class="flex items-start gap-3 text-sm text-foreground/80"><span class="mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check size-3" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span class="min-w-0">Kad ID digital, tema sekolah & QR signage</span></li><li class="flex items-start gap-3 text-sm text-foreground/80"><span class="mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check size-3" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span class="min-w-0">Analitik login dan aplikasi paling popular</span></li></ul><div class="mt-10 flex flex-wrap items-center gap-2"><span class="rounded-full border border-border bg-background/60 px-3 py-1.5 text-[11px] font-medium text-muted-foreground">Percuma untuk mula</span><span class="rounded-full border border-border bg-background/60 px-3 py-1.5 text-[11px] font-medium text-muted-foreground">Tiada hosting diperlukan</span><span class="rounded-full border border-border bg-background/60 px-3 py-1.5 text-[11px] font-medium text-muted-foreground">Data milik sekolah</span></div></div></div><div class="glass panel-shadow w-full rounded-[1.75rem] p-6 sm:rounded-[2rem] sm:p-8 lg:p-9" style="opacity:0;transform:translateY(18px)"><div class="grid grid-cols-2 gap-1 rounded-full border border-border bg-background/60 p-1"><button type="button" class="relative h-9 rounded-full text-xs font-semibold transition-colors text-primary-foreground"><span class="brand-gradient absolute inset-0 rounded-full"></span><span class="relative">Log masuk</span></button><button type="button" class="relative h-9 rounded-full text-xs font-semibold transition-colors text-muted-foreground hover:text-foreground"><span class="relative">Daftar baharu</span></button></div><h1 class="mt-6 text-[1.6rem] leading-tight font-bold tracking-[-0.03em] sm:text-3xl">Log masuk admin</h1><p class="mt-2 text-sm leading-relaxed text-muted-foreground">Uruskan portal sekolah, tetapan dan penerbitan dari satu tempat.</p><button class="mt-6 flex h-12 w-full items-center justify-center gap-3 rounded-full border border-border bg-background/70 text-sm font-semibold transition-colors hover:bg-secondary disabled:opacity-60"><svg viewBox="0 0 24 24" class="size-4" aria-hidden="true"><path fill="#4285F4" d="M23.5 12.3c0-.9-.1-1.5-.2-2.2H12v4.1h6.5c-.1 1.1-.8 2.7-2.3 3.8l-.1.1 3.4 2.6.2.1c2.2-2 3.8-5 3.8-8.5z"></path>
1<path fill="#34A853" d="M12 24c3.1 0 5.7-1 7.6-2.8l-3.6-2.8c-1 .7-2.3 1.2-4 1.2-3 0-5.6-2-6.6-4.8l-.1.1-3.5 2.7v.1C3.7 21.3 7.6 24 12 24z"></path><path fill="#FBBC05" d="M5.4 14.8A7.4 7.4 0 0 1 5 12c0-1 .2-1.9.4-2.8L1.4 6.1A11.9 11.9 0 0 0 0 12c0 1.9.5 3.8 1.4 5.4l4-2.6z"></path><path fill="#EA4335" d="M12 4.7c2.1 0 3.6.9 4.4 1.7l3.2-3.1C17.6 1.4 15.1 0 12 0 7.6 0 3.7 2.7 1.4 6.1l4 3.1C6.4 6.4 9 4.7 12 4.7z"></path></svg> Teruskan dengan Google</button><div class="my-5 flex items-center gap-3"><span class="h-px flex-1 bg-border"></span><span class="text-[10px] tracking-[0.18em] text-muted-foreground uppercase">atau emel</span><span class="h-px flex-1 bg-border"></span></div><form class="space-y-4"><div class="space-y-2"><label class="font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-xs text-muted-foreground" for="email">Emel</label><input type="email" class="flex w-full border px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm h-11 rounded-xl border-border bg-background/60" id="email" required="" autoComplete="email" placeholder="[email protected]" value=""/></div><div class="space-y-2"><label class="font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-xs text-muted-foreground" for="password">Kata Laluan</label><div class="relative"><input type="password" class="flex w-full border px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm h-11 rounded-xl border-border bg-background/60 pr-11" id="password" required="" minLength="6" autoComplete="current-password" placeholder="â¢â¢â¢â¢â¢â¢â¢â¢" value=""/><button type="button" aria-label="Papar kata laluan" class="absolute inset-y-0 right-0 flex w-11 items-center justify-center text-muted-foreground transition-colors hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye size-4" aria-hidden="true"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg></button></div></div><label class="flex cursor-pointer items-center gap-3 text-xs text-muted-foreground"><input type="checkbox" class="size-4 shrink-0 rounded border-border accent-primary" checked=""/>Kekal log masuk pada peranti ini</label><button type="submit" class="brand-gradient btn-glow inline-flex h-12 w-full items-center justify-center gap-2 rounded-full text-sm font-semibold text-primary-foreground disabled:opacity-60">Log masuk<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right size-4" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button></form><p class="mt-5 text-center text-xs text-muted-foreground">Belum ada akaun?<!-- --> <button class="font-semibold text-primary hover:underline">Daftar admin baharu</button></p><div class="mt-4 flex flex-wrap items-center justify-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground lg:hidden"><span>Percuma untuk mula</span><span>Tiada hosting diperlukan</span><span>Data milik sekolah</span></div></div></div></div>
1<script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script>
1<!--/$--><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section>
1<script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-DvEvuUoW.js","/assets/rolldown-runtime-CNC7AqOf.js","/assets/useStore-CzV104MW.js","/assets/link-CemwZfB6.js","/assets/auth-middleware-D6g4ks7d.js","/assets/qss-Bqk2G4CH.js","/assets/matchContext-BfH6j0-F.js","/assets/redirect-Dhm19zUi.js","/assets/jsx-runtime-DiK4U9sA.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-DvEvuUoW.js"}}]},"/auth":$R[8]={preloads:$R[9]=["/assets/auth-DDBBnmcR.js","/assets/arrow-right-C5xRGCdF.js","/assets/check-BWAJtC6T.js","/assets/eye-D9M6Vvrj.js","/assets/loader-circle-8Dms4YG3.js","/assets/mail-5YVhMkxK.js","/assets/react-6QTV2Hyb.js","/assets/AuroraBackground-Ct4S278l.js","/assets/label-BHc9bjV7.js","/assets/input-hIOST_Bg.js","/assets/jomportal-logo.png.asset-B1DlNN2u.js"]}}}
1,matches:$R[10]=[$R[11]={i:"__root__�",u:1790904775795,s:"success",ssr:!0},$R[12]={i:"�auth�auth",u:1790904775795,s:"success",ssr:!0}],lastMatchId:"�auth�auth"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script>
1<script type="module" async="" src="/assets/index-DvEvuUoW.js"></script>
1</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.