Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dd18ed24a2 |
|
Before Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 222 KiB |
|
Before Width: | Height: | Size: 209 KiB |
|
Before Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 175 KiB |
|
Before Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 337 KiB |
@@ -5,31 +5,6 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Group 03 – HarusSelesaiKP | Informatika UNTAN</title>
|
||||
|
||||
<!--
|
||||
Anti-flicker safety net: body.lang-pending is hidden via style.css
|
||||
until localization.js (loaded sync below) applies the correct
|
||||
language on DOMContentLoaded and removes the class.
|
||||
This inline fallback ensures the rule exists even if style.css
|
||||
hasn't parsed yet.
|
||||
-->
|
||||
<style id="lang-pending-style">
|
||||
body.lang-pending {
|
||||
visibility: hidden
|
||||
}
|
||||
</style>
|
||||
|
||||
<!--
|
||||
localization.js MUST be loaded synchronously (no defer/async)
|
||||
so the IIFE inside it can set window.__currentLang before
|
||||
the browser renders any text. This is the ONLY intentional
|
||||
render-blocking script.
|
||||
-->
|
||||
<script src="localization.js"></script>
|
||||
|
||||
<!-- Preload hero image — eliminates LCP delay -->
|
||||
<link rel="preload" href="images/hero.webp" as="image" type="image/webp" />
|
||||
|
||||
<link rel="stylesheet" href="../../assets/global/output.css" />
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
@@ -37,17 +12,297 @@
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"
|
||||
rel="stylesheet" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" />
|
||||
<style>
|
||||
/* ===== MOBILE NAV STABILITY FIX =====
|
||||
Prevents logo bar from collapsing/shifting on Android when
|
||||
address bar hides/shows and triggers viewport reflow.
|
||||
===================================== */
|
||||
#nav-wrapper {
|
||||
position: fixed !important;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 50;
|
||||
backface-visibility: hidden;
|
||||
-webkit-backface-visibility: hidden;
|
||||
will-change: box-shadow;
|
||||
}
|
||||
|
||||
<!-- Font Awesome loaded async — non-render-blocking -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
|
||||
media="print" onload="this.media='all'" />
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" />
|
||||
</noscript>
|
||||
#nav-wrapper>div:first-child {
|
||||
transform: translateZ(0);
|
||||
-webkit-transform: translateZ(0);
|
||||
}
|
||||
|
||||
@media (max-width: 1023px) {
|
||||
#nav-wrapper>div:first-child {
|
||||
min-height: 0 !important;
|
||||
max-height: none;
|
||||
}
|
||||
}
|
||||
|
||||
#pengumuman-bar {
|
||||
z-index: 40;
|
||||
}
|
||||
|
||||
#pengumuman-bar.is-stuck {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 40;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Skip Link Styling */
|
||||
.skip-link {
|
||||
position: absolute;
|
||||
top: -40px;
|
||||
left: 0;
|
||||
background: #003150;
|
||||
color: white;
|
||||
padding: 8px 16px;
|
||||
z-index: 100;
|
||||
transition: top 0.3s;
|
||||
}
|
||||
|
||||
.skip-link:focus {
|
||||
top: 0;
|
||||
}
|
||||
|
||||
/* Focus visible for better keyboard navigation */
|
||||
:focus-visible {
|
||||
outline: 3px solid #feb401;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
/* Mega Menu Styles */
|
||||
.hero-pagination .swiper-pagination-bullet {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background: rgba(255, 255, 255, 0.4);
|
||||
display: inline-block;
|
||||
margin: 0 4px;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.hero-pagination .swiper-pagination-bullet-active {
|
||||
background: rgba(255, 255, 255, 1);
|
||||
width: 24px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.mega-panel {
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition:
|
||||
opacity 0.2s ease,
|
||||
visibility 0.2s ease;
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.mega-panel.active {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* Overlay transition */
|
||||
#mega-overlay {
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition:
|
||||
opacity 0.2s ease,
|
||||
visibility 0.2s ease;
|
||||
}
|
||||
|
||||
#mega-overlay.active {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.mega-link-card {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 1rem;
|
||||
padding: 1rem;
|
||||
border-radius: 0.75rem;
|
||||
border: 1px solid #e2e8f0;
|
||||
background: white;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.mega-link-card:hover {
|
||||
border-color: #3b82f6;
|
||||
box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15);
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.mega-link-icon {
|
||||
width: 2.5rem;
|
||||
height: 2.5rem;
|
||||
border-radius: 0.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.nav-menu-btn.active {
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
color: #1e40af;
|
||||
}
|
||||
|
||||
.nav-menu-btn:hover {
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
/* Mega menu positioning - no gap */
|
||||
#main-nav {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#mega-menu-container {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#mega-menu-container .mega-panel {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
/* Keep pointer bridge under nav to prevent hover loss */
|
||||
.nav-menu-item {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nav-menu-item::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: -12px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
/* ===== Luco Chatbot Animations ===== */
|
||||
@keyframes slideInRight {
|
||||
from {
|
||||
transform: translateX(100px);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
transform: translateX(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fadeInUp {
|
||||
from {
|
||||
transform: translateY(10px);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes lucoPulse {
|
||||
|
||||
0%,
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
}
|
||||
|
||||
#luco-container {
|
||||
animation: slideInRight 0.5s ease-out forwards;
|
||||
}
|
||||
|
||||
#luco-bubble {
|
||||
animation: fadeInUp 0.3s ease-out forwards;
|
||||
width: min(18rem, calc(100vw - 2rem));
|
||||
}
|
||||
|
||||
#luco-btn {
|
||||
animation: lucoPulse 2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
#luco-btn:hover {
|
||||
animation: none;
|
||||
}
|
||||
|
||||
/* Typing indicator */
|
||||
.typing-indicator span {
|
||||
display: inline-block;
|
||||
animation: bounce 1.4s infinite ease-in-out;
|
||||
}
|
||||
|
||||
.typing-indicator span:nth-child(1) {
|
||||
animation-delay: 0s;
|
||||
}
|
||||
|
||||
.typing-indicator span:nth-child(2) {
|
||||
animation-delay: 0.2s;
|
||||
}
|
||||
|
||||
.typing-indicator span:nth-child(3) {
|
||||
animation-delay: 0.4s;
|
||||
}
|
||||
|
||||
@keyframes bounce {
|
||||
|
||||
0%,
|
||||
80%,
|
||||
100% {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
40% {
|
||||
transform: translateY(-6px);
|
||||
}
|
||||
}
|
||||
|
||||
/* Luco speech bubble arrow */
|
||||
#luco-bubble .bubble-arrow {
|
||||
position: absolute;
|
||||
right: 24px;
|
||||
bottom: -6px;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background: white;
|
||||
transform: rotate(45deg);
|
||||
border-right: 1px solid #e2e8f0;
|
||||
border-bottom: 1px solid #e2e8f0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
|
||||
<body class="lang-pending text-slate-800 antialiased bg-white selection:bg-untan-yellow selection:text-black">
|
||||
<body class="text-slate-800 antialiased bg-white selection:bg-untan-yellow selection:text-black">
|
||||
<a href="#main-content" class="skip-link" data-i18n="skip_to_content">Langsung ke Konten Utama</a>
|
||||
|
||||
<div id="nav-wrapper"
|
||||
@@ -96,9 +351,8 @@
|
||||
<div class="pl-5 border-l border-white/20 flex items-center gap-3">
|
||||
<button
|
||||
class="language-toggle-btn text-xs hover:text-untan-yellow transition-colors flex items-center gap-1">
|
||||
<span class="lang-id font-bold">ID</span>
|
||||
<span class="text-white/40">|</span>
|
||||
<span class="lang-en opacity-50 font-normal">EN</span>
|
||||
<span class="font-bold">ID</span>
|
||||
<span class="text-white/40">|</span> EN
|
||||
</button>
|
||||
<button
|
||||
class="w-8 h-8 flex items-center justify-center rounded-sm hover:bg-white/10 transition-colors"
|
||||
@@ -879,9 +1133,9 @@
|
||||
<button
|
||||
class="language-toggle-btn px-2 py-1 rounded-sm border border-white/20 text-xs text-white hover:bg-white/10 transition-colors flex items-center gap-2"
|
||||
aria-label="Ganti bahasa">
|
||||
<span class="lang-id font-bold">ID</span>
|
||||
<span class="font-bold">ID</span>
|
||||
<span class="text-white/40" aria-hidden="true">|</span>
|
||||
<span class="lang-en opacity-50 font-normal">EN</span>
|
||||
EN
|
||||
</button>
|
||||
<button
|
||||
class="w-8 h-8 rounded-sm bg-white/10 hover:bg-white/20 flex items-center justify-center text-white transition-colors"
|
||||
@@ -1027,7 +1281,7 @@
|
||||
<span class="highlight-text">Universitas Tanjungpura</span> Pontianak
|
||||
</h1>
|
||||
|
||||
<p class="hero-description" data-i18n="skp_hero_desc">
|
||||
<p class="hero-description" data-skp-i18n="skp_hero_desc">
|
||||
Kuliah di kampus unggulan Kalimantan Barat dengan fasilitas lengkap,
|
||||
lingkungan nyaman dan kehidupan mahasiswa yang terjangkau
|
||||
</p>
|
||||
@@ -1041,30 +1295,30 @@
|
||||
</div>
|
||||
|
||||
<div class="about-content">
|
||||
<span class="eyebrow-component" data-i18n="skp_about_eyebrow">Tentang Untan</span>
|
||||
<span class="eyebrow-component" data-skp-i18n="skp_about_eyebrow">Tentang Untan</span>
|
||||
|
||||
<h2 class="about-title" data-i18n="skp_about_title">
|
||||
<h2 class="about-title" data-skp-i18n="skp_about_title">
|
||||
Kampus Unggul di Kalimantan Barat
|
||||
</h2>
|
||||
|
||||
<div class="about-description">
|
||||
<p data-i18n="skp_about_desc_1">
|
||||
<p data-skp-i18n="skp_about_desc_1">
|
||||
Universitas Tanjungpura merupakan perguruan tinggi negeri
|
||||
terkemuka di Kalimantan Barat yang berkomitmen menghadirkan
|
||||
pendidikan berkualitas.
|
||||
</p>
|
||||
<p data-i18n="skp_about_desc_2">
|
||||
<p data-skp-i18n="skp_about_desc_2">
|
||||
UNTAN terus mendorong pengembangan riset, inovasi, dan kolaborasi
|
||||
di berbagai bidang.
|
||||
</p>
|
||||
<p data-i18n="skp_about_desc_3">
|
||||
<p data-skp-i18n="skp_about_desc_3">
|
||||
Didukung lingkungan belajar yang nyaman, mahasiswa memiliki ruang
|
||||
untuk berkembang secara akademik maupun nonakademik.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<a href="https://www.untan.ac.id/" target="_blank" rel="noopener noreferrer" class="about-link">
|
||||
<span data-i18n="skp_about_link_text">Kunjungi Website Resmi</span>
|
||||
<span data-skp-i18n="skp_about_link_text">Kunjungi Website Resmi</span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="link-icon" viewBox="0 0 24 24">
|
||||
<path fill="currentColor" fill-rule="evenodd"
|
||||
d="M12 5.714a1 1 0 0 1 1 1v12.5a1 1 0 0 1-2 0v-12.5a1 1 0 0 1 1-1" clip-rule="evenodd">
|
||||
@@ -1079,9 +1333,9 @@
|
||||
|
||||
<!-- FACILITIES SECTION -->
|
||||
<section class="facilities-section">
|
||||
<span class="eyebrow-component" data-i18n="skp_fac_eyebrow">Fasilitas Kampus</span>
|
||||
<span class="eyebrow-component" data-skp-i18n="skp_fac_eyebrow">Fasilitas Kampus</span>
|
||||
|
||||
<h2 class="facilities-title" data-i18n="skp_fac_main_title">
|
||||
<h2 class="facilities-title" data-skp-i18n="skp_fac_main_title">
|
||||
Fasilitas Kampus untuk Pengalaman Belajar yang Nyaman
|
||||
</h2>
|
||||
|
||||
@@ -1090,12 +1344,12 @@
|
||||
|
||||
<!-- CAMPUS SECTION -->
|
||||
<section class="campus-section">
|
||||
<span class="eyebrow-component" data-i18n="skp_campus_eyebrow">Kehidupan Kampus</span>
|
||||
<span class="eyebrow-component" data-skp-i18n="skp_campus_eyebrow">Kehidupan Kampus</span>
|
||||
|
||||
<h2 class="campus-title" data-i18n="skp_campus_title">
|
||||
<h2 class="campus-title" data-skp-i18n="skp_campus_title">
|
||||
Aktivitas Mahasiswa & Organisasi Kampus
|
||||
</h2>
|
||||
<p class="campus-subtitle" data-i18n="skp_campus_subtitle">
|
||||
<p class="campus-subtitle" data-skp-i18n="skp_campus_subtitle">
|
||||
Mahasiswa UNTAN memiliki berbagai kesempatan untuk berkembang melalui
|
||||
organisasi, UKM, komunitas, dan kegiatan ekstrakurikuler.
|
||||
</p>
|
||||
@@ -1112,12 +1366,12 @@
|
||||
<div class="pontianak-overlay"></div>
|
||||
|
||||
<div class="pontianak-content">
|
||||
<span class="eyebrow-component" data-i18n="skp_pontianak_eyebrow">Kota Pontianak</span>
|
||||
<h2 class="pontianak-title" data-i18n="skp_pontianak_title">
|
||||
<span class="eyebrow-component" data-skp-i18n="skp_pontianak_eyebrow">Kota Pontianak</span>
|
||||
<h2 class="pontianak-title" data-skp-i18n="skp_pontianak_title">
|
||||
Live In Pontianak
|
||||
</h2>
|
||||
|
||||
<p class="pontianak-desc" data-i18n="skp_pontianak_desc">
|
||||
<p class="pontianak-desc" data-skp-i18n="skp_pontianak_desc">
|
||||
Pontianak bukan sekadar ibu kota Kalimantan Barat, tetapi tempat
|
||||
yang nyaman untuk tinggal, ramah bagi mahasiswa, dan bersahabat di
|
||||
kantong. Kota ini menawarkan akses fasilitas umum yang lengkap,
|
||||
@@ -1129,9 +1383,9 @@
|
||||
|
||||
<!-- DESTINATION SECTION -->
|
||||
<section class="destination-section">
|
||||
<span class="eyebrow-component" data-i18n="skp_dest_eyebrow">Wisata & Destinasi</span>
|
||||
<span class="eyebrow-component" data-skp-i18n="skp_dest_eyebrow">Wisata & Destinasi</span>
|
||||
|
||||
<h2 class="destination-title" data-i18n="skp_dest_title">
|
||||
<h2 class="destination-title" data-skp-i18n="skp_dest_title">
|
||||
Tempat Menarik di Pontianak
|
||||
</h2>
|
||||
|
||||
@@ -1142,9 +1396,9 @@
|
||||
|
||||
<!-- CULINARY SECTION -->
|
||||
<section class="culinary-section">
|
||||
<span class="eyebrow-component" data-i18n="skp_cul_eyebrow">Cafe & Kuliner</span>
|
||||
<span class="eyebrow-component" data-skp-i18n="skp_cul_eyebrow">Cafe & Kuliner</span>
|
||||
|
||||
<h2 class="culinary-title" data-i18n="skp_cul_title">
|
||||
<h2 class="culinary-title" data-skp-i18n="skp_cul_title">
|
||||
Kuliner dan Coffee Shop Favorit Mahasiswa
|
||||
</h2>
|
||||
<hr class="culinary-divider" />
|
||||
@@ -1157,24 +1411,23 @@
|
||||
<!-- LIVING COST SECTION -->
|
||||
<section class="living-cost-section">
|
||||
<div class="cost-banner-wrapper">
|
||||
<img src="images/biaya-hidup.jpg" alt="Ilustrasi biaya hidup mahasiswa di Pontianak"
|
||||
class="cost-banner-img" loading="lazy" decoding="async" width="1200" height="800" />
|
||||
<img src="images/biaya-hidup.jpg" alt="biaya hidup" class="cost-banner-img" />
|
||||
<div class="cost-banner-overlay"></div>
|
||||
</div>
|
||||
|
||||
<div class="cost-info-panel">
|
||||
<span class="eyebrow-component" data-i18n="skp_cost_eyebrow">Biaya Hidup Mahasiswa</span>
|
||||
<span class="eyebrow-component" data-skp-i18n="skp_cost_eyebrow">Biaya Hidup Mahasiswa</span>
|
||||
|
||||
<h2 class="cost-title" data-i18n="skp_cost_title">
|
||||
<h2 class="cost-title" data-skp-i18n="skp_cost_title">
|
||||
Perkiraan Biaya Hidup Mahasiswa di Pontianak
|
||||
</h2>
|
||||
|
||||
<p class="cost-desc" data-i18n="skp_cost_desc">
|
||||
<p class="cost-desc" data-skp-i18n="skp_cost_desc">
|
||||
Perencanaan keuangan yang baik membantu mahasiswa menjalani masa
|
||||
studi dengan lebih nyaman di Pontianak.
|
||||
</p>
|
||||
|
||||
<span class="cost-note" data-i18n="skp_cost_note">
|
||||
<span class="cost-note" data-skp-i18n="skp_cost_note">
|
||||
*Data yang didapat bersumber dari survey internal
|
||||
</span>
|
||||
|
||||
@@ -1211,7 +1464,7 @@
|
||||
|
||||
<div class="flex flex-col sm:flex-row items-center justify-center gap-4 sm:gap-6 mb-8 text-left">
|
||||
<img src="https://upload.wikimedia.org/wikipedia/id/0/03/Lambang_Universitas_Tanjungpura.png"
|
||||
class="h-16 sm:h-20 shrink-0" alt="Logo UNTAN" loading="lazy" decoding="async" />
|
||||
class="h-16 sm:h-20 shrink-0" alt="Logo UNTAN" />
|
||||
<div
|
||||
class="border-t sm:border-t-0 sm:border-l-2 border-white/30 pt-4 sm:pt-0 sm:pl-5 py-1 flex flex-col justify-center leading-tight">
|
||||
<h2 class="text-2xl sm:text-3xl font-bold font-sans tracking-widest uppercase mb-1">
|
||||
@@ -1246,8 +1499,7 @@
|
||||
|
||||
<div class="w-full relative z-0 mt-4 pointer-events-none flex justify-center">
|
||||
<img src="../../assets/global/footer.png" alt="Footer Illustration"
|
||||
class="w-full h-auto object-cover object-bottom" style="object-position: bottom" loading="lazy"
|
||||
decoding="async" />
|
||||
class="w-full h-auto object-cover object-bottom" style="object-position: bottom" />
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@@ -1364,8 +1616,11 @@
|
||||
})();
|
||||
</script>
|
||||
|
||||
<!-- localization.js is now loaded in <head> synchronously for anti-flicker -->
|
||||
<!-- See the <head> section for its <script> tag -->
|
||||
<script src="../../assets/global/localization.js"></script>
|
||||
<script src="localization.js"></script>
|
||||
<script>
|
||||
if (typeof applySkp === 'function') applySkp();
|
||||
</script>
|
||||
|
||||
<!-- JavaScript Kelompok HarusSelesaiKP -->
|
||||
<!-- JavaScript Facilities Section -->
|
||||
@@ -1436,7 +1691,7 @@
|
||||
desc: "Fasilitas laboratorium modern UNTAN yang mendukung riset, praktikum, dan inovasi mahasiswa.",
|
||||
},
|
||||
{
|
||||
imgSrc: "images/audit-untan.webp",
|
||||
imgSrc: "images/audit-untan.png",
|
||||
icon: "icons/building-home.svg",
|
||||
titleKey: "skp_fac_title_audit",
|
||||
descKey: "skp_fac_desc_audit",
|
||||
@@ -1453,16 +1708,16 @@
|
||||
|
||||
facilitiesData.forEach((item) => {
|
||||
const displayTitle =
|
||||
typeof t === "function" ? t(item.titleKey) : item.titleKey;
|
||||
typeof skpT === "function" ? skpT(item.titleKey) : item.titleKey;
|
||||
const displayDesc =
|
||||
typeof t === "function" ? t(item.descKey) : item.descKey;
|
||||
typeof skpT === "function" ? skpT(item.descKey) : item.descKey;
|
||||
|
||||
cardsHtmlHTML += `
|
||||
<div class="facility-card">
|
||||
<img src="${item.imgSrc}" alt="${displayTitle}" class="card-image" loading="lazy" decoding="async" />
|
||||
<img src="${item.imgSrc}" alt="${displayTitle}" class="card-image" />
|
||||
<div class="card-body">
|
||||
<span class="card-icon-badge">
|
||||
<img src="${item.icon}" alt="" class="card-icon" loading="lazy" decoding="async" />
|
||||
<img src="${item.icon}" alt="" class="card-icon" />
|
||||
</span>
|
||||
<h3 class="card-title">${displayTitle}</h3>
|
||||
<p class="card-desc">${displayDesc}</p>
|
||||
@@ -1508,7 +1763,7 @@
|
||||
const directoriesData = [
|
||||
{
|
||||
category: "Organisasi",
|
||||
image: "images/bem-untan.webp",
|
||||
image: "images/bem-untan.png",
|
||||
titleKey: "skp_campus_dir_bem_title",
|
||||
descKey: "skp_campus_dir_bem_desc",
|
||||
},
|
||||
@@ -1520,25 +1775,25 @@
|
||||
},
|
||||
{
|
||||
category: "Organisasi",
|
||||
image: "images/hmif-untan.webp",
|
||||
image: "images/hmif-untan.png",
|
||||
titleKey: "skp_campus_dir_hmif_title",
|
||||
descKey: "skp_campus_dir_hmif_desc",
|
||||
},
|
||||
{
|
||||
category: "Organisasi",
|
||||
image: "images/cafatifa-untan.webp",
|
||||
image: "images/cafatifa-untan.png",
|
||||
titleKey: "skp_campus_dir_cafa_title",
|
||||
descKey: "skp_campus_dir_cafa_desc",
|
||||
},
|
||||
{
|
||||
category: "UKM",
|
||||
image: "images/mapala-untan.webp",
|
||||
image: "images/mapala-untan.png",
|
||||
titleKey: "skp_campus_dir_mapala_title",
|
||||
descKey: "skp_campus_dir_mapala_desc",
|
||||
},
|
||||
{
|
||||
category: "UKM",
|
||||
image: "images/lisma-untan.webp",
|
||||
image: "images/lisma-untan.png",
|
||||
titleKey: "skp_campus_dir_lisma_title",
|
||||
descKey: "skp_campus_dir_lisma_desc",
|
||||
},
|
||||
@@ -1573,7 +1828,7 @@
|
||||
const isActiveClass =
|
||||
cat.id === currentActiveCategory ? "active" : "";
|
||||
const displayCategoryText =
|
||||
typeof t === "function" ? t(cat.textKey) : cat.id;
|
||||
typeof skpT === "function" ? skpT(cat.textKey) : cat.id;
|
||||
|
||||
return `
|
||||
<button class="category-btn ${isActiveClass}" onclick="handleCategoryChange('${cat.id}')">
|
||||
@@ -1593,14 +1848,14 @@
|
||||
cardsRoot.innerHTML = filteredData
|
||||
.map((dir) => {
|
||||
const displayTitle =
|
||||
typeof t === "function" ? t(dir.titleKey) : dir.titleKey;
|
||||
typeof skpT === "function" ? skpT(dir.titleKey) : dir.titleKey;
|
||||
const displayDesc =
|
||||
typeof t === "function" ? t(dir.descKey) : dir.descKey;
|
||||
typeof skpT === "function" ? skpT(dir.descKey) : dir.descKey;
|
||||
|
||||
return `
|
||||
<div class="directory-card">
|
||||
<div class="img-wrapper">
|
||||
<img src="${dir.image}" alt="${displayTitle}" loading="lazy" decoding="async" />
|
||||
<img src="${dir.image}" alt="${displayTitle}" />
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<h4>${displayTitle}</h4>
|
||||
@@ -1657,7 +1912,7 @@
|
||||
`;
|
||||
|
||||
const buttonText =
|
||||
typeof t === "function" ? t("skp_dest_open_maps") : "Open Maps";
|
||||
typeof skpT === "function" ? skpT("skp_dest_open_maps") : "Open Maps";
|
||||
|
||||
return `
|
||||
<a class="map-button-component" href="${href}" target="_blank" rel="noopener noreferrer">
|
||||
@@ -1669,13 +1924,13 @@
|
||||
|
||||
const destinationsData = [
|
||||
{
|
||||
image: "images/khatulistiwa.webp",
|
||||
image: "images/khatulistiwa.png",
|
||||
nameKey: "skp_dest_khatulistiwa_name",
|
||||
descKey: "skp_dest_khatulistiwa_desc",
|
||||
href: "https://maps.app.goo.gl/BUw4GWfSSDxvMCKA6",
|
||||
},
|
||||
{
|
||||
image: "images/waterfront.webp",
|
||||
image: "images/waterfront.jpg",
|
||||
nameKey: "skp_dest_waterfront_name",
|
||||
descKey: "skp_dest_waterfront_desc",
|
||||
href: "https://maps.app.goo.gl/2uo4jwNZtGTsvogU6",
|
||||
@@ -1687,7 +1942,7 @@
|
||||
href: "https://maps.app.goo.gl/dfLJPdFJMK9ifja66",
|
||||
},
|
||||
{
|
||||
image: "images/rumah-radank.webp",
|
||||
image: "images/rumah-radank.png",
|
||||
nameKey: "skp_dest_radank_name",
|
||||
descKey: "skp_dest_radank_desc",
|
||||
href: "https://maps.app.goo.gl/UqBchR3zimQSdTqW6",
|
||||
@@ -1729,9 +1984,9 @@
|
||||
|
||||
// Menerjemahkan nama dan deskripsi destinasi secara dinamis
|
||||
const displayName =
|
||||
typeof t === "function" ? t(dest.nameKey) : dest.nameKey;
|
||||
typeof skpT === "function" ? skpT(dest.nameKey) : dest.nameKey;
|
||||
const displayDesc =
|
||||
typeof t === "function" ? t(dest.descKey) : dest.descKey;
|
||||
typeof skpT === "function" ? skpT(dest.descKey) : dest.descKey;
|
||||
|
||||
return `
|
||||
<div class="destination-card" style="background-image: url('${dest.image}')">
|
||||
@@ -1764,14 +2019,14 @@
|
||||
const cuisinesData = [
|
||||
{
|
||||
category: "RM",
|
||||
image: "images/gebuk-sambalado.webp",
|
||||
image: "images/gebuk-sambalado.png",
|
||||
name: "Gebuk Sambalado",
|
||||
descKey: "skp_cul_gebuk_desc",
|
||||
href: "https://maps.app.goo.gl/J1xCUCqVyTqPStG6A",
|
||||
},
|
||||
{
|
||||
category: "RM",
|
||||
image: "images/kota-sari.webp",
|
||||
image: "images/kota-sari.png",
|
||||
name: "Kota Sari",
|
||||
descKey: "skp_cul_sari_desc",
|
||||
href: "https://maps.app.goo.gl/Tx5Rbt6TxCtFuiGdA",
|
||||
@@ -1860,7 +2115,7 @@
|
||||
.map((cat) => {
|
||||
const isActive = cat.id === activeCulinaryCategory ? "active" : "";
|
||||
const displayTabText =
|
||||
typeof t === "function" ? t(cat.textKey) : cat.id;
|
||||
typeof skpT === "function" ? skpT(cat.textKey) : cat.id;
|
||||
|
||||
return `
|
||||
<button class="culinary-tab-btn ${isActive}" onclick="handleCulinaryCategoryChange('${cat.id}')">
|
||||
@@ -1884,11 +2139,11 @@
|
||||
: `<a href="${item.href}">Maps</a>`;
|
||||
|
||||
const displayDesc =
|
||||
typeof t === "function" ? t(item.descKey) : item.descKey;
|
||||
typeof skpT === "function" ? skpT(item.descKey) : item.descKey;
|
||||
|
||||
return `
|
||||
<div class="culinary-card">
|
||||
<img src="${item.image}" alt="${item.name}" class="card-thumb" loading="lazy" decoding="async" />
|
||||
<img src="${item.image}" alt="${item.name}" class="card-thumb" />
|
||||
<div class="card-body">
|
||||
<h3>${item.name}</h3>
|
||||
<p>${displayDesc}</p>
|
||||
@@ -1947,9 +2202,9 @@
|
||||
costCardsRoot.innerHTML = livingCostDetailsData
|
||||
.map((detail) => {
|
||||
const displayType =
|
||||
typeof t === "function" ? t(detail.typeKey) : detail.typeKey;
|
||||
typeof skpT === "function" ? skpT(detail.typeKey) : detail.typeKey;
|
||||
const displayPeriod =
|
||||
typeof t === "function" ? t("skp_cost_period") : "per bulan";
|
||||
typeof skpT === "function" ? skpT("skp_cost_period") : "per bulan";
|
||||
|
||||
return `
|
||||
<div class="cost-item-card">
|
||||
|
||||
@@ -1,431 +1,270 @@
|
||||
/**
|
||||
* localization.js — HarusSelesaiKP
|
||||
*
|
||||
* ANTI-FLICKER STRATEGY:
|
||||
* 1. IIFE `initLanguage()` runs SYNCHRONOUSLY (no defer/async) to set
|
||||
* `window.__currentLang` before the browser paints any content.
|
||||
* 2. HTML body carries `lang-pending` class; body is hidden via CSS until
|
||||
* `applyTranslations()` fires on DOMContentLoaded and removes the class.
|
||||
* 3. `languageChanged` CustomEvent signals dynamic sections (Facilities,
|
||||
* Campus, Culinary, LivingCost) to re-render in the new language.
|
||||
*/
|
||||
(function () {
|
||||
const dict = {
|
||||
id: {
|
||||
// --- Hero Section ---
|
||||
skp_hero_desc: "Kuliah di kampus unggulan Kalimantan Barat dengan fasilitas lengkap, lingkungan nyaman dan kehidupan mahasiswa yang terjangkau",
|
||||
|
||||
// ─── 1. Determine language SYNCHRONOUSLY (before first paint) ────────────────
|
||||
(function initLanguage() {
|
||||
try {
|
||||
const saved = localStorage.getItem("lang");
|
||||
const browserLang = navigator.language?.startsWith("id") ? "id" : "en";
|
||||
window.__currentLang = saved || browserLang;
|
||||
} catch (e) {
|
||||
window.__currentLang = "id";
|
||||
}
|
||||
// Stamp <html lang> immediately so screen readers get the right language
|
||||
document.documentElement.lang = window.__currentLang;
|
||||
})();
|
||||
// --- About Section ---
|
||||
skp_about_eyebrow: "Tentang Untan",
|
||||
skp_about_title: "Kampus Unggul di Kalimantan Barat",
|
||||
skp_about_desc_1: "Universitas Tanjungpura merupakan perguruan tinggi negeri terkemuka di Kalimantan Barat yang berkomitmen menghadirkan pendidikan berkualitas.",
|
||||
skp_about_desc_2: "UNTAN terus mendorong pengembangan riset, inovasi, dan kolaborasi di berbagai bidang.",
|
||||
skp_about_desc_3: "Didukung lingkungan belajar yang nyaman, mahasiswa memiliki ruang untuk berkembang secara akademik maupun nonakademik.",
|
||||
skp_about_link_text: "Kunjungi Website Resmi",
|
||||
|
||||
// ─── 2. Translation data ─────────────────────────────────────────────────────
|
||||
const translations = {
|
||||
id: {
|
||||
// Kelompok HarusSelesaiKP (skp)
|
||||
// --- Facilities Section ---
|
||||
skp_fac_eyebrow: "Fasilitas Kampus",
|
||||
skp_fac_main_title: "Fasilitas Kampus untuk Pengalaman Belajar yang Nyaman",
|
||||
skp_fac_title_perpus: "Perpustakaan UNTAN",
|
||||
skp_fac_desc_perpus: "Koleksi literatur digital dan fisik terlengkap dengan ruang baca yang tenang dan modern.",
|
||||
skp_fac_title_rusunawa: "Rusunawa",
|
||||
skp_fac_desc_rusunawa: "Hunian mahasiswa yang aman, terjangkau, dan berlokasi strategis di dalam lingkungan kampus.",
|
||||
skp_fac_title_rs: "Rumah Sakit Untan & Klinik Pratama",
|
||||
skp_fac_desc_rs: "Layanan kesehatan prima bagi seluruh sivitas akademika dengan tenaga medis profesional.",
|
||||
skp_fac_title_gkb: "Gedung Kuliah Bersama",
|
||||
skp_fac_desc_gkb: "Ruang kelas interaktif dengan dukungan teknologi multimedia terkini untuk proses belajar mengajar.",
|
||||
skp_fac_title_bahasa: "UPT Bahasa",
|
||||
skp_fac_desc_bahasa: "Pusat pelatihan bahasa asing dan sertifikasi internasional untuk menunjang karir global.",
|
||||
skp_fac_title_olahraga: "Area Olahraga",
|
||||
skp_fac_desc_olahraga: "Fasilitas olahraga outdoor dan indoor lengkap untuk menjaga kebugaran dan menyalurkan bakat.",
|
||||
skp_fac_title_masjid: "Masjid Muhtadin UNTAN",
|
||||
skp_fac_desc_masjid: "Pusat ibadah yang nyaman dan inklusif bagi sivitas akademika UNTAN dengan suasana religius yang menenangkan.",
|
||||
skp_fac_title_lab: "Laboraturium Kampus UNTAN",
|
||||
skp_fac_desc_lab: "Fasilitas laboratorium modern UNTAN yang mendukung riset, praktikum, dan inovasi mahasiswa.",
|
||||
skp_fac_title_audit: "Auditorium UNTAN",
|
||||
skp_fac_desc_audit: "Ruang serbaguna representatif UNTAN untuk seminar, acara akademik, dan kegiatan besar kampus.",
|
||||
|
||||
// --- Hero Section ---
|
||||
skp_hero_desc:
|
||||
"Kuliah di kampus unggulan Kalimantan Barat dengan fasilitas lengkap, lingkungan nyaman dan kehidupan mahasiswa yang terjangkau",
|
||||
// --- Campus Section ---
|
||||
skp_campus_eyebrow: "Kehidupan Kampus",
|
||||
skp_campus_title: "Aktivitas Mahasiswa & Organisasi Kampus",
|
||||
skp_campus_subtitle: "Mahasiswa UNTAN memiliki berbagai kesempatan untuk berkembang melalui organisasi, UKM, komunitas, dan kegiatan ekstrakurikuler.",
|
||||
skp_campus_cat_org: "Organisasi",
|
||||
skp_campus_cat_ukm: "UKM",
|
||||
skp_campus_cat_com: "Komunitas",
|
||||
skp_campus_dir_bem_title: "BEM UNTAN",
|
||||
skp_campus_dir_bem_desc: "Badan Eksekutif Mahasiswa tingkat universitas yang menjadi wadah aspirasi dan pergerakan mahasiswa untuk perubahan positif di kampus.",
|
||||
skp_campus_dir_dpm_title: "DPM UNTAN",
|
||||
skp_campus_dir_dpm_desc: "Dewan Perwakilan Mahasiswa yang menjalankan fungsi legislasi dan pengawasan terhadap kebijakan-kebijakan organisasi mahasiswa di universitas.",
|
||||
skp_campus_dir_hmif_title: "HMIF UNTAN",
|
||||
skp_campus_dir_hmif_desc: "Organisasi mahasiswa di bawah Program Studi Informatika yang menjadi wadah pengembangan akademik, kepemimpinan, dan jejaring bagi anggotanya.",
|
||||
skp_campus_dir_cafa_title: "CAFATIFA",
|
||||
skp_campus_dir_cafa_desc: "Organisasi ini menjadi wadah pelayanan, pembinaan iman, dan pengembangan karakter bagi mahasiswa Katolik di fakultas tersebut.",
|
||||
skp_campus_dir_mapala_title: "MAPALA UNTAN",
|
||||
skp_campus_dir_mapala_desc: "Wadah pecinta alam mahasiswa UNTAN yang membentuk karakter tangguh, peduli lingkungan, dan berjiwa petualang.",
|
||||
skp_campus_dir_lisma_title: "LISMA UNTAN",
|
||||
skp_campus_dir_lisma_desc: "Wadah mahasiswa yang mengembangkan minat literasi, diskusi, dan pemikiran kritis secara kolaboratif.",
|
||||
skp_campus_dir_lsmi_title: "LSMI UNTAN",
|
||||
skp_campus_dir_lsmi_desc: "Unit kegiatan mahasiswa yang mewadahi pembinaan keagamaan, dakwah, dan pengembangan spiritual mahasiswa.",
|
||||
skp_campus_dir_semut_title: "SARANG SEMUT",
|
||||
skp_campus_dir_semut_desc: "Komunitas mahasiswa yang menumbuhkan budaya literasi, diskusi kritis, dan pemikiran intelektual di lingkungan kampus.",
|
||||
skp_campus_dir_aiesec_title: "AIESEC",
|
||||
skp_campus_dir_aiesec_desc: "Organisasi kepemudaan internasional di UNTAN yang mengembangkan kepemimpinan, pengalaman global, dan kolaborasi lintas budaya mahasiswa.",
|
||||
|
||||
// --- About Section ---
|
||||
skp_about_eyebrow: "Tentang Untan",
|
||||
skp_about_title: "Kampus Unggul di Kalimantan Barat",
|
||||
skp_about_desc_1:
|
||||
"Universitas Tanjungpura merupakan perguruan tinggi negeri terkemuka di Kalimantan Barat yang berkomitmen menghadirkan pendidikan berkualitas.",
|
||||
skp_about_desc_2:
|
||||
"UNTAN terus mendorong pengembangan riset, inovasi, dan kolaborasi di berbagai bidang.",
|
||||
skp_about_desc_3:
|
||||
"Didukung lingkungan belajar yang nyaman, mahasiswa memiliki ruang untuk berkembang secara akademik maupun nonakademik.",
|
||||
skp_about_link_text: "Kunjungi Website Resmi",
|
||||
// --- Pontianak City Section ---
|
||||
skp_pontianak_eyebrow: "Kota Pontianak",
|
||||
skp_pontianak_title: "Live In Pontianak",
|
||||
skp_pontianak_desc: "Pontianak bukan sekadar ibu kota Kalimantan Barat, tetapi tempat yang nyaman untuk tinggal, ramah bagi mahasiswa, dan bersahabat di kantong. Kota ini menawarkan akses fasilitas umum yang lengkap, ragam kuliner yang menggoda, serta suasana belajar yang aktif dan penuh semangat.",
|
||||
|
||||
// --- Facilities Section ---
|
||||
skp_fac_eyebrow: "Fasilitas Kampus",
|
||||
skp_fac_main_title: "Fasilitas Kampus untuk Pengalaman Belajar yang Nyaman",
|
||||
skp_fac_title_perpus: "Perpustakaan UNTAN",
|
||||
skp_fac_desc_perpus:
|
||||
"Koleksi literatur digital dan fisik terlengkap dengan ruang baca yang tenang dan modern.",
|
||||
skp_fac_title_rusunawa: "Rusunawa",
|
||||
skp_fac_desc_rusunawa:
|
||||
"Hunian mahasiswa yang aman, terjangkau, dan berlokasi strategis di dalam lingkungan kampus.",
|
||||
skp_fac_title_rs: "Rumah Sakit Untan & Klinik Pratama",
|
||||
skp_fac_desc_rs:
|
||||
"Layanan kesehatan prima bagi seluruh sivitas akademika dengan tenaga medis profesional.",
|
||||
skp_fac_title_gkb: "Gedung Kuliah Bersama",
|
||||
skp_fac_desc_gkb:
|
||||
"Ruang kelas interaktif dengan dukungan teknologi multimedia terkini untuk proses belajar mengajar.",
|
||||
skp_fac_title_bahasa: "UPT Bahasa",
|
||||
skp_fac_desc_bahasa:
|
||||
"Pusat pelatihan bahasa asing dan sertifikasi internasional untuk menunjang karir global.",
|
||||
skp_fac_title_olahraga: "Area Olahraga",
|
||||
skp_fac_desc_olahraga:
|
||||
"Fasilitas olahraga outdoor dan indoor lengkap untuk menjaga kebugaran dan menyalurkan bakat.",
|
||||
skp_fac_title_masjid: "Masjid Muhtadin UNTAN",
|
||||
skp_fac_desc_masjid:
|
||||
"Pusat ibadah yang nyaman dan inklusif bagi sivitas akademika UNTAN dengan suasana religius yang menenangkan.",
|
||||
skp_fac_title_lab: "Laboraturium Kampus UNTAN",
|
||||
skp_fac_desc_lab:
|
||||
"Fasilitas laboratorium modern UNTAN yang mendukung riset, praktikum, dan inovasi mahasiswa.",
|
||||
skp_fac_title_audit: "Auditorium UNTAN",
|
||||
skp_fac_desc_audit:
|
||||
"Ruang serbaguna representatif UNTAN untuk seminar, acara akademik, dan kegiatan besar kampus.",
|
||||
// --- Destination Section ---
|
||||
skp_dest_eyebrow: "Wisata & Destinasi",
|
||||
skp_dest_title: "Tempat Menarik di Pontianak",
|
||||
skp_dest_open_maps: "Buka Peta",
|
||||
skp_dest_khatulistiwa_name: "Tugu Khatulistiwa",
|
||||
skp_dest_khatulistiwa_desc: "Ikon kota yang menandakan posisi garis lintang nol derajat di bumi.",
|
||||
skp_dest_waterfront_name: "Waterfront",
|
||||
skp_dest_waterfront_desc: "Area pedestrian tepi sungai Kapuas yang populer untuk menikmati senja.",
|
||||
skp_dest_qubu_name: "Qubu Resort",
|
||||
skp_dest_qubu_desc: "Kawasan taman wisata terpadu dan resort bintang 4 di Kubu Raya.",
|
||||
skp_dest_radank_name: "Rumah Radakng",
|
||||
skp_dest_radank_desc: "Rumah adat suku Dayak dan merupakan simbol harmoni budaya.",
|
||||
skp_dest_museum_name: "Museum",
|
||||
skp_dest_museum_desc: "Koleksi Geografika/Geologika berupa peta dan jenis batu-batuan.",
|
||||
skp_dest_amalzone_name: "Amalzone",
|
||||
skp_dest_amalzone_desc: "Destinasi wisata alam dan rekreasi keluarga yang populer.",
|
||||
skp_dest_mangrove_name: "Hutan Mangrove",
|
||||
skp_dest_mangrove_desc: "Pemandangan alami yang menakjubkan jalur trekking kayu.",
|
||||
skp_dest_mujahidin_name: "Masjid Mujahidin",
|
||||
skp_dest_mujahidin_desc: "Masjid terbesar di Provinsi Kalimantan Barat.",
|
||||
|
||||
// --- Campus Section ---
|
||||
skp_campus_eyebrow: "Kehidupan Kampus",
|
||||
skp_campus_title: "Aktivitas Mahasiswa & Organisasi Kampus",
|
||||
skp_campus_subtitle:
|
||||
"Mahasiswa UNTAN memiliki berbagai kesempatan untuk berkembang melalui organisasi, UKM, komunitas, dan kegiatan ekstrakurikuler.",
|
||||
// --- Culinary Section ---
|
||||
skp_cul_eyebrow: "Cafe & Kuliner",
|
||||
skp_cul_title: "Kuliner dan Coffee Shop Favorit Mahasiswa",
|
||||
skp_cul_cat_rm: "Rumah Makan",
|
||||
skp_cul_cat_cs: "Coffee Shop",
|
||||
skp_cul_gebuk_desc: "Ayam gepuk pedas gurih meresap, bikin nambah nasi terus.",
|
||||
skp_cul_sari_desc: "Masakan hangat rumahan menggoda, sekali coba langsung jatuh cinta.",
|
||||
skp_cul_mom_desc: "Menu rumahan enak dengan porsi besar.",
|
||||
skp_cul_shine_desc: "Nasi topping kekinian dengan tampilan menarik dan topping yang melimpah.",
|
||||
skp_cul_melepar_desc: "Ayam crispy gurih pedas favorit mahasiswa dengan ayam renyah pedas menggigit.",
|
||||
skp_cul_umi_desc: "Ayam geprek pedas murah dan mengenyangkan dengan pedasnya nampol mantap.",
|
||||
skp_cul_cw_desc: "CW Coffee awalnya berdiri pada tahun 2015 dengan nama Cyber World iCafe, sebuah kafe internet (warnet) berkecepatan tinggi yang buka 24 jam.",
|
||||
skp_cul_nordu_desc: "NORDU Coffee & Eatery (populer dikenal sebagai Kopi Nomor Dua) menawarkan tempat yang nyaman untuk bekerja (Work From Home) dengan menu kopi dan hidangan yang ramah di kantong.",
|
||||
skp_cul_kami_desc: "Toko Kami didirikan pada November 2021 oleh seorang pemuda kreatif bernama Yudistira Nusantara. Nama 'Toko Kami' merupakan sebuah akronim dari Toko Kudapan dan Aneka Minuman Indonesia.",
|
||||
skp_cul_lokale_desc: "Lokale didirikan oleh Asmako pada tahun 2017. Berawal dari kecintaan pemiliknya terhadap racikan kopi, Lokale hadir untuk menciptakan cita rasa kopi modern yang pas dengan lidah masyarakat.",
|
||||
skp_cul_weng_desc: "Weng Coffee adalah salah satu legenda hidup warung kopi di Kota Khatulistiwa yang sudah berdiri sejak tahun 1970.",
|
||||
skp_cul_tropic_desc: "Tropic Cafe Pontianak merupakan salah satu pelopor coffee shop modern berskala besar di Pontianak yang mengusung konsep 24 jam nonstop dengan harga super ramah kantong.",
|
||||
|
||||
skp_campus_cat_org: "Organisasi",
|
||||
skp_campus_cat_ukm: "UKM",
|
||||
skp_campus_cat_com: "Komunitas",
|
||||
// --- Living Cost Section ---
|
||||
skp_cost_eyebrow: "Biaya Hidup Mahasiswa",
|
||||
skp_cost_title: "Perkiraan Biaya Hidup Mahasiswa di Pontianak",
|
||||
skp_cost_desc: "Perencanaan keuangan yang baik membantu mahasiswa menjalani masa studi dengan lebih nyaman di Pontianak.",
|
||||
skp_cost_note: "*Data yang didapat bersumber dari survey internal",
|
||||
skp_cost_period: "per bulan",
|
||||
skp_cost_type_home: "Hunian",
|
||||
skp_cost_type_food: "Makan",
|
||||
skp_cost_type_transport: "Transport",
|
||||
},
|
||||
en: {
|
||||
// --- Hero Section ---
|
||||
skp_hero_desc: "Study at the leading campus in West Kalimantan with complete facilities, comfortable environment, and affordable student life",
|
||||
|
||||
skp_campus_dir_bem_title: "BEM UNTAN",
|
||||
skp_campus_dir_bem_desc:
|
||||
"Badan Eksekutif Mahasiswa tingkat universitas yang menjadi wadah aspirasi dan pergerakan mahasiswa untuk perubahan positif di kampus.",
|
||||
skp_campus_dir_dpm_title: "DPM UNTAN",
|
||||
skp_campus_dir_dpm_desc:
|
||||
"Dewan Perwakilan Mahasiswa yang menjalankan fungsi legislasi dan pengawasan terhadap kebijakan-kebijakan organisasi mahasiswa di universitas.",
|
||||
skp_campus_dir_hmif_title: "HMIF UNTAN",
|
||||
skp_campus_dir_hmif_desc:
|
||||
"Organisasi mahasiswa di bawah Program Studi Informatika yang menjadi wadah pengembangan akademik, kepemimpinan, dan jejaring bagi anggotanya.",
|
||||
skp_campus_dir_cafa_title: "CAFATIFA",
|
||||
skp_campus_dir_cafa_desc:
|
||||
"Organisasi ini menjadi wadah pelayanan, pembinaan iman, dan pengembangan karakter bagi mahasiswa Katolik di fakultas tersebut.",
|
||||
skp_campus_dir_mapala_title: "MAPALA UNTAN",
|
||||
skp_campus_dir_mapala_desc:
|
||||
"Wadah pecinta alam mahasiswa UNTAN yang membentuk karakter tangguh, peduli lingkungan, dan berjiwa petualang.",
|
||||
skp_campus_dir_lisma_title: "LISMA UNTAN",
|
||||
skp_campus_dir_lisma_desc:
|
||||
"Wadah mahasiswa yang mengembangkan minat literasi, diskusi, dan pemikiran kritis secara kolaboratif.",
|
||||
skp_campus_dir_lsmi_title: "LSMI UNTAN",
|
||||
skp_campus_dir_lsmi_desc:
|
||||
"Unit kegiatan mahasiswa yang mewadahi pembinaan keagamaan, dakwah, dan pengembangan spiritual mahasiswa.",
|
||||
skp_campus_dir_semut_title: "SARANG SEMUT",
|
||||
skp_campus_dir_semut_desc:
|
||||
"Komunitas mahasiswa yang menumbuhkan budaya literasi, diskusi kritis, dan pemikiran intelektual di lingkungan kampus.",
|
||||
skp_campus_dir_aiesec_title: "AIESEC",
|
||||
skp_campus_dir_aiesec_desc:
|
||||
"Organisasi kepemudaan internasional di UNTAN yang mengembangkan kepemimpinan, pengalaman global, dan kolaborasi lintas budaya mahasiswa.",
|
||||
// --- About Section ---
|
||||
skp_about_eyebrow: "About Untan",
|
||||
skp_about_title: "A Leading Campus in West Kalimantan",
|
||||
skp_about_desc_1: "Universitas Tanjungpura is a leading public university in West Kalimantan committed to delivering quality education.",
|
||||
skp_about_desc_2: "UNTAN continues to drive research development, innovation, and collaboration across various fields.",
|
||||
skp_about_desc_3: "Supported by a comfortable learning environment, students have the opportunity to grow both academically and non-academically.",
|
||||
skp_about_link_text: "Visit Official Website",
|
||||
|
||||
// --- Pontianak City Section ---
|
||||
skp_pontianak_eyebrow: "Kota Pontianak",
|
||||
skp_pontianak_title: "Live In Pontianak",
|
||||
skp_pontianak_desc:
|
||||
"Pontianak bukan sekadar ibu kota Kalimantan Barat, tetapi tempat yang nyaman untuk tinggal, ramah bagi mahasiswa, dan bersahabat di kantong. Kota ini menawarkan akses fasilitas umum yang lengkap, ragam kuliner yang menggoda, serta suasana belajar yang aktif dan penuh semangat.",
|
||||
// --- Facilities Section ---
|
||||
skp_fac_eyebrow: "Campus Facilities",
|
||||
skp_fac_main_title: "Campus Facilities for a Comfortable Learning Experience",
|
||||
skp_fac_title_perpus: "UNTAN Library",
|
||||
skp_fac_desc_perpus: "The most complete collection of digital and physical literature with a quiet and modern reading room.",
|
||||
skp_fac_title_rusunawa: "Student Dormitory (Rusunawa)",
|
||||
skp_fac_desc_rusunawa: "Safe, affordable, and strategically located student housing within the campus environment.",
|
||||
skp_fac_title_rs: "Untan Hospital & Pratama Clinic",
|
||||
skp_fac_desc_rs: "Excellent health services for the entire academic community with professional medical staff.",
|
||||
skp_fac_title_gkb: "Shared Lecture Building (GKB)",
|
||||
skp_fac_desc_gkb: "Interactive classrooms with the latest multimedia technology support for the teaching and learning process.",
|
||||
skp_fac_title_bahasa: "Language Center (UPT Bahasa)",
|
||||
skp_fac_desc_bahasa: "Foreign language training and international certification center to support global careers.",
|
||||
skp_fac_title_olahraga: "Sports Area",
|
||||
skp_fac_desc_olahraga: "Complete outdoor and indoor sports facilities to maintain fitness and channel talents.",
|
||||
skp_fac_title_masjid: "Muhtadin Mosque UNTAN",
|
||||
skp_fac_desc_masjid: "A comfortable and inclusive place of worship for the UNTAN academic community with a soothing religious atmosphere.",
|
||||
skp_fac_title_lab: "UNTAN Campus Laboratory",
|
||||
skp_fac_desc_lab: "Modern UNTAN laboratory facilities that support student research, practicums, and innovation.",
|
||||
skp_fac_title_audit: "UNTAN Auditorium",
|
||||
skp_fac_desc_audit: "A representative multi-purpose hall for seminars, academic events, and major campus activities.",
|
||||
|
||||
// --- Destination Section ---
|
||||
skp_dest_eyebrow: "Wisata & Destinasi",
|
||||
skp_dest_title: "Tempat Menarik di Pontianak",
|
||||
skp_dest_open_maps: "Buka Peta",
|
||||
// --- Campus Section ---
|
||||
skp_campus_eyebrow: "Campus Life",
|
||||
skp_campus_title: "Student Activities & Campus Organizations",
|
||||
skp_campus_subtitle: "UNTAN students have various opportunities to grow through organizations, Student Activity Units (UKM), communities, and extracurricular activities.",
|
||||
skp_campus_cat_org: "Organizations",
|
||||
skp_campus_cat_ukm: "Student Units",
|
||||
skp_campus_cat_com: "Communities",
|
||||
skp_campus_dir_bem_title: "BEM UNTAN",
|
||||
skp_campus_dir_bem_desc: "The university-level Student Executive Board that acts as a forum for student aspirations and movements for positive campus change.",
|
||||
skp_campus_dir_dpm_title: "DPM UNTAN",
|
||||
skp_campus_dir_dpm_desc: "The Student Representative Council that performs legislative and supervisory functions over student organization policies at the university.",
|
||||
skp_campus_dir_hmif_title: "HMIF UNTAN",
|
||||
skp_campus_dir_hmif_desc: "A student organization under the Informatics Study Program that serves as a hub for academic development, leadership, and networking for its members.",
|
||||
skp_campus_dir_cafa_title: "CAFATIFA",
|
||||
skp_campus_dir_cafa_desc: "This organization provides a forum for service, faith formation, and character building for Catholic students in the faculty.",
|
||||
skp_campus_dir_mapala_title: "MAPALA UNTAN",
|
||||
skp_campus_dir_mapala_desc: "A community for UNTAN student nature lovers that shapes a resilient character, environmental awareness, and an adventurous spirit.",
|
||||
skp_campus_dir_lisma_title: "LISMA UNTAN",
|
||||
skp_campus_dir_lisma_desc: "A student forum that develops interest in literacy, discussion, and critical thinking collaboratively.",
|
||||
skp_campus_dir_lsmi_title: "LSMI UNTAN",
|
||||
skp_campus_dir_lsmi_desc: "A student activity unit that handles religious guidance, Islamic outreach (da'wah), and spiritual development for students.",
|
||||
skp_campus_dir_semut_title: "SARANG SEMUT",
|
||||
skp_campus_dir_semut_desc: "A student community that fosters a culture of literacy, critical discussion, and intellectual thought within the campus environment.",
|
||||
skp_campus_dir_aiesec_title: "AIESEC",
|
||||
skp_campus_dir_aiesec_desc: "An international youth organization at UNTAN that develops leadership, global experience, and cross-cultural collaboration among students.",
|
||||
|
||||
skp_dest_khatulistiwa_name: "Tugu Khatulistiwa",
|
||||
skp_dest_khatulistiwa_desc:
|
||||
"Ikon kota yang menandakan posisi garis lintang nol derajat di bumi.",
|
||||
skp_dest_waterfront_name: "Waterfront",
|
||||
skp_dest_waterfront_desc:
|
||||
"Area pedestrian tepi sungai Kapuas yang populer untuk menikmati senja.",
|
||||
skp_dest_qubu_name: "Qubu Resort",
|
||||
skp_dest_qubu_desc:
|
||||
"Kawasan taman wisata terpadu dan resort bintang 4 di Kubu Raya.",
|
||||
skp_dest_radank_name: "Rumah Radakng",
|
||||
skp_dest_radank_desc:
|
||||
"Rumah adat suku Dayak dan merupakan simbol harmoni budaya.",
|
||||
skp_dest_museum_name: "Museum",
|
||||
skp_dest_museum_desc:
|
||||
"Koleksi Geografika/Geologika berupa peta dan jenis batu-batuan.",
|
||||
skp_dest_amalzone_name: "Amalzone",
|
||||
skp_dest_amalzone_desc:
|
||||
"Destinasi wisata alam dan rekreasi keluarga yang populer.",
|
||||
skp_dest_mangrove_name: "Hutan Mangrove",
|
||||
skp_dest_mangrove_desc:
|
||||
"Pemandangan alami yang menakjubkan jalur trekking kayu.",
|
||||
skp_dest_mujahidin_name: "Masjid Mujahidin",
|
||||
skp_dest_mujahidin_desc: "Masjid terbesar di Provinsi Kalimantan Barat.",
|
||||
// --- Pontianak City Section ---
|
||||
skp_pontianak_eyebrow: "Pontianak City",
|
||||
skp_pontianak_title: "Live In Pontianak",
|
||||
skp_pontianak_desc: "Pontianak is not just the capital of West Kalimantan, but a comfortable place to live, student-friendly, and very affordable. The city offers complete access to public facilities, a tempting variety of culinary options, and an active, vibrant learning environment.",
|
||||
|
||||
// --- Culinary Section ---
|
||||
skp_cul_eyebrow: "Cafe & Kuliner",
|
||||
skp_cul_title: "Kuliner dan Coffee Shop Favorit Mahasiswa",
|
||||
skp_cul_cat_rm: "Rumah Makan",
|
||||
skp_cul_cat_cs: "Coffee Shop",
|
||||
// --- Destination Section ---
|
||||
skp_dest_eyebrow: "Tourism & Destinations",
|
||||
skp_dest_title: "Interesting Places in Pontianak",
|
||||
skp_dest_open_maps: "Open Maps",
|
||||
skp_dest_khatulistiwa_name: "Equator Monument",
|
||||
skp_dest_khatulistiwa_desc: "The city icon marking the zero-degree latitude position on earth.",
|
||||
skp_dest_waterfront_name: "Waterfront",
|
||||
skp_dest_waterfront_desc: "A popular pedestrian area by the Kapuas River to enjoy the sunset.",
|
||||
skp_dest_qubu_name: "Qubu Resort",
|
||||
skp_dest_qubu_desc: "An integrated tourism park area and a 4-star resort in Kubu Raya.",
|
||||
skp_dest_radank_name: "Radakng House",
|
||||
skp_dest_radank_desc: "The traditional longhouse of the Dayak tribe, a symbol of cultural harmony.",
|
||||
skp_dest_museum_name: "Museum",
|
||||
skp_dest_museum_desc: "Geographical and geological collections featuring maps and various types of rocks.",
|
||||
skp_dest_amalzone_name: "Amalzone",
|
||||
skp_dest_amalzone_desc: "A popular nature tourism and family recreation destination.",
|
||||
skp_dest_mangrove_name: "Mangrove Forest",
|
||||
skp_dest_mangrove_desc: "Stunning natural scenery along a wooden trekking pathway.",
|
||||
skp_dest_mujahidin_name: "Mujahidin Mosque",
|
||||
skp_dest_mujahidin_desc: "The largest mosque in the West Kalimantan Province.",
|
||||
|
||||
skp_cul_gebuk_desc:
|
||||
"Ayam gepuk pedas gurih meresap, bikin nambah nasi terus.",
|
||||
skp_cul_sari_desc:
|
||||
"Masakan hangat rumahan menggoda, sekali coba langsung jatuh cinta.",
|
||||
skp_cul_mom_desc: "Menu rumahan enak dengan porsi besar.",
|
||||
skp_cul_shine_desc:
|
||||
"Nasi topping kekinian dengan tampilan menarik dan topping yang melimpah.",
|
||||
skp_cul_melepar_desc:
|
||||
"Ayam crispy gurih pedas favorit mahasiswa dengan ayam renyah pedas menggigit.",
|
||||
skp_cul_umi_desc:
|
||||
"Ayam geprek pedas murah dan mengenyangkan dengan pedasnya nampol mantap.",
|
||||
skp_cul_cw_desc:
|
||||
"CW Coffee awalnya berdiri pada tahun 2015 dengan nama Cyber World iCafe, sebuah kafe internet (warnet) berkecepatan tinggi yang buka 24 jam.",
|
||||
skp_cul_nordu_desc:
|
||||
"NORDU Coffee & Eatery (populer dikenal sebagai Kopi Nomor Dua) menawarkan tempat yang nyaman untuk bekerja (Work From Home) dengan menu kopi dan hidangan yang ramah di kantong.",
|
||||
skp_cul_kami_desc:
|
||||
"Toko Kami didirikan pada November 2021 oleh seorang pemuda kreatif bernama Yudistira Nusantara. Nama 'Toko Kami' merupakan sebuah akronim dari Toko Kudapan dan Aneka Minuman Indonesia.",
|
||||
skp_cul_lokale_desc:
|
||||
"Lokale didirikan oleh Asmako pada tahun 2017. Berawal dari kecintaan pemiliknya terhadap racikan kopi, Lokale hadir untuk menciptakan cita rasa kopi modern yang pas dengan lidah masyarakat.",
|
||||
skp_cul_weng_desc:
|
||||
"Weng Coffee adalah salah satu legenda hidup warung kopi di Kota Khatulistiwa yang sudah berdiri sejak tahun 1970.",
|
||||
skp_cul_tropic_desc:
|
||||
"Tropic Cafe Pontianak merupakan salah satu pelopor coffee shop modern berskala besar di Pontianak yang mengusung konsep 24 jam nonstop dengan harga super ramah kantong.",
|
||||
// --- Culinary Section ---
|
||||
skp_cul_eyebrow: "Cafe & Culinary",
|
||||
skp_cul_title: "Students' Favorite Culinary and Coffee Shops",
|
||||
skp_cul_cat_rm: "Eateries",
|
||||
skp_cul_cat_cs: "Coffee Shops",
|
||||
skp_cul_gebuk_desc: "Spicy and savory pounded chicken that makes you want to keep adding rice.",
|
||||
skp_cul_sari_desc: "Tempting home-cooked warmth, fall in love at first bite.",
|
||||
skp_cul_mom_desc: "Delicious home-style meals with generous portions.",
|
||||
skp_cul_shine_desc: "Trendy rice bowls with attractive presentation and abundant toppings.",
|
||||
skp_cul_melepar_desc: "Crispy, savory, and spicy chicken, a student favorite with a crunchy, fiery bite.",
|
||||
skp_cul_umi_desc: "Cheap, filling, and spicy smashed chicken with an intensely satisfying kick.",
|
||||
skp_cul_cw_desc: "CW Coffee originally started in 2015 as Cyber World iCafe, a high-speed 24-hour internet cafe.",
|
||||
skp_cul_nordu_desc: "NORDU Coffee & Eatery (popularly known as Kopi Nomor Dua) offers a comfortable place to work (WFH) with student-friendly coffee and meals.",
|
||||
skp_cul_kami_desc: "Toko Kami was founded in November 2021 by a creative youth named Yudistira Nusantara. The name is an acronym for Indonesian Snack and Beverage Shop.",
|
||||
skp_cul_lokale_desc: "Lokale was founded by Asmako in 2017. Rooted in the owner's passion for coffee brewing, Lokale brings modern coffee flavors tailored to the local palate.",
|
||||
skp_cul_weng_desc: "Weng Coffee is one of the living legends of coffee shops in the Equator City, operating since 1970.",
|
||||
skp_cul_tropic_desc: "Tropic Cafe Pontianak is a pioneer of large-scale modern coffee shops in Pontianak, featuring a 24/7 non-stop concept with highly affordable prices.",
|
||||
|
||||
// --- Living Cost Section ---
|
||||
skp_cost_eyebrow: "Biaya Hidup Mahasiswa",
|
||||
skp_cost_title: "Perkiraan Biaya Hidup Mahasiswa di Pontianak",
|
||||
skp_cost_desc:
|
||||
"Perencanaan keuangan yang baik membantu mahasiswa menjalani masa studi dengan lebih nyaman di Pontianak.",
|
||||
skp_cost_note: "*Data yang didapat bersumber dari survey internal",
|
||||
skp_cost_period: "per bulan",
|
||||
// --- Living Cost Section ---
|
||||
skp_cost_eyebrow: "Student Living Cost",
|
||||
skp_cost_title: "Estimated Living Cost for Students in Pontianak",
|
||||
skp_cost_desc: "Good financial planning helps students go through their study period more comfortably in Pontianak.",
|
||||
skp_cost_note: "*Data obtained is sourced from an internal survey",
|
||||
skp_cost_period: "per month",
|
||||
skp_cost_type_home: "Housing",
|
||||
skp_cost_type_food: "Food",
|
||||
skp_cost_type_transport: "Transport",
|
||||
},
|
||||
};
|
||||
|
||||
skp_cost_type_home: "Hunian",
|
||||
skp_cost_type_food: "Makan",
|
||||
skp_cost_type_transport: "Transport",
|
||||
},
|
||||
en: {
|
||||
// Kelompok HarusSelesaiKP (skp)
|
||||
|
||||
// --- Hero Section ---
|
||||
skp_hero_desc:
|
||||
"Study at the leading campus in West Kalimantan with complete facilities, comfortable environment, and affordable student life",
|
||||
|
||||
// --- About Section ---
|
||||
skp_about_eyebrow: "About Untan",
|
||||
skp_about_title: "A Leading Campus in West Kalimantan",
|
||||
skp_about_desc_1:
|
||||
"Universitas Tanjungpura is a leading public university in West Kalimantan committed to delivering quality education.",
|
||||
skp_about_desc_2:
|
||||
"UNTAN continues to drive research development, innovation, and collaboration across various fields.",
|
||||
skp_about_desc_3:
|
||||
"Supported by a comfortable learning environment, students have the opportunity to grow both academically and non-academically.",
|
||||
skp_about_link_text: "Visit Official Website",
|
||||
|
||||
// --- Facilities Section ---
|
||||
skp_fac_eyebrow: "Campus Facilities",
|
||||
skp_fac_main_title:
|
||||
"Campus Facilities for a Comfortable Learning Experience",
|
||||
skp_fac_title_perpus: "UNTAN Library",
|
||||
skp_fac_desc_perpus:
|
||||
"The most complete collection of digital and physical literature with a quiet and modern reading room.",
|
||||
skp_fac_title_rusunawa: "Student Dormitory (Rusunawa)",
|
||||
skp_fac_desc_rusunawa:
|
||||
"Safe, affordable, and strategically located student housing within the campus environment.",
|
||||
skp_fac_title_rs: "Untan Hospital & Pratama Clinic",
|
||||
skp_fac_desc_rs:
|
||||
"Excellent health services for the entire academic community with professional medical staff.",
|
||||
skp_fac_title_gkb: "Shared Lecture Building (GKB)",
|
||||
skp_fac_desc_gkb:
|
||||
"Interactive classrooms with the latest multimedia technology support for the teaching and learning process.",
|
||||
skp_fac_title_bahasa: "Language Center (UPT Bahasa)",
|
||||
skp_fac_desc_bahasa:
|
||||
"Foreign language training and international certification center to support global careers.",
|
||||
skp_fac_title_olahraga: "Sports Area",
|
||||
skp_fac_desc_olahraga:
|
||||
"Complete outdoor and indoor sports facilities to maintain fitness and channel talents.",
|
||||
skp_fac_title_masjid: "Muhtadin Mosque UNTAN",
|
||||
skp_fac_desc_masjid:
|
||||
"A comfortable and inclusive place of worship for the UNTAN academic community with a soothing religious atmosphere.",
|
||||
skp_fac_title_lab: "UNTAN Campus Laboratory",
|
||||
skp_fac_desc_lab:
|
||||
"Modern UNTAN laboratory facilities that support student research, practicums, and innovation.",
|
||||
skp_fac_title_audit: "UNTAN Auditorium",
|
||||
skp_fac_desc_audit:
|
||||
"A representative multi-purpose hall for seminars, academic events, and major campus activities.",
|
||||
|
||||
// --- Campus Section ---
|
||||
skp_campus_eyebrow: "Campus Life",
|
||||
skp_campus_title: "Student Activities & Campus Organizations",
|
||||
skp_campus_subtitle:
|
||||
"UNTAN students have various opportunities to grow through organizations, Student Activity Units (UKM), communities, and extracurricular activities.",
|
||||
|
||||
skp_campus_cat_org: "Organizations",
|
||||
skp_campus_cat_ukm: "Student Units",
|
||||
skp_campus_cat_com: "Communities",
|
||||
|
||||
skp_campus_dir_bem_title: "BEM UNTAN",
|
||||
skp_campus_dir_bem_desc:
|
||||
"The university-level Student Executive Board that acts as a forum for student aspirations and movements for positive campus change.",
|
||||
skp_campus_dir_dpm_title: "DPM UNTAN",
|
||||
skp_campus_dir_dpm_desc:
|
||||
"The Student Representative Council that performs legislative and supervisory functions over student organization policies at the university.",
|
||||
skp_campus_dir_hmif_title: "HMIF UNTAN",
|
||||
skp_campus_dir_hmif_desc:
|
||||
"A student organization under the Informatics Study Program that serves as a hub for academic development, leadership, and networking for its members.",
|
||||
skp_campus_dir_cafa_title: "CAFATIFA",
|
||||
skp_campus_dir_cafa_desc:
|
||||
"This organization provides a forum for service, faith formation, and character building for Catholic students in the faculty.",
|
||||
skp_campus_dir_mapala_title: "MAPALA UNTAN",
|
||||
skp_campus_dir_mapala_desc:
|
||||
"A community for UNTAN student nature lovers that shapes a resilient character, environmental awareness, and an adventurous spirit.",
|
||||
skp_campus_dir_lisma_title: "LISMA UNTAN",
|
||||
skp_campus_dir_lisma_desc:
|
||||
"A student forum that develops interest in literacy, discussion, and critical thinking collaboratively.",
|
||||
skp_campus_dir_lsmi_title: "LSMI UNTAN",
|
||||
skp_campus_dir_lsmi_desc:
|
||||
"A student activity unit that handles religious guidance, Islamic outreach (da'wah), and spiritual development for students.",
|
||||
skp_campus_dir_semut_title: "SARANG SEMUT",
|
||||
skp_campus_dir_semut_desc:
|
||||
"A student community that fosters a culture of literacy, critical discussion, and intellectual thought within the campus environment.",
|
||||
skp_campus_dir_aiesec_title: "AIESEC",
|
||||
skp_campus_dir_aiesec_desc:
|
||||
"An international youth organization at UNTAN that develops leadership, global experience, and cross-cultural collaboration among students.",
|
||||
|
||||
// --- Pontianak City Section ---
|
||||
skp_pontianak_eyebrow: "Pontianak City",
|
||||
skp_pontianak_title: "Live In Pontianak",
|
||||
skp_pontianak_desc:
|
||||
"Pontianak is not just the capital of West Kalimantan, but a comfortable place to live, student-friendly, and very affordable. The city offers complete access to public facilities, a tempting variety of culinary options, and an active, vibrant learning environment.",
|
||||
|
||||
// --- Destination Section ---
|
||||
skp_dest_eyebrow: "Tourism & Destinations",
|
||||
skp_dest_title: "Interesting Places in Pontianak",
|
||||
skp_dest_open_maps: "Open Maps",
|
||||
|
||||
skp_dest_khatulistiwa_name: "Equator Monument",
|
||||
skp_dest_khatulistiwa_desc:
|
||||
"The city icon marking the zero-degree latitude position on earth.",
|
||||
skp_dest_waterfront_name: "Waterfront",
|
||||
skp_dest_waterfront_desc:
|
||||
"A popular pedestrian area by the Kapuas River to enjoy the sunset.",
|
||||
skp_dest_qubu_name: "Qubu Resort",
|
||||
skp_dest_qubu_desc:
|
||||
"An integrated tourism park area and a 4-star resort in Kubu Raya.",
|
||||
skp_dest_radank_name: "Radakng House",
|
||||
skp_dest_radank_desc:
|
||||
"The traditional longhouse of the Dayak tribe, a symbol of cultural harmony.",
|
||||
skp_dest_museum_name: "Museum",
|
||||
skp_dest_museum_desc:
|
||||
"Geographical and geological collections featuring maps and various types of rocks.",
|
||||
skp_dest_amalzone_name: "Amalzone",
|
||||
skp_dest_amalzone_desc:
|
||||
"A popular nature tourism and family recreation destination.",
|
||||
skp_dest_mangrove_name: "Mangrove Forest",
|
||||
skp_dest_mangrove_desc:
|
||||
"Stunning natural scenery along a wooden trekking pathway.",
|
||||
skp_dest_mujahidin_name: "Mujahidin Mosque",
|
||||
skp_dest_mujahidin_desc:
|
||||
"The largest mosque in the West Kalimantan Province.",
|
||||
|
||||
// --- Culinary Section ---
|
||||
skp_cul_eyebrow: "Cafe & Culinary",
|
||||
skp_cul_title: "Students' Favorite Culinary and Coffee Shops",
|
||||
skp_cul_cat_rm: "Eateries",
|
||||
skp_cul_cat_cs: "Coffee Shops",
|
||||
|
||||
skp_cul_gebuk_desc:
|
||||
"Spicy and savory pounded chicken that makes you want to keep adding rice.",
|
||||
skp_cul_sari_desc:
|
||||
"Tempting home-cooked warmth, fall in love at first bite.",
|
||||
skp_cul_mom_desc: "Delicious home-style meals with generous portions.",
|
||||
skp_cul_shine_desc:
|
||||
"Trendy rice bowls with attractive presentation and abundant toppings.",
|
||||
skp_cul_melepar_desc:
|
||||
"Crispy, savory, and spicy chicken, a student favorite with a crunchy, fiery bite.",
|
||||
skp_cul_umi_desc:
|
||||
"Cheap, filling, and spicy smashed chicken with an intensely satisfying kick.",
|
||||
skp_cul_cw_desc:
|
||||
"CW Coffee originally started in 2015 as Cyber World iCafe, a high-speed 24-hour internet cafe.",
|
||||
skp_cul_nordu_desc:
|
||||
"NORDU Coffee & Eatery (popularly known as Kopi Nomor Dua) offers a comfortable place to work (WFH) with student-friendly coffee and meals.",
|
||||
skp_cul_kami_desc:
|
||||
"Toko Kami was founded in November 2021 by a creative youth named Yudistira Nusantara. The name is an acronym for Indonesian Snack and Beverage Shop.",
|
||||
skp_cul_lokale_desc:
|
||||
"Lokale was founded by Asmako in 2017. Rooted in the owner's passion for coffee brewing, Lokale brings modern coffee flavors tailored to the local palate.",
|
||||
skp_cul_weng_desc:
|
||||
"Weng Coffee is one of the living legends of coffee shops in the Equator City, operating since 1970.",
|
||||
skp_cul_tropic_desc:
|
||||
"Tropic Cafe Pontianak is a pioneer of large-scale modern coffee shops in Pontianak, featuring a 24/7 non-stop concept with highly affordable prices.",
|
||||
|
||||
// --- Living Cost Section ---
|
||||
skp_cost_eyebrow: "Student Living Cost",
|
||||
skp_cost_title: "Estimated Living Cost for Students in Pontianak",
|
||||
skp_cost_desc:
|
||||
"Good financial planning helps students go through their study period more comfortably in Pontianak.",
|
||||
skp_cost_note: "*Data obtained is sourced from an internal survey",
|
||||
skp_cost_period: "per month",
|
||||
|
||||
skp_cost_type_home: "Housing",
|
||||
skp_cost_type_food: "Food",
|
||||
skp_cost_type_transport: "Transport",
|
||||
},
|
||||
};
|
||||
|
||||
// ─── 3. Public translation helper ────────────────────────────────────────────
|
||||
/**
|
||||
* t(key) — returns translated string for the active language.
|
||||
* Falls back to Indonesian if key is missing in the active language.
|
||||
*/
|
||||
function t(key) {
|
||||
const lang = window.__currentLang || "id";
|
||||
return translations[lang]?.[key] ?? translations["id"]?.[key] ?? key;
|
||||
}
|
||||
|
||||
// ─── 4. Apply translations to all [data-i18n] elements ───────────────────────
|
||||
function applyTranslations(lang) {
|
||||
window.__currentLang = lang;
|
||||
document.documentElement.lang = lang;
|
||||
|
||||
try {
|
||||
localStorage.setItem("lang", lang);
|
||||
} catch (e) {
|
||||
// localStorage may be blocked (private mode, etc.) — fail silently
|
||||
function currentLang() {
|
||||
if (typeof window.getLang === 'function') {
|
||||
const l = window.getLang();
|
||||
if (l === 'id' || l === 'en') return l;
|
||||
}
|
||||
try {
|
||||
const saved = localStorage.getItem('if_untan_lang');
|
||||
if (saved === 'id' || saved === 'en') return saved;
|
||||
} catch (e) { /* localStorage unavailable */ }
|
||||
const nav = (navigator.language || 'id').toLowerCase();
|
||||
return nav.startsWith('en') ? 'en' : 'id';
|
||||
}
|
||||
|
||||
document.querySelectorAll("[data-i18n]").forEach((el) => {
|
||||
const key = el.dataset.i18n;
|
||||
const text = t(key);
|
||||
if (text && text !== key) {
|
||||
el.textContent = text;
|
||||
}
|
||||
});
|
||||
function skpT(key) {
|
||||
const lang = currentLang();
|
||||
return (dict[lang] && dict[lang][key]) || dict.id[key] || null;
|
||||
}
|
||||
|
||||
// Signal dynamic components to re-render
|
||||
document.dispatchEvent(new CustomEvent("languageChanged"));
|
||||
}
|
||||
function applySkp(root) {
|
||||
const scope = root || document;
|
||||
|
||||
// ─── 5. Toggle language (called by UI buttons) ───────────────────────────────
|
||||
function toggleLanguage() {
|
||||
const next = window.__currentLang === "id" ? "en" : "id";
|
||||
applyTranslations(next);
|
||||
updateLanguageButtonUI(next);
|
||||
}
|
||||
scope.querySelectorAll('[data-skp-i18n]').forEach(el => {
|
||||
const val = skpT(el.getAttribute('data-skp-i18n'));
|
||||
if (val != null) el.textContent = val;
|
||||
});
|
||||
|
||||
function updateLanguageButtonUI(lang) {
|
||||
document.querySelectorAll(".language-toggle-btn").forEach((btn) => {
|
||||
const idSpan = btn.querySelector(".lang-id");
|
||||
const enSpan = btn.querySelector(".lang-en");
|
||||
if (idSpan && enSpan) {
|
||||
if (lang === "id") {
|
||||
idSpan.className = "lang-id font-bold text-white";
|
||||
enSpan.className = "lang-en font-normal opacity-50";
|
||||
} else {
|
||||
idSpan.className = "lang-id font-normal opacity-50";
|
||||
enSpan.className = "lang-en font-bold text-white";
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
scope.querySelectorAll('[data-skp-i18n-placeholder]').forEach(el => {
|
||||
const val = skpT(el.getAttribute('data-skp-i18n-placeholder'));
|
||||
if (val != null) el.placeholder = val;
|
||||
});
|
||||
}
|
||||
|
||||
// ─── 6. Boot on DOMContentLoaded ─────────────────────────────────────────────
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Apply translations to all static [data-i18n] nodes
|
||||
applyTranslations(window.__currentLang);
|
||||
window.skpT = skpT;
|
||||
window.applySkp = applySkp;
|
||||
|
||||
// Sync language button label
|
||||
updateLanguageButtonUI(window.__currentLang);
|
||||
|
||||
// Wire up toggle buttons
|
||||
document.querySelectorAll(".language-toggle-btn").forEach((btn) => {
|
||||
btn.addEventListener("click", toggleLanguage);
|
||||
});
|
||||
|
||||
// ── Reveal body: remove anti-flicker class after translations applied ──
|
||||
document.body.classList.remove("lang-pending");
|
||||
});
|
||||
document.addEventListener('languageChanged', () => applySkp());
|
||||
document.addEventListener('DOMContentLoaded', () => applySkp());
|
||||
})();
|
||||
@@ -1604,300 +1604,3 @@ body {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
ANTI-FLICKER — localization.js sets window.__currentLang
|
||||
synchronously; body stays hidden until DOMContentLoaded
|
||||
fires applyTranslations() and removes this class.
|
||||
============================================================ */
|
||||
body.lang-pending {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
MOVED FROM index.html <style> TAG
|
||||
(Originally inline; moved here so the browser can cache it)
|
||||
============================================================ */
|
||||
|
||||
/* ===== MOBILE NAV STABILITY FIX =====
|
||||
Prevents logo bar from collapsing/shifting on Android when
|
||||
address bar hides/shows and triggers viewport reflow.
|
||||
===================================== */
|
||||
#nav-wrapper {
|
||||
position: fixed !important;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 50;
|
||||
backface-visibility: hidden;
|
||||
-webkit-backface-visibility: hidden;
|
||||
will-change: box-shadow;
|
||||
}
|
||||
|
||||
#nav-wrapper > div:first-child {
|
||||
transform: translateZ(0);
|
||||
-webkit-transform: translateZ(0);
|
||||
}
|
||||
|
||||
@media (max-width: 1023px) {
|
||||
#nav-wrapper > div:first-child {
|
||||
min-height: 0 !important;
|
||||
max-height: none;
|
||||
}
|
||||
}
|
||||
|
||||
#pengumuman-bar {
|
||||
z-index: 40;
|
||||
}
|
||||
|
||||
#pengumuman-bar.is-stuck {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 40;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Skip Link Styling */
|
||||
.skip-link {
|
||||
position: absolute;
|
||||
top: -40px;
|
||||
left: 0;
|
||||
background: #003150;
|
||||
color: white;
|
||||
padding: 8px 16px;
|
||||
z-index: 100;
|
||||
transition: top 0.3s;
|
||||
}
|
||||
|
||||
.skip-link:focus {
|
||||
top: 0;
|
||||
}
|
||||
|
||||
/* Focus visible for better keyboard navigation */
|
||||
:focus-visible {
|
||||
outline: 3px solid #feb401;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
/* Mega Menu Styles */
|
||||
.hero-pagination .swiper-pagination-bullet {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background: rgba(255, 255, 255, 0.4);
|
||||
display: inline-block;
|
||||
margin: 0 4px;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.hero-pagination .swiper-pagination-bullet-active {
|
||||
background: rgba(255, 255, 255, 1);
|
||||
width: 24px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.mega-panel {
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition:
|
||||
opacity 0.2s ease,
|
||||
visibility 0.2s ease;
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.mega-panel.active {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* Overlay transition */
|
||||
#mega-overlay {
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition:
|
||||
opacity 0.2s ease,
|
||||
visibility 0.2s ease;
|
||||
}
|
||||
|
||||
#mega-overlay.active {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.mega-link-card {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 1rem;
|
||||
padding: 1rem;
|
||||
border-radius: 0.75rem;
|
||||
border: 1px solid #e2e8f0;
|
||||
background: white;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.mega-link-card:hover {
|
||||
border-color: #3b82f6;
|
||||
box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15);
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.mega-link-icon {
|
||||
width: 2.5rem;
|
||||
height: 2.5rem;
|
||||
border-radius: 0.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.nav-menu-btn.active {
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
color: #1e40af;
|
||||
}
|
||||
|
||||
.nav-menu-btn:hover {
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
/* Mega menu positioning - no gap */
|
||||
#main-nav {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#mega-menu-container {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#mega-menu-container .mega-panel {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
/* Keep pointer bridge under nav to prevent hover loss */
|
||||
.nav-menu-item {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nav-menu-item::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: -12px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
/* ===== Luco Chatbot Animations ===== */
|
||||
@keyframes slideInRight {
|
||||
from {
|
||||
transform: translateX(100px);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
transform: translateX(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fadeInUp {
|
||||
from {
|
||||
transform: translateY(10px);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes lucoPulse {
|
||||
0%,
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
}
|
||||
|
||||
#luco-container {
|
||||
animation: slideInRight 0.5s ease-out forwards;
|
||||
}
|
||||
|
||||
#luco-bubble {
|
||||
animation: fadeInUp 0.3s ease-out forwards;
|
||||
width: min(18rem, calc(100vw - 2rem));
|
||||
}
|
||||
|
||||
#luco-btn {
|
||||
animation: lucoPulse 2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
#luco-btn:hover {
|
||||
animation: none;
|
||||
}
|
||||
|
||||
/* Typing indicator */
|
||||
.typing-indicator span {
|
||||
display: inline-block;
|
||||
animation: bounce 1.4s infinite ease-in-out;
|
||||
}
|
||||
|
||||
.typing-indicator span:nth-child(1) {
|
||||
animation-delay: 0s;
|
||||
}
|
||||
|
||||
.typing-indicator span:nth-child(2) {
|
||||
animation-delay: 0.2s;
|
||||
}
|
||||
|
||||
.typing-indicator span:nth-child(3) {
|
||||
animation-delay: 0.4s;
|
||||
}
|
||||
|
||||
@keyframes bounce {
|
||||
0%,
|
||||
80%,
|
||||
100% {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
40% {
|
||||
transform: translateY(-6px);
|
||||
}
|
||||
}
|
||||
|
||||
/* Luco speech bubble arrow */
|
||||
#luco-bubble .bubble-arrow {
|
||||
position: absolute;
|
||||
right: 24px;
|
||||
bottom: -6px;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background: white;
|
||||
transform: rotate(45deg);
|
||||
border-right: 1px solid #e2e8f0;
|
||||
border-bottom: 1px solid #e2e8f0;
|
||||
}
|
||||
|
||||