\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\RequirePackage{l3keys2e}
\ProvidesExplPackage
  {projlib-paper}
  {2022/02/25} {}
  {Paper style configuration}

\keys_define:nn { projlib-paper }
  {
    , preview-mode      .bool_set:N = \l__projlib_paper_preview_bool
    , preview-mode      .initial:n  = { false }
    , paperstyle        .tl_set:N   = \l__projlib_paper_paperstyle_tl
    , paperstyle        .initial:n  = { normal }
    , yellowpaper       .meta:n     = { paperstyle = yellow     }
    , yellow-paper      .meta:n     = { paperstyle = yellow     }
    , parchmentpaper    .meta:n     = { paperstyle = parchment  }
    , parchment-paper   .meta:n     = { paperstyle = parchment  }
    , greenpaper        .meta:n     = { paperstyle = green      }
    , green-paper       .meta:n     = { paperstyle = green      }
    , lightgraypaper    .meta:n     = { paperstyle = lightgray  }
    , lightgray-paper   .meta:n     = { paperstyle = lightgray  }
    , light-gray-paper  .meta:n     = { paperstyle = lightgray  }
    , graypaper         .meta:n     = { paperstyle = gray       }
    , gray-paper        .meta:n     = { paperstyle = gray       }
    , nordpaper         .meta:n     = { paperstyle = nord       }
    , nord-paper        .meta:n     = { paperstyle = nord       }
    , darkpaper         .meta:n     = { paperstyle = dark       }
    , dark-paper        .meta:n     = { paperstyle = dark       }
    , unknown           .code:n     = {}
  }
\ProcessKeysOptions { projlib-paper }

\cs_new:Nn \projlib_paper_preview_disable:
  {
    \bool_set_false:c { l__projlib_paper_preview_bool }
  }

\hook_gput_code:nnn { begindocument/before } { projlib-paper }
  {
    \bool_if:NT \l__projlib_paper_preview_bool
      {
        \dim_set:Nn \paperwidth
          {
            \dim_eval:n { \textwidth * 21 / 20 }
          }
        \dim_set:Nn \paperheight
          {
            \dim_eval:n { ( \textheight + \headheight + \headsep + \footskip ) * 21 / 20 }
          }
        \dim_set:Nn \oddsidemargin
          {
            \dim_eval:n { ( \paperwidth - \textwidth ) / 2 - 1in }
          }
        \dim_set:Nn \evensidemargin
          {
            \dim_eval:n { ( \paperwidth - \textwidth ) / 2 - 1in }
          }
        \dim_set:Nn \topmargin
          {
            \dim_eval:n { ( \paperheight - \textheight - \headheight - \headsep - \footskip ) / 2 - 1in }
          }
      }
  }

\RequirePackage { xcolor }

\definecolor { paper }     { RGB } { 255, 255, 255 }
\definecolor { main-text } { RGB } {   0,   0,   0 }

\str_case_e:nn { \l__projlib_paper_paperstyle_tl }
  {
    { yellow      } { \definecolor { paper }     { RGB } { 247, 246, 233 } }
    { parchment   } { \definecolor { paper }     { RGB } { 224, 204, 160 } }
    { green       } { \definecolor { paper }     { RGB } { 207, 231, 207 } }
    { lightgray   } { \definecolor { paper }     { RGB } { 236, 239, 244 }
                      \definecolor { main-text } { RGB } {  37,  41,  46 } }
    { light-gray  } { \definecolor { paper }     { RGB } { 236, 239, 244 }
                      \definecolor { main-text } { RGB } {  37,  41,  46 } }
    { gray        } { \definecolor { paper }     { RGB } { 127, 130, 136 }
                      \definecolor { main-text } { RGB } { 236, 239, 244 } }
    { nord        } { \definecolor { paper }     { RGB } {  46,  52,  64 }
                      \definecolor { main-text } { RGB } { 214, 220, 230 } }
    { dark        } { \definecolor { paper }     { RGB } {  28,  29,  33 }
                      \definecolor { main-text } { RGB } { 210, 213, 217 } }
  }

\cs_new:Nn \projlib_paper_set_page_color:n
  {
    \pagecolor { #1 }
  }
\cs_new:Nn \projlib_paper_set_text_color:n
  {
    \color { #1 }
    \cs_gset_eq:cc { default@color } { current@color }
  }

\projlib_paper_set_page_color:n { paper }
\projlib_paper_set_text_color:n { main-text }

\hook_gput_code:nnn { begindocument/before } { projlib-paper }
  {
    \cs_if_exist:NT \tcbset
      { \tcbset { colupper = main-text, collower = main-text } }
  }

\endinput
%%
%% End of file `projlib-paper.sty'.
