{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} {-# OPTIONS_GHC -Wno-term-variable-capture #-} module Dashi.Style.Root where import Clay hiding (Color, FontSize, fullWidth, var) import Dashi.Style.Background (BackgroundColour (BackgroundColour)) import Dashi.Style.Border (BorderColour) import Dashi.Style.Colour () import Dashi.Style.Text (InverseTextColour, TextColour (TextColour)) import Dashi.Style.Tokens import Dashi.Style.Uchu (Uchu) import Dashi.Style.Util import Data.Foldable (for_) import Data.Text (Text) import Prelude hiding (div, not, rem, (**)) varDecl' :: Key Text -> Value -> Css varDecl' :: Key Text -> Value -> Css varDecl' Key Text n Value v = Key Text -> Key Text forall s. (IsString s, Semigroup s) => s -> s varName Key Text n Key Text -> Value -> Css ~: Value v varDecl :: (Val v) => Key Text -> v -> Css varDecl :: forall v. Val v => Key Text -> v -> Css varDecl Key Text n = Key Text -> Value -> Css varDecl' Key Text n (Value -> Css) -> (v -> Value) -> v -> Css forall b c a. (b -> c) -> (a -> b) -> a -> c . v -> Value forall a. Val a => a -> Value value tokenDecl :: forall t. (ValueToken t, Val (ValueType t)) => Css tokenDecl :: forall t. (ValueToken t, Val (ValueType t)) => Css tokenDecl = forall (t :: * -> *) (f :: * -> *) a b. (Foldable t, Applicative f) => t a -> (a -> f b) -> f () for_ @[] (forall t l. (Token t, IsList l, Item l ~ t) => l allTokens @t) \t t -> Key Text -> ValueType t -> Css forall v. Val v => Key Text -> v -> Css varDecl (t -> Key Text forall s. (IsString s, Semigroup s) => t -> s forall t s. (Token t, IsString s, Semigroup s) => t -> s tokenName t t) (t -> ValueType t forall t. ValueToken t => t -> ValueType t tokenValue t t) style :: Css style :: Css style = do Selector ":root" Selector -> Css -> Css ? do forall v. Val v => Key Text -> v -> Css varDecl @[Value] Key Text "font-family-emoji" [ Value "'Apple Color Emoji'" , Value "'Segoe UI Emoji'" , Value "'Segoe UI Symbol'" , Value "'Noto Color Emoji'" ] forall v. Val v => Key Text -> v -> Css varDecl @[Value] Key Text "font-family-sans-serif" [ Value "system-ui" , Value "-apple-system" , Value "BlinkMacSystemFont" , Value "'Segoe UI'" , Value "Roboto" , Value "Oxygen" , Value "Ubuntu" , Value "'Fira Sans'" , Value "'Droid Sans'" , Value "'Helvetica Neue'" , Value "sans-serif" , Text -> [Value] -> Value forall v. (Val v, Other v) => Text -> [v] -> v var Text "font-family-emoji" [] ] forall v. Val v => Key Text -> v -> Css varDecl @[Value] Key Text "font-family-monospace" [ Value "ui-monospace" , Value "SFMono-Regular" , Value "'SF Mono'" , Value "'Segou UI Mono'" , Value "'Liberation Mono'" , Value "'Ubuntu Mono'" , Value "Menlo" , Value "Consolas" , Value "monospace" , Text -> [Value] -> Value forall v. (Val v, Other v) => Text -> [v] -> v var Text "font-family-emoji" [] ] forall v. Val v => Key Text -> v -> Css varDecl @Value Key Text "font-body" (Value -> Css) -> Value -> Css forall a b. (a -> b) -> a -> b $ Value "normal 400 14px/1.5 " Value -> Value -> Value forall a. Semigroup a => a -> a -> a <> Text -> [Value] -> Value forall v. (Val v, Other v) => Text -> [v] -> v var Text "font-family-sans-serif" [] forall t. (ValueToken t, Val (ValueType t)) => Css tokenDecl @Space forall t. (ValueToken t, Val (ValueType t)) => Css tokenDecl @Radius forall (t :: * -> *) (f :: * -> *) a b. (Foldable t, Applicative f) => t a -> (a -> f b) -> f () for_ @[] (forall t l. (Token t, IsList l, Item l ~ t) => l allTokens @Uchu) \Uchu t -> Uchu -> Key Text forall s. (IsString s, Semigroup s) => Uchu -> s forall t s. (Token t, IsString s, Semigroup s) => t -> s tokenName Uchu t Key Text -> Value -> Css ~: Color OKLCH Micro -> Value forall a. Val a => a -> Value value (Uchu -> ValueType Uchu forall t. ValueToken t => t -> ValueType t tokenValue Uchu t) forall t. (ValueToken t, Val (ValueType t)) => Css tokenDecl @TextColour forall t. (ValueToken t, Val (ValueType t)) => Css tokenDecl @InverseTextColour forall t. (ValueToken t, Val (ValueType t)) => Css tokenDecl @BackgroundColour forall t. (ValueToken t, Val (ValueType t)) => Css tokenDecl @BorderColour forall t. (ValueToken t, Val (ValueType t)) => Css tokenDecl @FontSize forall t. (ValueToken t, Val (ValueType t)) => Css tokenDecl @BorderWidth Selector star Selector -> Css -> Css ? do Size (ZonkAny 3) -> Css forall a. Size a -> Css marginAll Size (ZonkAny 3) forall a. Size a nil Size (ZonkAny 2) -> Css forall a. Size a -> Css paddingAll Size (ZonkAny 2) forall a. Size a nil [Text] -> [GenericFontFamily] -> Css fontFamily [] [GenericFontFamily forall a. Inherit a => a inherit] Size (ZonkAny 0) -> Css forall a. Size a -> Css Clay.fontSize Size (ZonkAny 0) forall a. Inherit a => a inherit FontStyle -> Css fontStyle FontStyle forall a. Inherit a => a inherit FontWeight -> Css fontWeight FontWeight forall a. Inherit a => a inherit Color -> Css color Color forall a. Inherit a => a inherit TextDecoration -> Css textDecoration TextDecoration forall a. Inherit a => a inherit BoxType -> Css boxSizing BoxType borderBox Size (ZonkAny 1) -> Css forall a. Size a -> Css lineHeight Size (ZonkAny 1) forall a. Inherit a => a inherit Key Text "border" Key Text -> Value -> Css ~: Value forall a. None a => a none Key Text "background" Key Text -> Value -> Css ~: Value forall a. None a => a none Key Text "appearance" Key Text -> Value -> Css ~: Value forall a. None a => a none Key Text "-webkit-appearance" Key Text -> Value -> Css ~: Value forall a. None a => a none Key Text "-moz-appearance" Key Text -> Value -> Css ~: Value forall a. None a => a none Bool -> Refinement ariaBusy Bool True Refinement -> Css -> Css & do CursorValue Value -> Css forall a. Cursor a => a -> Css cursor CursorValue Value cursorProgress let anyDisabledElement :: Selector anyDisabledElement = Selector self Selector -> Refinement -> Selector # Refinement disabled (Selector self Selector -> Refinement -> Selector # Refinement disabled Selector -> Selector -> Selector forall a. Semigroup a => a -> a -> a <> Selector forall a. IsString a => a label Selector -> Refinement -> Selector # Selector -> Refinement has (Selector self Selector -> Selector -> Selector |> Selector anyDisabledElement)) Selector -> Css -> Css ? do Css -> Css important (Css -> Css) -> Css -> Css forall a b. (a -> b) -> a -> b $ CursorValue Value -> Css forall a. Cursor a => a -> Css cursor CursorValue Value notAllowed Number -> Css opacity Number 0.5 Key Text "filter" Key Text -> Text -> Css -: Text "grayscale(100%)" Selector html Selector -> Css -> Css ? do Overflow -> Css overflowX Overflow forall a. Hidden a => a hidden Overflow -> Css overflowY Overflow forall a. Auto a => a auto Selector body Selector -> Css -> Css ? do Value -> Css forall a. Font a => a -> Css font (Value -> Css) -> Value -> Css forall a b. (a -> b) -> a -> b $ forall v. (Val v, Other v) => Text -> [v] -> v var @Value Text "font-body" [] BackgroundColour -> Css forall t. Token t => t -> Css backgroundColor' (BackgroundColour -> Css) -> BackgroundColour -> Css forall a b. (a -> b) -> a -> b $ Appearance -> BackgroundColour BackgroundColour Appearance Default TextColour -> Css forall t. Token t => t -> Css color' (TextColour -> Css) -> TextColour -> Css forall a b. (a -> b) -> a -> b $ Appearance -> TextColour TextColour Appearance Default Selector -> Refinement has (Selector "#dashi-loading" Selector -> Refinement -> Selector # Refinement onlyChild) Refinement -> Css -> Css & do Size LengthUnit -> Css forall a. Size a -> Css height (Size LengthUnit -> Css) -> Size LengthUnit -> Css forall a b. (a -> b) -> a -> b $ Number -> Size LengthUnit vh Number 100 Display -> Css display Display flex JustifyContentValue -> Css justifyContent JustifyContentValue forall a. Center a => a center AlignItemsValue -> Css alignItems AlignItemsValue forall a. Center a => a center Selector "#dashi-loading" Selector -> Css -> Css ? do Size LengthUnit -> Css forall a. Size a -> Css width (Size LengthUnit -> Css) -> Size LengthUnit -> Css forall a b. (a -> b) -> a -> b $ Number -> Size LengthUnit em Number 2 Size LengthUnit -> Css forall a. Size a -> Css height (Size LengthUnit -> Css) -> Size LengthUnit -> Css forall a b. (a -> b) -> a -> b $ Number -> Size LengthUnit em Number 2 Selector "#dashi-loading" Selector -> Css -> Css ? Refinement -> Refinement forall a. Not a => a -> Refinement not Refinement onlyChild Refinement -> Css -> Css & Display -> Css display Display forall a. None a => a none