-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | CSS preprocessor as embedded Haskell. -- -- Clay is a CSS preprocessor like LESS and Sass, but implemented as an -- embedded domain specific language (EDSL) in Haskell. This means that -- all CSS selectors and style rules are first class Haskell functions, -- which makes reuse and composability easy. -- -- The project is described on http://fvisser.nl/clay. -- -- The API documentation can be found in the top level module -- Clay. -- --
--   0.7 -> 0.8
--     - Print prettier doubles.
--     - Loosen type of sym functions.
--     - Added some missing multi-side properties.
--     - Added content URL support.
--     - Added inset box shadows.
--     Thanks Deck and James Fisher.
--   
@package clay @version 0.8 module Clay.Selector -- | The star selector applies to all elements. Maps to * in CSS. star :: Selector -- | Select elements by name. The preferred syntax is to enable -- OverloadedStrings and actually just use -- "element-name" or use one of the predefined elements from -- Clay.Elements. element :: Text -> Selector -- | Named alias for **. deep :: Selector -> Selector -> Selector -- | The deep selector composer. Maps to sel1 sel2 in CSS. (**) :: Selector -> Selector -> Selector -- | Named alias for |>. child :: Selector -> Selector -> Selector -- | The child selector composer. Maps to sel1 > sel2 in CSS. (|>) :: Selector -> Selector -> Selector -- | The adjacent selector composer. Maps to sel1 + sel2 in CSS. (|+) :: Selector -> Selector -> Selector -- | Named alias for `#`. with :: Selector -> Refinement -> Selector -- | The filter selector composer, adds a filter to a selector. Maps to -- something like sel#filter or sel.filter in CSS, -- depending on the filter. (#) :: Selector -> Refinement -> Selector -- | Filter elements by id. The preferred syntax is to enable -- OverloadedStrings and use "#id-name". byId :: Text -> Refinement -- | Filter elements by class. The preferred syntax is to enable -- OverloadedStrings and use ".class-name". byClass :: Text -> Refinement -- | Filter elements by pseudo selector or pseudo class. The preferred -- syntax is to enable OverloadedStrings and use -- ":pseudo-selector" or use one of the predefined ones from -- Clay.Pseudo. pseudo :: Text -> Refinement -- | Filter elements by pseudo selector functions. The preferred way is to -- use one of the predefined functions from Clay.Pseudo. func :: Text -> [Text] -> Refinement -- | Filter elements based on the presence of a certain attribute. The -- preferred syntax is to enable OverloadedStrings and use -- "@attr" or use one of the predefined ones from -- Clay.Attributes. attr :: Text -> Refinement -- | Filter elements based on the presence of a certain attribute with the -- specified value. (@=) :: Text -> Text -> Refinement -- | Filter elements based on the presence of a certain attribute that ends -- with the specified value. ($=) :: Text -> Text -> Refinement -- | Filter elements based on the presence of a certain attribute that have -- the specified value contained in a space separated list. (~=) :: Text -> Text -> Refinement -- | Filter elements based on the presence of a certain attribute that have -- the specified value contained in a hyphen separated list. (|=) :: Text -> Text -> Refinement data Predicate Id :: Text -> Predicate Class :: Text -> Predicate Attr :: Text -> Predicate AttrVal :: Text -> Text -> Predicate AttrEnds :: Text -> Text -> Predicate AttrSpace :: Text -> Text -> Predicate AttrHyph :: Text -> Text -> Predicate Pseudo :: Text -> Predicate PseudoFunc :: Text -> [Text] -> Predicate newtype Refinement Refinement :: [Predicate] -> Refinement unFilter :: Refinement -> [Predicate] filterFromText :: Text -> Refinement data Path f Star :: Path f Elem :: Text -> Path f Child :: f -> f -> Path f Deep :: f -> f -> Path f Adjacent :: f -> f -> Path f Combined :: f -> f -> Path f newtype Fix f In :: f (Fix f) -> Fix f out :: Fix f -> f (Fix f) data SelectorF a SelectorF :: Refinement -> (Path a) -> SelectorF a type Selector = Fix SelectorF text :: Text -> Selector instance Show (f (Fix f)) => Show (Fix f) instance Eq Predicate instance Ord Predicate instance Show Predicate instance Show Refinement instance Show f => Show (Path f) instance Show a => Show (SelectorF a) instance Monoid (Fix SelectorF) instance IsString (Fix SelectorF) instance IsString Refinement module Clay.Property data Prefixed Prefixed :: [(Text, Text)] -> Prefixed Plain :: Text -> Prefixed merge :: Prefixed -> Prefixed -> Prefixed plain :: Prefixed -> Text quote :: Text -> Text newtype Key a Key :: Prefixed -> Key a unKeys :: Key a -> Prefixed cast :: Key a -> Key () newtype Value Value :: Prefixed -> Value unValue :: Value -> Prefixed class Val a value :: Val a => a -> Value newtype Literal Literal :: Text -> Literal data E5 E5 :: E5 intersperse :: Monoid a => a -> [a] -> a noCommas :: Val a => [a] -> Value (!) :: a -> b -> (a, b) instance Show Prefixed instance Show (Key a) instance Monoid (Key a) instance IsString (Key a) instance Show Value instance Monoid Value instance IsString Value instance Show Literal instance Monoid Literal instance IsString Literal instance Val a => Val [a] instance (Val a, Val b) => Val (Either a b) instance (Val a, Val b) => Val (a, b) instance Val a => Val (Maybe a) instance Val Value instance Val Double instance HasResolution E5 instance Val Integer instance Val Literal instance Val Text instance Monoid Prefixed instance IsString Prefixed -- | A bunch of type classes representing common values shared between -- multiple CSS properties, like Auto, Inherit, -- None, Normal and several more. -- -- All the common value type classes have an instance for the Value type, -- making them easily derivable for custom value types. module Clay.Common class All a all :: All a => a class Auto a auto :: Auto a => a class Inherit a inherit :: Inherit a => a class None a none :: None a => a class Normal a normal :: Normal a => a class Visible a visible :: Visible a => a class Hidden a hidden :: Hidden a => a -- | The other type class is used to escape from the type safety introduced -- by embedding CSS properties into the typed world of Clay. Other -- allows you to cast any Value to a specific value type. class Other a other :: Other a => Value -> a -- | Common list browser prefixes to make experimental properties work in -- different browsers. browsers :: Prefixed -- | Syntax for CSS function call. call :: (IsString s, Monoid s) => s -> s -> s instance Other Value instance Hidden Value instance Visible Value instance None Value instance Normal Value instance Inherit Value instance Auto Value instance All Value module Clay.Stylesheet newtype MediaType MediaType :: Value -> MediaType data NotOrOnly Not :: NotOrOnly Only :: NotOrOnly data MediaQuery MediaQuery :: (Maybe NotOrOnly) -> MediaType -> [Feature] -> MediaQuery data Feature Feature :: Text -> (Maybe Value) -> Feature data App Self :: Refinement -> App Root :: Selector -> App Pop :: Int -> App Child :: Selector -> App Sub :: Selector -> App data Rule Property :: (Key ()) -> Value -> Rule Nested :: App -> [Rule] -> Rule Query :: MediaQuery -> [Rule] -> Rule Face :: [Rule] -> Rule newtype StyleM a S :: (Writer [Rule] a) -> StyleM a -- | The Css context is used to collect style rules which are -- mappings from selectors to style properties. The Css type is a -- computation in the StyleM monad that just collects and doesn't -- return anything. type Css = StyleM () -- | Add a new style property to the stylesheet with the specified -- Key and value. The value can be any type that is in the -- Val typeclass, with other words: can be converted to a -- Value. key :: Val a => Key a -> a -> Css -- | Add a new style property to the stylesheet with the specified -- Key and value, like key but use a Prefixed key. prefixed :: Val a => Prefixed -> a -> Css -- | The colon operator can be used to add style rules to the current -- context for which there is no embedded version available. Both the key -- and the value are plain text values and rendered as is to the output -- CSS. (-:) :: Key Text -> Text -> Css -- | Assign a stylesheet to a selector. When the selector is nested inside -- an outer scope it will be composed with deep. (?) :: Selector -> Css -> Css -- | Assign a stylesheet to a selector. When the selector is nested inside -- an outer scope it will be composed with |>. ( Css -> Css -- | Assign a stylesheet to a filter selector. When the selector is nested -- inside an outer scope it will be composed with the with -- selector. (&) :: Refinement -> Css -> Css -- | Root is used to add style rules to the top scope. root :: Selector -> Css -> Css -- | Pop is used to add style rules to selectors defined in an outer scope. -- The counter specifies how far up the scope stack we want to add the -- rules. pop :: Int -> Css -> Css -- | Apply a set of style rules when the media type and feature queries -- apply. query :: MediaType -> [Feature] -> Css -> Css -- | Apply a set of style rules when the media type and feature queries do -- not apply. queryNot :: MediaType -> [Feature] -> Css -> Css -- | Apply a set of style rules only when the media type and feature -- queries apply. queryOnly :: MediaType -> [Feature] -> Css -> Css -- | Define a new font-face. fontFace :: Css -> Css instance Val MediaType instance Other MediaType instance Show MediaType instance All MediaType instance Show NotOrOnly instance Show Feature instance Show MediaQuery instance Show App instance Show Rule instance Monad StyleM -- | Dynamic user interface element control. This CSS3 functionality is -- still in draft, though it is implemented in several browsers. See -- http://www.w3.org/TR/2000/WD-css3-userint-20000216#dynamic and -- your target browsers' vendor documentation for more information. module Clay.Dynamic -- | Selection mode. data UserInput -- | Enabling user interface elements. userInput :: UserInput -> Css -- | Selection mode. inputEnabled :: UserInput -- | Selection mode. inputDisabled :: UserInput -- | Selection mode. data UserModify -- | Modifiability of an element. userModify :: UserModify -> Css -- | Selection mode. readOnly :: UserModify -- | Selection mode. readWrite :: UserModify -- | Selection mode. writeOnly :: UserModify -- | Selection mode. data UserSelect -- | Content selection granularity. userSelect :: UserSelect -> Css -- | Selection mode. selectText :: UserSelect -- | Selection mode. selectToggle :: UserSelect -- | Selection mode. selectElement :: UserSelect -- | Selection mode. selectElements :: UserSelect -- | Focus behaviour. data UserFocus -- | Content focusing granularity. userFocus :: UserFocus -> Css -- | Focus mode. selectAll :: UserFocus -- | Focus mode. selectBefore :: UserFocus -- | Focus mode. selectAfter :: UserFocus -- | Focus mode. selectSame :: UserFocus -- | Focus mode. selectMenu :: UserFocus instance Val UserInput instance Inherit UserInput instance None UserInput instance Val UserModify instance Inherit UserModify instance Val UserSelect instance Inherit UserSelect instance None UserSelect instance All UserSelect instance Val UserFocus instance Inherit UserFocus instance None UserFocus instance Normal UserFocus instance Auto UserFocus module Clay.FontFace data FontFaceFormat WOFF :: FontFaceFormat TrueType :: FontFaceFormat OpenType :: FontFaceFormat EmbeddedOpenType :: FontFaceFormat SVG :: FontFaceFormat data FontFaceSrc FontFaceSrcUrl :: Text -> (Maybe FontFaceFormat) -> FontFaceSrc FontFaceSrcLocal :: Text -> FontFaceSrc fontFaceSrc :: [FontFaceSrc] -> Css instance Show FontFaceFormat instance Show FontFaceSrc instance Val FontFaceSrc module Clay.Render data Config Config :: Builder -> Builder -> Builder -> Bool -> Bool -> Bool -> Bool -> Config indentation :: Config -> Builder newline :: Config -> Builder sep :: Config -> Builder finalSemicolon :: Config -> Bool warn :: Config -> Bool align :: Config -> Bool banner :: Config -> Bool -- | Configuration to print to a pretty human readable CSS output. pretty :: Config -- | Configuration to print to a compacted unreadable CSS output. compact :: Config -- | Render a stylesheet with the default configuration. The pretty printer -- is used by default. render :: Css -> Text -- | Render to CSS using the default configuration (pretty) and -- directly print to the standard output. putCss :: Css -> IO () -- | Render a stylesheet with a custom configuration and an optional outer -- scope. renderWith :: Config -> Css -> Text module Clay.Time data Time -- | Time in seconds. sec :: Double -> Time -- | Time in milliseconds. ms :: Double -> Time instance Val Time instance Auto Time instance Normal Time instance Inherit Time instance None Time instance Other Time instance Fractional Time instance Num Time module Clay.Transition transition :: Text -> Time -> TimingFunction -> Time -> Css transitions :: [(Text, Time, TimingFunction, Time)] -> Css transitionProperty :: Text -> Css transitionProperties :: [Text] -> Css transitionDuration :: Time -> Css transitionDurations :: [Time] -> Css data TimingFunction transitionTimingFunction :: TimingFunction -> Css ease :: TimingFunction easeIn :: TimingFunction easeOut :: TimingFunction easeInOut :: TimingFunction easeLinear :: TimingFunction stepStart :: TimingFunction stepStop :: TimingFunction stepsStart :: Integer -> TimingFunction stepsStop :: Integer -> TimingFunction cubicBezier :: Double -> Double -> Double -> Double -> TimingFunction transitionDelay :: Time -> Css transitionDelays :: [Time] -> Css instance Val TimingFunction instance Other TimingFunction instance Auto TimingFunction module Clay.Color data Color Rgba :: Integer -> Integer -> Integer -> Integer -> Color Hsla :: Integer -> Float -> Float -> Integer -> Color Other :: Value -> Color rgba :: Integer -> Integer -> Integer -> Integer -> Color rgb :: Integer -> Integer -> Integer -> Color hsla :: Integer -> Float -> Float -> Integer -> Color hsl :: Integer -> Float -> Float -> Color grayish :: Integer -> Color transparent :: Color setR :: Integer -> Color -> Color setG :: Integer -> Color -> Color setB :: Integer -> Color -> Color setA :: Integer -> Color -> Color (*.) :: Color -> Integer -> Color (+.) :: Color -> Integer -> Color (-.) :: Color -> Integer -> Color clamp :: Integer -> Integer parse :: Text -> Color aliceblue :: Color yellowgreen :: Color yellow :: Color whitesmoke :: Color white :: Color wheat :: Color violet :: Color turquoise :: Color tomato :: Color thistle :: Color teal :: Color tan :: Color steelblue :: Color springgreen :: Color snow :: Color slategrey :: Color slategray :: Color slateblue :: Color skyblue :: Color silver :: Color sienna :: Color seashell :: Color seagreen :: Color sandybrown :: Color salmon :: Color saddlebrown :: Color royalblue :: Color rosybrown :: Color red :: Color purple :: Color powderblue :: Color plum :: Color pink :: Color peru :: Color peachpuff :: Color papayawhip :: Color palevioletred :: Color paleturquoise :: Color palegreen :: Color palegoldenrod :: Color orchid :: Color orangered :: Color orange :: Color olivedrab :: Color olive :: Color oldlace :: Color navy :: Color navajowhite :: Color moccasin :: Color mistyrose :: Color mintcream :: Color midnightblue :: Color mediumvioletred :: Color mediumturquoise :: Color mediumspringgreen :: Color mediumslateblue :: Color mediumseagreen :: Color mediumpurple :: Color mediumorchid :: Color mediumblue :: Color mediumaquamarine :: Color maroon :: Color magenta :: Color linen :: Color limegreen :: Color lime :: Color lightyellow :: Color lightsteelblue :: Color lightslategrey :: Color lightslategray :: Color lightskyblue :: Color lightseagreen :: Color lightsalmon :: Color lightpink :: Color lightgrey :: Color lightgreen :: Color lightgray :: Color lightgoldenrodyellow :: Color lightcyan :: Color lightcoral :: Color lightblue :: Color lemonchiffon :: Color lawngreen :: Color lavenderblush :: Color lavender :: Color khaki :: Color ivory :: Color indigo :: Color indianred :: Color hotpink :: Color honeydew :: Color grey :: Color greenyellow :: Color green :: Color gray :: Color goldenrod :: Color gold :: Color ghostwhite :: Color gainsboro :: Color fuchsia :: Color forestgreen :: Color floralwhite :: Color firebrick :: Color dodgerblue :: Color dimgrey :: Color dimgray :: Color deepskyblue :: Color deeppink :: Color darkviolet :: Color darkturquoise :: Color darkslategrey :: Color darkslategray :: Color darkslateblue :: Color darkseagreen :: Color darksalmon :: Color darkred :: Color darkorchid :: Color darkorange :: Color darkolivegreen :: Color darkmagenta :: Color darkkhaki :: Color darkgrey :: Color darkgreen :: Color darkgray :: Color darkgoldenrod :: Color darkcyan :: Color darkblue :: Color cyan :: Color crimson :: Color cornsilk :: Color cornflowerblue :: Color coral :: Color chocolate :: Color chartreuse :: Color cadetblue :: Color burlywood :: Color brown :: Color blueviolet :: Color blue :: Color blanchedalmond :: Color black :: Color bisque :: Color beige :: Color azure :: Color aquamarine :: Color aqua :: Color antiquewhite :: Color instance Show Color instance IsString Color instance Other Color instance Inherit Color instance Auto Color instance None Color instance Val Color module Clay.Size data Size a -- | Sizes can be absolute like pixels, points, etc. data Abs -- | Sizes can be relative like percentages. data Rel nil :: Size a -- | Size in pixels. px :: Integer -> Size Abs -- | Size in points. pt :: Double -> Size Abs -- | Size in em's. em :: Double -> Size Abs -- | Size in ex'es. ex :: Double -> Size Abs -- | Size in percentages. pct :: Double -> Size Rel sym :: (a -> a -> a -> a -> Css) -> a -> Css sym2 :: (a -> a -> a -> a -> Css) -> a -> a -> Css sym3 :: (a -> a -> a -> a -> Css) -> a -> a -> a -> Css data Angle a data Deg data Rad -- | Angle in degrees. deg :: Double -> Angle Deg -- | Angle in radians. rad :: Double -> Angle Rad instance Val (Size a) instance Auto (Size a) instance Normal (Size a) instance Inherit (Size a) instance None (Size a) instance Other (Size a) instance Val (Angle a) instance Auto (Angle a) instance Inherit (Angle a) instance Other (Angle a) instance Fractional (Angle Rad) instance Num (Angle Rad) instance Fractional (Angle Deg) instance Num (Angle Deg) instance Fractional (Size Rel) instance Num (Size Rel) instance Fractional (Size Abs) instance Num (Size Abs) module Clay.Border data Stroke solid :: Stroke dotted :: Stroke dashed :: Stroke double :: Stroke wavy :: Stroke groove :: Stroke ridge :: Stroke inset :: Stroke outset :: Stroke border :: Stroke -> Size Abs -> Color -> Css borderTop :: Stroke -> Size Abs -> Color -> Css borderLeft :: Stroke -> Size Abs -> Color -> Css borderBottom :: Stroke -> Size Abs -> Color -> Css borderRight :: Stroke -> Size Abs -> Color -> Css borderColor4 :: Color -> Color -> Color -> Color -> Css borderColor :: Color -> Css borderLeftColor :: Color -> Css borderRightColor :: Color -> Css borderTopColor :: Color -> Css borderBottomColor :: Color -> Css borderStyle4 :: Stroke -> Stroke -> Stroke -> Stroke -> Css borderStyle :: Stroke -> Css borderLeftStyle :: Stroke -> Css borderRightStyle :: Stroke -> Css borderTopStyle :: Stroke -> Css borderBottomStyle :: Stroke -> Css borderWidth4 :: Size Abs -> Size Abs -> Size Abs -> Size Abs -> Css borderWidth :: Size Abs -> Css borderLeftWidth :: Size Abs -> Css borderRightWidth :: Size Abs -> Css borderTopWidth :: Size Abs -> Css borderBottomWidth :: Size Abs -> Css outline :: Stroke -> Size Abs -> Color -> Css outlineTop :: Stroke -> Size Abs -> Color -> Css outlineLeft :: Stroke -> Size Abs -> Color -> Css outlineBottom :: Stroke -> Size Abs -> Color -> Css outlineRight :: Stroke -> Size Abs -> Color -> Css outlineColor4 :: Color -> Color -> Color -> Color -> Css outlineColor :: Color -> Css outlineLeftColor :: Color -> Css outlineRightColor :: Color -> Css outlineTopColor :: Color -> Css outlineBottomColor :: Color -> Css outlineStyle4 :: Stroke -> Stroke -> Stroke -> Stroke -> Css outlineStyle :: Stroke -> Css outlineLeftStyle :: Stroke -> Css outlineRightStyle :: Stroke -> Css outlineTopStyle :: Stroke -> Css outlineBottomStyle :: Stroke -> Css outlineWidth4 :: Size Abs -> Size Abs -> Size Abs -> Size Abs -> Css outlineWidth :: Size Abs -> Css outlineLeftWidth :: Size Abs -> Css outlineRightWidth :: Size Abs -> Css outlineTopWidth :: Size Abs -> Css outlineBottomWidth :: Size Abs -> Css outlineOffset :: Size Abs -> Css borderRadius :: Size a -> Size a -> Size a -> Size a -> Css borderTopLeftRadius :: Size a -> Size a -> Css borderTopRightRadius :: Size a -> Size a -> Css borderBottomLeftRadius :: Size a -> Size a -> Css borderBottomRightRadius :: Size a -> Size a -> Css instance Val Stroke instance Other Stroke instance Inherit Stroke instance Auto Stroke instance None Stroke module Clay.Box data BoxType paddingBox :: BoxType borderBox :: BoxType contentBox :: BoxType boxSizing :: BoxType -> Css boxShadow :: Size a -> Size a -> Size a -> Color -> Css boxShadows :: [(Size a, Size a, Size a, Color)] -> Css insetBoxShadow :: Stroke -> Size a -> Size a -> Size a -> Color -> Css instance Val BoxType instance Inherit BoxType module Clay.Background -- | We implement the generic background property as a type class that -- accepts multiple value types. This allows us to combine different -- background aspects into a shorthand syntax. class Val a => Background a where background = key "background" background :: Background a => a -> Css backgroundColor :: Color -> Css data BackgroundPosition backgroundPosition :: BackgroundPosition -> Css backgroundPositions :: [BackgroundPosition] -> Css placed :: Side -> Side -> BackgroundPosition positioned :: Size a -> Size a -> BackgroundPosition data BackgroundSize backgroundSize :: BackgroundSize -> Css backgroundSizes :: [BackgroundSize] -> Css contain :: BackgroundSize cover :: BackgroundSize by :: Size a -> Size b -> BackgroundSize data BackgroundRepeat backgroundRepeat :: BackgroundRepeat -> Css backgroundRepeats :: [BackgroundRepeat] -> Css repeat :: BackgroundRepeat space :: BackgroundRepeat round :: BackgroundRepeat noRepeat :: BackgroundRepeat xyRepeat :: BackgroundRepeat -> BackgroundRepeat -> BackgroundRepeat repeatX :: BackgroundRepeat repeatY :: BackgroundRepeat data BackgroundOrigin backgroundOrigin :: BackgroundOrigin -> Css backgroundOrigins :: [BackgroundOrigin] -> Css origin :: BoxType -> BackgroundOrigin data BackgroundClip backgroundClip :: BackgroundClip -> Css backgroundClips :: [BackgroundClip] -> Css boxClip :: BoxType -> BackgroundClip data BackgroundAttachment backgroundAttachment :: BackgroundAttachment -> Css backgroundAttachments :: [BackgroundAttachment] -> Css attachFixed :: BackgroundAttachment attachScroll :: BackgroundAttachment data BackgroundImage backgroundImage :: BackgroundImage -> Css backgroundImages :: [BackgroundImage] -> Css url :: Text -> BackgroundImage data Side -- | We have to prefix these values to avoid conflict with existing -- property names. sideTop :: Side -- | We have to prefix these values to avoid conflict with existing -- property names. sideLeft :: Side -- | We have to prefix these values to avoid conflict with existing -- property names. sideRight :: Side -- | We have to prefix these values to avoid conflict with existing -- property names. sideBottom :: Side -- | We have to prefix these values to avoid conflict with existing -- property names. sideCenter :: Side -- | We have to prefix these values to avoid conflict with existing -- property names. sideMiddle :: Side data Direction straight :: Side -> Direction angular :: Angle a -> Direction data Location class Val a => Loc a where location = Location . value instance Val BackgroundPosition instance Other BackgroundPosition instance Inherit BackgroundPosition instance Val BackgroundSize instance Other BackgroundSize instance Inherit BackgroundSize instance Val BackgroundRepeat instance Other BackgroundRepeat instance Inherit BackgroundRepeat instance None BackgroundRepeat instance Val BackgroundImage instance Other BackgroundImage instance Inherit BackgroundImage instance None BackgroundImage instance Val BackgroundOrigin instance Other BackgroundOrigin instance Inherit BackgroundOrigin instance Val BackgroundClip instance Other BackgroundClip instance Inherit BackgroundClip instance Other BackgroundAttachment instance Val BackgroundAttachment instance Inherit BackgroundAttachment instance Val Side instance Other Side instance Inherit Side instance Val Direction instance Other Direction instance Val Location instance Other Location instance (Loc a, Loc b) => Loc (a, b) instance Loc (Size a) instance Loc Side instance Auto BackgroundSize instance Background BackgroundImage instance Background BackgroundAttachment instance Background BackgroundClip instance Background BackgroundOrigin instance Background BackgroundRepeat instance Background BackgroundSize instance Background BackgroundPosition instance Background Color instance (Background a, Background b) => Background (a, b) instance Background a => Background [a] module Clay.Mask -- | We implement the generic mask property as a type class that accepts -- multiple value types. This allows us to combine different mask aspects -- into a shorthand syntax. class Val a => Mask a where mask = pkey "mask" mask :: Mask a => a -> Css data MaskComposite clear :: MaskComposite copy :: MaskComposite sourceOver :: MaskComposite sourceIn :: MaskComposite sourceOut :: MaskComposite sourceAtop :: MaskComposite destinationOver :: MaskComposite destinationIn :: MaskComposite destinationOut :: MaskComposite destinationAtop :: MaskComposite xor :: MaskComposite maskComposite :: MaskComposite -> Css maskComposites :: [MaskComposite] -> Css maskPosition :: BackgroundPosition -> Css maskPositions :: [BackgroundPosition] -> Css maskSize :: BackgroundSize -> Css maskSizes :: [BackgroundSize] -> Css maskRepeat :: BackgroundRepeat -> Css maskRepeats :: [BackgroundRepeat] -> Css maskOrigin :: BackgroundOrigin -> Css maskOrigins :: [BackgroundOrigin] -> Css maskClip :: BackgroundClip -> Css maskClips :: [BackgroundClip] -> Css maskAttachment :: BackgroundAttachment -> Css maskAttachments :: [BackgroundAttachment] -> Css maskImage :: BackgroundImage -> Css maskImages :: [BackgroundImage] -> Css instance Val MaskComposite instance Other MaskComposite instance Inherit MaskComposite instance None MaskComposite instance Mask BackgroundImage instance Mask BackgroundAttachment instance Mask BackgroundClip instance Mask BackgroundOrigin instance Mask BackgroundRepeat instance Mask BackgroundSize instance Mask BackgroundPosition instance Mask MaskComposite instance (Mask a, Mask b) => Mask (a, b) instance Mask a => Mask [a] module Clay.Display float :: FloatStyle -> Css data FloatStyle floatLeft :: FloatStyle floatRight :: FloatStyle clear :: Clear -> Css data Clear both :: Clear clearLeft :: Clear clearRight :: Clear data Position position :: Position -> Css static :: Position absolute :: Position fixed :: Position relative :: Position data Display display :: Display -> Css inline :: Display block :: Display listItem :: Display runIn :: Display inlineBlock :: Display table :: Display inlineTable :: Display tableRowGroup :: Display tableHeaderGroup :: Display tableFooterGroup :: Display tableRow :: Display tableColumnGroup :: Display tableColumn :: Display tableCell :: Display tableCaption :: Display displayNone :: Display displayInherit :: Display flex :: Display inlineFlex :: Display grid :: Display inlineGrid :: Display data Overflow scroll :: Overflow overflow :: Overflow -> Css overflowX :: Overflow -> Css overflowY :: Overflow -> Css data Visibility collapse :: Visibility visibility :: Visibility -> Css data Clip clip :: Clip -> Css rect :: Size a -> Size a -> Size a -> Size a -> Clip opacity :: Double -> Css zIndex :: Integer -> Css data PointerEvents pointerEvents :: PointerEvents -> Css visiblePainted :: PointerEvents visibleFill :: PointerEvents visibleStroke :: PointerEvents painted :: PointerEvents fillEvents :: PointerEvents strokeEvents :: PointerEvents allEvents :: PointerEvents instance Val FloatStyle instance None FloatStyle instance Inherit FloatStyle instance Val Clear instance Other Clear instance None Clear instance Inherit Clear instance Val Position instance Other Position instance Inherit Position instance Val Display instance Other Display instance None Display instance Inherit Display instance Val Overflow instance Other Overflow instance Auto Overflow instance Inherit Overflow instance Hidden Overflow instance Visible Overflow instance Val Visibility instance Other Visibility instance Auto Visibility instance Inherit Visibility instance Hidden Visibility instance Visible Visibility instance Val Clip instance Other Clip instance Auto Clip instance Inherit Clip instance Val PointerEvents instance Other PointerEvents instance Auto PointerEvents instance Visible PointerEvents instance None PointerEvents instance Inherit PointerEvents module Clay.Font -- | We implement the generic font property as a type class that accepts -- multiple value types. This allows us to combine different font aspects -- into a shorthand syntax. Fonts require a mandatory part and have a -- optional a part. -- -- http://www.w3.org/TR/css3-fonts/#font-prop class Val a => Font a where font = key "font" font :: Font a => a -> Css data Optional Optional :: (Maybe FontWeight) -> (Maybe FontVariant) -> (Maybe FontStyle) -> Optional data Required a Required :: (Size a) -> (Maybe (Size a)) -> [Text] -> [GenericFontFamily] -> Required a -- | An alias for color. fontColor :: Color -> Css color :: Color -> Css -- | The fontFamily style rules takes to lists of font families: -- zero or more custom font-families and preferably one or more generic -- font families. fontFamily :: [Text] -> [GenericFontFamily] -> Css sansSerif :: GenericFontFamily serif :: GenericFontFamily monospace :: GenericFontFamily cursive :: GenericFontFamily fantasy :: GenericFontFamily data FontSize fontSize :: Size a -> Css fontSizeCustom :: FontSize -> Css xxSmall :: FontSize xSmall :: FontSize small :: FontSize medium :: FontSize large :: FontSize xLarge :: FontSize xxLarge :: FontSize smaller :: FontSize larger :: FontSize data FontStyle fontStyle :: FontStyle -> Css italic :: FontStyle oblique :: FontStyle data FontVariant fontVariant :: FontVariant -> Css smallCaps :: FontVariant data FontWeight fontWeight :: FontWeight -> Css bold :: FontWeight bolder :: FontWeight lighter :: FontWeight weight :: Integer -> FontWeight data NamedFont caption :: NamedFont icon :: NamedFont menu :: NamedFont messageBox :: NamedFont smallCaption :: NamedFont statusBar :: NamedFont lineHeight :: Size a -> Css instance Val GenericFontFamily instance Inherit GenericFontFamily instance Auto GenericFontFamily instance Other GenericFontFamily instance Val FontSize instance Inherit FontSize instance Auto FontSize instance Other FontSize instance Val FontStyle instance Inherit FontStyle instance Normal FontStyle instance Other FontStyle instance Val FontVariant instance Inherit FontVariant instance Normal FontVariant instance Other FontVariant instance Val FontWeight instance Inherit FontWeight instance Normal FontWeight instance Other FontWeight instance Val NamedFont instance Other NamedFont instance Font (Optional, Required a) instance Font (Required a) instance Val (Required a) instance Val Optional module Clay.Geometry size :: Size Abs -> Css top :: Size Abs -> Css left :: Size Abs -> Css bottom :: Size Abs -> Css right :: Size Abs -> Css width :: Size a -> Css height :: Size a -> Css minWidth :: Size a -> Css minHeight :: Size a -> Css maxWidth :: Size a -> Css maxHeight :: Size a -> Css padding :: Size Abs -> Size Abs -> Size Abs -> Size Abs -> Css paddingTop :: Size Abs -> Css paddingLeft :: Size Abs -> Css paddingRight :: Size Abs -> Css paddingBottom :: Size Abs -> Css margin :: Size Abs -> Size Abs -> Size Abs -> Size Abs -> Css marginTop :: Size Abs -> Css marginLeft :: Size Abs -> Css marginRight :: Size Abs -> Css marginBottom :: Size Abs -> Css module Clay.Gradient type Ramp = [(Color, Size Rel)] linearGradient :: Direction -> Ramp -> BackgroundImage hGradient :: Color -> Color -> BackgroundImage vGradient :: Color -> Color -> BackgroundImage data Radial circle :: Extend -> Radial ellipse :: Extend -> Radial circular :: Size Abs -> Radial elliptical :: Size a -> Size a -> Radial data Extend closestSide :: Extend closestCorner :: Extend farthestSide :: Extend farthestCorner :: Extend radialGradient :: Loc l => l -> Radial -> Ramp -> BackgroundImage repeatingLinearGradient :: Direction -> Ramp -> BackgroundImage hRepeatingGradient :: Color -> Color -> BackgroundImage vRepeatingGradient :: Color -> Color -> BackgroundImage repeatingRadialGradient :: Loc l => l -> Radial -> Ramp -> BackgroundImage instance Val Radial instance Other Radial instance Val Extend instance Other Extend module Clay.Text letterSpacing :: Size a -> Css wordSpacing :: Size a -> Css data TextRendering textRendering :: TextRendering -> Css optimizeSpeed :: TextRendering optimizeLegibility :: TextRendering geometricPrecision :: TextRendering textShadow :: Size a -> Size a -> Size a -> Color -> Css data TextIndent textIndent :: TextIndent -> Css eachLine :: TextIndent hanging :: TextIndent indent :: Size a -> TextIndent data TextDirection direction :: TextDirection -> Css ltr :: TextDirection rtl :: TextDirection data TextAlign textAlign :: TextAlign -> Css justify :: TextAlign matchParent :: TextAlign start :: TextAlign end :: TextAlign alignSide :: Side -> TextAlign alignString :: Char -> TextAlign data WhiteSpace whiteSpace :: WhiteSpace -> Css pre :: WhiteSpace nowrap :: WhiteSpace preWrap :: WhiteSpace preLine :: WhiteSpace data TextDecoration textDecoration :: TextDecoration -> Css textDecorationStyle :: Stroke -> Css textDecorationLine :: TextDecoration -> Css textDecorationColor :: Color -> Css underline :: TextDecoration overline :: TextDecoration lineThrough :: TextDecoration blink :: TextDecoration data TextTransform textTransform :: TextTransform -> Css capitalize :: TextTransform uppercase :: TextTransform lowercase :: TextTransform fullWidth :: TextTransform data Content content :: Content -> Css contents :: [Content] -> Css attrContent :: Text -> Content stringContent :: Text -> Content uriContent :: Text -> Content urlContent :: Text -> Content openQuote :: Content closeQuote :: Content noOpenQuote :: Content noCloseQuote :: Content instance Val TextRendering instance Auto TextRendering instance Inherit TextRendering instance Other TextRendering instance Val TextIndent instance Inherit TextIndent instance Other TextIndent instance Val TextDirection instance Normal TextDirection instance Inherit TextDirection instance Other TextDirection instance Val TextAlign instance Normal TextAlign instance Inherit TextAlign instance Other TextAlign instance Val WhiteSpace instance Normal WhiteSpace instance Inherit WhiteSpace instance Other WhiteSpace instance Val TextDecoration instance None TextDecoration instance Inherit TextDecoration instance Other TextDecoration instance Val TextTransform instance None TextTransform instance Inherit TextTransform instance Val Content instance None Content instance Normal Content instance Inherit Content module Clay.Transform data Transformation transform :: Transformation -> Css transforms :: [Transformation] -> Css translate :: Size Abs -> Size Abs -> Transformation translateX :: Size Abs -> Transformation translateY :: Size Abs -> Transformation translateZ :: Size Abs -> Transformation translate3d :: Size Abs -> Size Abs -> Size Abs -> Transformation scale :: Double -> Double -> Transformation scaleX :: Double -> Transformation scaleY :: Double -> Transformation scaleZ :: Double -> Transformation scale3d :: Double -> Double -> Double -> Transformation rotate :: Angle a -> Transformation rotateX :: Angle a -> Transformation rotateY :: Angle a -> Transformation rotateZ :: Angle a -> Transformation rotate3d :: Double -> Double -> Double -> Angle a -> Transformation skew :: Angle a -> Angle a -> Transformation skewX :: Angle a -> Transformation skewY :: Angle a -> Transformation perspective :: Double -> Transformation matrix :: Double -> Double -> Double -> Double -> Double -> Double -> Transformation matrix3d :: Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Transformation instance Val Transformation instance None Transformation module Clay.Filter data Filter filter :: Filter -> Css filters :: [Filter] -> Css url :: Text -> Filter blur :: Size Abs -> Filter brightness :: Double -> Filter contrast :: Size Rel -> Filter dropShadow :: Size Abs -> Size Abs -> Size Abs -> Color -> Filter grayscale :: Size Rel -> Filter hueRotate :: Angle a -> Filter invert :: Size Rel -> Filter opacity :: Size Rel -> Filter saturate :: Size Rel -> Filter sepia :: Size Rel -> Filter instance Val Filter instance None Filter instance Inherit Filter module Clay.Media aural :: MediaType braille :: MediaType handheld :: MediaType print :: MediaType projection :: MediaType screen :: MediaType tty :: MediaType tv :: MediaType embossed :: MediaType width :: Size Abs -> Feature minWidth :: Size Abs -> Feature maxWidth :: Size Abs -> Feature height :: Size Abs -> Feature minHeight :: Size Abs -> Feature maxHeight :: Size Abs -> Feature deviceWidth :: Size Abs -> Feature minDeviceWidth :: Size Abs -> Feature maxDeviceWidth :: Size Abs -> Feature deviceHeight :: Size Abs -> Feature minDeviceHeight :: Size Abs -> Feature maxDeviceHeight :: Size Abs -> Feature aspectRatio :: (Integer, Integer) -> Feature minAspectRatio :: (Integer, Integer) -> Feature maxAspectRatio :: (Integer, Integer) -> Feature deviceAspectRatio :: (Integer, Integer) -> Feature minDeviceAspectRatio :: (Integer, Integer) -> Feature maxDeviceAspectRatio :: (Integer, Integer) -> Feature color :: Feature monochrome :: Feature scan :: Feature grid :: Feature minColor :: Integer -> Feature maxColor :: Integer -> Feature colorIndex :: Integer -> Feature minColorIndex :: Integer -> Feature maxColorIndex :: Integer -> Feature minMonochrome :: Integer -> Feature maxMonochrome :: Integer -> Feature resolution :: Val a => a -> Feature minResolution :: Val a => a -> Feature maxResolution :: Val a => a -> Feature data Resolution dpi :: Integer -> Resolution dppx :: Integer -> Resolution instance Val Resolution instance Other Resolution module Clay.Elements -- | Special cases, these items occur both as an HTML tag and an HTML -- attribute. We keep them polymorph. abbr :: IsString a => a -- | Special cases, these items occur both as an HTML tag and an HTML -- attribute. We keep them polymorph. title :: IsString a => a -- | Special cases, these items occur both as an HTML tag and an HTML -- attribute. We keep them polymorph. style :: IsString a => a -- | Special cases, these items occur both as an HTML tag and an HTML -- attribute. We keep them polymorph. span :: IsString a => a -- | Special cases, these items occur both as an HTML tag and an HTML -- attribute. We keep them polymorph. label :: IsString a => a -- | Special cases, these items occur both as an HTML tag and an HTML -- attribute. We keep them polymorph. form :: IsString a => a -- | Special cases, these items occur both as an HTML tag and an HTML -- attribute. We keep them polymorph. data_ :: IsString a => a -- | Special cases, these items occur both as an HTML tag and an HTML -- attribute. We keep them polymorph. command :: IsString a => a -- | Special cases, these items occur both as an HTML tag and an HTML -- attribute. We keep them polymorph. cite :: IsString a => a a :: Selector wbr :: Selector video :: Selector var :: Selector ul :: Selector u :: Selector track :: Selector tr :: Selector time :: Selector thead :: Selector th :: Selector tfoot :: Selector textarea :: Selector td :: Selector tbody :: Selector table :: Selector sup :: Selector summary :: Selector sub :: Selector strong :: Selector source :: Selector small :: Selector select :: Selector section :: Selector script :: Selector samp :: Selector s :: Selector ruby :: Selector rt :: Selector rp :: Selector q :: Selector progress :: Selector pre :: Selector param :: Selector p :: Selector output :: Selector option :: Selector optgroup :: Selector ol :: Selector object :: Selector noscript :: Selector nav :: Selector meter :: Selector meta :: Selector menu :: Selector mark :: Selector map :: Selector link :: Selector li :: Selector legend :: Selector keygen :: Selector kbd :: Selector ins :: Selector input :: Selector img :: Selector iframe :: Selector i :: Selector html :: Selector hr :: Selector hgroup :: Selector header :: Selector head :: Selector h6 :: Selector h5 :: Selector h4 :: Selector h3 :: Selector h2 :: Selector h1 :: Selector footer :: Selector figure :: Selector figcaption :: Selector fieldset :: Selector embed :: Selector em :: Selector dt :: Selector dl :: Selector div :: Selector dialog :: Selector dfn :: Selector details :: Selector del :: Selector dd :: Selector datalist :: Selector colgroup :: Selector col :: Selector code :: Selector caption :: Selector canvas :: Selector button :: Selector br :: Selector body :: Selector blockquote :: Selector bdo :: Selector bdi :: Selector base :: Selector b :: Selector audio :: Selector aside :: Selector article :: Selector area :: Selector address :: Selector module Clay.Attributes accept :: Refinement wrap :: Refinement width :: Refinement value :: Refinement usemap :: Refinement typemustmatch :: Refinement type_ :: Refinement translate :: Refinement target :: Refinement tabindex :: Refinement step :: Refinement start :: Refinement srcset :: Refinement srclang :: Refinement srcdoc :: Refinement src :: Refinement spellcheck :: Refinement sizes :: Refinement size :: Refinement shape :: Refinement selected :: Refinement seamless :: Refinement scoped :: Refinement scope :: Refinement sandbox :: Refinement rowspan :: Refinement rows :: Refinement reversed :: Refinement required :: Refinement rel :: Refinement readonly :: Refinement radiogroup :: Refinement preload :: Refinement poster :: Refinement placeholder :: Refinement ping :: Refinement pattern :: Refinement optimum :: Refinement open :: Refinement novalidate :: Refinement name :: Refinement muted :: Refinement multiple :: Refinement min :: Refinement method :: Refinement mediagroup :: Refinement media :: Refinement maxlength :: Refinement max :: Refinement manifest :: Refinement low :: Refinement loop :: Refinement list :: Refinement lang :: Refinement kind :: Refinement keytype :: Refinement itemtype :: Refinement itemscope :: Refinement itemref :: Refinement itemprop :: Refinement itemid :: Refinement ismap :: Refinement inputmode :: Refinement inert :: Refinement id :: Refinement icon :: Refinement httpEquiv :: Refinement hreflang :: Refinement href :: Refinement high :: Refinement hidden :: Refinement height :: Refinement headers :: Refinement formtarget :: Refinement formnovalidate :: Refinement formmethod :: Refinement formenctype :: Refinement formaction :: Refinement for :: Refinement enctype :: Refinement dropzone :: Refinement draggable :: Refinement download :: Refinement disabled :: Refinement dirname :: Refinement dir :: Refinement defer :: Refinement default_ :: Refinement datetime :: Refinement crossorigin :: Refinement coords :: Refinement controls :: Refinement contextmenu :: Refinement contenteditable :: Refinement content :: Refinement colspan :: Refinement cols :: Refinement class_ :: Refinement checked :: Refinement charset :: Refinement challenge :: Refinement autoplay :: Refinement autofocus :: Refinement autocomplete :: Refinement async :: Refinement alt :: Refinement action :: Refinement accesskey :: Refinement acceptCharset :: Refinement module Clay.Pseudo after :: Refinement before :: Refinement link :: Refinement firstChild :: Refinement focus :: Refinement hover :: Refinement active :: Refinement visited :: Refinement firstOfType :: Refinement disabled :: Refinement enabled :: Refinement checked :: Refinement target :: Refinement empty :: Refinement lastOfType :: Refinement nthChild :: Text -> Refinement nthOfType :: Text -> Refinement nthLastChild :: Text -> Refinement module Clay -- | Render a stylesheet with the default configuration. The pretty printer -- is used by default. render :: Css -> Text -- | Render a stylesheet with a custom configuration and an optional outer -- scope. renderWith :: Config -> Css -> Text -- | Render to CSS using the default configuration (pretty) and -- directly print to the standard output. putCss :: Css -> IO () -- | Configuration to print to a pretty human readable CSS output. pretty :: Config -- | Configuration to print to a compacted unreadable CSS output. compact :: Config -- | The Css context is used to collect style rules which are -- mappings from selectors to style properties. The Css type is a -- computation in the StyleM monad that just collects and doesn't -- return anything. type Css = StyleM () -- | Assign a stylesheet to a selector. When the selector is nested inside -- an outer scope it will be composed with deep. (?) :: Selector -> Css -> Css -- | Assign a stylesheet to a selector. When the selector is nested inside -- an outer scope it will be composed with |>. ( Css -> Css -- | Assign a stylesheet to a filter selector. When the selector is nested -- inside an outer scope it will be composed with the with -- selector. (&) :: Refinement -> Css -> Css -- | Root is used to add style rules to the top scope. root :: Selector -> Css -> Css -- | Pop is used to add style rules to selectors defined in an outer scope. -- The counter specifies how far up the scope stack we want to add the -- rules. pop :: Int -> Css -> Css -- | The colon operator can be used to add style rules to the current -- context for which there is no embedded version available. Both the key -- and the value are plain text values and rendered as is to the output -- CSS. (-:) :: Key Text -> Text -> Css type Selector = Fix SelectorF data Refinement -- | The star selector applies to all elements. Maps to * in CSS. star :: Selector -- | Select elements by name. The preferred syntax is to enable -- OverloadedStrings and actually just use -- "element-name" or use one of the predefined elements from -- Clay.Elements. element :: Text -> Selector -- | The deep selector composer. Maps to sel1 sel2 in CSS. (**) :: Selector -> Selector -> Selector -- | The child selector composer. Maps to sel1 > sel2 in CSS. (|>) :: Selector -> Selector -> Selector -- | The filter selector composer, adds a filter to a selector. Maps to -- something like sel#filter or sel.filter in CSS, -- depending on the filter. (#) :: Selector -> Refinement -> Selector -- | The adjacent selector composer. Maps to sel1 + sel2 in CSS. (|+) :: Selector -> Selector -> Selector -- | Filter elements by id. The preferred syntax is to enable -- OverloadedStrings and use "#id-name". byId :: Text -> Refinement -- | Filter elements by class. The preferred syntax is to enable -- OverloadedStrings and use ".class-name". byClass :: Text -> Refinement -- | Filter elements by pseudo selector or pseudo class. The preferred -- syntax is to enable OverloadedStrings and use -- ":pseudo-selector" or use one of the predefined ones from -- Clay.Pseudo. pseudo :: Text -> Refinement -- | Filter elements by pseudo selector functions. The preferred way is to -- use one of the predefined functions from Clay.Pseudo. func :: Text -> [Text] -> Refinement -- | Filter elements based on the presence of a certain attribute. The -- preferred syntax is to enable OverloadedStrings and use -- "@attr" or use one of the predefined ones from -- Clay.Attributes. attr :: Text -> Refinement -- | Filter elements based on the presence of a certain attribute with the -- specified value. (@=) :: Text -> Text -> Refinement -- | Filter elements based on the presence of a certain attribute that ends -- with the specified value. ($=) :: Text -> Text -> Refinement -- | Filter elements based on the presence of a certain attribute that have -- the specified value contained in a space separated list. (~=) :: Text -> Text -> Refinement -- | Filter elements based on the presence of a certain attribute that have -- the specified value contained in a hyphen separated list. (|=) :: Text -> Text -> Refinement -- | Apply a set of style rules when the media type and feature queries -- apply. query :: MediaType -> [Feature] -> Css -> Css -- | Apply a set of style rules when the media type and feature queries do -- not apply. queryNot :: MediaType -> [Feature] -> Css -> Css -- | Apply a set of style rules only when the media type and feature -- queries apply. queryOnly :: MediaType -> [Feature] -> Css -> Css -- | Define a new font-face. fontFace :: Css -> Css