/* Direction A — React app (rich Avesis version) */ const { useState, useEffect } = React; const C = window.SITE_CONTENT; const ACCENT_OPTIONS = ["#7a1f2b", "#1f3a5f", "#2f5d3a", "#1a1a1a", "#b8732a"]; const SECTION_ORDERS = { "research-led": ["about", "metrics", "research", "publications", "books", "projects", "advising", "teaching", "awards", "education", "international", "roles", "news", "office", "contact"], "about-led": ["about", "education", "metrics", "research", "publications", "books", "teaching", "projects", "advising", "awards", "international", "roles", "news", "office", "contact"], "teaching-led": ["about", "metrics", "teaching", "advising", "books", "research", "publications", "projects", "awards", "education", "international", "roles", "news", "office", "contact"] }; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "#7a1f2b", "dark": false, "density": "regular", "hero": "portrait", "order": "research-led" } /*EDITMODE-END*/; // ── Helpers ──────────────────────────────────────────────── function SectionHead({ num, title }) { return (
{num}

{title}

); } function renderAuthors(authorsStr) { if (!authorsStr) return null; const parts = authorsStr.split(/(Kınıklı G\.\s*İ\.|KINIKLI G\.\s*İ\.|Guvendik G\.)/g); return parts.map((part, idx) => { if (/^(Kınıklı G\.\s*İ\.|KINIKLI G\.\s*İ\.|Guvendik G\.)$/.test(part)) { return {part}; } return {part}; }); } // ── Section components ──────────────────────────────────── function About({ lang, num }) { return (
{C.about[lang].map((p, i) =>

{p}

)}
); } function Metrics({ lang, num }) { return (
{C.metrics_note[lang] &&

{C.metrics_note[lang]}

}
{C.ui[lang].sdg}
{C.sdgs.map((n) => ( {C.ui[lang].sdg_short} {n} {C.sdg_labels[lang][n]} ))}
); } function Research({ lang, num }) { return (
); } function Publications({ lang, num }) { const [filter, setFilter] = useState("all"); const [expanded, setExpanded] = useState(false); const allPubs = C.publications_sample || []; const filtered = allPubs.filter((p) => { if (filter === "recent") return parseInt(p.year, 10) >= 2025; if (filter === "scie") return (p.index || "").includes("SCI-E") || (p.index || "").includes("SSCI"); if (filter === "rct") return p.tag === "RCT" || p.tag === "Pilot RCT"; if (filter === "scale") return p.tag === "Scale validation" || p.tag === "Reliability"; return true; }); const INITIAL_COUNT = 12; const visiblePubs = (filter === "all" && !expanded) ? filtered.slice(0, INITIAL_COUNT) : filtered; const filters = [ { key: "all", label: lang === "tr" ? `Tümü (${allPubs.length})` : `All (${allPubs.length})` }, { key: "recent", label: "2025–2026" }, { key: "scie", label: "SCI-E · SSCI" }, { key: "rct", label: lang === "tr" ? "RKT / Klinik" : "RCT" }, { key: "scale", label: lang === "tr" ? "Ölçek & Güvenirlik" : "Scale & Validity" }, ]; return (
{filters.map((f) => ( ))}
{filter === "all" && filtered.length > INITIAL_COUNT && ( )}

{C.publications_note[lang]}

l.label === "ORCID").href} target="_blank" rel="noopener"> {C.ui[lang].view_orcid} ↗ l.label === "Avesis").href} target="_blank" rel="noopener"> {C.ui[lang].view_avesis} ↗
); } function Books({ lang, num }) { const [expanded, setExpanded] = useState(false); const allChapters = C.book_chapters || []; const INITIAL_CHAPTERS = 10; const visibleChapters = expanded ? allChapters : allChapters.slice(0, INITIAL_CHAPTERS); return (

{C.ui[lang].authored_books}

{C.ui[lang].book_chapters} ({allChapters.length})

{allChapters.length > INITIAL_CHAPTERS && ( )}
); } function Projects({ lang, num }) { return (
); } function Awards({ lang, num }) { return (
); } function Teaching({ lang, num }) { const levels = [ { key: "doctoral", list: C.teaching[lang].doctoral }, { key: "masters", list: C.teaching[lang].masters }, { key: "bachelors", list: C.teaching[lang].bachelors } ]; return (
{levels.map((g) => (
{C.teaching.labels[lang][g.key]} {g.list.length} {lang === "tr" ? "ders" : "courses"}
    {g.list.map((name, i) =>
  • {name}
  • )}
))}
); } function Advising({ lang, num }) { return (
); } function Education({ lang, num }) { return (

{lang === "tr" ? "Eğitim" : "Degrees"}

{lang === "tr" ? "Akademik kariyer" : "Academic career"}

{C.ui[lang].since_2005_inpatient}

); } function International({ lang, num }) { return (
); } function Roles({ lang, num }) { return (

{C.ui[lang].memberships}

    {C.memberships[lang].map((m, i) => (
  • {m.year} {m.name}{m.role}
  • ))}

{C.ui[lang].editorial}

    {C.editorial[lang].map((e, i) => (
  • {e.years} {e.role}{e.venue}
  • ))}

{C.ui[lang].languages}

    {C.languages.map((l, i) => (
  • · {l.name} {l.level}
  • ))}

{C.ui[lang].certifications}

    {C.certifications[lang].slice(0, 6).map((c, i) => (
  • {c.year} {c.name}{c.where}
  • ))}

{C.ui[lang].invited_talks}

    {C.invited_talks[lang].map((t, i) => (
  • {t.year} {t.title}{t.where}
  • ))}
); } function News({ lang, num }) { return (
); } function Office({ lang, num }) { return (
{C.office_hours[lang].map((h, i) => (
{h.day}
{h.time}
))}

{lang === "tr" ? C.office_hours.note_tr : C.office_hours.note_en}

); } function Contact({ lang, num }) { const address = lang === "tr" ? C.contact.address_tr : C.contact.address_en; return (
{lang === "tr" ? "Posta Adresi" : "Postal Address"}
{address.map((l, i) =>
{l}
)}
{lang === "tr" ? "Ofis" : "Office"}
{lang === "tr" ? C.contact.office_tr : C.contact.office_en}
{lang === "tr" ? "İletişim" : "Get in touch"}
{lang === "tr" ? "Tel" : "Phone"}: {C.contact.phone}
{lang === "tr" ? "Doğrudan" : "Direct"}: {C.contact.phone_direct}
Fax: {C.contact.fax}
{C.contact.links.map((l, i) => ( {l.label} {l.value} ))}
); } const SECTIONS = { about: About, metrics: Metrics, research: Research, publications: Publications, books: Books, projects: Projects, awards: Awards, teaching: Teaching, advising: Advising, education: Education, international: International, roles: Roles, news: News, office: Office, contact: Contact }; // ── Hero ─────────────────────────────────────────────────── function Hero({ lang, heroLayout }) { const parts = C.name.split(" "); const given = parts.slice(0, parts.length - 1).join(" "); const family = parts[parts.length - 1]; const quickLinks = [ { label: "ORCID", href: "https://orcid.org/0000-0003-1013-6393" }, { label: "AVESİS", href: "https://avesis.hacettepe.edu.tr/guvendik" }, { label: "Scopus", href: "https://www.scopus.com/authid/detail.uri?authorId=36660970600" }, { label: "Web of Science", href: "https://publons.com/researcher/M-1828-2017" }, { label: "ResearchGate", href: "https://www.researchgate.net/profile/Gizem-Kinikli-2" }, { label: C.contact.email, href: `mailto:${C.contact.email}` }, ]; return (
{C.tagline[lang]}

