From 005965f1498c5c9da662d864e9b00e5335659d57 Mon Sep 17 00:00:00 2001 From: b1ek Date: Wed, 22 Feb 2023 11:43:51 +1000 Subject: [PATCH] add label --- public/static/main.css | 17 +++++++++++++++++ view/lib/pSBC.pug | 26 ++++++++++++++++++++++++++ view/ui/label.pug | 11 +++++++++++ 3 files changed, 54 insertions(+) create mode 100644 view/lib/pSBC.pug create mode 100644 view/ui/label.pug diff --git a/public/static/main.css b/public/static/main.css index d29428d..411aa09 100644 --- a/public/static/main.css +++ b/public/static/main.css @@ -73,3 +73,20 @@ hr { border: 0; border-bottom: 1px solid #C2C4C2; } + +.ui_custom_label { + box-shadow:inset 0px 1px 0px 0px #ffffff; + background:linear-gradient(to bottom, #f9f9f9 5%, #e9e9e9 100%); + background-color:#f9f9f9; + border-radius:6px; + border:1px solid #dcdcdc; + display:inline-block; + color:#666666; + font-family:Arial; + font-size:15px; + font-weight:bold; + padding:2px 4px; + margin:0 6px; + text-decoration:none; + text-shadow:0px 1px 0px #ffffff; +} \ No newline at end of file diff --git a/view/lib/pSBC.pug b/view/lib/pSBC.pug new file mode 100644 index 0000000..759ed3a --- /dev/null +++ b/view/lib/pSBC.pug @@ -0,0 +1,26 @@ +- + // https://www.npmjs.com/package/shade-blend-color + const pSBC=(p,c0,c1,l)=>{ + let r,g,b,P,f,t,h,i=parseInt,m=Math.round,a=typeof(c1)=="string"; + if(typeof(p)!="number"||p<-1||p>1||typeof(c0)!="string"||(c0[0]!='r'&&c0[0]!='#')||(c1&&!a))return null; + if(!pSBCr)pSBCr=(d)=>{ + let n=d.length,x={}; + if(n>9){ + [r,g,b,a]=d=d.split(","),n=d.length; + if(n<3||n>4)return null; + x.r=i(r[3]=="a"?r.slice(5):r.slice(4)),x.g=i(g),x.b=i(b),x.a=a?parseFloat(a):-1 + }else{ + if(n==8||n==6||n<4)return null; + if(n<6)d="#"+d[1]+d[1]+d[2]+d[2]+d[3]+d[3]+(n>4?d[4]+d[4]:""); + d=i(d.slice(1),16); + if(n==9||n==5)x.r=d>>24&255,x.g=d>>16&255,x.b=d>>8&255,x.a=m((d&255)/0.255)/1000; + else x.r=d>>16,x.g=d>>8&255,x.b=d&255,x.a=-1 + }return x}; + h=c0.length>9,h=a?c1.length>9?true:c1=="c"?!h:false:h,f=pSBCr(c0),P=p<0,t=c1&&c1!="c"?pSBCr(c1):P?{r:0,g:0,b:0,a:-1}:{r:255,g:255,b:255,a:-1},p=P?p*-1:p,P=1-p; + if(!f||!t)return null; + if(l)r=m(P*f.r+p*t.r),g=m(P*f.g+p*t.g),b=m(P*f.b+p*t.b); + else r=m((P*f.r**2+p*t.r**2)**0.5),g=m((P*f.g**2+p*t.g**2)**0.5),b=m((P*f.b**2+p*t.b**2)**0.5); + a=f.a,t=t.a,f=a>=0||t>=0,a=f?a<0?t:t<0?a:a*P+t*p:0; + if(h)return"rgb"+(f?"a(":"(")+r+","+g+","+b+(f?","+m(a*1000)/1000:"")+")"; + else return"#"+(4294967296+r*16777216+g*65536+b*256+(f?m(a*255):0)).toString(16).slice(1,f?undefined:-2) + } \ No newline at end of file diff --git a/view/ui/label.pug b/view/ui/label.pug new file mode 100644 index 0000000..18cab54 --- /dev/null +++ b/view/ui/label.pug @@ -0,0 +1,11 @@ +mixin label(text, base_color) + include ../lib/pSBC.pug + - + var color = base_color || '#F9F9F9'; + var dark_color = pSBC(-0.2, color); + span( + class='ui_custom_label' + style=";background-color:" + color + + ";background:linear-gradient(to bottom, " + color + " 50%, " + dark_color + " 100%)" + + ";border:1px solid " + pSBC(-0.2, dark_color) + )= text \ No newline at end of file