Add layout features
parent
8b45c6e07e
commit
7ecddfa67d
|
@ -0,0 +1,87 @@
|
|||
module Layout exposing (containedButton, outlinedButton, textButton)
|
||||
{-| # Layout
|
||||
|
||||
The layout module exposes some boilerplate functions that have produce a
|
||||
beautiful Material design Elm webpage.
|
||||
|
||||
## Buttons
|
||||
|
||||
@docs containedButton, outlinedButton, textButton
|
||||
|
||||
-}
|
||||
|
||||
import Color exposing (Color)
|
||||
import Element exposing (Element)
|
||||
import Widget
|
||||
import Widget.Icon exposing (Icon)
|
||||
import Widget.Material as Material
|
||||
|
||||
{-| A contained button representing the most important action of a group.
|
||||
-}
|
||||
containedButton :
|
||||
{ buttonColor : Color
|
||||
, clickColor : Color
|
||||
, icon : Icon msg
|
||||
, onPress : Maybe msg
|
||||
, text : String
|
||||
}
|
||||
-> Element msg
|
||||
containedButton data =
|
||||
Widget.button
|
||||
( { primary = data.buttonColor, onPrimary = data.clickColor }
|
||||
|> singlePalette
|
||||
|> Material.containedButton
|
||||
)
|
||||
{ text = data.text, icon = data.icon, onPress = data.onPress }
|
||||
|
||||
|
||||
{-| An outlined button representing an important action within a group.
|
||||
-}
|
||||
outlinedButton :
|
||||
{ color : Color
|
||||
, icon : Icon msg
|
||||
, onPress : Maybe msg
|
||||
, text : String
|
||||
}
|
||||
-> Element msg
|
||||
outlinedButton data =
|
||||
Widget.button
|
||||
( { primary = data.color, onPrimary = data.color }
|
||||
|> singlePalette
|
||||
|> Material.outlinedButton
|
||||
)
|
||||
{ text = data.text, icon = data.icon, onPress = data.onPress }
|
||||
|
||||
singlePalette : { primary : Color, onPrimary : Color } -> Material.Palette
|
||||
singlePalette { primary, onPrimary } =
|
||||
{ primary = primary
|
||||
, secondary = primary
|
||||
, background = primary
|
||||
, surface = primary
|
||||
, error = primary
|
||||
, on =
|
||||
{ primary = onPrimary
|
||||
, secondary = onPrimary
|
||||
, background = onPrimary
|
||||
, surface = onPrimary
|
||||
, error = onPrimary
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
{-| A text button representing an important action within a group.
|
||||
-}
|
||||
textButton :
|
||||
{ icon : Icon msg
|
||||
, onPress : Maybe msg
|
||||
, text : String
|
||||
, color : Color
|
||||
}
|
||||
-> Element msg
|
||||
textButton data =
|
||||
Widget.button
|
||||
( { primary = data.color, onPrimary = data.color }
|
||||
|> singlePalette
|
||||
|> Material.textButton
|
||||
)
|
||||
{ text = data.text, icon = data.icon, onPress = data.onPress }
|
|
@ -0,0 +1,525 @@
|
|||
module Theme exposing (..)
|
||||
{-| # Theme
|
||||
|
||||
The Theme helps pick colors from different color schemes.
|
||||
|
||||
-}
|
||||
|
||||
import Catppuccin.Frappe as CF
|
||||
import Catppuccin.Latte as CL
|
||||
import Catppuccin.Macchiato as CA
|
||||
import Catppuccin.Mocha as CO
|
||||
import Color
|
||||
import Element
|
||||
import Element.Background
|
||||
|
||||
{-| Catppuccin flavor used for display.
|
||||
-}
|
||||
type Flavor
|
||||
= Frappe
|
||||
| Latte
|
||||
| Macchiato
|
||||
| Mocha
|
||||
|
||||
background : (Flavor -> Color.Color) -> Flavor -> Element.Attribute msg
|
||||
background toColor =
|
||||
toColor >> toElmUiColor >> Element.Background.color
|
||||
|
||||
toElmUiColor : Color.Color -> Element.Color
|
||||
toElmUiColor =
|
||||
Color.toRgba >> Element.fromRgb
|
||||
|
||||
|
||||
rosewater : Flavor -> Color.Color
|
||||
rosewater flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.rosewater
|
||||
|
||||
Latte ->
|
||||
CL.rosewater
|
||||
|
||||
Macchiato ->
|
||||
CA.rosewater
|
||||
|
||||
Mocha ->
|
||||
CO.rosewater
|
||||
|
||||
rosewaterUI : Flavor -> Element.Color
|
||||
rosewaterUI =
|
||||
rosewater >> toElmUiColor
|
||||
|
||||
flamingo : Flavor -> Color.Color
|
||||
flamingo flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.flamingo
|
||||
|
||||
Latte ->
|
||||
CL.flamingo
|
||||
|
||||
Macchiato ->
|
||||
CA.flamingo
|
||||
|
||||
Mocha ->
|
||||
CO.flamingo
|
||||
|
||||
flamingoUI : Flavor -> Element.Color
|
||||
flamingoUI =
|
||||
flamingo >> toElmUiColor
|
||||
|
||||
pink : Flavor -> Color.Color
|
||||
pink flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.pink
|
||||
|
||||
Latte ->
|
||||
CL.pink
|
||||
|
||||
Macchiato ->
|
||||
CA.pink
|
||||
|
||||
Mocha ->
|
||||
CO.pink
|
||||
|
||||
pinkUI : Flavor -> Element.Color
|
||||
pinkUI =
|
||||
pink >> toElmUiColor
|
||||
|
||||
mauve : Flavor -> Color.Color
|
||||
mauve flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.mauve
|
||||
|
||||
Latte ->
|
||||
CL.mauve
|
||||
|
||||
Macchiato ->
|
||||
CA.mauve
|
||||
|
||||
Mocha ->
|
||||
CO.mauve
|
||||
|
||||
mauveUI : Flavor -> Element.Color
|
||||
mauveUI =
|
||||
mauve >> toElmUiColor
|
||||
|
||||
red : Flavor -> Color.Color
|
||||
red flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.red
|
||||
|
||||
Latte ->
|
||||
CL.red
|
||||
|
||||
Macchiato ->
|
||||
CA.red
|
||||
|
||||
Mocha ->
|
||||
CO.red
|
||||
|
||||
redUI : Flavor -> Element.Color
|
||||
redUI =
|
||||
red >> toElmUiColor
|
||||
|
||||
maroon : Flavor -> Color.Color
|
||||
maroon flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.maroon
|
||||
|
||||
Latte ->
|
||||
CL.maroon
|
||||
|
||||
Macchiato ->
|
||||
CA.maroon
|
||||
|
||||
Mocha ->
|
||||
CO.maroon
|
||||
|
||||
maroonUI : Flavor -> Element.Color
|
||||
maroonUI =
|
||||
maroon >> toElmUiColor
|
||||
|
||||
peach : Flavor -> Color.Color
|
||||
peach flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.peach
|
||||
|
||||
Latte ->
|
||||
CL.peach
|
||||
|
||||
Macchiato ->
|
||||
CA.peach
|
||||
|
||||
Mocha ->
|
||||
CO.peach
|
||||
|
||||
peachUI : Flavor -> Element.Color
|
||||
peachUI =
|
||||
peach >> toElmUiColor
|
||||
|
||||
yellow : Flavor -> Color.Color
|
||||
yellow flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.yellow
|
||||
|
||||
Latte ->
|
||||
CL.yellow
|
||||
|
||||
Macchiato ->
|
||||
CA.yellow
|
||||
|
||||
Mocha ->
|
||||
CO.yellow
|
||||
|
||||
yellowUI : Flavor -> Element.Color
|
||||
yellowUI =
|
||||
yellow >> toElmUiColor
|
||||
|
||||
green : Flavor -> Color.Color
|
||||
green flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.green
|
||||
|
||||
Latte ->
|
||||
CL.green
|
||||
|
||||
Macchiato ->
|
||||
CA.green
|
||||
|
||||
Mocha ->
|
||||
CO.green
|
||||
|
||||
greenUI : Flavor -> Element.Color
|
||||
greenUI =
|
||||
green >> toElmUiColor
|
||||
|
||||
teal : Flavor -> Color.Color
|
||||
teal flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.teal
|
||||
|
||||
Latte ->
|
||||
CL.teal
|
||||
|
||||
Macchiato ->
|
||||
CA.teal
|
||||
|
||||
Mocha ->
|
||||
CO.teal
|
||||
|
||||
tealUI : Flavor -> Element.Color
|
||||
tealUI =
|
||||
teal >> toElmUiColor
|
||||
|
||||
sky : Flavor -> Color.Color
|
||||
sky flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.sky
|
||||
|
||||
Latte ->
|
||||
CL.sky
|
||||
|
||||
Macchiato ->
|
||||
CA.sky
|
||||
|
||||
Mocha ->
|
||||
CO.sky
|
||||
|
||||
skyUI : Flavor -> Element.Color
|
||||
skyUI =
|
||||
sky >> toElmUiColor
|
||||
|
||||
sapphire : Flavor -> Color.Color
|
||||
sapphire flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.sapphire
|
||||
|
||||
Latte ->
|
||||
CL.sapphire
|
||||
|
||||
Macchiato ->
|
||||
CA.sapphire
|
||||
|
||||
Mocha ->
|
||||
CO.sapphire
|
||||
|
||||
sapphireUI : Flavor -> Element.Color
|
||||
sapphireUI =
|
||||
sapphire >> toElmUiColor
|
||||
|
||||
blue : Flavor -> Color.Color
|
||||
blue flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.blue
|
||||
|
||||
Latte ->
|
||||
CL.blue
|
||||
|
||||
Macchiato ->
|
||||
CA.blue
|
||||
|
||||
Mocha ->
|
||||
CO.blue
|
||||
|
||||
blueUI : Flavor -> Element.Color
|
||||
blueUI =
|
||||
blue >> toElmUiColor
|
||||
|
||||
lavender : Flavor -> Color.Color
|
||||
lavender flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.lavender
|
||||
|
||||
Latte ->
|
||||
CL.lavender
|
||||
|
||||
Macchiato ->
|
||||
CA.lavender
|
||||
|
||||
Mocha ->
|
||||
CO.lavender
|
||||
|
||||
lavenderUI : Flavor -> Element.Color
|
||||
lavenderUI =
|
||||
lavender >> toElmUiColor
|
||||
|
||||
text : Flavor -> Color.Color
|
||||
text flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.text
|
||||
|
||||
Latte ->
|
||||
CL.text
|
||||
|
||||
Macchiato ->
|
||||
CA.text
|
||||
|
||||
Mocha ->
|
||||
CO.text
|
||||
|
||||
textUI : Flavor -> Element.Color
|
||||
textUI =
|
||||
text >> toElmUiColor
|
||||
|
||||
subtext1 : Flavor -> Color.Color
|
||||
subtext1 flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.subtext1
|
||||
|
||||
Latte ->
|
||||
CL.subtext1
|
||||
|
||||
Macchiato ->
|
||||
CA.subtext1
|
||||
|
||||
Mocha ->
|
||||
CO.subtext1
|
||||
|
||||
subtext1UI : Flavor -> Element.Color
|
||||
subtext1UI =
|
||||
subtext1 >> toElmUiColor
|
||||
|
||||
subtext0 : Flavor -> Color.Color
|
||||
subtext0 flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.subtext0
|
||||
|
||||
Latte ->
|
||||
CL.subtext0
|
||||
|
||||
Macchiato ->
|
||||
CA.subtext0
|
||||
|
||||
Mocha ->
|
||||
CO.subtext0
|
||||
|
||||
subtext0UI : Flavor -> Element.Color
|
||||
subtext0UI =
|
||||
subtext0 >> toElmUiColor
|
||||
|
||||
overlay2 : Flavor -> Color.Color
|
||||
overlay2 flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.overlay2
|
||||
|
||||
Latte ->
|
||||
CL.overlay2
|
||||
|
||||
Macchiato ->
|
||||
CA.overlay2
|
||||
|
||||
Mocha ->
|
||||
CO.overlay2
|
||||
|
||||
overlay2UI : Flavor -> Element.Color
|
||||
overlay2UI =
|
||||
overlay2 >> toElmUiColor
|
||||
|
||||
overlay1 : Flavor -> Color.Color
|
||||
overlay1 flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.overlay1
|
||||
|
||||
Latte ->
|
||||
CL.overlay1
|
||||
|
||||
Macchiato ->
|
||||
CA.overlay1
|
||||
|
||||
Mocha ->
|
||||
CO.overlay1
|
||||
|
||||
overlay1UI : Flavor -> Element.Color
|
||||
overlay1UI =
|
||||
overlay1 >> toElmUiColor
|
||||
|
||||
overlay0 : Flavor -> Color.Color
|
||||
overlay0 flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.overlay0
|
||||
|
||||
Latte ->
|
||||
CL.overlay0
|
||||
|
||||
Macchiato ->
|
||||
CA.overlay0
|
||||
|
||||
Mocha ->
|
||||
CO.overlay0
|
||||
|
||||
overlay0UI : Flavor -> Element.Color
|
||||
overlay0UI =
|
||||
overlay0 >> toElmUiColor
|
||||
|
||||
surface2 : Flavor -> Color.Color
|
||||
surface2 flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.surface2
|
||||
|
||||
Latte ->
|
||||
CL.surface2
|
||||
|
||||
Macchiato ->
|
||||
CA.surface2
|
||||
|
||||
Mocha ->
|
||||
CO.surface2
|
||||
|
||||
surface2UI : Flavor -> Element.Color
|
||||
surface2UI =
|
||||
surface2 >> toElmUiColor
|
||||
|
||||
surface1 : Flavor -> Color.Color
|
||||
surface1 flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.surface1
|
||||
|
||||
Latte ->
|
||||
CL.surface1
|
||||
|
||||
Macchiato ->
|
||||
CA.surface1
|
||||
|
||||
Mocha ->
|
||||
CO.surface1
|
||||
|
||||
surface1UI : Flavor -> Element.Color
|
||||
surface1UI =
|
||||
surface1 >> toElmUiColor
|
||||
|
||||
surface0 : Flavor -> Color.Color
|
||||
surface0 flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.surface0
|
||||
|
||||
Latte ->
|
||||
CL.surface0
|
||||
|
||||
Macchiato ->
|
||||
CA.surface0
|
||||
|
||||
Mocha ->
|
||||
CO.surface0
|
||||
|
||||
surface0UI : Flavor -> Element.Color
|
||||
surface0UI =
|
||||
surface0 >> toElmUiColor
|
||||
|
||||
base : Flavor -> Color.Color
|
||||
base flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.base
|
||||
|
||||
Latte ->
|
||||
CL.base
|
||||
|
||||
Macchiato ->
|
||||
CA.base
|
||||
|
||||
Mocha ->
|
||||
CO.base
|
||||
|
||||
baseUI : Flavor -> Element.Color
|
||||
baseUI =
|
||||
base >> toElmUiColor
|
||||
|
||||
mantle : Flavor -> Color.Color
|
||||
mantle flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.mantle
|
||||
|
||||
Latte ->
|
||||
CL.mantle
|
||||
|
||||
Macchiato ->
|
||||
CA.mantle
|
||||
|
||||
Mocha ->
|
||||
CO.mantle
|
||||
|
||||
mantleUI : Flavor -> Element.Color
|
||||
mantleUI =
|
||||
mantle >> toElmUiColor
|
||||
|
||||
crust : Flavor -> Color.Color
|
||||
crust flavor =
|
||||
case flavor of
|
||||
Frappe ->
|
||||
CF.crust
|
||||
|
||||
Latte ->
|
||||
CL.crust
|
||||
|
||||
Macchiato ->
|
||||
CA.crust
|
||||
|
||||
Mocha ->
|
||||
CO.crust
|
||||
|
||||
crustUI : Flavor -> Element.Color
|
||||
crustUI =
|
||||
crust >> toElmUiColor
|
Loading…
Reference in New Issue