module Panda.Type.Theme where

import Prelude hiding ((.))
import Panda.Helper.Env hiding (name, header)

data Theme = Theme
  { name        :: String
  , container   :: String
  , header      :: String
  , navigation  :: String
  , main        :: String
  , sidebar     :: String
  , footer      :: String
  , css         :: [String]
  , js          :: [String]
  } deriving (Show, Read)

data ThemeData = 
    Name
  | Container
  | Header
  | Navigation
  | Main
  | Sidebar
  | Footer
  | Css
  | Js
  deriving (Eq, Show, Read)

to_theme xs = Theme 
  { name        = at Name
  , container   = at Container
  , header      = at Header
  , navigation  = at Navigation
  , main        = at Main
  , sidebar     = at Sidebar
  , footer      = at Footer
  , css         = at Css .css_list
  , js          = at Js  .js_list
  }
  where
    at s = xs.lookup (s.show_data) .fromJust
    css_list s = s.parse_list.map (\x -> "/theme/" ++ at Name ++ "/css/" ++ x ++ ".css")
    js_list s  = s.parse_list.map (\x -> "/theme/" ++ at Name ++ "/js/" ++ x ++ ".js")

instance Default Theme where
  def = Theme def def def def def def def def def