{given} {family}

{lang === "tr" ? C.honorific_tr : C.honorific_en}
{C.affiliation[lang].map((l, i) =>
{l}
)}
{quickLinks.map((q, i) => ( {q.label} ))}
{`${C.honorific_tr}
); } // ── Top bar ──────────────────────────────────────────────── function TopBar({ lang, setLang, dark, onToggleDark }) { return (
{lang === "tr" ? "Hacettepe Üniversitesi · Fizik Tedavi ve Rehabilitasyon Fakültesi" : "Hacettepe University · Faculty of Physical Therapy and Rehabilitation"}
); } // ── Sidebar nav ──────────────────────────────────────────── function SideNav({ lang, order, active }) { const labelFor = (key) => ({ about: C.ui[lang].nav_about, metrics: C.ui[lang].nav_metrics, research: C.ui[lang].nav_research, publications: C.ui[lang].nav_publications, books: C.ui[lang].nav_books, projects: C.ui[lang].nav_projects, awards: C.ui[lang].nav_awards, teaching: C.ui[lang].nav_teaching, advising: C.ui[lang].nav_advising, education: C.ui[lang].nav_education, international: C.ui[lang].nav_international, roles: C.ui[lang].nav_roles, news: C.ui[lang].nav_news, office: C.ui[lang].nav_office, contact: C.ui[lang].nav_contact })[key]; return ( ); } // ── App ──────────────────────────────────────────────────── function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); const [lang, setLang] = useState("tr"); const [active, setActive] = useState(null); useEffect(() => { document.documentElement.style.setProperty("--accent", t.accent); document.documentElement.setAttribute("data-theme", t.dark ? "dark" : "light"); document.documentElement.setAttribute("data-density", t.density); document.documentElement.lang = lang; }, [t.accent, t.dark, t.density, lang]); // Highlight the active section in the sidebar as the user scrolls useEffect(() => { const sections = Array.from(document.querySelectorAll("main.shell .section")); if (!sections.length) return; const io = new IntersectionObserver( (entries) => { const visible = entries .filter((e) => e.isIntersecting) .sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top); if (visible[0]) setActive(visible[0].target.id); }, { rootMargin: "-20% 0px -65% 0px", threshold: 0 } ); sections.forEach((s) => io.observe(s)); return () => io.disconnect(); }, [t.order, lang]); const order = SECTION_ORDERS[t.order] || SECTION_ORDERS["research-led"]; const showTweaks = typeof window !== "undefined" && window.location.search.includes("tweaks=1"); return ( <> setTweak("dark", !t.dark)} />
{order.map((key, i) => { const Cmp = SECTIONS[key]; const num = `0${i + 1}`.slice(-2); return ; })}
© {new Date().getFullYear()} {C.honorific_tr} {C.name} {C.ui[lang].footer}
{showTweaks && ( setTweak("accent", v)} /> setTweak("dark", v)} /> setTweak("density", v)} /> setTweak("hero", v)} /> setTweak("order", v)} /> )} ); } ReactDOM.createRoot(document.getElementById("root")).render();