Files
flxn-app/src/themes/circus/manifest.ts
T
2026-08-23 17:17:04 -07:00

159 lines
2.7 KiB
TypeScript

import { msg } from "@lingui/core/macro";
import type { ThemeManifest } from "../types";
/* Carnival poster inks. Declared in JS so Mantine regenerates every derived
variant var (-light rgba, -outline, filled hovers) from the retuned shades. */
const circusColors = {
// royal
blue: [
"#eef2fc",
"#d8e1f8",
"#b6c8f0",
"#8fa9e6",
"#6787d8",
"#4267c8",
"#2b4fb4",
"#21409a",
"#19317a",
"#11235c",
],
// carnival red
red: [
"#fdefed",
"#f9d8d4",
"#f2b6af",
"#e88d84",
"#d9655c",
"#c6443c",
"#b12724",
"#931c1d",
"#731316",
"#540c10",
],
// ticket-booth emerald
green: [
"#ecf8ef",
"#d2eeda",
"#a9dfba",
"#7bcb95",
"#4fb573",
"#2f9c57",
"#1d7f41",
"#156634",
"#0f4e27",
"#09381c",
],
// mustard
yellow: [
"#fbf4e2",
"#f5e5b8",
"#edd288",
"#e0ba55",
"#cf9f2a",
"#b58211",
"#97660a",
"#7b5207",
"#5f3f05",
"#452d03",
],
// sideshow plum
grape: [
"#f6effc",
"#e8d8f6",
"#d3b6ee",
"#b98ee2",
"#9d66d2",
"#8547bd",
"#6f2da0",
"#5b2284",
"#461868",
"#33104d",
],
// pumpkin
orange: [
"#fdf1e8",
"#f9dcc6",
"#f3bd97",
"#e99a63",
"#dc7736",
"#cd6016",
"#b84d09",
"#973d06",
"#752f05",
"#542103",
],
// raspberry
pink: [
"#fcedf4",
"#f8d3e4",
"#f1abcb",
"#e67dac",
"#d6528d",
"#c43574",
"#ab1f60",
"#8d154e",
"#6e0e3c",
"#50082b",
],
// fairground olive
lime: [
"#f5f8e4",
"#e7efbe",
"#d3e18d",
"#bccd5c",
"#a2b532",
"#849a15",
"#667c07",
"#536505",
"#404e04",
"#2e3902",
],
// warm parchment neutrals — light-scheme grays
gray: [
"#faf5ea",
"#f1e8d6",
"#e5d8bf",
"#d3c1a2",
"#b8a284",
"#97826a",
"#6f5d4b",
"#554638",
"#3d3128",
"#28201a",
],
// night fair — dark-scheme surfaces/borders
dark: [
"#f2e6da",
"#d8c7bb",
"#b5a096",
"#8a7268",
"#5c4547",
"#47343a",
"#382930",
"#2a1e24",
"#20161b",
"#150e12",
],
} as const;
const manifest: ThemeManifest = {
id: "circus",
label: msg`Big Top`,
colorSchemes: "both",
fontLinks: [
"https://fonts.googleapis.com/css2?family=Alfa+Slab+One&display=swap",
"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&display=swap",
],
chromeColors: {
light: { base: "#f9f1e0", dimmed: "#e9dcbd" },
dark: { base: "#1e151a", dimmed: "#140d11" },
},
mantine: {
// deep poster inks in both schemes keep white filled-text legible
primaryShade: { light: 6, dark: 6 },
colors: circusColors,
},
};
export default manifest;