Current section
Files
Jump to
Current section
Files
src/catppuccin.gleam
//// ⭐️ Soothing pastel library for Gleam
////
import gleam/result
import gleam_community/colour
pub opaque type Flavour {
Flavour(name: String, order: Int, dark: Bool, colors: Colors)
}
type Colors {
Colors(
rosewater: Color,
flamingo: Color,
pink: Color,
mauve: Color,
red: Color,
maroon: Color,
peach: Color,
yellow: Color,
green: Color,
teal: Color,
sky: Color,
sapphire: Color,
blue: Color,
lavender: Color,
text: Color,
subtext1: Color,
subtext0: Color,
overlay2: Color,
overlay1: Color,
overlay0: Color,
surface2: Color,
surface1: Color,
surface0: Color,
base: Color,
mantle: Color,
crust: Color,
)
}
pub opaque type Color {
Color(
name: String,
order: Int,
accent: Bool,
colour: colour.Colour,
)
}
pub fn flavour_name(flavour: Flavour) -> String {
flavour.name
}
pub fn flavour_order(flavour: Flavour) -> Int {
flavour.order
}
pub fn dark(flavour: Flavour) -> Bool {
flavour.dark
}
pub fn color_name(color: Color) -> String {
color.name
}
pub fn color_order(color: Color) -> Int {
color.order
}
pub fn accent(color: Color) -> Bool {
color.accent
}
/// The color represented as a [`Colour`](https://hexdocs.pm/gleam_community_colour/gleam_community/colour.html) type from [gleam_community_colour](https://hexdocs.pm/gleam_community_colour/gleam_community/colour.html).
/// For more information, refer to the [`gleam_community_colour`](https://hexdocs.pm/gleam_community_colour/gleam_community/colour.html#Colour).
///
pub fn to_colour(color: Color) -> colour.Colour {
color.colour
}
pub fn rosewater(flavour: Flavour) -> Color {
flavour.colors.rosewater
}
pub fn flamingo(flavour: Flavour) -> Color {
flavour.colors.flamingo
}
pub fn pink(flavour: Flavour) -> Color {
flavour.colors.pink
}
pub fn mauve(flavour: Flavour) -> Color {
flavour.colors.mauve
}
pub fn red(flavour: Flavour) -> Color {
flavour.colors.red
}
pub fn maroon(flavour: Flavour) -> Color {
flavour.colors.maroon
}
pub fn peach(flavour: Flavour) -> Color {
flavour.colors.peach
}
pub fn yellow(flavour: Flavour) -> Color {
flavour.colors.yellow
}
pub fn green(flavour: Flavour) -> Color {
flavour.colors.green
}
pub fn teal(flavour: Flavour) -> Color {
flavour.colors.teal
}
pub fn sky(flavour: Flavour) -> Color {
flavour.colors.sky
}
pub fn sapphire(flavour: Flavour) -> Color {
flavour.colors.sapphire
}
pub fn blue(flavour: Flavour) -> Color {
flavour.colors.blue
}
pub fn lavender(flavour: Flavour) -> Color {
flavour.colors.lavender
}
pub fn text(flavour: Flavour) -> Color {
flavour.colors.text
}
pub fn subtext1(flavour: Flavour) -> Color {
flavour.colors.subtext1
}
pub fn subtext0(flavour: Flavour) -> Color {
flavour.colors.subtext0
}
pub fn overlay2(flavour: Flavour) -> Color {
flavour.colors.overlay2
}
pub fn overlay1(flavour: Flavour) -> Color {
flavour.colors.overlay1
}
pub fn overlay0(flavour: Flavour) -> Color {
flavour.colors.overlay0
}
pub fn surface2(flavour: Flavour) -> Color {
flavour.colors.surface2
}
pub fn surface1(flavour: Flavour) -> Color {
flavour.colors.surface1
}
pub fn surface0(flavour: Flavour) -> Color {
flavour.colors.surface0
}
pub fn base(flavour: Flavour) -> Color {
flavour.colors.base
}
pub fn mantle(flavour: Flavour) -> Color {
flavour.colors.mantle
}
pub fn crust(flavour: Flavour) -> Color {
flavour.colors.crust
}
pub fn latte() -> Flavour {
Flavour(
name: "Latte",
order: 0,
dark: False,
colors: Colors(
rosewater: Color(
name: "Rosewater",
order: 0,
accent: True,
colour: colour.from_rgb255(r: 220, g: 138, b: 120)
|> result.unwrap(colour.black),
),
flamingo: Color(
name: "Flamingo",
order: 1,
accent: True,
colour: colour.from_rgb255(r: 221, g: 120, b: 120)
|> result.unwrap(colour.black),
),
pink: Color(
name: "Pink",
order: 2,
accent: True,
colour: colour.from_rgb255(r: 234, g: 118, b: 203)
|> result.unwrap(colour.black),
),
mauve: Color(
name: "Mauve",
order: 3,
accent: True,
colour: colour.from_rgb255(r: 136, g: 57, b: 239)
|> result.unwrap(colour.black),
),
red: Color(
name: "Red",
order: 4,
accent: True,
colour: colour.from_rgb255(r: 210, g: 15, b: 57)
|> result.unwrap(colour.black),
),
maroon: Color(
name: "Maroon",
order: 5,
accent: True,
colour: colour.from_rgb255(r: 230, g: 69, b: 83)
|> result.unwrap(colour.black),
),
peach: Color(
name: "Peach",
order: 6,
accent: True,
colour: colour.from_rgb255(r: 254, g: 100, b: 11)
|> result.unwrap(colour.black),
),
yellow: Color(
name: "Yellow",
order: 7,
accent: True,
colour: colour.from_rgb255(r: 223, g: 142, b: 29)
|> result.unwrap(colour.black),
),
green: Color(
name: "Green",
order: 8,
accent: True,
colour: colour.from_rgb255(r: 64, g: 160, b: 43)
|> result.unwrap(colour.black),
),
teal: Color(
name: "Teal",
order: 9,
accent: True,
colour: colour.from_rgb255(r: 23, g: 146, b: 153)
|> result.unwrap(colour.black),
),
sky: Color(
name: "Sky",
order: 10,
accent: True,
colour: colour.from_rgb255(r: 4, g: 165, b: 229)
|> result.unwrap(colour.black),
),
sapphire: Color(
name: "Sapphire",
order: 11,
accent: True,
colour: colour.from_rgb255(r: 32, g: 159, b: 181)
|> result.unwrap(colour.black),
),
blue: Color(
name: "Blue",
order: 12,
accent: True,
colour: colour.from_rgb255(r: 30, g: 102, b: 245)
|> result.unwrap(colour.black),
),
lavender: Color(
name: "Lavender",
order: 13,
accent: True,
colour: colour.from_rgb255(r: 114, g: 135, b: 253)
|> result.unwrap(colour.black),
),
text: Color(
name: "Text",
order: 14,
accent: False,
colour: colour.from_rgb255(r: 76, g: 79, b: 105)
|> result.unwrap(colour.black),
),
subtext1: Color(
name: "Subtext 1",
order: 15,
accent: False,
colour: colour.from_rgb255(r: 92, g: 95, b: 119)
|> result.unwrap(colour.black),
),
subtext0: Color(
name: "Subtext 0",
order: 16,
accent: False,
colour: colour.from_rgb255(r: 108, g: 111, b: 133)
|> result.unwrap(colour.black),
),
overlay2: Color(
name: "Overlay 2",
order: 17,
accent: False,
colour: colour.from_rgb255(r: 124, g: 127, b: 147)
|> result.unwrap(colour.black),
),
overlay1: Color(
name: "Overlay 1",
order: 18,
accent: False,
colour: colour.from_rgb255(r: 140, g: 143, b: 161)
|> result.unwrap(colour.black),
),
overlay0: Color(
name: "Overlay 0",
order: 19,
accent: False,
colour: colour.from_rgb255(r: 156, g: 160, b: 176)
|> result.unwrap(colour.black),
),
surface2: Color(
name: "Surface 2",
order: 20,
accent: False,
colour: colour.from_rgb255(r: 172, g: 176, b: 190)
|> result.unwrap(colour.black),
),
surface1: Color(
name: "Surface 1",
order: 21,
accent: False,
colour: colour.from_rgb255(r: 188, g: 192, b: 204)
|> result.unwrap(colour.black),
),
surface0: Color(
name: "Surface 0",
order: 22,
accent: False,
colour: colour.from_rgb255(r: 204, g: 208, b: 218)
|> result.unwrap(colour.black),
),
base: Color(
name: "Base",
order: 23,
accent: False,
colour: colour.from_rgb255(r: 239, g: 241, b: 245)
|> result.unwrap(colour.black),
),
mantle: Color(
name: "Mantle",
order: 24,
accent: False,
colour: colour.from_rgb255(r: 230, g: 233, b: 239)
|> result.unwrap(colour.black),
),
crust: Color(
name: "Crust",
order: 25,
accent: False,
colour: colour.from_rgb255(r: 220, g: 224, b: 232)
|> result.unwrap(colour.black),
),
),
)
}
pub fn frappe() -> Flavour {
Flavour(
name: "Frappé",
order: 1,
dark: True,
colors: Colors(
rosewater: Color(
name: "Rosewater",
order: 0,
accent: True,
colour: colour.from_rgb255(r: 242, g: 213, b: 207)
|> result.unwrap(colour.black),
),
flamingo: Color(
name: "Flamingo",
order: 1,
accent: True,
colour: colour.from_rgb255(r: 238, g: 190, b: 190)
|> result.unwrap(colour.black),
),
pink: Color(
name: "Pink",
order: 2,
accent: True,
colour: colour.from_rgb255(r: 244, g: 184, b: 228)
|> result.unwrap(colour.black),
),
mauve: Color(
name: "Mauve",
order: 3,
accent: True,
colour: colour.from_rgb255(r: 202, g: 158, b: 230)
|> result.unwrap(colour.black),
),
red: Color(
name: "Red",
order: 4,
accent: True,
colour: colour.from_rgb255(r: 231, g: 130, b: 132)
|> result.unwrap(colour.black),
),
maroon: Color(
name: "Maroon",
order: 5,
accent: True,
colour: colour.from_rgb255(r: 234, g: 153, b: 156)
|> result.unwrap(colour.black),
),
peach: Color(
name: "Peach",
order: 6,
accent: True,
colour: colour.from_rgb255(r: 239, g: 159, b: 118)
|> result.unwrap(colour.black),
),
yellow: Color(
name: "Yellow",
order: 7,
accent: True,
colour: colour.from_rgb255(r: 229, g: 200, b: 144)
|> result.unwrap(colour.black),
),
green: Color(
name: "Green",
order: 8,
accent: True,
colour: colour.from_rgb255(r: 166, g: 209, b: 137)
|> result.unwrap(colour.black),
),
teal: Color(
name: "Teal",
order: 9,
accent: True,
colour: colour.from_rgb255(r: 129, g: 200, b: 190)
|> result.unwrap(colour.black),
),
sky: Color(
name: "Sky",
order: 10,
accent: True,
colour: colour.from_rgb255(r: 153, g: 209, b: 219)
|> result.unwrap(colour.black),
),
sapphire: Color(
name: "Sapphire",
order: 11,
accent: True,
colour: colour.from_rgb255(r: 133, g: 193, b: 220)
|> result.unwrap(colour.black),
),
blue: Color(
name: "Blue",
order: 12,
accent: True,
colour: colour.from_rgb255(r: 140, g: 170, b: 238)
|> result.unwrap(colour.black),
),
lavender: Color(
name: "Lavender",
order: 13,
accent: True,
colour: colour.from_rgb255(r: 186, g: 187, b: 241)
|> result.unwrap(colour.black),
),
text: Color(
name: "Text",
order: 14,
accent: False,
colour: colour.from_rgb255(r: 198, g: 208, b: 245)
|> result.unwrap(colour.black),
),
subtext1: Color(
name: "Subtext 1",
order: 15,
accent: False,
colour: colour.from_rgb255(r: 181, g: 191, b: 226)
|> result.unwrap(colour.black),
),
subtext0: Color(
name: "Subtext 0",
order: 16,
accent: False,
colour: colour.from_rgb255(r: 165, g: 173, b: 206)
|> result.unwrap(colour.black),
),
overlay2: Color(
name: "Overlay 2",
order: 17,
accent: False,
colour: colour.from_rgb255(r: 148, g: 156, b: 187)
|> result.unwrap(colour.black),
),
overlay1: Color(
name: "Overlay 1",
order: 18,
accent: False,
colour: colour.from_rgb255(r: 131, g: 139, b: 167)
|> result.unwrap(colour.black),
),
overlay0: Color(
name: "Overlay 0",
order: 19,
accent: False,
colour: colour.from_rgb255(r: 115, g: 121, b: 148)
|> result.unwrap(colour.black),
),
surface2: Color(
name: "Surface 2",
order: 20,
accent: False,
colour: colour.from_rgb255(r: 98, g: 104, b: 128)
|> result.unwrap(colour.black),
),
surface1: Color(
name: "Surface 1",
order: 21,
accent: False,
colour: colour.from_rgb255(r: 81, g: 87, b: 109)
|> result.unwrap(colour.black),
),
surface0: Color(
name: "Surface 0",
order: 22,
accent: False,
colour: colour.from_rgb255(r: 65, g: 69, b: 89)
|> result.unwrap(colour.black),
),
base: Color(
name: "Base",
order: 23,
accent: False,
colour: colour.from_rgb255(r: 48, g: 52, b: 70)
|> result.unwrap(colour.black),
),
mantle: Color(
name: "Mantle",
order: 24,
accent: False,
colour: colour.from_rgb255(r: 41, g: 44, b: 60)
|> result.unwrap(colour.black),
),
crust: Color(
name: "Crust",
order: 25,
accent: False,
colour: colour.from_rgb255(r: 35, g: 38, b: 52)
|> result.unwrap(colour.black),
),
),
)
}
pub fn macchiato() -> Flavour {
Flavour(
name: "Macchiato",
order: 2,
dark: True,
colors: Colors(
rosewater: Color(
name: "Rosewater",
order: 0,
accent: True,
colour: colour.from_rgb255(r: 244, g: 219, b: 214)
|> result.unwrap(colour.black),
),
flamingo: Color(
name: "Flamingo",
order: 1,
accent: True,
colour: colour.from_rgb255(r: 240, g: 198, b: 198)
|> result.unwrap(colour.black),
),
pink: Color(
name: "Pink",
order: 2,
accent: True,
colour: colour.from_rgb255(r: 245, g: 189, b: 230)
|> result.unwrap(colour.black),
),
mauve: Color(
name: "Mauve",
order: 3,
accent: True,
colour: colour.from_rgb255(r: 198, g: 160, b: 246)
|> result.unwrap(colour.black),
),
red: Color(
name: "Red",
order: 4,
accent: True,
colour: colour.from_rgb255(r: 237, g: 135, b: 150)
|> result.unwrap(colour.black),
),
maroon: Color(
name: "Maroon",
order: 5,
accent: True,
colour: colour.from_rgb255(r: 238, g: 153, b: 160)
|> result.unwrap(colour.black),
),
peach: Color(
name: "Peach",
order: 6,
accent: True,
colour: colour.from_rgb255(r: 245, g: 169, b: 127)
|> result.unwrap(colour.black),
),
yellow: Color(
name: "Yellow",
order: 7,
accent: True,
colour: colour.from_rgb255(r: 238, g: 212, b: 159)
|> result.unwrap(colour.black),
),
green: Color(
name: "Green",
order: 8,
accent: True,
colour: colour.from_rgb255(r: 166, g: 218, b: 149)
|> result.unwrap(colour.black),
),
teal: Color(
name: "Teal",
order: 9,
accent: True,
colour: colour.from_rgb255(r: 139, g: 213, b: 202)
|> result.unwrap(colour.black),
),
sky: Color(
name: "Sky",
order: 10,
accent: True,
colour: colour.from_rgb255(r: 145, g: 215, b: 227)
|> result.unwrap(colour.black),
),
sapphire: Color(
name: "Sapphire",
order: 11,
accent: True,
colour: colour.from_rgb255(r: 125, g: 196, b: 228)
|> result.unwrap(colour.black),
),
blue: Color(
name: "Blue",
order: 12,
accent: True,
colour: colour.from_rgb255(r: 138, g: 173, b: 244)
|> result.unwrap(colour.black),
),
lavender: Color(
name: "Lavender",
order: 13,
accent: True,
colour: colour.from_rgb255(r: 183, g: 189, b: 248)
|> result.unwrap(colour.black),
),
text: Color(
name: "Text",
order: 14,
accent: False,
colour: colour.from_rgb255(r: 202, g: 211, b: 245)
|> result.unwrap(colour.black),
),
subtext1: Color(
name: "Subtext 1",
order: 15,
accent: False,
colour: colour.from_rgb255(r: 184, g: 192, b: 224)
|> result.unwrap(colour.black),
),
subtext0: Color(
name: "Subtext 0",
order: 16,
accent: False,
colour: colour.from_rgb255(r: 165, g: 173, b: 203)
|> result.unwrap(colour.black),
),
overlay2: Color(
name: "Overlay 2",
order: 17,
accent: False,
colour: colour.from_rgb255(r: 147, g: 154, b: 183)
|> result.unwrap(colour.black),
),
overlay1: Color(
name: "Overlay 1",
order: 18,
accent: False,
colour: colour.from_rgb255(r: 128, g: 135, b: 162)
|> result.unwrap(colour.black),
),
overlay0: Color(
name: "Overlay 0",
order: 19,
accent: False,
colour: colour.from_rgb255(r: 110, g: 115, b: 141)
|> result.unwrap(colour.black),
),
surface2: Color(
name: "Surface 2",
order: 20,
accent: False,
colour: colour.from_rgb255(r: 91, g: 96, b: 120)
|> result.unwrap(colour.black),
),
surface1: Color(
name: "Surface 1",
order: 21,
accent: False,
colour: colour.from_rgb255(r: 73, g: 77, b: 100)
|> result.unwrap(colour.black),
),
surface0: Color(
name: "Surface 0",
order: 22,
accent: False,
colour: colour.from_rgb255(r: 54, g: 58, b: 79)
|> result.unwrap(colour.black),
),
base: Color(
name: "Base",
order: 23,
accent: False,
colour: colour.from_rgb255(r: 36, g: 39, b: 58)
|> result.unwrap(colour.black),
),
mantle: Color(
name: "Mantle",
order: 24,
accent: False,
colour: colour.from_rgb255(r: 30, g: 32, b: 48)
|> result.unwrap(colour.black),
),
crust: Color(
name: "Crust",
order: 25,
accent: False,
colour: colour.from_rgb255(r: 24, g: 25, b: 38)
|> result.unwrap(colour.black),
),
),
)
}
pub fn mocha() -> Flavour {
Flavour(
name: "Mocha",
order: 3,
dark: True,
colors: Colors(
rosewater: Color(
name: "Rosewater",
order: 0,
accent: True,
colour: colour.from_rgb255(r: 245, g: 224, b: 220)
|> result.unwrap(colour.black),
),
flamingo: Color(
name: "Flamingo",
order: 1,
accent: True,
colour: colour.from_rgb255(r: 242, g: 205, b: 205)
|> result.unwrap(colour.black),
),
pink: Color(
name: "Pink",
order: 2,
accent: True,
colour: colour.from_rgb255(r: 245, g: 194, b: 231)
|> result.unwrap(colour.black),
),
mauve: Color(
name: "Mauve",
order: 3,
accent: True,
colour: colour.from_rgb255(r: 203, g: 166, b: 247)
|> result.unwrap(colour.black),
),
red: Color(
name: "Red",
order: 4,
accent: True,
colour: colour.from_rgb255(r: 243, g: 139, b: 168)
|> result.unwrap(colour.black),
),
maroon: Color(
name: "Maroon",
order: 5,
accent: True,
colour: colour.from_rgb255(r: 235, g: 160, b: 172)
|> result.unwrap(colour.black),
),
peach: Color(
name: "Peach",
order: 6,
accent: True,
colour: colour.from_rgb255(r: 250, g: 179, b: 135)
|> result.unwrap(colour.black),
),
yellow: Color(
name: "Yellow",
order: 7,
accent: True,
colour: colour.from_rgb255(r: 249, g: 226, b: 175)
|> result.unwrap(colour.black),
),
green: Color(
name: "Green",
order: 8,
accent: True,
colour: colour.from_rgb255(r: 166, g: 227, b: 161)
|> result.unwrap(colour.black),
),
teal: Color(
name: "Teal",
order: 9,
accent: True,
colour: colour.from_rgb255(r: 148, g: 226, b: 213)
|> result.unwrap(colour.black),
),
sky: Color(
name: "Sky",
order: 10,
accent: True,
colour: colour.from_rgb255(r: 137, g: 220, b: 235)
|> result.unwrap(colour.black),
),
sapphire: Color(
name: "Sapphire",
order: 11,
accent: True,
colour: colour.from_rgb255(r: 116, g: 199, b: 236)
|> result.unwrap(colour.black),
),
blue: Color(
name: "Blue",
order: 12,
accent: True,
colour: colour.from_rgb255(r: 137, g: 180, b: 250)
|> result.unwrap(colour.black),
),
lavender: Color(
name: "Lavender",
order: 13,
accent: True,
colour: colour.from_rgb255(r: 180, g: 190, b: 254)
|> result.unwrap(colour.black),
),
text: Color(
name: "Text",
order: 14,
accent: False,
colour: colour.from_rgb255(r: 205, g: 214, b: 244)
|> result.unwrap(colour.black),
),
subtext1: Color(
name: "Subtext 1",
order: 15,
accent: False,
colour: colour.from_rgb255(r: 186, g: 194, b: 222)
|> result.unwrap(colour.black),
),
subtext0: Color(
name: "Subtext 0",
order: 16,
accent: False,
colour: colour.from_rgb255(r: 166, g: 173, b: 200)
|> result.unwrap(colour.black),
),
overlay2: Color(
name: "Overlay 2",
order: 17,
accent: False,
colour: colour.from_rgb255(r: 147, g: 153, b: 178)
|> result.unwrap(colour.black),
),
overlay1: Color(
name: "Overlay 1",
order: 18,
accent: False,
colour: colour.from_rgb255(r: 127, g: 132, b: 156)
|> result.unwrap(colour.black),
),
overlay0: Color(
name: "Overlay 0",
order: 19,
accent: False,
colour: colour.from_rgb255(r: 108, g: 112, b: 134)
|> result.unwrap(colour.black),
),
surface2: Color(
name: "Surface 2",
order: 20,
accent: False,
colour: colour.from_rgb255(r: 88, g: 91, b: 112)
|> result.unwrap(colour.black),
),
surface1: Color(
name: "Surface 1",
order: 21,
accent: False,
colour: colour.from_rgb255(r: 69, g: 71, b: 90)
|> result.unwrap(colour.black),
),
surface0: Color(
name: "Surface 0",
order: 22,
accent: False,
colour: colour.from_rgb255(r: 49, g: 50, b: 68)
|> result.unwrap(colour.black),
),
base: Color(
name: "Base",
order: 23,
accent: False,
colour: colour.from_rgb255(r: 30, g: 30, b: 46)
|> result.unwrap(colour.black),
),
mantle: Color(
name: "Mantle",
order: 24,
accent: False,
colour: colour.from_rgb255(r: 24, g: 24, b: 37)
|> result.unwrap(colour.black),
),
crust: Color(
name: "Crust",
order: 25,
accent: False,
colour: colour.from_rgb255(r: 17, g: 17, b: 27)
|> result.unwrap(colour.black),
),
),
)
}