From c3fca642af95df3254520af98cb12d01494c230c Mon Sep 17 00:00:00 2001 From: Bogdan Dudko Date: Tue, 1 Mar 2016 14:28:24 +0200 Subject: [PATCH] Colors refactoring This commit updates color scheme for better theming support Change-Id: I76c0a8cd25c9c7961548ccf5d7d35dc745870ab4 --- static/img/fuel-big-logo.svg | 157 -- static/img/icons/header-icons-sprite.svg | 6 +- static/img/icons/icons-sprite.svg | 56 +- static/img/icons/new-environment.svg | 8 +- static/img/login-bg.jpg | Bin 0 -> 30507 bytes static/img/login-logo.svg | 150 ++ static/img/logos/fuel-logo.svg | 144 -- static/img/logos/mirantis-logo-black.svg | 55 - static/img/logos/mirantis-logo.svg | 104 - static/img/logos/navbar-logo.svg | 144 ++ static/img/tabs/tabs-icons-sprite.svg | 2289 +++++++++++----------- static/styles/color-theme.less | 95 + static/styles/layout.css | 2 +- static/styles/main.less | 187 +- static/views/login_page.js | 2 +- webpack.config.js | 2 +- 16 files changed, 1631 insertions(+), 1770 deletions(-) delete mode 100644 static/img/fuel-big-logo.svg create mode 100644 static/img/login-bg.jpg create mode 100644 static/img/login-logo.svg delete mode 100644 static/img/logos/fuel-logo.svg delete mode 100644 static/img/logos/mirantis-logo-black.svg delete mode 100644 static/img/logos/mirantis-logo.svg create mode 100644 static/img/logos/navbar-logo.svg create mode 100755 static/styles/color-theme.less diff --git a/static/img/fuel-big-logo.svg b/static/img/fuel-big-logo.svg deleted file mode 100644 index b6fe73e67..000000000 --- a/static/img/fuel-big-logo.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/icons/header-icons-sprite.svg b/static/img/icons/header-icons-sprite.svg index 7c6a4fc17..792e066ce 100644 --- a/static/img/icons/header-icons-sprite.svg +++ b/static/img/icons/header-icons-sprite.svg @@ -1,5 +1,5 @@ - + @@ -19,7 +19,7 @@ - + @@ -30,7 +30,7 @@ diff --git a/static/img/icons/icons-sprite.svg b/static/img/icons/icons-sprite.svg index 88dfcec95..351e016ed 100644 --- a/static/img/icons/icons-sprite.svg +++ b/static/img/icons/icons-sprite.svg @@ -2,7 +2,7 @@ + width="80px" height="1080px" viewBox="0 0 80 1080" enable-background="new 0 0 80 1080" xml:space="preserve"> @@ -805,16 +805,6 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/icons/new-environment.svg b/static/img/icons/new-environment.svg index e17a41322..2333235d7 100644 --- a/static/img/icons/new-environment.svg +++ b/static/img/icons/new-environment.svg @@ -1,11 +1,11 @@ - + - diff --git a/static/img/login-bg.jpg b/static/img/login-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c1128a8c5bda19dca7b8b5d28337430723071097 GIT binary patch literal 30507 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 z zJ~_7c8va~(EK=Mxs;j89*m$^!uxj-ujRuYNb*12Cr7!qz%i^x#6Y=Y|VMNC`2p{O@ z#H}kP9lDM@)I7BZeY;wkvN{f)b;L;1`?oT&>O0kQ*fw^X2JJ3tEVCPaVb^auAm|_T z+fs_0eco80(g-X1TNWp34dvuA9Of#|SNsI`CdP!AuY%R99^T9&wZ^N*H)Px%oZs$y=@g#vO>;X($Hc!l(L5l}W0wzB z*=Ya@Dcwm)C_gaPFn#=fEB3ealHFe`2L3a;lI*dDzHAE*43Z z4}F6;t(+G*pCaBXz$#2T`%S8usGY_^B+xkY8FQC&*25-|#d*rbD%}W$jadz_3aIYD+fm+maR-u+Is{B^giX`7`GQ6 za06mC*yZHgHQGSIkE2n}y`s%x9uRfNUU=R6aQLw$OtEd}uyS0!&ApT@C674krfJjC zN2%Ztk@xv~CQ++`>I2{`k&x)ZZs86dgwl6HBCJ&ixg3i?4rf^%ApBN90le4}#jebK zK&|-d@pc3;BeRswnZodJIfaJ0ASN)h0Y(kWeli;+7{=wZRAP`2Cl?|~0eV4l2cw=@ z_zQBuk0%w#Yw~n*f!AHUXUFWR6R5KsL243VAEW`lnA_#T)>IQL$GM7_IF`si3{oM+ zu?>r;9M82z)Cn?OPhwyq{)PcJ%YZ$kwNsl9t39*z)0i!hBMf#qGeXX8G~u!`^ui-p zao1ahVuBwp{I*N}>^m4Dd@-qdJqmpbW$NvADupvCL2M08ozJqL;tPQJmCyR#FisPH zC2Y}{-@=hSkXnv^lt2k?!ku@aoMUQMhS@Ywljgvxh3kzt+q^Hh-8t8wwA=Cznn)3e zA-&hxvKQ66`Z&VIu8ws(4C4%Y>4_RBf1YBnCFL{?9IC@7`X|VBbZQP|^mx9I2&Nek z%hDr?q%Lxoi5kj*Vpa~ej?`laV(;we5(wO)yz79=yZBt?St)Z8uL$T`!l>pm8`|p% zxze=RUvGjO*R9Cf-$S}@u4(ZyBqM^$=B&-jGlja&A71?aacF4q-RtlL&E5dvPkzX^ zKgR_Wr|qdSGQ+8lq5JtZDk+XSy5s$=GiX{Rbrzh=g;WY@3ZIFdjRXe+E}gEMOCtP? zDrK|4kbRG;iKJW#aK0JfbTk4&kNFfWx%dwQD8bq<^Zhr1;}!ke5Ih))lJIxGo=1I@ zwXvdgrAErtuakGH%OJ<+{v*)im?_jfyAR-PA?!n`kHo!a zktpch9M~W&;rRA8NIxe+?_7|V7iw^GO5okVoBOc&57MXx4HVj^PUf0#BH!^M+$J8n z3!()RLHH4&@JHke9mu6FFkNCpuf{7Leqh2Xl1-@KvOl65WZpe5qm@p(dNG$9ttM{lp{WteG|s-|UuU-Ua^me?Mw?>x5%76Vg)3%|pus3*G)-5t{_CRO zI7H=_K71f6R9yTkU?2X^)nC;F8@t2_-HO^s z+6zmse(hxsF?U}s!Fbxj0P$5Gyo^j9}U@z&TdL;i?LRq0t%w(a4Tnte-{M$P%u zjNah(2)K6dOlul8f*dg0g0uU(9RC|yxpxNK;r>V>h=R1-$8X_fwKv>kYKn!&tcVuG zc4R~7+F2ib_6d}fVseLq98ZgVxl2}f~&Ysh~;WCp$S6Ju+VY?0t^@AuX)Sqj6|_ zoNbqt@Hy(Q$IS$%?kKBhB<}ZdJr4VPOWW8S@)o)l_rVP#^6n&X)X(S4oOlc+JR$4z z(<0!(_`hf)yPuaxu9xWG_6{5Rz5MpBjPxTe=R@ESxx%^bl7~Sq{q6TB6pE9>xgY_r zqf;<;e&=V{`BfKt4Woh1wvwU^IT9c2cUEkW_~UTWr5{kVe+JAuoQnF4dos}Nja)g> zb>!E?v&{WS+QyUOTamZmG1x)!O;KU`)a%nnLA9wr*Ef1eNMk{@tpTYQACv)Zdu7B( z$UYzmjDGc`ut@r7IVs8dE4rVg4kf?_8Sty2s##Fd(Gh7RSIdcLKl>R2dZ6LdN^IO& z{yi>Ul}!@`TA!vavZYHQ81mk3BzPBRj)oy&JUPO==WY*jVcb!HPO1M=|!2|>_MI%)75^}Dx-Y!(+vIigYIEy zvSZQ6wy%z4XyZcAZ2-3#@r@n0ILDUqbgAZ~a=cXvHbVBor5LErD&HDDDu>Vu&JwB(S((<`;$M^z!>mGq||&#Y_!v@I|#|w!)>9~ zKhD`^>n4eIxu#|P;#dE3khc1Z4K1iIx$#kn+V1&~#Ix!pM&5ULtjZ=%toD#mk{$oS zY2xsQ3>?2tog-QE#k-fY-ROP7fdc6ydZLwCQvAf{5I6)S56QoLHX(=K_uG-QHH<=0 z78wYHDI7lEe_s*5`fdI?8~s}u`C1K^0%{k2e_X;O!V?BE362`;yp^0Z$tK;aFeaK~ zX>=!zlW9p%)lZaW9aHg%4@^~wUuq+8^2_GO?mR72kVfs!eq+WUU#G@bq`L~PVHZ`z zP0R={W>8zoD=jqXxxYLd-gSNz?iL2k1bjZ#xo7)0>~RE|FLYC!e*#rq-8~6)3+qqg z7SQl`kt~f^i+oY-;awanC!P2TbC<(c=fJLh?AuC?d`~0FKP9AMenTpApgtEXW-?i0 zH8`P#+$%zQANf_-T1|ATP)1pKl+TwL{>-V87W`KiuuhoGUI95PG+2o8;cvl1Dz^>w z72{-EGwI=fLly`IK37e61kOcVzc7zp~uwZ;1SsMd(Yt=sk!(?d;KMhIi6NR`|_hc*ozdBy7M8+6~_pFKS#SK zR2(jzn%FdL-m$DoIeR53;KpQF_czjmh2>F|ZcVYC%=!MIe&MG{P-;Wi-9uWenxI{o z2qJ3QlPsulby#7A+~w{?Hy{{=aUy=j_1)&G=;?<@SbJ`rCK5Z33y1`fMW6QwG-g>P zHz*JYKmW73Wbe;)TwG_UtMhGwY$JK>tpG*7ROhWAuaOPnSBKC|Aak?Y7b)*Zct1{f zhz(qWV?2b$tc*ipP8xzVr21C&Odnz@}xBC)QguZ@&!pYR9<1SJzL_$-c zx);v^azH}%s&Hg(8ZZssKATW%Pv&Q}?mYtSfBXtK3GEXFAXeZFg4A+oq)y}u-`OsV zwW38RfW*7}qhMr<0Qcfdk63=Wco)c+gsjeypO zrHw)~OK|tgb*Tmyyh3vsnz8=w+kah%f4NH?Fa2B^*}lH*A!l<23rDcL(~NJ>ywr?; z_Yg{7t2+)A7h8Zk@?lGl)J*WifgJ+A*4`Zh!du+p&X{yLBkz78#xG20C*gG$a%DS# zFe0mBs|;7wGcx~Akp=R1_&XMd8GMH$hq2qo)QR1ji3eyRe~yWURHEgbgcX&p93A@M z!{FkvWnLTatL;x*y^4&HiBv;30(tK_$59t8r`Au0!;-nJKT9e%1qIvP`n)#w%5cUU zTw)}Ym=zcQpNh^q5bFPrm5j{FDjHTuIzo|I==c8p75ccuiu>+4y}oPd+fQIh z>4_;!ImXadOh}aXVwP=-XC^UWPBaNvWMy+cN4dm$wh*l>)zR2AV9Z?prJX;@%EBZ==5pp#+EqBX(hB}Vb27=hGG0Ztor0(Hue zPnSln4fis3hSop!eJE-meTJj*w}BO zVG}KA52(|F36r;~x@O^~FSb zqLTqAuL^*JX|Zf(VI}`>zu?&;ZxdEtnCkzzo{^D?4ieCvcDHmR>B)4>pb$31SRJ!kAS^&ccYD%(-+DEZ8!Nuw43Eh5_RER|s8dAOWdyN!$Z*@5t3xq;54&7A9w0!n0gJT_xjgbY z;%)hh*YO)Y*>Zkqk+of}TY)>W+Z8}k2BfH~Pr;1a=$)b1v)+yNj61<7f) zeb7Ec3*vp&vYE}T&EnJOlLjco^Ru-3v>@cNeN?J*~VEoE%jY@ z6UwF+`L5x+YVw{hZ-$*vX)0V4Z#n;EUZq$XnX{$OKI<i_6vy+&ob?)lUZp({dj(Z(IUgUPh3uk{syi9Atujg!_x zw)Q6Br~J2B&{5wNO{}20L>dXn-$PPscmls0oztz<`c}FMay|I}YvuZJ;}lO)Vl6sf z6}sHdJ5+(EkRPDC+j+kWyQZ#5RJjZO5OJ#Vuc-P$$OeOw{ zpJn?laV(4iS=bJgD0q>i^Bad!FqeRN`;V&dPWoTes67v^T{#G`O#BhGuC8`sEk%E^ z16@V2!J9s+5cwBjBO;-+l{XOs@E;$I+DO@-@RzMJ-KHro8UA<8NgtKiR|ohseEasH zN`}sY_aN@gj>=@x>nTy^E}~L~=tD8m{%{y8T_F+PH#Rhkj)ZW-P<5#vPiDs35|5rl ztv?NChY?A52eJ*#{vYD0n!UGP;E5ZOiQ+OGc6U$)z-qrf@}ifjAKj2x6-qm|I+49@ zfPY#qD_$eo}eItaZk|Pmv^ggFrxCjOe#*cu)K`|85LkkGCJmOf+1JmK)}rjSt_- zv40H4Pq(~gWAXTWXvt+Bnw%-=>$#m>1qnY)>Q!)QRE}|lMn%s#1%Rd>?*+w6!0X6; z6THC1B_dP36Q`-zfX-K;CzFNlm45s$dTlZcH?_44V}l$Qmd+QTl_AyuJM@Tzf;XpY z351v?RX>h%gzx5W%JnZKDNr{0+C;kLyDZuQ8ujwOEoIM>&`Tc$`>%8j^$*+0;IppkpI$x2EesDliG#; z@3kqW8@kiqks)(XuO(EN|AcHt!J(wPu$FG<0$yP_T!CcgUx4#y^gUG{|G0<#`HSLK z)%jW>zos0?AU_6JJki7>IHl)1l2LD3-8V6mJ#7Y2rw$E6`i23#1g2(rCVI@>4ZTz# zu*>(}F!iXXLZkKwwuX3~bydl+JaY#}lcX2gr8FWqQJ~zU7xqILy4D;h*0pb7?-#nM z%AE4J+=XB7u)S&E3)mmhLja-XyCy3Iylxan)YJ&nuWq7%))oZ8)uc#J$G(_i&^6|%SB4owB= zC@svw&vHI2w+g)XBVk<9&NPnGZqH5TiVwx|*s3u9Qvf|eIqwtUiIU=DYiK&bc~Y`l z&p>>OQ=E`UUR@yR=am|qr_m|Kp{ujYj&JM|N@y@pNM* z<&mY#qS`r(-UE1ekj;Nt3E<+BM0BeA59u+%=~ zvQ)u&1k-t&!&qz$wkly0Y3DoP{3%egq&*jfWkCDe&yO(_ez99U{=H6;20oQeB=Dhd zuizFkn$VIm7NQDO=r!U|k?)(nxXKcX9of_HE-5uMpoSV4=X1-mi15(l@53(^ zQ9m;(^*N!h-%UCdo=ju1tX~T`#}7VK0upa$2kPa5DLU)D*b?+;{X627ddy!QCPYN9 zXB=jr+ZHlD<&n^KM+WcM;j1B19*)zj>Y%>bdJBu~L> zq|-ETss^t5g6poo^xw-32@-zCtI$EZh5ryEVCE^tMf2KU)DWAnzhbTnZThZ&z&z@^ z;}tFFAB^XcAc3iUu7fBy-HlVq>9cLJp`uX6%#kMSaFiea@Q(qZ^|La12k|S-p#c$k z#w&fSeBwoXrm9w0gPAu8KC)Zj^p6}RfU`PS+nSgl*4x5d5BDr{oqo)zC!Tz+6U5tD zL+ouXnDJV5rB_2sqPrTV)+~uK<6iZ)2Rk{NYvS|#40h_Mf1aJ`?!8u+!Ig(4(j_w_ zmSXa*hYWX5Kll3FQj?|E2Z)bQ+N%_4AJ0=cdz$fR|2+aSM!*9d>?c#Wv^q&)0!3VJt%;qq*62iY`5_Y8xoFrOl{Y%uDyItm97dx2dtD7DM zg=jb9wP3kB2k=^y^W-sMkxEEn6}JR-o@U2?Ld7r`BPm=!aQMw z8+3U%`|)x)+&o77q8YYHnETm_%)X?fs>)W zq*Bdz8Im4QXox4~u0G%3@Fe{;pS>ZQQ)NIEp~kW6$xH{g+&KpM$HAJ&Yk2@0ikRM5DJ0g+6xGpsOm>1$R z#6O|<>SE&MG+|C`mR{k7lr$2eEG^d9hN=D9eyU=*PCSjUw!(|_eZbwC1A(r0t zA|lDEa^Ia5cEtL>s9F2qzbK;ux@woCe@3Q~Yr&4kOe~&-9E9OT^!1yHV*H!&2#Qy; zh=jhOmare~^~;8wtLRLX!Fc6y4r(}faKe#UJrzPUjgcT3F{hD;5QV(8ZU&596eRfp;i(0W(nDw}KI#DGGa#T0{AcAM6DQ8ap zfYpgWGCWi@CfKb%v0oz0?QEQkt+6 ziA%Tdwh-^371KVx1tl%}HoHuRnWPO!h9uuJ$e9c${f|KO|N8nOkpK*8SBOLWnwJow z`&k(|y17w6knsc}U7$1W28-Vy$tOnTX3;7$H0NDHl|$fn_XhCu07m@X?f(HUH9*lRO=OYAB&yp!Lct!XU04i}2C{x;Vfc``Sfl8`O_u7W z+>7{ZO+6X4@lYWW{`j_W6AO1%n1}Kt6u;oG%#ZdD$pH zbkw)i;QVYSd6j3OFTGT)PvS8?$ImP+k&w<+QDEog>flH7q*@tQzB0BQnE_b-j;k)h zTla-o?op!WCs#HBsZO5#6k0#T!@?uNJ@`a8Ed~IRM{fThMg_!-PxIQ;eK%$t{5&LZ zw8md|B(Wv71;VzzTX(EJ;mytOkkQ&Z?U~YhSJ#m{Q2yD2q5wauK?3FU9fmP+Y>s`T zdKfYK8qCixsnA!f^LDY(9L+ny*cq&##mBE6t=xF%FN#9?nn_x3YyTH@NA(((n(peq zWE|pm0Gpb=bJvnFH4+LbeykWru^&}{7cLb9Y=!}tNc;~j3lE>q?|~XtkLMg0Hs$or zrQEF8WFIWn<_OLZGDB&J%(wJ3q_vuqiY`1m@reThx=otlBtPd$9=dl4L(L;Qc06IJBhSvXl z(8y8&6CPwV#2fw=*|uXb=u~6cIPrNj=dA9hc9)SxeW8#W_uRom2fArxU4+-X9dV)ge+)jJ#NF19h;=FTL*UGhqiQ0^4k1V9*+YT^!9%n zb<_=4-jvb<>UH`w!(-fZ6RcV~9F_IBtGU4m#YN5r&F&NL4zvut;NEii|bs3-HJ zE=PXAKNoF(3@!d?cX?dlv&7;4-s$|TVr(uVip0Z7xftt!AV#|!6|3wH zv6~CK8T(JwDa){H$)uNCfmIb@z7t?3f^;YR(o--pjH zxu1KHoah)bz&WU;J$G&n++I(Kc;IkcCSxS3AoRm=7HHFkjkiTUTl;8rzj9YVudN9;Y-JqOt6zLavN;Z0!uvm5 zZNw=D_w=Qdj%*lQJ8dH@pwl~lpZtB+Jn8bM`72^&_8eBi0 z{fo+SL`Jo@mek@bZx``#+h05BT(m!kJdcseP;2IyDSqe|7W;d820rdl`!>IA($06? z^DRA>0^pw;8Asm!zFFSme!I*->hhl#;tlnNJOPmNY6w?q3Gbh`9}PRjv8B6Fj1ORG zL3uzA1IR4f^8r`leg^uhy+)M77?n7Zqg zBH~YW%nfuNg=-G5AIU^UaT1Z8tAZ$>M;iDTh=q!Ry4VI^xPO{g zlj1xkH2VircD@favCP3pe|JZ`krAG$l)|$z96Hg@8n$h+?~_d)JAg|7LnCO(5cgh~ zeh9k1^CabvimDAQQ9gqD3vQS0bc2q%3$U!0p?b2sY#lqvbyIroZ0yC@t4hS)9?krX zFL0umxz>-}fHVo3Vs!Jgof5gYbK-o&q$kxrJUs{}N2qN%sxRR20Zi2|3>1ZrSV2R_ zVviKi-QWIx_;Y>P&Of{-dT|lhdSc9EO~L0pj1&QkS{swG6Tm?BUaWeeox#t&&9FUv ztN{Px9_=<(U|v9Oob*lJS3?97uF^zB1|Bp+E~+kIPKqBs<+v(WZ0b94Q7bNdD@kB* z@Y@LgrB6LEyfcT)CAw zK~#dFL{;GxflGatMWA<~r@ZJgb}qCd_2`&LQ}Tw!#Cyjuqd(Z2h$DO-y>uITGRd}t zefA%8tC-3-%C~fA_=`%7^|d~Xu0;jBXXA|mkp6nY`oaI$s$R(MGa)RJg%#VhpJh^u zkMa|)j}cHLC|E2sYcC{e8l)DnHh82MxF@je!n*#VcK3W)n9oX;@Q=ey=-3G(RnV~-DBq&6Y;)kmh4KO)3;agF;rQ0iCzx$}*~ST&lz;+QeS zqwm1PtvQ2J_PC5n$j+&L+=2TxI-*}EO+mh8o=^yGm?i0T70d9HLto*vN|0KTtDep( zmjOtt^R}VzXQGR7D~Bshb;ilzUyO`^iT+TWnp8RLI?#x3H#XRGGG3-H+wlag!wh-$Q;ey)2Pj$zme!ChTlR>-dYoOT+9_0fl*x7wxK zjSmx5+7}VsY}H|8)^>G)>_m58hHHE8Uz7oQNZ5hT=@l8jbEHW31L8&ei!UD(7UNbHIBr7cdm&xF^J2 zK$go%q>K&_UF@Eog^~U`1NS_3KHAPyqo-7sz_|~V@TK$H_hWvxFEPTMHaR@iUHHEZ zc6aqBtZ*m>WCl#J4=D?pR8;^M_V0uvZB6|{K7WW`c>`;oUh6eObA)EcEo=`X>JQUR)a-rMhFG>bX#UVo3PdL|7Z&E1F zk~^1-EkKV;2n=uk%gT_Pxxp-Zt;rD2)_;I;iXm;!#NU^g1y>5BwmKnu4n&KB6?8JZ zFv!t=2!Y^5+vv;j^WXcFvgMR{7pA;%jK_Dw5g)_WmDtXG$%JQnudt<6&Z)+VwGC1$ zHqhRQ8DCYjE(F&OAfxC6f2q=fE*sU+dE;_T=m@5Pl4dNtr-C zB-w#C3 zv&B9vg-J8_qDasDgh9&N0Jtzn(jWSpl&}K#MEJjW%x;X%HI2bw^Vf$|WMKY86vS zv~`cXd^6ngOplko7$u-ZA`Le}dBl6yzoH&>5iHsMvuyVk!s9qBNW{2o@szZ^;*_zF zf>?10P3B_M>n;L1Z}{;`B)ihC^ImtO9?RM?W|ioVj+DmvG2vplv45_BmbkY9ek)yC z4m^C1Lmu@qqyjZ+)qL*i$WZKD6jwH~?}+ivA9`43f+gD~BBpl%r=EUyXl{PI7~ zHt{m%3GLqs=uz)}r&cb^2fT5Km1M1|PJv2_cbq|td?dn5F%*DJD;lV*$gw;J3DGrhW)heB-IMPjT$4HgT; z8Iu}piW*}>0^Cu&DBlz;6f?R?0hHGnRD!jw233Lb7m~K^kDjvYZLTgVL7jo*2qj;M z&0v-6qAdD9t{Uoch!#A=k59V`5@0f`nhJ;bbzfH;!K_wyZA{%P>^d5E4dgf;8QzM~ zHP}j)+P0@btZZt2QlVBFQ2rS-)>_IAkPp6pNeOEPrG1g@22aEy;#A0`Mn9$AfQtx< z!AqP~{>ZVAeem@bOsj3ri9(K0gl>6_7}OJd7BZEdm#|4w1(fP^0jhs5d;iHUlvb%k zXz9ViP`Fbp5EsPp+$Is`ghkRD@tEWfHAMB{XCp2YeH&|(kTMrV&r-n z%a5~H^Sqx@Yod|NsTzWreg}>+1?Sa&`~c!5%a0LaVh0~}5UQ}DJYWAV0tm&c$UnXvc9nbS~eTZ4me` zI%*NAy5SUIFH=m zYIN9EVxV-jQ&s_fr?$AK9Qz*=J~QdG_Y#-2Zk%Jq0?ef#^Sc*CsshxH@1HY_4ZEcw zadQzN$|?{ftxc|q1X)f?7f=^Z`OHJ-pH;RW7wH@?$mnY(Zcl%c z)i?D|tB(Fqcd@*P0bnzYPzH;RE9a9|)pLN=#1Y?+h;F@2@C$>_qlVj|uh~f@kNF33 z_c*byUz|t+$&HSxV&nI}Gx6u$-nRFYL*7tV#%3J)LB7l!N{L+B}>$0{%v%Dr+A?H0C$FT^^_LAdQx% zaq~JJ2!}fr_`FiBX=gH1jWc`QRR6?MXk)P5PhpXa z4E9M9`eqdL9NYZnMRkL#@Q!=Jk)#Q#2aCyY_~J;Tn$@X7w*w}PL-{oZ;MdLnf2BvS zhJw$A4e-27=kDwSCw+P||qO zq~zpmpeJ4f(1YIHiK+@OI0rXmBs~-EwSYU++MRn z8cwhUfk7dm!m799#wx{fAl3u)H7WPf0Q4Ako=NXz9kL-P1b9Kvgx z4&XhSKOI{lp?knE{+RLMh$f?WsWf2{woXWGf5!?F$LGbEn zbrwrUI;OTFSioNqZ-}sTWG%m|j*=~)IcRHbG33}fE3m6Sf=+Q?cpe$k%Q3c=2ikqC zuYt_a%mN}_uiYpSTrixu*PcnEMYmg7L>LODdPP`x@M*97|l z>Y7B%mSIy)*o~Lkz1uAE!LZGaWkRFfM5Ux`YuJAJH}t)ySN7(u=jl2MU;%(&ypN%< z%<%_L$z?W4XVrl4YU4#zljRkh$|sSx9m_0)P4OFgC=3SvA}N$La4oT*onaX%zWlQt z1PgYt?ag2Ds?~?vv8fCLk$UP6HgKVPdtRQ0-VYn{;niTR0H|42Z85mqAuuq!Vy<|& zzUVCCn_KbISHSPTM4}1nrr2w`x3xnknGf(W{wYq}>T2VFF##f)g?H~id`|fvU>>UI zW@hq@k`agRnjRmO4yQf^b%@8{lBZ&tg_rDxKSe&hA}U+@Op%m8sm0{rpLP?Uwr(ET z?EMRpOzIV-dB_O9{2yt9tzlbOP$1#lcv{uYNIG28!hMb4`zE~MU~XY8A>4aCSe#&Y zjXls#Nr8-RaIAE`&cd9KQ;fZ`H4=`S%=}6JyB*jG^-u2w4lTr^mn=Z3B=9H!KajQG zc@SQDm}7OtKn;&Bb_cP)0je|bF2hH6IQGE`2DK9UG*u;sv)k-~-Yqo1J=PVE>7c^; zT8IIbp6leTh-rz2^t41pHHNXB75hgZm!;e*vMNr_M(&?DjG-lFah?)^L}vAqqzEA! z{rEK?Vo)w6QM=SxAl(=tL$e^UB0LoY!uzWr5+w9y*Gy#+ZZIrF8s>^oPhhEpYwewo!w4^msbb4efJO3= zUolfZ*>^Ts*pZ+uz+Oe(*+FQo4;0Fm@nM5^=Sp^(%aq|z=zaRs6&Le=%l&x!auU~b z;q)@5baE&Q|9tcp%$s_O^~++)wl-8xqq$5O)_CF;xj1oO_K zI!Ok*+%y`69|9E^@yCt-qC(Lio2znNO9BtgRowP$+VG3cQ?lEhLx{;`^r@XXw6!{a zQ2{R!O>St&vy^rGesJO(ahK%`KMnC@R7+UeGpVx&wT~&$g8lMrv?EM&! z*%WJe6ZUO+DSM6y1f_q{Y8fPDk5w0xkD1Pw7bE};a8#-f(l_B4`W z;QF-zTi8Qhm-ViJ0l`{{k<1|!EBZOZ{aJA!jOxDRGN&)RCI5N=d2V?^b)HJ5i36R^ z`qZ!tH`Wq}d!mqI+dg5ZUU)RA+s%OA+u{*UZIzue67u6I5!cf%;H`*N8NUHG_pXPe z{y_|@HE&!1k*Hr*H=4^w=CD+wm`sHc{=-j-Y}2}5aQQHD=G89yQ+6!Ccj8_jJbV80 zMQLIThtX0%_}+r138M0DG^!6XsEAtS!GJCnS1*UJ0iS#MdvGKk*Rz) z4_osT!tvdqZ-#KQB?)VWyu9M5^w9kxYIBgINJ=W7 zX5zsz@uB8=vq|@qZ!p{g>*C&J(*61{sNpH28oZ~IVVg6%x59=#^q6gK^wLcM$5>Pt z5)|rQ?JNd!gT-E~IFC9q!==l-VN1;6l*Qns-j@v<@#J_WSY z)JG%NXpZ*ty1;4``K46LByl2<$}sOBcm|&w=FL<7gur6_w&1TVgrwstR~+TTj`q55 z8GzEk-Rs2`Z?qJG|3GxfbMDGaj&FWWoN?XZ;b2(+ zg2!A(n0^ZoF3ZLiuVdBoKHM-LOH9KBrRJipf9afw0Ex{_OR<3;kWTOTl>t3RAHbu5j< z+){Bep7y1odlBkeeAfFD-tnL!sI64>s~HERU3#xd=yimYwS?bW2$M$M-(pz&nsCdY zrYMmQrd4?WYIq>FU}1Ovo2#KED9osD)@f(rd&`d>^cM{U87P*vqjSNI= zcL0Xh=1z4&k_0LHQLvOGx?OMhe4VY*(pEJ4hi9npj!bat#3sQ|MRc@?10v82taE_x ze9pc=x-oPYZbSMM%jQ^x4A<@xeDq*HiDmns3!82d4)4xDG#i|vTmA(`dfwMr|9bdF8F7h;qCK|Wxc=i zvl~54n`KgZ_lP-a0ikvxCDrRm7F*cWzQe=FTid*Z+r%k-FOr=1O)sX56=lMerLR*z zsXQ)dm0rc^B&i1ONoroi;j1UAmEMgBrDXjw92}+lkE}k|g%AH?(41HuQ`dR2ZW^9E zHIaIwu#7BHeZ7>f#xMillyjJOqcK1JqtMToCEYu3cXx!}JW&dKIH&vj`-kaDohd3% z{`oUk;Ag4pfH5KE-k#r3xpm~>cKa~(5_X$sj6NVHq0{W@gwWsr;L+yhAQ%s4)>Zwe z0_^M2?*wkT0eKq`iGYB-p)Yt+M4aZ&HM0*S$mlkG9RVeWN zlMw;RVG!rD(fPh;JESUF^{s&7Q60us$wxGsJzZI{!B3(#w^iWICDo$ZY9*FV13Xzc z9`hrQ(&*%mLlXwp^3uaGsM?%irSjqfBAxW^)Beb}k})f!Q`IUrlybV1;lGb%*55iq zQr4M!pYFv>eBjGZQkd?-O-700WE`{hUh!ha)k#iy$xY_l;wwg)C=rTfU@e_Ba`!Z9 z$)$815OrHq#bUWf>MUh5Le@WRS!jljrsBElPmUXMqH=PNMxI#}^YZYgk_8%?2wy;* z&GBVi*k|(;HS|6#m17jq>klrN$CLUD^}%Byi=hB)J3Jb6kw7Smu3Kv7+Jl@}lmsoZ zAS_I?J9Hm;und$`yIMrXHd&(u#0W+75@WAU8Q@p_cXgp7&7K`SfK56$hX5E+F?v-E z-tp>Bn7yqmhp~T4gOIdNgRqL3*05_smC`htbwj+}wtS?j^0>LT^5<#IpJS2Ro z`>BW};JvunzGt@$66^~s3|285Hx-LwVBrEgql8X@$M82RSdR(k@Wexw+IsRV8w|N& zXFVQ0#E-bsvFgo3D+=_DfP9ojZbjDu4RaB?zXN0~lpL58T(Af-mrqH|--YKR?TEON zOlkQEmV6wmCCGpCqIO}eqSaaWXbJy|HT(HC?3qELNB^)lLF)O=8l207DJ~(Ic5*VJ zJhh|?H#5Nd)Q)aJGb=gdKJ)_-qgNExdibr*G#51%i70WgxmhSq0L6x~nPtXBUmxc2 zT3iz?L^K5(X!nmD9M{v-1~Eho2|1RDL+=*amJbpv)P1qQQI>R)N)$*xBZC0^ATP8; zxye2;{P!$a{`Y>4rLG|w_3t6E3~)3fb*H~5995e3qPN`yXo?bB`uDiMsQj?0CHsi4 z(b1eJXUoP)jD`SbRrPgTLY%mw9T+=93Tb1lxv-MaOjrhMDE^|p1oU(_;ZAiPz-xNO z_3{CyoJ^KJ&n+UR4}l}6uyOesw)P`f84mElnlk$-OL2bjwBHEEXi;bdT zK0dva<33^yiAxz)ZRSjQyM7RWDcg)aPZJxJoD5UFFGRowGNo9p4=j^5!^`a2#*2hn zicvh#-JNAhP^|pPUv~cTr!cCAW$j!BwpxgWd0vOn02VDqY6uEryn$)>4G(chD`SVo zvJ~vianT&vG%>2J9`kDGFN&5Z)mX~#4Cd3$#>@6DmsWfYKz1$U9A;=Pg~TP}>_wIB evLS6lLg(rAMZ_9-&%(?Cbgc;e + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/logos/fuel-logo.svg b/static/img/logos/fuel-logo.svg deleted file mode 100644 index d4c7af3b8..000000000 --- a/static/img/logos/fuel-logo.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/logos/mirantis-logo-black.svg b/static/img/logos/mirantis-logo-black.svg deleted file mode 100644 index 2b892d138..000000000 --- a/static/img/logos/mirantis-logo-black.svg +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/static/img/logos/mirantis-logo.svg b/static/img/logos/mirantis-logo.svg deleted file mode 100644 index ebacfe7c0..000000000 --- a/static/img/logos/mirantis-logo.svg +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/logos/navbar-logo.svg b/static/img/logos/navbar-logo.svg new file mode 100644 index 000000000..b6abec2f2 --- /dev/null +++ b/static/img/logos/navbar-logo.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/tabs/tabs-icons-sprite.svg b/static/img/tabs/tabs-icons-sprite.svg index a32d33af9..b879a56ca 100644 --- a/static/img/tabs/tabs-icons-sprite.svg +++ b/static/img/tabs/tabs-icons-sprite.svg @@ -1,1243 +1,1202 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + width="80px" height="360px" viewBox="0 0 80 360" enable-background="new 0 0 80 360" xml:space="preserve"> + + + - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - + + + - - + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + - - - - - + - - + + - - - + + + + + - - + + - - - + - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - + - - - + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + + - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - + + - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/static/styles/color-theme.less b/static/styles/color-theme.less new file mode 100755 index 000000000..9ea45b8e7 --- /dev/null +++ b/static/styles/color-theme.less @@ -0,0 +1,95 @@ +// COLOR SETTINGS + +// Base Palette +@base-dark-color: #415766; +@base-light-color: lighten(desaturate(@base-dark-color, 10%), 60%); +@base-text-color: #525960; +@link-color: @navbar-color; +@link-color-hover: darken(@link-color, 10%); + +// Navbar Palette +@navbar-color: #5a8fb3; +@navbar-color-active: @navbar-color; +@navbar-color-hover: lighten(@navbar-color-active, 20%); +@navbar-icon-color: @navbar-color; +@shadow-color: rgba(0,0,0,0.5); + +// Tabs & Content Settings +@tab-color: #dfe0e0; +@tab-color-hover: #d2d3d4; +@tab-color-active: @white; + +// Node Colors +@base-node-color: #e9ecee; +@base-node-border: @base-node-color - 30%; + +// Node Selected +@node-color-selected: @base-node-color - 15%; +@node-border-color-selected: @base-node-color - 15%; + +// Node Unallocated +@node-color-discover: @white; +@node-border-color-discover: @base-node-border; +@node-color-discover-hover: @base-node-color + 15%; + +// Node Error +@node-color-error: @red + 160%; +@node-border-color-error: @red + 10%; + +// Node New +@node-color-pending_addition: @base-node-color; +@node-border-color-pending_addition: @green - 20%; + +// Pending deletion node +@node-color-pending_deletion: @base-node-color; +@node-border-color-pending_deletion: @orange - 20%; + +// Node Offline +@node-color-offline: @base-node-color; +@node-border-color-offline: @base-node-border; + +// Other Colors +@white: #ffffff; +@black: #000000; +@red: #c94b4b; +@pure-red: #ff0000; +@green: #54a854; +@blue: #4e85aa; +@orange: #bc6e12; +@gray: #8c8c8c; + +// Buttons Colors +@btn-default: #d4d5d6; +@btn-success: #48a565; +@btn-primary: #3d7eaa; +@btn-warning: #d3a541; +@btn-danger: #b85d51; +@btn-info: #7ab0cc; + +// Background colors +@light-blue: #eaf0f2; +@pale-blue: #c9e4ee; +@light-green: #d0f2dd; +@light-yellow: #f7e4bf; +@light-red: #f6c4c3; +@aquamarine: #bbedcf; +@rose: #f2aaa9; +@coral: #ea7170; +@emergency-red: #a34f4e; + +@alert-success-bg: #cae8c6; +@alert-info-bg: #c1d4e1; +@alert-warning-bg: #f2e0b9; +@alert-danger-bg: #e8c6c6; + +// Disk colors +@disk-orange: #c1684a; +@disk-blue: #1c7695; +@disk-green: #43968a; +@disk-red: #C46054; +@disk-violet: #9a4aae; +@disk-yellow: #F2CA5B; +@disk-cyan: #359CBF; + +@range-color: @tab-color - 50%; +@slider-color: @tab-color + 20%; diff --git a/static/styles/layout.css b/static/styles/layout.css index 1ef28719a..5e6d2dd1f 100644 --- a/static/styles/layout.css +++ b/static/styles/layout.css @@ -1,5 +1,5 @@ html, body { - background-color: #415766; /* @base-dark-color from main.less */ + background-color: #445766; /* @base-dark-color from main.less */ color: white; /* for loading errors, overridden in main.less */ } diff --git a/static/styles/main.less b/static/styles/main.less index 245a9ed49..2fad1b330 100644 --- a/static/styles/main.less +++ b/static/styles/main.less @@ -1,104 +1,11 @@ @import "../../node_modules/bootstrap/dist/css/bootstrap.css"; +@import "color-theme.less"; -// COLOR SETTINGS - -// Base Settings +// BASE SETTINGS @page-width: 1170px; @default-input-width: 280px; @default-label-width: 200px; -// Base Palette -@base-dark-color: #415766; -@base-light-color: @base-dark-color + #7a746c; -@base-text-color: #525960; - -// Node Colors -@base-node-color: #e1e4e6; -@base-node-border: @base-node-color - 30%; // - #1e1f1f; - -// Node Selected -@node-color-selected: @base-node-color - 15%; //#101010; -@node-border-color-selected: @base-node-color - 15%; //#101010; - -// Node Unallocated -@node-color-discover: @white; -@node-border-color-discover: @base-node-border; -@node-color-discover-hover: @base-node-color + 15%; //#141414; - -// Node Error -@node-color-error: @red + 160%; //#decace; -@node-border-color-error: @red + 10%; - -// Node New -@node-color-pending_addition: @base-node-color; -@node-border-color-pending_addition: @green - 20%; - -// Pending deletion node -@node-color-pending_deletion: @base-node-color; -@node-border-color-pending_deletion: @orange - 20%; - -// Node Offline -@node-color-offline: @base-node-color; -@node-border-color-offline: @base-node-border; - -// Other Colors -@white: #ffffff; -@black: #000000; -@red: #c94b4b; -@pure-red: #ff0000; -@green: #54a854; -@blue: #4e85aa; -@orange: #bc6e12; -@gray: #8c8c8c; - -// Buttons Colors -@btn-default: #d4d5d6; -@btn-success: #48a565; -@btn-primary: #3d7eaa; -@btn-warning: #d3a541; -@btn-danger: #b85d51; -@btn-info: #7ab0cc; - -// Background colors -@light-blue: #eaf0f2; -@pale-blue: #c9e4ee; -@light-green: #d0f2dd; -@light-yellow: #f7e4bf; -@light-red: #f6c4c3; -@aquamarine: #bbedcf; -@rose: #f2aaa9; -@coral: #ea7170; -@emergency-red: #a34f4e; - -@alert-success-bg: #cae8c6; -@alert-info-bg: #c1d4e1; -@alert-warning-bg: #f2e0b9; -@alert-danger-bg: #e8c6c6; - -// Disk colors -@disk-orange: #c1684a; -@disk-blue: #1c7695; -@disk-green: #43968a; -@disk-red: #C46054; -@disk-violet: #9a4aae; -@disk-yellow: #F2CA5B; -@disk-cyan: #359CBF; - -@link-color: saturate(lighten(@base-dark-color, 20%), 30%); -@link-color-hover: saturate(lighten(@base-dark-color, 10%), 15%); -@navbar-color: saturate(lighten(@base-dark-color, 20%), 15%); -@navbar-color-active: saturate(lighten(@base-dark-color, 20%), 15%); -@navbar-icon-color: @base-dark-color + #203c4c; -@shadow-color: rgba(0,0,0,0.5); - -// Tabs & Content Settings -@tab-color: desaturate(lighten(@base-dark-color, 55%), 20%); -@tab-color-hover: desaturate(lighten(@base-dark-color, 50%), 20%); -@tab-color-active: @white; - -@range-color: @tab-color - 50%; -@slider-color: @tab-color + 20%; - // Fonts and Weight @import "../../node_modules/open-sans-fontface/open-sans.css"; @@ -287,8 +194,26 @@ .icon-default-styles(-13px, -812px); } +.glyphicon-lock { + .icon-default-styles(-12px, -1011px); + width: 16px; + height: 16px; +} + +.glyphicon-user { + .icon-default-styles(-54px, -1012px); + width: 12px; + height: 14px; +} + +.glyphicon-off { + .icon-default-styles(-54px, -812px); + width: 13px; + height: 14px; +} + .base-btn-link-colors() { - @base-btn-link-color: #5988A5; + @base-btn-link-color: @link-color; color: @base-btn-link-color; &:hover { color: @base-btn-link-color - 15%; @@ -365,6 +290,12 @@ button, .btn:not(.btn-link) {.font-semibold;} } } +.form-control:focus { + border-color: @navbar-color; + outline: 0; + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(red(@navbar-color), green(@navbar-color), blue(@navbar-color), 0.6); +} + .btn-success { .button-mixin(@btn-success); } @@ -380,6 +311,12 @@ button, .btn:not(.btn-link) {.font-semibold;} .btn-info { .button-mixin(@btn-info); } +.btn-link { + color: @link-color; + &:hover { + color: @link-color-hover; + } +} @common-icons-sprite: "../img/icons/icons-sprite.svg"; @@ -677,12 +614,12 @@ input[type=range] { -webkit-font-smoothing: antialiased; &:hover { color: @white; - background-color: @base-light-color; + background-color: @navbar-color-hover; border-radius: 4px; } &:focus { color: @white; - background-color: @base-light-color; + background-color: @navbar-color-hover; border-radius: 4px; } } @@ -714,7 +651,7 @@ input[type=range] { padding: 0px; margin-top: 2px; width: 166px; - background: url(../img/logos/fuel-logo.svg) no-repeat top left; + background: url("../img/logos/navbar-logo.svg") no-repeat top left; } .navbar-icons { @@ -985,7 +922,7 @@ input[type=range] { li { display: inline-block; a { - color: @blue + 60%; + color: lighten(@link-color, 20%); } } li + li { @@ -1073,6 +1010,9 @@ input[type=range] { &:hover { background-color: @navbar-color-active; } + &:focus { + background-color: @navbar-color-active; + } } } & > a { @@ -1082,7 +1022,7 @@ input[type=range] { font-weight: 600; &:hover { color: @white; - background-color: @base-light-color; + background-color: @navbar-color-hover; } } &.group-title { @@ -1364,7 +1304,7 @@ input[type=range] { .cluster-page { .page-title { .title-node-count { - color: @blue + 60%; + color: @navbar-color + 60%; display: inline-block; font-size: @base-font-size + 4; left: 18px; @@ -2057,7 +1997,7 @@ input[type=range] { background-color: @node-color-pending_addition; border-color: @node-border-color-pending_addition; &:hover { - background-color: @node-color-pending_addition + 10%; + background-color: @node-color-pending_addition + 7%; } } &.pending_deletion { @@ -2235,7 +2175,7 @@ input[type=range] { } .btn-link { padding: 0; - color: @blue; + color: @link-color; font-size: @base-font-size - 2; &:hover, &:focus { text-decoration: none; @@ -2607,9 +2547,8 @@ input[type=range] { .login-page { @login-indent: 20px; - @logo-circle-size: 160px; .container { - margin-top: @logo-circle-size / 2; + margin-top: 80px; .box { position: relative; background-color: @white; @@ -2617,24 +2556,26 @@ input[type=range] { border-radius: 18px; margin-top: 10%; box-shadow: 0 1px 1px @shadow-color; - .logo-circle { - background-color: @white; + .login-head { position: relative; - width: @logo-circle-size; - height: @logo-circle-size; - top: -@logo-circle-size / 2; - border-radius: @logo-circle-size / 2; - margin: 0 auto; + display: block; + width: 100%; + height: 160px; + background: url(../img/login-bg.jpg) no-repeat top left; + background-size: cover; + border-radius: 12px 12px 0px 0px; } .logo { - @logo-width: 200px; - @logo-height: 260px; - background: url(../img/fuel-big-logo.svg) repeat scroll 0 0 rgba(0, 0, 0, 0); + @logo-width: 100%; + @logo-height: 160px; + background: url("../img/login-logo.svg") no-repeat scroll 0 0 rgba(0, 0, 0, 0); + background-size: contain; + background-position: center; position: relative; - top: -@logo-height + @login-indent; + top: -@logo-height; width: @logo-width; height: @logo-height; - margin: 0 auto -(@logo-height - 40px) auto; + margin: 0 auto -(@logo-height - 20px) auto; } .fields-box { overflow: hidden; @@ -2702,7 +2643,7 @@ input[type=range] { background-color: @base-node-color; text-decoration: none; .name { - color: @blue; + color: @link-color; } } .name { @@ -2765,14 +2706,12 @@ input[type=range] { text-decoration: none; background: url(../img/icons/new-environment.svg) no-repeat center 20px; text-align: center; - color: @blue; text-decoration: none; box-sizing: border-box; .font-bold; &:hover { background: @white url(../img/icons/new-environment.svg) no-repeat center 20px; text-decoration: none; - color: @blue; } span { display: block; @@ -2801,7 +2740,7 @@ input[type=range] { float: left; box-sizing: border-box; - @support-icon-background-color: #4e85aa; + @support-icon-background-color: @navbar-color; background: @support-icon-background-color; .support-icon-sprite-index(@index) { background: @support-icon-background-color url(../img/icons/support-images.svg) no-repeat 0 -120px * @index; @@ -4048,7 +3987,7 @@ input[type=range] { .btn-link { text-decoration: none; cursor: default; - color: #337ab7; + color: @link-color; } } .node-group-renaming { @@ -4341,7 +4280,7 @@ input[type=range] { } .cluster-information { - background-color: rgb(231, 240, 242); + background-color: @base-light-color; width: @page-width; margin: 0 0 @dashboard-offset -@dashboard-offset * 2; padding: @dashboard-offset @dashboard-offset * 2; diff --git a/static/views/login_page.js b/static/views/login_page.js index c4451aa3c..669482596 100644 --- a/static/views/login_page.js +++ b/static/views/login_page.js @@ -31,7 +31,7 @@ var LoginPage = React.createClass({
-
+
diff --git a/webpack.config.js b/webpack.config.js index de04e321f..e937884c7 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -31,7 +31,7 @@ module.exports = { {test: /\.html$/, loader: 'raw'}, {test: /\.json$/, loader: 'json'}, {test: /\.jison$/, loader: 'jison'}, - {test: /\.(gif|png)$/, loader: 'file'}, + {test: /\.(gif|png|jpg)$/, loader: 'file'}, {test: /\.(woff|woff2|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/, loader: 'file'} ] },