\ProvidesPackage{open-everyday-symbols}[2025/05/05 v1.1 The OPEN Everyday Symbols Library]
\RequirePackage{tikz}

\RequirePackage{etoolbox} % used for conditionals
\RequirePackage{xstring}  % used for the main command we provide

\tikzset{every picture/.append style={baseline=(current bounding box.south)}}


\NewDocumentCommand{\everydaySymbol}{O{} m m}{%
  \pgfkeys{/everydaySymbol/#2/.cd, default}%
  \def\everydaySymbol@color{black}%
  \IfStrEq{#1}{}{%
    % nothing
  }{%
    \IfSubStr{#1}{=}{%
      \pgfkeys{/everydaySymbol/#2/.cd, #1}%
    }{%
      \def\everydaySymbol@color{#1}%
    }%
  }%
  \csname everydaySymbol@#2@#3\endcsname{\everydaySymbol@color}%
}

% --- BEGIN symbols/door/floorplan--pascal.tex ---

% --- door definitions ---
\pgfkeys{
  /everydaySymbol/door/.cd,
  color/.code  = {\def\everydaySymbol@color{#1}},
  default/.code={}
}

% 01
\expandafter\newcommand\csname everydaySymbol@door@floorplan--pascal-01\endcsname[1]{%
  \tikz{%
    \fill[#1!20!white] (0.3,0.3) rectangle (0.65,0.7);%
    \fill[#1] (0.35,0.5) circle (0.02);%
  }%
}
% 02
\expandafter\newcommand\csname everydaySymbol@door@floorplan--pascal-02\endcsname[1]{%
  \tikz{%
    \fill[#1!20!white] (0.3,0.3) -- (0.3,0.6) arc[start angle=180,end angle=0,radius=0.2] -- (0.7,0.3) -- cycle;%
    \fill[#1] (0.41,0.51) circle (0.02);%
  }%
}
% 03
\expandafter\newcommand\csname everydaySymbol@door@floorplan--pascal-03\endcsname[1]{%
  \tikz{%
    \fill[#1!20!white] (0.3,0.3) rectangle (0.5,0.7);%
    \draw[#1] (0.3,0.3) rectangle (0.5,0.7);%
    \fill[#1!60!white] (0.5,0.3) -- (0.65,0.45) -- (0.65,0.85) -- (0.5,0.7) -- cycle;%
    \draw[#1] (0.5,0.3) -- (0.65,0.45) -- (0.65,0.85) -- (0.5,0.7) -- cycle;%
  }%
}
% 04
\expandafter\newcommand\csname everydaySymbol@door@floorplan--pascal-04\endcsname[1]{%
  \tikz{%
    % closed door (same base size, left panel only)
    \fill[#1!20!white] (0.3,0.3) rectangle (0.5,0.7);%
    \draw[#1] (0.3,0.3) rectangle (0.5,0.7);%
    \fill[#1] (0.35,0.5) circle (0.02);%
  }%
}
%05
\expandafter\newcommand\csname everydaySymbol@door@floorplan--pascal-05\endcsname[1]{%
  \tikz{%
    \fill[#1!20!white] (0.3,0.3) rectangle (0.7,0.7);%
    \draw[#1, thick] (0.5,0.3) -- (0.5,0.7);%
    \fill[#1] (0.43,0.5) circle (0.015);%
    \fill[#1] (0.57,0.5) circle (0.015);%
  }%
}

% --- END symbols/door/floorplan--pascal.tex ---
% --- BEGIN symbols/house/iconic--pascal.tex ---

% --- keys for house options ---
\pgfkeys{
  /everydaySymbol/house/.cd,
  config/.estore in=\everydaySymbol@houseconfig,
  color/.code  = {\def\everydaySymbol@color{#1}},
  default/.code={}
}

\expandafter\newcommand\csname everydaySymbol@house@iconic--pascal\endcsname[1]{%
  \tikz[baseline]{%
    \providecommand\everydaySymbol@houseconfig{}% ← ensures defined
    % base house
    \fill[#1!20!white] (0,0) rectangle (0.8,0.5);
    \fill[#1!40!white] (0,0.5) -- (0.4,0.8) -- (0.8,0.5) -- cycle;
    \draw[#1, thick] (0,0) rectangle (0.8,0.5);
    \draw[#1, thick] (0,0.5) -- (0.4,0.8) -- (0.8,0.5);

    % right door
    \IfSubStr{\everydaySymbol@houseconfig}{rightDoor}{%
      \fill[#1] (0.37,0) rectangle (0.57,0.3);
      \draw[white, thick] (0.42,0.15) circle (0.02);
    }{}

    % middle door
    \IfSubStr{\everydaySymbol@houseconfig}{middleDoor}{%
      \fill[#1] (0.30,0) rectangle (0.50,0.3);
      \draw[white, thick] (0.35,0.15) circle (0.02);
    }{}

    % left window
    \IfSubStr{\everydaySymbol@houseconfig}{leftWindow}{%
      \draw[#1, thick] (0.1,0.25) rectangle (0.25,0.4);
    }{}

    % two windows
    \IfSubStr{\everydaySymbol@houseconfig}{twoWindows}{%
      \draw[#1, thick] (0.1,0.27) rectangle (0.25,0.42);
      \draw[#1, thick] (0.175,0.27) -- (0.175,0.42);
      \draw[#1, thick] (0.1,0.345) -- (0.25,0.345);
      \draw[#1, thick] (0.55,0.27) rectangle (0.7,0.42);
      \draw[#1, thick] (0.625,0.27) -- (0.625,0.42);
      \draw[#1, thick] (0.55,0.345) -- (0.7,0.345);
    }{}

    % chimney
    \IfSubStr{\everydaySymbol@houseconfig}{chimney}{%
      \fill[#1] (0.55,0.7) rectangle (0.6,0.9);
      \draw[#1, thick] (0.55,0.5) -- (0.55,0.7) -- (0.6,0.7) -- (0.6,0.9);
    }{}
  }%
}

% --- END symbols/house/iconic--pascal.tex ---
% --- BEGIN symbols/snow/snowflake--john.tex ---

\newif\if@everydaySymbol@snow@snowflake@defcolors
\@everydaySymbol@snow@snowflake@defcolorsfalse
\pgfkeys{
  /everydaySymbol/snow/.cd,
  color/.code  = {\def\everydaySymbol@color{#1}},
  default/.code={},
  colorful/.is choice,
  colorful/.default=false,
  colorful/true/.code = \@everydaySymbol@snow@snowflake@defcolorstrue,
  colorful/false/.code = \@everydaySymbol@snow@snowflake@defcolorsfalse,
}

\expandafter\newcommand\csname everydaySymbol@snow@snowflake--john-01\endcsname[1]{%
\resizebox{!}{1em}{%
  \if@everydaySymbol@snow@snowflake@defcolors%
  \raisebox{-2pt}{\tikz[scale=0.25]{
  \foreach \angle in {0,60,...,300} {
    \begin{scope}[rotate=\angle]
      \draw[blue!80!green!90, draw opacity=0.8] (0,0) -- (0,1);
      \draw[blue!80!green, draw opacity=0.6] (0.08,0.2) -- (0,0.4) -- (-0.08,0.2);
      \draw[blue!90!green!80!purple, draw opacity=0.5] (0.22,0.8) -- (0,0.5) -- (-0.22,0.8);
    \end{scope}
  }}}\else%
  \raisebox{-2pt}{\tikz[scale=0.25]{
  \foreach \angle in {0,60,...,300} {
    \begin{scope}[rotate=\angle]
      \draw[#1, draw opacity=0.8] (0,0) -- (0,1);
      \draw[#1, draw opacity=0.6] (0.08,0.2) -- (0,0.4) -- (-0.08,0.2);
      \draw[#1, draw opacity=0.5] (0.22,0.8) -- (0,0.5) -- (-0.22,0.8);
    \end{scope}
  }}}\fi%
}%
  \@everydaySymbol@snow@snowflake@defcolorsfalse%
}


% --- END symbols/snow/snowflake--john.tex ---

\endinput