{-# LANGUAGE OverloadedLabels #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE NoFieldSelectors #-} module WikiMusic.SSR.View.Css where import Data.Text qualified as T import Optics import Relude import Text.Blaze.Html qualified as BlazeHtml import Text.Blaze.Html5.Attributes qualified as A import WikiMusic.SSR.Model.Api newtype Css = Css {Css -> Text className :: Text} deriving ((forall x. Css -> Rep Css x) -> (forall x. Rep Css x -> Css) -> Generic Css forall x. Rep Css x -> Css forall x. Css -> Rep Css x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. Css -> Rep Css x from :: forall x. Css -> Rep Css x $cto :: forall x. Rep Css x -> Css to :: forall x. Rep Css x -> Css Generic, Css -> Css -> Bool (Css -> Css -> Bool) -> (Css -> Css -> Bool) -> Eq Css forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Css -> Css -> Bool == :: Css -> Css -> Bool $c/= :: Css -> Css -> Bool /= :: Css -> Css -> Bool Eq, Int -> Css -> ShowS [Css] -> ShowS Css -> String (Int -> Css -> ShowS) -> (Css -> String) -> ([Css] -> ShowS) -> Show Css forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Css -> ShowS showsPrec :: Int -> Css -> ShowS $cshow :: Css -> String show :: Css -> String $cshowList :: [Css] -> ShowS showList :: [Css] -> ShowS Show) makeFieldLabelsNoPrefix ''Css cssToAttrValue :: [Text] -> BlazeHtml.AttributeValue cssToAttrValue :: [Text] -> AttributeValue cssToAttrValue = String -> AttributeValue forall a. IsString a => String -> a fromString (String -> AttributeValue) -> ([Text] -> String) -> [Text] -> AttributeValue forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> String T.unpack (Text -> String) -> ([Text] -> Text) -> [Text] -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . Set Text -> Text joinClasses (Set Text -> Text) -> ([Text] -> Set Text) -> [Text] -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . [Text] -> Set Text [Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList where joinClasses :: Set Text -> Text joinClasses :: Set Text -> Text joinClasses = Text -> [Text] -> Text T.intercalate Text " " ([Text] -> Text) -> (Set Text -> [Text]) -> Set Text -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . [Text] -> [Text] forall a. Ord a => [a] -> [a] sort ([Text] -> [Text]) -> (Set Text -> [Text]) -> Set Text -> [Text] forall b c a. (b -> c) -> (a -> b) -> a -> c . Set Text -> [Text] forall a. Set a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] toList css' :: [Text] -> BlazeHtml.Attribute css' :: [Text] -> Attribute css' [Text] xs = Set Text -> Attribute css ([Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList [Text] [Item (Set Text)] xs :: Set Text) css :: Set Text -> BlazeHtml.Attribute css :: Set Text -> Attribute css Set Text xs = AttributeValue -> Attribute A.class_ ([Text] -> AttributeValue cssToAttrValue ([Text] -> AttributeValue) -> [Text] -> AttributeValue forall a b. (a -> b) -> a -> b $ Set Text -> [Text] forall a. Set a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] toList Set Text xs) cssSubmitButton :: Set Text cssSubmitButton :: Set Text cssSubmitButton = [Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList [ Text Item (Set Text) "text-white", Text Item (Set Text) "bg-green-700/75", Text Item (Set Text) "hover:bg-green-800", Text Item (Set Text) "focus:outline-none", Text Item (Set Text) "focus:ring-4", Text Item (Set Text) "focus:ring-green-300", Text Item (Set Text) "font-medium", Text Item (Set Text) "rounded-2xl", Text Item (Set Text) "text-sm", Text Item (Set Text) "px-5", Text Item (Set Text) "py-2.5", Text Item (Set Text) "text-center", Text Item (Set Text) "font-mono", Text Item (Set Text) "w-fit" ] cssButton :: ViewVars -> Set Text cssButton :: ViewVars -> Set Text cssButton ViewVars vv = [Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList [ if ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars UiMode UiMode #uiMode Optic A_Lens NoIx ViewVars ViewVars UiMode UiMode -> Optic An_Iso NoIx UiMode UiMode Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx UiMode UiMode Text Text #value Text -> Text -> Bool forall a. Eq a => a -> a -> Bool == Text "dark" then Text Item (Set Text) "text-white" else Text Item (Set Text) "text-black", Text "hover:bg-" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars Palette Palette #palette Optic A_Lens NoIx ViewVars ViewVars Palette Palette -> Optic An_Iso NoIx Palette Palette Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx Palette Palette Text Text #value Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "-500/40", Text Item (Set Text) "focus:outline-none", Text Item (Set Text) "focus:ring-4", Text Item (Set Text) "focus:ring-gray-300", Text Item (Set Text) "font-medium", Text Item (Set Text) "rounded-2xl", Text Item (Set Text) "text-md", Text Item (Set Text) "px-5", Text Item (Set Text) "py-2.5", Text Item (Set Text) "font-mono", Text Item (Set Text) "w-fit", Text Item (Set Text) "border", Text "border-" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars Palette Palette #palette Optic A_Lens NoIx ViewVars ViewVars Palette Palette -> Optic An_Iso NoIx Palette Palette Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx Palette Palette Text Text #value Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "-500/40", Text "bg-" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars Palette Palette #palette Optic A_Lens NoIx ViewVars ViewVars Palette Palette -> Optic An_Iso NoIx Palette Palette Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx Palette Palette Text Text #value Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "-400/40" ] cssSelect :: ViewVars -> Set Text cssSelect :: ViewVars -> Set Text cssSelect ViewVars vv = [Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList [ if ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars UiMode UiMode #uiMode Optic A_Lens NoIx ViewVars ViewVars UiMode UiMode -> Optic An_Iso NoIx UiMode UiMode Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx UiMode UiMode Text Text #value Text -> Text -> Bool forall a. Eq a => a -> a -> Bool == Text "dark" then Text Item (Set Text) "text-white" else Text Item (Set Text) "text-black", Text "bg-" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars Palette Palette #palette Optic A_Lens NoIx ViewVars ViewVars Palette Palette -> Optic An_Iso NoIx Palette Palette Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx Palette Palette Text Text #value Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "-400/40", Text "hover:bg-" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars Palette Palette #palette Optic A_Lens NoIx ViewVars ViewVars Palette Palette -> Optic An_Iso NoIx Palette Palette Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx Palette Palette Text Text #value Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "-500/40", Text Item (Set Text) "focus:outline-none", Text Item (Set Text) "focus:ring-4", Text Item (Set Text) "focus:ring-gray-300", Text Item (Set Text) "font-medium", Text Item (Set Text) "rounded-2xl", Text Item (Set Text) "text-sm", Text Item (Set Text) "px-8", Text Item (Set Text) "cursor-pointer", Text Item (Set Text) "py-2", Text Item (Set Text) "font-mono", Text Item (Set Text) "w-fit", Text Item (Set Text) "h-fit", Text "border-" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars Palette Palette #palette Optic A_Lens NoIx ViewVars ViewVars Palette Palette -> Optic An_Iso NoIx Palette Palette Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx Palette Palette Text Text #value Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "-400/40" ] cssCenteredCardGrid :: Set Text cssCenteredCardGrid :: Set Text cssCenteredCardGrid = [Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList [Text Item (Set Text) "flex", Text Item (Set Text) "flex-row", Text Item (Set Text) "flex-wrap", Text Item (Set Text) "gap-4", Text Item (Set Text) "justify-center", Text Item (Set Text) "align-center"] cssInput :: Set Text cssInput :: Set Text cssInput = [Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList [Text Item (Set Text) "rounded-2xl", Text Item (Set Text) "px-5", Text Item (Set Text) "py-2.5", Text Item (Set Text) "font-mono", Text Item (Set Text) "w-full", Text Item (Set Text) "bg-white/40"] cssTextarea :: Set Text cssTextarea :: Set Text cssTextarea = [Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList [Text Item (Set Text) "rounded-2xl", Text Item (Set Text) "px-5", Text Item (Set Text) "py-2.5", Text Item (Set Text) "w-full", Text Item (Set Text) "h-fit", Text Item (Set Text) "min-h-72", Text Item (Set Text) "bg-white/40"] cssDetails :: ViewVars -> Set Text cssDetails :: ViewVars -> Set Text cssDetails ViewVars vv = [Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList [ Text Item (Set Text) "border-2", Text Item (Set Text) "border", Text Item (Set Text) "border-gray-200", Text Item (Set Text) "p-4", Text Item (Set Text) "[&_svg]:open:-rotate-180]", Text Item (Set Text) "my-4", Text Item (Set Text) "rounded-2xl", if ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars UiMode UiMode #uiMode Optic A_Lens NoIx ViewVars ViewVars UiMode UiMode -> Optic An_Iso NoIx UiMode UiMode Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx UiMode UiMode Text Text #value Text -> Text -> Bool forall a. Eq a => a -> a -> Bool == Text "dark" then Text Item (Set Text) "bg-black/70" else Text Item (Set Text) "bg-white/80", if ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars UiMode UiMode #uiMode Optic A_Lens NoIx ViewVars ViewVars UiMode UiMode -> Optic An_Iso NoIx UiMode UiMode Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx UiMode UiMode Text Text #value Text -> Text -> Bool forall a. Eq a => a -> a -> Bool == Text "dark" then Text Item (Set Text) "text-white" else Text Item (Set Text) "text-black" ] cssSummary :: Set Text cssSummary :: Set Text cssSummary = [Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList [Text Item (Set Text) "text-xl", Text Item (Set Text) "font-bold", Text Item (Set Text) "cursor-pointer"] cssLink :: ViewVars -> Set Text cssLink :: ViewVars -> Set Text cssLink ViewVars vv = [Item (Set Text)] -> Set Text forall l. IsList l => [Item l] -> l fromList [Text "text-" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> ViewVars vv ViewVars -> Optic' A_Lens NoIx ViewVars Text -> Text forall k s (is :: IxList) a. Is k A_Getter => s -> Optic' k is s a -> a ^. Optic A_Lens NoIx ViewVars ViewVars Palette Palette #palette Optic A_Lens NoIx ViewVars ViewVars Palette Palette -> Optic An_Iso NoIx Palette Palette Text Text -> Optic' A_Lens NoIx ViewVars Text forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b % Optic An_Iso NoIx Palette Palette Text Text #value Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "-500", Text Item (Set Text) "font-bold", Text Item (Set Text) "font-mono", Text Item (Set Text) "cursor-pointer"]