%% Copyright (c) 2026 Hatim Naqos <hatim.naqos@ecole-junia.ma>
%% LPPL 1.3c or later. Maintained by Hatim Naqos. See LICENSE.md.
\NeedsTeXFormat{LaTeX2e}[2020/02/02]
\ProvidesClass{juniamaroc-beamer}[2026/10/29 v1.0.0 JUNIA Maroc presentations]
\newif\ifjunia@logo \junia@logotrue
\newif\ifjunia@progress \junia@progresstrue
\newif\ifjunia@sections \junia@sectionstrue
\newif\ifjunia@standardfonts \junia@standardfontstrue
\newif\ifjunia@english
\DeclareOption{nologo}{\junia@logofalse}
\DeclareOption{noprogress}{\junia@progressfalse}
\DeclareOption{nosectionpages}{\junia@sectionsfalse}
\DeclareOption{standardfonts}{\junia@standardfontstrue}
\DeclareOption{brandfonts}{\junia@standardfontsfalse}
\DeclareOption{english}{\junia@englishtrue}
\DeclareOption{french}{\junia@englishfalse}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{beamer}}
\PassOptionsToClass{aspectratio=169,10pt}{beamer}
\ProcessOptions\relax
\LoadClass{beamer}
\RequirePackage{iftex}
\newif\ifjunia@brandfonts
\ifPDFTeX
  \junia@standardfontstrue
  \RequirePackage[T1]{fontenc}
  \RequirePackage[utf8]{inputenc}
\fi
\ifPDFTeX
  \RequirePackage{tgheros}
  \newcommand{\juniaheading}{\sffamily}
\else
  \RequirePackage{fontspec}
  \defaultfontfeatures{Ligatures=TeX}
  \ifjunia@standardfonts\else
    \IfFontExistsTF{Afacad Flux}{%
      \IfFontExistsTF{Inter Tight}{\junia@brandfontstrue}{}%
    }{}%
  \fi
  \ifjunia@brandfonts
    \setsansfont{Inter Tight}\setmainfont{Inter Tight}
    \newfontfamily\juniaheading{Afacad Flux}
    \ClassInfo{juniamaroc-beamer}{Using installed Afacad Flux and Inter Tight fonts}
  \else
    \setsansfont{TeX Gyre Heros}\setmainfont{TeX Gyre Heros}
    \newcommand{\juniaheading}{\sffamily}
    \ClassInfo{juniamaroc-beamer}{Using TeX Gyre Heros fallback fonts}
  \fi
  \setmonofont{Latin Modern Mono}[BoldFont={Latin Modern Mono},BoldFeatures={FakeBold=1.5}]
