65 lines
1.2 KiB
TypeScript
65 lines
1.2 KiB
TypeScript
|
|
export const typeface = {
|
|
sans: "sans serif",
|
|
serif: "Times New Roman"
|
|
};
|
|
export const sizes = {
|
|
small: "1rem",
|
|
large: "3rem"
|
|
};
|
|
export const colors = {
|
|
red: "#ff2200",
|
|
blue: "#0022ff"
|
|
};
|
|
export let userFonts = {other:"lol"};
|
|
|
|
const CSS = {
|
|
mq:"",
|
|
get MD()
|
|
{
|
|
console.log("media query start")
|
|
return (...args:string[])=>
|
|
{
|
|
console.log("md stop")
|
|
}
|
|
|
|
},
|
|
get Face()
|
|
{
|
|
/*
|
|
const context = "font-family"
|
|
return new Proxy(typeface, {get(target, prop){
|
|
return context + ": " + target[prop]
|
|
}});
|
|
*/
|
|
return Mapper("font-family", {...typeface, ...userFonts});
|
|
},
|
|
Pad:Mapper("padding", sizes)
|
|
};
|
|
|
|
function Mapper<T extends Record<string, string>>(property:string, lut:T)
|
|
{
|
|
return new Proxy(lut, {get(target, prop){
|
|
console.log("read", prop);
|
|
return property + ": " + lut[prop as string]
|
|
}});
|
|
}
|
|
function Query()
|
|
{
|
|
console.log("md start")
|
|
return (...args:string[])=>
|
|
{
|
|
CSS.mq = "med";
|
|
//args.forEach(arg=>arg);
|
|
CSS.mq = "";
|
|
console.log("md stop")
|
|
}
|
|
|
|
}
|
|
|
|
|
|
CSS.Pad.large;
|
|
|
|
CSS.MD(CSS.Pad.large, CSS.Face.sans);
|
|
|
|
CSS.Face.serif; |