-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Organized and simple web page scaffold for blaze and lucid
--   
--   This is a general organization scheme for web pages, implemented for
--   Lucid, and adapted for Blaze-html.
--   
--   <pre>
--   import Web.Page.Lucid
--   
--   λ&gt; renderText $ template def "some content"
--   
--   ↪ "&lt;!DOCTYPE HTML&gt;&lt;html&gt;&lt;head&gt;&lt;title&gt;&lt;/title&gt;&lt;link href
--     rel="icon"&gt;&lt;/head&gt;&lt;body&gt;some content&lt;/body&gt;&lt;/html&gt;"
--   </pre>
--   
--   overload the particular areas with record syntax and stuff:
--   
--   <pre>
--   λ&gt; let page = def
--   </pre>
--   
--   title = "foo" &gt; , bodyScripts = script_ [src_ "jquery.js"] "" &gt;
--   &gt; &gt; λ&gt; template page "some content" &gt; &gt; ↪
--   "<a>HTML</a><a>html</a><a>head</a><a>title</a>foo<a>/title</a> &gt;
--   <a>/head</a><a>body</a>some content&lt;script &gt;
--   src="jquery.js"&gt;<a>/script</a><a>/body</a><a>/html</a>"
@package webpage
@version 0.0.5

module Web.Page.Types

-- | Generic layout for a web page. We keep the data type purely parametric
--   to allow for record-syntax overloading / reassignment, like this: .
--   
--   <pre>
--   page :: WebPage (Html ()) T.Text
--   </pre>
--   
--   <pre>
--   page' = page {pageTitle = "foo!"}
--   </pre>
data WebPage markup attr attrSet
WebPage :: attr -> markup -> markup -> markup -> markup -> markup -> markup -> markup -> attrSet -> WebPage markup attr attrSet

-- | Page title
[pageTitle] :: WebPage markup attr attrSet -> attr

-- | Favicon tags
[favicon] :: WebPage markup attr attrSet -> markup

-- | <tt>&lt;meta&gt;</tt> tags
[metaVars] :: WebPage markup attr attrSet -> markup

-- | JavaScript to include at the top of the page
[initScripts] :: WebPage markup attr attrSet -> markup

-- | JavaScript to include before <tt>&lt;style&gt;</tt> tags
[beforeStylesScripts] :: WebPage markup attr attrSet -> markup

-- | Styles
[styles] :: WebPage markup attr attrSet -> markup

-- | JavaScript to include after <tt>&lt;style&gt;</tt> tags - ie:
--   <a>Modernizr</a>
[afterStylesScripts] :: WebPage markup attr attrSet -> markup

-- | JavaScript to include at the base of <tt>&lt;body&gt;</tt>
[bodyScripts] :: WebPage markup attr attrSet -> markup

-- | Additional styles to assign to <tt>&lt;body&gt;</tt>
[bodyStyles] :: WebPage markup attr attrSet -> attrSet
instance (GHC.Classes.Ord attrSet, GHC.Classes.Ord markup, GHC.Classes.Ord attr) => GHC.Classes.Ord (Web.Page.Types.WebPage markup attr attrSet)
instance (GHC.Classes.Eq attrSet, GHC.Classes.Eq markup, GHC.Classes.Eq attr) => GHC.Classes.Eq (Web.Page.Types.WebPage markup attr attrSet)
instance (GHC.Show.Show attrSet, GHC.Show.Show markup, GHC.Show.Show attr) => GHC.Show.Show (Web.Page.Types.WebPage markup attr attrSet)
instance (GHC.Base.Monoid m, GHC.Base.Monoid a, GHC.Base.Monoid s) => GHC.Base.Monoid (Web.Page.Types.WebPage m a s)
instance (GHC.Base.Monoid m, GHC.Base.Monoid a, GHC.Base.Monoid s) => Data.Default.Class.Default (Web.Page.Types.WebPage m a s)

module Web.Page.Lucid

-- | Generic page template implemented in Lucid.
template :: Monad m => WebPage (HtmlT m ()) Text [Attribute] -> HtmlT m () -> HtmlT m ()

module Web.Page.Hastache

-- | We choose to not interpolate the <tt>WebPage</tt> data type as a JSON
--   Hastache template value because I don't want the portions of
--   <tt>WebPage</tt> visible by <tt>content</tt>.
template :: WebPage Text Text Text -> Text -> Text

module Web.Page.Blaze

-- | You should really be using Lucid...
template :: WebPage Html Text Attribute -> Html -> Html