\fi
\ifjunia@english\RequirePackage[english]{babel}
\else\RequirePackage[french]{babel}\fi
\RequirePackage{graphicx}
\RequirePackage{tikz}
\RequirePackage{booktabs}
\RequirePackage{listings}
\graphicspath{{assets/}}
\definecolor{JuniaBlue}{HTML}{3F536B}
\definecolor{JuniaYellow}{HTML}{E2E45F}
\definecolor{JuniaSand}{HTML}{D6C7A0}
\definecolor{JuniaSky}{HTML}{C0D4E4}
\colorlet{JuniaPaper}{JuniaSky!18!white}
\colorlet{JuniaLime}{JuniaYellow}
\setbeamercolor{normal text}{fg=JuniaBlue,bg=white}
\setbeamercolor{structure}{fg=JuniaBlue}
\setbeamercolor{alerted text}{fg=JuniaBlue}
\setbeamercolor{frametitle}{fg=JuniaBlue,bg=white}
\setbeamercolor{block title}{fg=white,bg=JuniaBlue}
\setbeamercolor{block body}{fg=JuniaBlue,bg=JuniaPaper}
\setbeamercolor{block title example}{fg=JuniaBlue,bg=JuniaSky}
\setbeamercolor{block body example}{fg=JuniaBlue,bg=JuniaSky!15!white}
\setbeamercolor{block title alerted}{fg=JuniaBlue,bg=JuniaYellow}
\setbeamercolor{block body alerted}{fg=JuniaBlue,bg=JuniaYellow!15!white}
\setbeamercolor{section in toc}{fg=JuniaBlue}
\setbeamercolor{footline}{fg=white,bg=JuniaBlue}
\setbeamercolor{junia footer accent}{fg=JuniaBlue,bg=JuniaYellow}
% Compact navigation band: short document title and current section.
\setbeamercolor{junia headline title}{fg=white,bg=JuniaBlue}
\setbeamercolor{junia headline section}{fg=JuniaBlue,bg=JuniaYellow}
\setbeamerfont{headline}{size=\fontsize{7}{8},series=\bfseries}
\setbeamertemplate{headline}{%
  \leavevmode\hbox{%
    \begin{beamercolorbox}[wd=.5\paperwidth,ht=3mm,dp=1.3mm,leftskip=5mm,rightskip=3mm]{junia headline title}%
      \usebeamerfont{headline}\hypersetup{linkcolor=white}\insertshorttitle
    \end{beamercolorbox}%
    \begin{beamercolorbox}[wd=.5\paperwidth,ht=3mm,dp=1.3mm,leftskip=3mm,rightskip=5mm]{junia headline section}%
      \usebeamerfont{headline}\insertsectionhead
    \end{beamercolorbox}%
  }}
