@cap3/capitano-theme
Version:
Extensible and flexible theme system
97 lines • 5.34 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const json_type_validation_1 = require("@mojotech/json-type-validation");
const colorFunctionDecoder = json_type_validation_1.oneOf(json_type_validation_1.Decoder.constant("lighten"), json_type_validation_1.Decoder.constant("brighten"), json_type_validation_1.Decoder.constant("darken"), json_type_validation_1.Decoder.constant("tint"), json_type_validation_1.Decoder.constant("shade"), json_type_validation_1.Decoder.constant("desaturate"), json_type_validation_1.Decoder.constant("saturate"));
const colorEffectDecoder = json_type_validation_1.object({
effect: colorFunctionDecoder,
factor: json_type_validation_1.number(),
});
const materialSwatchDecoder = json_type_validation_1.object({
"50": json_type_validation_1.string(),
"100": json_type_validation_1.string(),
"200": json_type_validation_1.string(),
"300": json_type_validation_1.string(),
"400": json_type_validation_1.string(),
"500": json_type_validation_1.string(),
"600": json_type_validation_1.string(),
"700": json_type_validation_1.string(),
"800": json_type_validation_1.string(),
"900": json_type_validation_1.string(),
A100: json_type_validation_1.string(),
A200: json_type_validation_1.string(),
A400: json_type_validation_1.string(),
A700: json_type_validation_1.string(),
});
const monochromeSwatchDecoder = json_type_validation_1.object({
M0: json_type_validation_1.string(),
M10: json_type_validation_1.string(),
M20: json_type_validation_1.string(),
M30: json_type_validation_1.string(),
M40: json_type_validation_1.string(),
M50: json_type_validation_1.string(),
M60: json_type_validation_1.string(),
M70: json_type_validation_1.string(),
M80: json_type_validation_1.string(),
M90: json_type_validation_1.string(),
base: json_type_validation_1.string(),
});
const themeColorDecoder = json_type_validation_1.oneOf(json_type_validation_1.Decoder.constant("layout"), json_type_validation_1.Decoder.constant("textOnBackground"), json_type_validation_1.Decoder.constant("textOnBackgroundInverse"), json_type_validation_1.Decoder.constant("primary"), json_type_validation_1.Decoder.constant("textOnPrimary"), json_type_validation_1.Decoder.constant("secondary"), json_type_validation_1.Decoder.constant("textOnSecondary"), json_type_validation_1.Decoder.constant("success"), json_type_validation_1.Decoder.constant("textOnSuccess"), json_type_validation_1.Decoder.constant("warning"), json_type_validation_1.Decoder.constant("danger"), json_type_validation_1.Decoder.constant("textOnDanger"), json_type_validation_1.Decoder.constant("disabled"), json_type_validation_1.Decoder.constant("textOnDisabled"));
const clorMixDecoder = json_type_validation_1.object({
second: themeColorDecoder,
factor: json_type_validation_1.number(),
});
const colorModificationDecoder = json_type_validation_1.oneOf(colorEffectDecoder, clorMixDecoder);
exports.capitanoThemeDecoder = json_type_validation_1.object({
spacing: json_type_validation_1.object({
baseUnit: json_type_validation_1.number(),
formElementFactor: json_type_validation_1.object({
large: json_type_validation_1.number(),
medium: json_type_validation_1.number(),
small: json_type_validation_1.number(),
}),
borderRadiusFactor: json_type_validation_1.object({
sharp: json_type_validation_1.number(),
small: json_type_validation_1.number(),
medium: json_type_validation_1.number(),
}),
}),
colors: json_type_validation_1.object({
layout: monochromeSwatchDecoder,
textOnBackground: json_type_validation_1.string(),
textOnBackgroundInverse: json_type_validation_1.string(),
primary: materialSwatchDecoder,
textOnPrimary: json_type_validation_1.string(),
secondary: materialSwatchDecoder,
textOnSecondary: json_type_validation_1.string(),
success: materialSwatchDecoder,
textOnSuccess: json_type_validation_1.string(),
warning: materialSwatchDecoder,
danger: materialSwatchDecoder,
textOnDanger: json_type_validation_1.string(),
disabled: monochromeSwatchDecoder,
textOnDisabled: json_type_validation_1.string(),
}),
statusEffects: json_type_validation_1.object({
hover: colorModificationDecoder,
pressed: colorModificationDecoder,
focus: colorModificationDecoder,
}),
typography: json_type_validation_1.object({
fontFamily: json_type_validation_1.object({
base: json_type_validation_1.string(),
monospace: json_type_validation_1.string(),
}),
fontSize: json_type_validation_1.object({
medium: json_type_validation_1.number(),
large: json_type_validation_1.number(),
small: json_type_validation_1.number(),
h1: json_type_validation_1.number(),
h2: json_type_validation_1.number(),
h3: json_type_validation_1.number(),
h4: json_type_validation_1.number(),
h5: json_type_validation_1.number(),
h6: json_type_validation_1.number(),
}),
}),
});
//# sourceMappingURL=themeValidation.js.map