\setbeamerfont{title}{family=\juniaheading,series=\bfseries,size=\fontsize{29}{31}}
\setbeamerfont{frametitle}{family=\juniaheading,series=\bfseries,size=\fontsize{16}{18}}
\DeclareMathSizes{16}{14.4}{10}{7}
\setbeamerfont{block title}{family=\juniaheading,series=\bfseries,size=\large}
\setbeamerfont{section title}{family=\juniaheading,series=\bfseries,size=\fontsize{29}{32}}
\setbeamerfont{footline}{size=\fontsize{6}{7}}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{blocks}[rounded][shadow=false]
\setbeamertemplate{itemize item}{\raisebox{.2ex}{\scriptsize\textbullet}}
\setbeamertemplate{itemize subitem}{\scriptsize\textendash}
\setbeamertemplate{section in toc}[sections numbered]
\setbeamertemplate{frametitle continuation}[from second]
\setbeamersize{text margin left=10mm,text margin right=10mm}
\hypersetup{colorlinks=true,urlcolor=JuniaBlue,linkcolor=JuniaBlue}
\lstdefinestyle{junia}{basicstyle=\ttfamily\fontsize{8}{10}\selectfont,
  keywordstyle=\bfseries\color{JuniaBlue},commentstyle=\itshape\color{JuniaBlue!65},
  stringstyle=\color{JuniaBlue},backgroundcolor=\color{JuniaPaper},
  frame=single,rulecolor=\color{JuniaSky},framerule=.3pt,framesep=5pt,
  showstringspaces=false,columns=fullflexible,keepspaces=true,
  breaklines=true,tabsize=4,numbers=left,numberstyle=\tiny\color{JuniaBlue!55},
  numbersep=8pt,xleftmargin=12pt,aboveskip=6pt,belowskip=4pt,
  literate={é}{{\'e}}1 {è}{{\`e}}1 {ê}{{\^e}}1 {à}{{\`a}}1
    {â}{{\^a}}1 {ù}{{\`u}}1 {û}{{\^u}}1 {ç}{{\c c}}1
    {î}{{\^i}}1 {ï}{{\"i}}1 {ô}{{\^o}}1 {É}{{\'E}}1 {À}{{\`A}}1 {Â}{{\^A}}1 {Ç}{{\c C}}1
    {È}{{\`E}}1 {Ê}{{\^E}}1 {Ë}{{\"E}}1 {Î}{{\^I}}1 {Ï}{{\"I}}1
    {Ô}{{\^O}}1 {Ù}{{\`U}}1 {Û}{{\^U}}1 {Ü}{{\"U}}1 {ü}{{\"u}}1
    {ë}{{\"e}}1 {œ}{{\oe}}1 {Œ}{{\OE}}1}
\lstdefinestyle{junia-python}{style=junia,language=Python}
\lstdefinestyle{junia-latex}{style=junia,language=[LaTeX]TeX}
\lstset{style=junia}
\newcommand{\juniasetup}[1]{\pgfkeys{/junia/.cd,#1}}
\pgfkeys{/junia/.is family,/junia,
  tagline/.store in=\junia@tagline,
  logo/.store in=\junia@logofile,
  logowhite/.store in=\junia@logowhitefile,
  symbol/.store in=\junia@symbolfile,
  symbolwhite/.store in=\junia@symbolwhitefile}
\juniasetup{tagline=JUNIA MAROC,
  logo=juniamaroc-beamer-logo.png,logowhite=juniamaroc-beamer-logo-white.png,
  symbol=juniamaroc-beamer-symbol.png,symbolwhite=juniamaroc-beamer-symbol-white.png}
\newcommand{\junia@image}[3]{%
  \ifjunia@logo
    \IfFileExists{assets/#1}{\includegraphics[#2]{assets/#1}}{%
      \IfFileExists{#1}{\includegraphics[#2]{#1}}{#3}}%
  \else #3\fi}
\newcommand{\junia@darkbrand}{\junia@image{\junia@logowhitefile}{width=30mm,height=13mm,keepaspectratio}{\color{white}\bfseries JUNIA MAROC}}
\newcommand{\junia@darksymbol}{%
  \node[inner sep=0pt] at ([xshift=.83\paperwidth,yshift=.50\paperheight]current page.south west)
    {\junia@image{\junia@symbolwhitefile}{width=.20\paperwidth,height=.56\paperheight,keepaspectratio}{}};}
\setbeamertemplate{title page}{%
  \begin{tikzpicture}[remember picture,overlay]
    \fill[JuniaBlue] (current page.south west) rectangle (current page.north east);
    \node[anchor=north west,inner sep=0pt] at ([xshift=10mm,yshift=-7mm]current page.north west) {\junia@darkbrand};
    \junia@darksymbol
    \node[anchor=west,text=white,text width=.60\paperwidth,inner sep=0pt]
      at ([xshift=10mm,yshift=-1mm]current page.west) {%
      {\raggedright\hyphenpenalty=10000\usebeamerfont{title}\inserttitle\par}\vspace{3mm}
      {\color{JuniaYellow}\large\insertsubtitle\par}};
    \node[anchor=south west,text=white,inner sep=0pt,text width=.66\paperwidth]
      at ([xshift=10mm,yshift=8mm]current page.south west) {%
      {\small\insertauthor\par}\vspace{1mm}{\scriptsize\insertinstitute\par\insertdate\par}};
    \fill[JuniaYellow] ([yshift=2.5mm]current page.south west) rectangle ++(18mm,1mm);
  \end{tikzpicture}}
\renewcommand{\maketitle}{\begin{frame}[plain,noframenumbering]\titlepage\end{frame}}
\setbeamertemplate{frametitle}{%
  \vskip1.2mm
  {\raggedright\usebeamerfont{frametitle}\insertframetitle\strut\par}
  \ifx\insertframesubtitle\@empty\else
    {\normalfont\footnotesize\color{JuniaBlue!75}\insertframesubtitle\par}\fi
  \vskip.4mm
  {\color{JuniaYellow}\rule{10mm}{.5mm}}\vskip.5mm}
\newdimen\junia@progresswidth
\setbeamertemplate{footline}{%
  \ifjunia@logo
    \begin{tikzpicture}[remember picture,overlay]
      \node[anchor=south east,inner sep=0pt]
        at ([xshift=-5mm,yshift=7.5mm]current page.south east)
        {\junia@image{\junia@symbolfile}{height=8.5mm,keepaspectratio}{}};
    \end{tikzpicture}%
    \vskip12mm
  \fi
  \ifjunia@progress
    \pgfmathsetlength{\junia@progresswidth}{\paperwidth*min(1,\insertframenumber/max(1,\inserttotalframenumber))}%
    \hbox{\rlap{\color{JuniaSky}\rule{\paperwidth}{.6pt}}%
      {\color{JuniaBlue}\rule{\junia@progresswidth}{.6pt}}}\nointerlineskip
  \fi
  \leavevmode\hbox{%
    \begin{beamercolorbox}[wd=.32\paperwidth,ht=3.2mm,dp=1.8mm,leftskip=4mm,rightskip=2mm]{footline}%
      \usebeamerfont{footline}\textbf{JUNIA MAROC}\hfill\insertshortauthor
    \end{beamercolorbox}%
    \begin{beamercolorbox}[wd=.43\paperwidth,ht=3.2mm,dp=1.8mm,center]{junia footer accent}%
      \usebeamerfont{footline}\bfseries\insertshorttitle
    \end{beamercolorbox}%
    \begin{beamercolorbox}[wd=.25\paperwidth,ht=3.2mm,dp=1.8mm,leftskip=2mm,rightskip=4mm]{junia footer accent}%
      \usebeamerfont{footline}\insertshortdate\hfill\insertframenumber\,/\,\inserttotalframenumber
    \end{beamercolorbox}%
  }}
\newcommand{\juniasectionpage}{%
  \begin{frame}[plain,noframenumbering]
    \begin{tikzpicture}[remember picture,overlay]
      \fill[JuniaBlue] (current page.south west) rectangle (current page.north east);
      \node[anchor=north west,inner sep=0pt] at ([xshift=10mm,yshift=-7mm]current page.north west) {\junia@darkbrand};
      \junia@darksymbol
      \node[anchor=west,inner sep=0pt,text=JuniaYellow,font=\juniaheading\bfseries\fontsize{48}{50}\selectfont]
        at ([xshift=10mm,yshift=5mm]current page.west) {\ifnum\value{section}<10 0\fi\thesection};
      \node[anchor=north west,inner sep=0pt,text=white,text width=.60\paperwidth,font=\usebeamerfont{section title}]
        at ([xshift=10mm,yshift=-10mm]current page.west) {\raggedright\hyphenpenalty=10000\secname\par};
    \end{tikzpicture}
  \end{frame}}
\ifjunia@sections\AtBeginSection[]{\juniasectionpage}\fi
\newcommand{\juniaquote}[2]{%
  \begin{frame}[plain]
    \begin{tikzpicture}[remember picture,overlay]
      \fill[JuniaBlue] (current page.south west) rectangle (current page.north east);
      \node[anchor=north west,inner sep=0pt] at ([xshift=10mm,yshift=-7mm]current page.north west) {\junia@darkbrand};
      \node[anchor=west,text=white,inner sep=0pt,text width=.84\paperwidth]
        at ([xshift=10mm]current page.west) {{\juniaheading\bfseries\fontsize{27}{30}\selectfont #1\par}\vspace{5mm}{\small\color{JuniaYellow}#2\par}};
    \end{tikzpicture}
  \end{frame}}
\newcommand{\juniaclosing}[2][Merci !]{%
  \begin{frame}[plain,noframenumbering]
    \begin{tikzpicture}[remember picture,overlay]
      \fill[JuniaBlue] (current page.south west) rectangle (current page.north east);
      \node[anchor=north west,inner sep=0pt] at ([xshift=10mm,yshift=-7mm]current page.north west) {\junia@darkbrand};
      \junia@darksymbol
      \node[anchor=west,text=white,inner sep=0pt,text width=.60\paperwidth]
        at ([xshift=10mm]current page.west) {{\juniaheading\bfseries\fontsize{36}{39}\selectfont #1\par}\vspace{5mm}{\color{JuniaYellow}\large #2\par}};
    \end{tikzpicture}
  \end{frame}}
\institute{JUNIA Maroc}
\endinput
