From 9d07d4ca88972c33b15b0c27b6cd912d88c64502 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Tue, 6 Jan 2026 09:11:35 +0000 Subject: [PATCH] fix(elements/applauncher): add eco app launcher components, wifi/sound/battery menus, demos and new eco-screensaver; replace dees-screensaver (breaking API change) --- .../applauncher-battery-menu-fixed.png | Bin 0 -> 35709 bytes .../applauncher-battery-menu-open.png | Bin 0 -> 27667 bytes .playwright-mcp/applauncher-initial.png | Bin 0 -> 25233 bytes .../applauncher-wifi-menu-open.png | Bin 0 -> 40657 bytes .playwright-mcp/eco-applauncher-bright.png | Bin 0 -> 25536 bytes .playwright-mcp/eco-applauncher-dark.png | Bin 0 -> 25298 bytes .playwright-mcp/eco-batterymenu-bright.png | Bin 0 -> 16903 bytes .playwright-mcp/eco-batterymenu-dark.png | Bin 0 -> 18034 bytes .playwright-mcp/eco-soundmenu-dark.png | Bin 0 -> 17483 bytes .playwright-mcp/eco-wifimenu-bright.png | Bin 0 -> 20216 bytes .playwright-mcp/eco-wifimenu-dark.png | Bin 0 -> 21176 bytes changelog.md | 9 + ts_web/00_commitinfo_data.ts | 2 +- .../eco-applauncher-batterymenu.demo.ts | 24 + .../eco-applauncher-batterymenu.ts | 346 +++++++ .../eco-applauncher-batterymenu/index.ts | 1 + .../eco-applauncher-soundmenu.demo.ts | 33 + .../eco-applauncher-soundmenu.ts | 427 ++++++++ .../eco-applauncher-soundmenu/index.ts | 1 + .../eco-applauncher-wifimenu.demo.ts | 33 + .../eco-applauncher-wifimenu.ts | 355 +++++++ .../eco-applauncher-wifimenu/index.ts | 1 + .../eco-applauncher/eco-applauncher.demo.ts | 71 ++ .../eco-applauncher/eco-applauncher.ts | 955 ++++++++++++++++++ .../eco-applauncher/index.ts | 1 + ts_web/elements/00group-applauncher/index.ts | 5 + ts_web/elements/00zindex.ts | 2 +- ts_web/elements/dees-screensaver/index.ts | 1 - .../eco-screensaver/eco-screensaver.demo.ts | 18 + .../eco-screensaver.ts} | 176 +++- ts_web/elements/eco-screensaver/index.ts | 1 + ts_web/elements/index.ts | 5 +- 32 files changed, 2424 insertions(+), 43 deletions(-) create mode 100644 .playwright-mcp/applauncher-battery-menu-fixed.png create mode 100644 .playwright-mcp/applauncher-battery-menu-open.png create mode 100644 .playwright-mcp/applauncher-initial.png create mode 100644 .playwright-mcp/applauncher-wifi-menu-open.png create mode 100644 .playwright-mcp/eco-applauncher-bright.png create mode 100644 .playwright-mcp/eco-applauncher-dark.png create mode 100644 .playwright-mcp/eco-batterymenu-bright.png create mode 100644 .playwright-mcp/eco-batterymenu-dark.png create mode 100644 .playwright-mcp/eco-soundmenu-dark.png create mode 100644 .playwright-mcp/eco-wifimenu-bright.png create mode 100644 .playwright-mcp/eco-wifimenu-dark.png create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher-batterymenu/eco-applauncher-batterymenu.demo.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher-batterymenu/eco-applauncher-batterymenu.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher-batterymenu/index.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/eco-applauncher-soundmenu.demo.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/eco-applauncher-soundmenu.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/index.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/eco-applauncher-wifimenu.demo.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/eco-applauncher-wifimenu.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/index.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.demo.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.ts create mode 100644 ts_web/elements/00group-applauncher/eco-applauncher/index.ts create mode 100644 ts_web/elements/00group-applauncher/index.ts delete mode 100644 ts_web/elements/dees-screensaver/index.ts create mode 100644 ts_web/elements/eco-screensaver/eco-screensaver.demo.ts rename ts_web/elements/{dees-screensaver/dees-screensaver.ts => eco-screensaver/eco-screensaver.ts} (70%) create mode 100644 ts_web/elements/eco-screensaver/index.ts diff --git a/.playwright-mcp/applauncher-battery-menu-fixed.png b/.playwright-mcp/applauncher-battery-menu-fixed.png new file mode 100644 index 0000000000000000000000000000000000000000..e95988bc3dbb171633105fe50e6aa3ed8ffa2f87 GIT binary patch literal 35709 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 literal 0 HcmV?d00001 diff --git a/.playwright-mcp/applauncher-battery-menu-open.png b/.playwright-mcp/applauncher-battery-menu-open.png new file mode 100644 index 0000000000000000000000000000000000000000..a2ec45bc43eabdf0660bf3e0766a123af7c5880e GIT binary patch literal 27667 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 UpJral15F?b@=9_AGKPNt2M6KlVE_OC literal 0 HcmV?d00001 diff --git a/.playwright-mcp/applauncher-initial.png b/.playwright-mcp/applauncher-initial.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc0bbb13a8bc0d0ac11ed38dcf09a84bdd6a9d0 GIT binary patch literal 25233 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®b&C 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 JAoJ?oe*h@Jf{6eC literal 0 HcmV?d00001 diff --git a/.playwright-mcp/eco-applauncher-dark.png b/.playwright-mcp/eco-applauncher-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..89c97e9f095b030ca9f1a90cb59ed23195a20a3f GIT binary patch literal 25298 zcmeFZWmsL!w&zQPB)A5bu+X4Ef=dD8C$U)?&_8vuf5HqiXzrWB7lR5ko^JLPkJ9K$8#`l|w*ygo=Rh zVDH&O@C{#_IRqRY*vN?qBNX(LY#|`LK#&l9tKgWhJLjUIV0ZcSz`!S#9raacuOV+L z8hvVkV^>?i(=E{o?S=ny}sp^^b+&>#C@CyuhXh`?y}T(Y~Xj@a9!7Uu4eY?0l1Yv7BAPB z!4csPF$LBA7vgWk@9#A9Yv^Nec=3P&2^`)$6vhUJuaCW`zySg2nZ*488#CrU>avJ9;v5KF7;nduoOp* zsC_)Z3axt@L&h@F=JIvxknLYTxVE@*Qn9*?ll_PP{kQA5dJRP6-n{ubOYIoEwJh-G z#4(n6{*iP@^uPN+yxv0Lzm)Qyv}gYr8L>q~r^XTEm4Ieuz&XOmir&9|xbT7R{<(kG z%%A+*i&)t3vJ77?cg)|vF(i-!YbZqM_F~E)nJ;n78Xpmx*8w(~t1KPQX|}xl1Z!x% z{>mM`7Tw|-@FO5#jTsH$mlGPjp(VVyZpSoh*}kd{fvnn92^`71Tt!DxA#3GDC8tJ}<(C#8kMS!dx#7)kkFFeGvq%)#te9bOi%m~E2!i%V(8V<81tFjp zW()J&`n@;g?o|@7;jey%lSM9MPOBIs4r@P1Wem#IZg#Y)Mz$1k$DVv&TJj|)Vqd>K z-MMQpnIMDzKs?ZVuT$%df)Ba}y~+m-ox@0v+leh|=gfH|zwc~M9XmM8TKOswi;EJW ziHXvTkal(H>@bbjlz;Q%mSJ+wEh*W~N_M|Io7vaRnVzAbdi}OgQ=pBM%Va$7c_FIR z`P_Gx({2CIRkZdHaxQS2%j0SJ>OumpRhHv<_g;7^8ER8Yy5{3r+*$vXbaObSB%fC=S=KaG}eDG z-Tf7Yef5<5T56nViA%pf;S1+^?)m2svN@NNP3CG>6&01a>xg8nB3Jki{eqto&m<kF{%%znVPbq;?0FlaZJ>7C0AVE4XnZCmHi(m3WbE4 zg2HG556jqm*?tFkK%18>{Ag{zfe#{hu~#W3DFq+=2z9=!V>jp*egFPP2p>r>{1|^3 zVF}M>0=j;<(t-8K9CkOJ2ag}w;)sVB9d2b+j3IPAm@S`$jEvqb@XW*NYeZALJ z^UYw2hKF|~33&(#xc$87)Vixl*Xcn2^a+X?R^Tm#AYQdsF{9rnneU>$B9jOiGme}y z*DCt_We+Rh_3PJLTLH|Pb*)w!X2RGO>(@s;rQq4G{+`=^{PgJ^d_dNJCbZQ{RFqOI z7;|CSVZXt8bSPSDJt8U!duZPy`GtEgwEnVQ%N_3R2j;NkYybw+V&~8Oi9EQvnG7<9 z1+~MwK@QN2R1_lvBcpL|^Z8tKOz5jRc)*bZZ(^_?uud9#ltR~*Wi>UIzT}J(%&xnW zhuho60c$FIl$dT*PW&`BYeCtG{=wKmrF z(b3Tp&?7J>z{nGj3yG$DB;mEa7|k95wvI>Vz2wJ_A6>68cRP$8=yc4Jk#poH6m*13_ZKMbJ_x;w`?hv&+H`B^6i&feP=4U=A8@{ zc6aY8OuxM`nJBorSYZld-#J)nj))+Pu?_MHrAm>CW{78QtACXxlPGAnU3S5g&v|fr z6%K(+2ZR{tnK7}jEL51e?Af3oqpRc#*=-Hqzr8zmkE>oQ(2v!hqf@5lt5=S}76OA| zL_|3_E}tBhJUzdIKKS@-*Vt~kUSA+Vc&(N@%w{S=$OMcp4!!^f(XQIZ^n|DD>4EFi zPs#b6%ZvnE&H}(M zJ#XZQzd|FK^f+8@1e349o-lkX_-t7(VG-!}j1p^1lOJ(gSUjxA?aDyJXO)T5&#sc3hB zW`#lw+SF+Rg`PEQ)qJ7T%^_&v#Dt(>MVROJy;HRe6 zpptOEsbl^_8FKx$5W|6+BmkeKbY{;wq~+Y-R}}nK1FZawbS9r)=bE*a%eTTSv~bsd-9k>&-rDLH;>TwtlfMC|zgg-7Xs3iP?VR3Pnb&d)adu!U~us$hi zX}`e01U{}l^Gb$D$-~icosQs%`QN%=ZDYTKmp|c~l__|B)N@=YU{7G4KRnzcI$E)} z2ig_cdvfn}-oJb2Kf#n&dHo233Tr5q-N3jp<0IX4MLqOrxp~kvG!)@0(&QY?mx}|J zwtD@-`U*Mz@(;6-XWO|9ZF^|W^_tS+cs)bU8I;Bfl327FuBS~3!P3TCm{q&Az68CQ zg@n&uqfRYsXtLm}DV$c;|0zARwysMz2l{3-MZ`-o0|GIXFlH4ONBDzmDiQW#zOqxB zhaRS#t0*VOW}#U#HM?I>ds#hqayqd}#5w^FCvPRDL( zlN=deym&$JMRbp>(xUMu%1>BCq>UJ3f_XMuKHc$W7x=E=?Cs$bnz6AlL_|dEz(4yh zC>|h)6j4ifI$ErPH|BI_LYY55bd$HIRp5>TCn+hK71hh&v zd474kVY*b;&vNG`Ef~1XEy7-HNdNG*FPLMUhXE2n`yke8Cq<*>#&+F9S}U8waH%In?Xhi zSYFoNuQu2m&!1_PM+aLeAGBJrI?L}DqCxN3?Y5Ksf9K?EFWlXV!>le);`j1;*68WD z4=#5sz-WAp77-7#JY3Gu>xmkOWtXa3^RBXj07IOsl)v8p!DT%*V)_&|TWupOVh0?o zLH{JLeVuiom~TrlumRxVGw!^&Zd>b#UT{0FHyX*TFgJ@~Tg$#5zM2~6j^ISFHmO{g z*Pkr9xVt?^fk=uIFl+j|Z1l7Ei{~rJ#vY|RqFmmeeZTy(x(EPP?qEVR{7i&Gb z#eyJ%lCGnDVa&mS0k zkv0dM!`tI%7OjGMJcP2MzIY+9BLYh@;P{y}xbKASrfQ5v8u#l;Wj}r#L}B44$He?K z_M}Fm;6pqct+eB2!_|Al$B!|G#K_I2O4fv|C(xBic#dxFJytkcp;&^+;B1BY4F@wb zCx^mBh1txsy0go#vWUBrkpXifqZcVTIg;17OH(6lvRB;9^4MVS=6bc~0B(_h+wu|&cA*Bx!(rfdzO7Uh>yTINH;5)}0PkR8(cON09Y$RU!Y)?P zo0q2^3*{yuvx+Sii^8ay%gx>>@>!WD+hgnyh;Rbihqb?#<0=>VjxjGd7~=chi_X=& z13S^xOtLL3JUkj0!E>$0+i%55c3cP>Uo>AK(+e67{p$zq&Z(Fa6e$o*uu=zG0emeJDq+>c=6Q3_CVQY_Dn@LV4YM<>r+R*=^&+1hjyLP;j_jinLT~Sr_Ic~Zl zeZ2s>k}{u^WIual{wbbyZ8mtda`k?xf~Z0=S3q{`+J0YiuQm!Fdk@RFDu|GQUMfaX z($R^heC&kw*o}>jg59b^wd5M) zC?xg127<8&`W8#g(ug8a&Ov1MF;po-j-k+aoE!vmG?=5o`js~^GBQ%o73+Nc>;1$5 z;mnMJHY*Jq0~(GUeGpP@_7J%bC%<`ArzcAb{`ji=_J32*8KW)TY^G8BF|7k3f?ywq z(?~;km$PhA4spHxo!HAvb**rZ<>lyASb{}nya_T#yn2Nso6Ky{-Hn9dz9M}!iXo52 z$#)w$+V*x)qRyrnv#4eaHqFaU>zlPcqZuWFD2(`GsnE;es2lSq%2Z_vhwdHxE*sOj z-!CklT9mGvX;c~Ne2SgbdkgkWq*Z54%XSzcs&*$zb*>V(HC%a0w@P)m97%#sdmbAx zJN%)IhLf{-k-6U5gaJof?Qg^7X=r100-vBAa+-XZUmwe5J0zQ2zNVqF`o3QGdL*II z@x8V^)&L=;POtu4UtN-bhsk<=E;?QG5I$H^I?c|byZWwvA~#4C9G17y&d6x#r-kJCCc?k64o`>VX543L zC<=p3zqhA!vgwq_*$}kLixu&tmYQ2L~U!g|q8~_@lL{&V&XXZ$Xz*OdJcgk3*@4HUW_E zkzulcpm7_|xv)~_!{)p+Pxob?y)>J4X%!1fX8W$QN?$en`E$|C#HtjAh8R`0m4

Sa#dHYH~^Sn2hB=8G$}a!1F)+S1NqN=zE;N#77JdahR(SIga@bO%SP50U77 z0a@`Y%XmqdcB;#A>6)f!b81&`Ub@}4#%gn3K3SN#2Jd5)s7MvAWqoOPo9^|NmBww3 zv~uXB1vBwW(*$1QKVKuwBk)6F5|~6dQ%s5PX6b?Ra{o%V(RY4diFP!pFgma zvYNDevFgBx8`Z=mSx&HRx`x8_G z!P{7eV@b6m{H9b)8&{$Fo8N2OERqJCCY*wN`n_&C>#&j5tole}dNpqQ18^Jcd8|ej z{r+eaE}9K}xcJ1vqCwphJ$iyl#J~H~J3b#B zG903EHZCo{l=}1u22tq6^@fj_aynXlN&P1rQexFt=OGvnin-8LFYGZhjn_Y!?QL!Q z^I9K>v=>%%WHnaX*9e+yyFGd$RPqyhI1?j`yG9ttEVy5b!@W7CwV1GNoyUl>z_uf* z^eFaI3uyJaLy_}%S5LmCV)N_GlwD?^)$H-hpKx~Ur)UJP3@0yCcaV!)$|SUx`*?RY zV#AUXd79!94|SKnzI_C9vrg0596os(bQ)!N;3jSS#O{M?@r(WnXUOnU9Efl}}#4G8iK-G?f@%%ja;HR4yUB-mC~$F3nD(v$1QavJj-=bfR0!Q;Rjg z7cW|4)Jn|qCpTE{jElAi31+v^Wjjx;vr{)?EoLQo*U@f>e0+om!S)+@C)Pn=C)zxf z3dwzw9wHn3yo60@uM|bpb?7p()~jkr-wL`{w3atx+;ZkmY+@)pW|VNTc11X)^zE^U zk`l!hBk@9KF;XjeUv~|g@3sx@M&7~~N(lW-yiSUEslT5%UH2{BfEo=Z(l}`@r@FL0 zdoXXk5s^r9e06oLjg7;`I!uL##qG_(X=Y#xMQHydLwov)co8{M$+CD{=Ax}LY2;*v zGV0lNzAD_n39=lbU(jFC(b|4p!GqQiBGLD2bLfz!r#+CA^P3-wNz3&iXMO(LY!t`0`Hn9L=zt_A$ zX3@dV_G);7!xEf4)D%TUMIUNGJ|?sZPsFpGONU$24zT+Wg$1_knKuQ~W zJl`*0rYTER93qE*^V!(A1m1m%nfO*deF$?5zQ=hXNW=P_yT0i~0#gC>yK25Y+uVV{ zSbUFQZ?do)Q-o;dBhCS*l|2XcNhj_0B>rM4 zmhaPKie?-k6hZ^3P8?stnsocR)*mUw{DTG9U-(z4&B6x^c#68uN0S0 zSXc1!#FL>3cM8GztzUYQSl5Ft)vJr4sfS+c@gFC?B*Y|iX zNqfcJWL|nx6Bacap<6p2ky6T&tG|{98MgZ%?!qK+v(=$A7oryyL~B;rezHO_xV~7 z5@M{A>u!XRz5v#iPL^zN{ZSUawhRH54k`uYTjim9Si3+I6n@aMl@=bhf?C&Sy*H$; z$D`_m8_hPCN4p$&$ez{8duHB`@8>tr!@x;H-7$H#en_>t&%}2BH_B0~1Nz8d`ecD~ zFjyo|*IlfCzPtX;54AS#enBZFn$S;xLr!iZzwzcWZAa$!dg{oQU!|Wqj@=Cnt(cUV zr>DME{Y#xdQY*b4GK0{j;&$mcMwrA1EkEa|<7wi#k5CW!MPC$EllcVI2i3E( zuHPe}Y3WsT7E7gsJbI!EW!qEu@F{sE*SJiuwlRyUJ4JE8{Q26(&3?A`!&UOSSKT}R z0fU>fp7$CoqMce7vpFY-QkDBS1Li%&0{Ik>;muy05xJ2--r&dcad)s;#mPXbcOwj^ z0gtk6*MueD49V&-OvNY(14&#hp_~R=9anYb{X2R!8e%lH|z+If1RDp&b3NpM|E(voZ4rxs&z$~LeYFm zqhM3)8d}V%-|u7Ab%vcJ6tAUgb+OU`jh)QMLN)M9=BG8w=B{USBDAq0^`$8>OT5eq z>v|b3KOaY6G|253|60gpZrk-+w~~P_OXBU)nZy~k?_8Xg!fuuRqanLEYd10F#;VTH zhShK;SEPZNqhrS6WmttL@g1Yk-~0b2Axlan*Pn9t>o%1gub8h<-eY|`9HeFx6}>~N{~=T0ZUY_mj99N9RP?llogfv80hIqgS+)_tOTF* zX+Hx*Q4r0?e5G8l7ncMF^-NXs%AT#fg1o%nIl`rJ2<%dL$oZTqFe0@G;grEG;qTw= zBr}BD+5XzA6Anbz%$XDR99aL2wb0@I`1NZs6f;qhdSgSEBbW76>FSy?g#;EhcHW5h zYX<}i{^*{z@?-&u4vB z(G28Q1k;8bMEj^}x18~h>EYd9V{%!e_U#fOr^qnvkFeD^1hCdsE@mXU|r+Dz-0nvxgdV1cCd$4@5 zl#fKHW-5kJc=u5fKjD;52caUJkuBj^lO(z9(JkTon9@H;BM{H3!_>Jkzz{_6?cREXXGDzO7Zf=i#ITA{tnwivd_+S()jxiGCO+y-3PSerO?)c!T%&=$oIdwkN(E{Je3!4i4YKUaWOGpS?dZbC`1o_Ok92V<;xceil(RNB-15p;UF+t>GQD+Fl`90EoW zv5BVgoS&fYE;Kee-CirlWznruP)U5Gk94~_3-k2rg8xAOmWrkX(*`1vc`-79b=y*^OFnC3xu&M%cZdH?rwDje2#CD8QVi? zwOzJiKuZPE0MM*b5*+`bGdV^~l7{2&M-q5HpwlP!K#Gi+7IATw9p<&Yx74J|5ty+6C ze>!gNO?^#K4MIN_L?+p6)EBAb9@mFJ`84beo4Be&>|F!DkQttKw&k% zkN~$sfHmX}kgI#@OHfWu8v_ju4H=n;|KhH~;!Xqh@Md(ne8+yjUokgB`OxzPiI970 zTYxsuh}`g5G)-qJn6Tcxvs0}wJv`e>Hk*!k`K%c&xzlRa3u#3xm?Y&Rov~I9ddgxt9+wEGlQ1eA4f39Sp3B%f&)qc3f(x*Wu zYdJYpJ7PnyfMV?qK}JUp4hRr%KKVU%89uAWh5!^xAR8+cx?2E<#}_SNV&`-~=njyS zC<|^5djKKaW+Egby9K7<1U4t-x^l4`kPt*HMDUuv7)%A-9MZ37fC@4MqoTbmo;4C1 z!!75U4ttodHiw62KLdcU1E&^ZU48dm>uNw`y?6%ZmjA`CnLR=KU6uMEyk)xw3H`>g z^oY*ahg|^W!bNTaPaZsufb;KxkV?iq@R59;km@~tI!E&$?MWe$G;Fh9jlpNj4G zY7!El03DOZ!osR|Iae!&P_iGd$O_#^*GZ31#kNKOk@%+KEawF zOcq%z+yYS$-1HoZM#2&5AIbhJF0tK82dO4Bo&im4&_zie0)KXDhP(+Sy zU;q zkLQe;71pr<+k@8wWkFyUyuApY&UceBI1Qur$iEo}&Z!738*oeJy=&HHbC*V%^UAXP ztkpo;CFQkMDTbt-)jq`_Q>(R4oYVB+B5}+DQ~)(?h|xlW09GQe9g(tl*e6BBF`?Vy zL-M;xmGie5asVIu5fcj3d~_0SZue^uHM7OtDHc+pVD*kpqh>E(SgnP^o3AHpTPDWF zK%l){@{L!kWB#h|6*{V7U+V@`U45HIF*10XBUuOhnA+p+O6ceqWtAC?h=KL++~aa2 zeVQdLt+rbYeKbpfKH0^*#u2OTo}dJ_#-X!93##re0emwug5MX*&Ok-=IGQ|sXt}LNt-L1x8zQsj z$${FoWsktgN9&z&A3%I^nqC;}&)554kkcedID=^`A(8eJIQVKCTCeo>H{!-@S*4c% z9$YJU=suSDVP~pT3%AhxohTT+Zb|>z*7&}gQRB!F)tl|y!T|h+%kA8oo$-9I2nM#m z_%LUQ3lKwPMgxAd^ja?RFLF<_PEOvT;Ah$-)Km-&Huon1Zf#e!I``{)r_-_L&{})o z>}9W2=;mGCXxJnQc_jJe6+!BY^Jw48i)w{h|p%7AFAkF#u3}zUZU=Dka6D zwywWOQ%LL`p03cA3lYTcqOhwBKWD9hKu@x10TEivOE8bKsXGF`H>qFHR#;#-vsGafr{(Xm8RpEpbtK4{up2x`) ztchmIP0j~Jx|Sa>12fMg4}W8aGYkZB1_vHXDCo1rVonmkb*eCY&c!8SYfPuKt#2S5%1?+bn?d;0iJVj^do=Kd7LH+OWhDOz57pZYeOUq0}eWD*w%DS zic%$|)6k^5zz8KpwOkL^T=w&8mqtWH>_n-Y6a*1Q%Yms45t@e-H0R{x==ZyR^J{Hk z#UN*vmWW-Nn(o5@UcS<9Ckv1^DJeC;G|cxpaex&xAjs{dq#hxG0idR#0izz*l#CX4wuJat(;&;2W{jyZ4@}LqSy5|%SW%6>F_IpHt-*0;gh-L=m2B-S^ z44EvP%EqX+0;mg_t0iiOm0if)*iK7Z*(ibMi{1I4fZ8(5_&r7}Z-82+OFzGxBOv7! z^_#iIG*BP@z?pj}d&u=n0y{y*0N}d-Q3ZT^klcUBmSLU~9|{9CJBjDG?cyQ@>@G|f z8ld&EWoTgQ!0U9RE7M=l6V1Y96KmN99<7w5B*?P?Ts+|GqP6;gt*>(0eu!kK#Qw>! zyeUW}P+)JyA+**j-g>?FWwn$c&)=KES=Um4PXP*SAzNN|@24)8f?78|zIx-ua!*M~ zynqd2pD{K^F3)EvpjwMFFs%u}sia`^zdjA-t$*G5m*l7auepw4yM5NxoBw3PM;w+Q z^Y%aAJ5GhJTE24qc?x(2(DhIMydMt7@TGd1Hlbl(JBRKo0;5-pXj%GvQYBP5vuAm+ zD@G^r-?rxtN8o4dYkPVu&ahKUK9}vrFWrCYSu1G9`M+$(|7AP=>)4KTb)NvOuv(jj zSU*4Q;fg&iR?qNSDnpgIsJHApaV2^S)9IMiJqQP+WR2gK@(aOYu;5El{qf*8kr{({ zk3Mb+B#S*k+s!|jU71gkXjMv-3g*>jA+Il)lt))w0%})e9c_(q@wHS9 zDeEa>l|%+VWS#6<&gQN#NV&^A&d<;aGpS;9FN=cKHNS;Yb?K+2bXh6iai2=8I3HGE zcLXJsv9Oo^nSVG2=MwV|;-aPAEOgBd0LrE*=YS>(lL;O`HL`E6W~UnOCJEzT3c7Wj zWNs*jK4KxD&7#>NE~esmRIsyJ?x95_%R?wjgHASiH}9)8tD-ASM9Sm9fseQagp{nDuHr4V11J=B=wXT@1sV)fP8{z9cqPyEYb<$3v{2c_PVHi9gH5=2uV z=5m6x(mOs-YNm{nC+O67`yqs=(6z0NWv-sRo*WAcpWSH7S9`+R!MzNU4ZVrly8NJa zd23&s4~8qIxb#H-*~6bN68aWmV)y+5gBvcLMsbrX?A2knkFF{UC4w4j*w&?yj7%yv zU^9&#=lvg~Xxh9mtq!*=f&<1|rSBX8o;S1LJV;khfc2C07GADyzrWCE;Q@o~#V2(< zK1paPae`VEz8s;tJtLl?9PY@ht1;Su-CUionX85qvB=1s{Qh(z!JZ|m&Xy_ID7f)E z5&!Y6>8Gro!0cUNxR#OoXu5Vo$n3I zRZzH<`BQGK6ZvK~oDTKh+z(grTE3C8)aL!n^C=UHHovg!IV0`6VF*J6ftRMZ>hhwA z?-K7JKM14K2WAqW27K5SQ~Vy+MQ>^0b=J9^{*Mmn-(1?XhpcHpA`|&jOr_;DC1=Sd+gs(n##u$umOnI#n ze_dD%q{PwYsL(bc#KJPteve*W;Ho?MwKn-8K}zOtqC&=vU7)|g`a1N%qxOcf%DITj zXqqkWgz5qF3hp0D!S(0!SpM=tB@!&}ThZdeq83%|4i@i83$jz`c65x&mk<5-T?+Mi zu;pmS_zHgg6iD5S;EE2y<&+_P{rOMmVXkTMR^bQE6tSSz*cBZ*50i=$iwz%!#CXT2 zrE7Vv`lChQ$L_2m`}kd^A__z&I4gHnpG#qHe$PHfC$ii>j*S~)P?D~@R8HM`ZqS{? z`bB!#FP^Y*LRh>eIBd7qRY$JGKfvwPw-T<63HbNYy`Em?5)@J00j+xXLP{F+84-27 zMlN=-@KDqBRN5fUb&KmdEWTb6^l!H9nyfUWVxBjKLy===ibHAPX=Xck4apYxevjvC zSja6_lST-zHGBHz5^KSGst~R>SEmSHUP0ek=iAJ;P_3IL`Q46`S zY|GPBMk&IdpL`rzST z+<|7tjHxnv?q`My`M^&eeO@*5+K7bgN*U6zb*3W^>s#WY%Z-x_)q3fyXbu-~CYrR*4!jSTaDe zgf&kkD3)3)VQtmWq}N9!-P+z>a2YSiJ+967(*E!SvYM_gTr{&Aq=6AN>6AD`Agu6S zw3U$ZRJU@E4o01H_PxMki=EHn$UpDK$p7kL#&1zA0g;@ zN^AcyoKVL=cjE3QEm~bc`5!ERSkQ~r4cwuVA*A;F*wY1X^Sa^cdA^v%7t00AJ>G@| zP-Q~e%&ZPIEoU~?jl4Iy2`9HvRN2eB)YP~-d2ViLUE=luEMjR|UmVmQ1s5b8uCmMa z_FV4O*2|<>P5uY~Fp9K9_%d3_*v5outWB1T+j86K_<~@sIwR-GAU6&$=K@w?s+5A} zKn7nc#lDxpQy0j>b*JKtSY;$VM)NlO#0|Fbb*K!Hgx@L!&+$9y*Zrg%j?a<~n84Lt zoAh@imc8s0FIZ};Dmaw5k>(8+r+Zm^D9XkA^trh-owI{tu=_CgaU|wwC)uZ_b;fw7 zZcnO1ZZ{c=AEa0&R42cG?yB}EQSLSX<4V0W7Bvlw}HoZMKdTrzIKQt`33T_esiK(fz!H-NV^xfk_f)qua& zuzz>-Lv6J6LyJBwE|F^$?E%f`SdNXpSzQ@AXPs*ta&eaSE$uMB ztjlIziglX132C%M!d4{tmArGA(hN%V8`~HLlF)t~0R@%c5t2SEv2z_UBLWl(8p0&`0+I_(T(o z^Ikamuc!d=f3zO`|65&+|9DgttnpvO0|{6uS21@C*;{TjPpIEc(XPBSHFbFDw<%z| zbp{y`5DcCE*TioGgwD=?Dx0x~83fpH$6ISvRUWMIhSOiFz`m9KkF_yu;zb3Jy&3UHFB5OTR6!D!o zzIBk|xiwcCJ?jllYXP(C4_WPv=S9fyuw1ptw@Z-GCHSRT1X^PY;AxML1j+XUHc#D7&cu(h240rJe) zorg$?yzgXUUJ24<8thSmDMU|i3^Hs%H1%lT!+?zEsQ%&tq7QD-d*9>Q96X ze=}3AjNM1AB6hPtK?^c>$Aqa_+3O>aw+{4Ypf!Q~#6-F5-Jvv>O7kI`jZ9L|{)=ZI zdjj+qFPh(@p>@laC}=M=HTAxL&Mz{r^c|3v{rEnPT!VE^7)b-my3bQ4&*M4O4yC3=c8qZwqB}Ra?nF&uXG=fT*stxaIbLN!>)y0TXk!6 zdSkADhNzUwlRFj{3omv|m$E+#J~%ko-6f@!O$w_uzPm^AHYba9!jQ7Zfm92!)_E-# zzk)>Zahmk$9X(Ja0`Dar0)mQXsO=-A9ohZ*N||d1Y3YHovS{PR`%$X484o%8!Qx8p(R3+}6PuBV{X!Ru-T9S z$&AEUiGprw(&EcB8EZYtptQ+PKTv?8=;B3(6-bf`$VxQfAW}tn3N9S@A~kHcb-LuR zAW#JqDroI{|BwV89rb$WJ`e^riGInzaCLh{4obPa6D`9hmyn26b7@MtzV-ya+xhAK z4V`85qB8pV^Jl4khL4ZWxLc8%iw-DYalWt+ns~D?{dCWs4~r*J=CB9kx7YJK%z4~9 zb9Iofe(m9MPClVffA`=TtxGku#dL)DSZyT^J@?Dj*PTJ^ycaHyqXNxSC$1wWF?!>5 z^&Ja;LHp{EBd4FgW}*^lq|d+~RdN66^lhrVkDQSM4_X9jgUIFTtHnN^!f8AT3QQ)?3#|3TUqaeoF@kc20lari~Wbm>t}ie z1k&vHyH3Leexx`5gs87kL|E4v{=FZ+KfZ7Md_l|iyd3=c2^)cgajwNegQ$YK`pl>A zlwy)V+qc^u-Llz`7RANIjflI9{`&PRj0p$y#GEORs(j5AHLTFW_prF3L6CBVbYo-T z2Ic@Jb&1E_Ee=g9C~hJ&r$WPFVr*UJBx2_1I9c?i<-YXI7s~fu?pOH*X&|Gg*$2Ho z#Lw7d3YLS9fWZGmSWZ1lR+<0c&rMU)@WSxLHT)RlLXxoxGe^$5>_|N#>vtHrytufy zybLD9;jz+A5XD~ApvImnHyk34j5M&{?c}ps*4@c}AMC1<5x2UlS6iQwF1nI=1l-7m zu(C8{~x9*_~D{ zxVwn^^}^ry0;Q3U1Ra8miYhI8XVUXXxO`eC+3gJOap%&XPYXs+0PFtdK`{)g<<;*P zg0DQ>yQj;^6NEf&p9HzNxwW)B7gc~l=Yn20gS=>T13NMg|0gO}~)FJ5pG|QWOD)p=DMj8Y*sq23+Ru z_J$O_!ykv%<8q6C-)icy2CtSk%7V3K#~%Gg|IKD|{i!8%ixJ{{HsxPj zEIT@0Qft2_=zOxUM;u6il_U3|X1{@=zYui0x;mN97Zuu^%Zu_?#ehScfHs!K1b#5r z3oA?w4JWItj+a{QW+Ge4HxwIdp}Tntn<>8UMc)MhI`Q&Mz24+}S1}P0VNn1m+Pc>l zhS?|cfQDGDZ&}bUjg`(6@%@nyGH=gRcsaM16l%NUsA%v2!4X3v+?Gq@=pKSL> z;NaC?Rolq^F5brPY$k3k=r<+eWP6ynIJB`d)bPq|nw050Q zO>SKpulHI|1fnzxNDQ5z^bQvcO$@z5=r!~XO7Tid1gX-i2%!a#4xvPl7P|D_iv$Ge zhB~i0->+HU%vv*(KUrDHIV91!F_vQ7sZ=D z^pAZAze@J%-q$K-g45bGLU!%HOk!DqaP_{P?!D4w<()WCJOFrn1D6jLqb-5#xSKak z`j_Eh%ZiC|T*_Kn__i-Rnb z8{9V^T_W3esv(hhfkQHi^CLa``xU;_Sv4w%g2F32w|!~#Dk8rCU1C(XxV?QT-Ks{| z$M@%aL9MrDBO1>9P-^$E8Gg@g>a1#gAbNGA+D66;>Dtu%OSnhhv%jcuGU z6MP$${rw+&z6R7gENvP17}dG8A?0L|t1co$B9T6Hy(}H*91RKvykCk2Fhn$r9k7r0 zBju%~F>5`m0zyK@4L<^_sxHFNsT+bLV`E3-eJzp~WMsxI9dj4AyvGKL{rvobTRw?z zQ5_%S++{m_`4icsakHoNs%{bxx zNPM$auA0Ag@T@`jSGsHZZ`Hc_pBR#*@Vj$!{-0lRfuDZY6TZ6oOQnpA^0!>zzfRn5 zxj>)aa)IA}>kR(efr;ulOzg(Ik*+}JCV<$WS?bv3((T8+={$}H2S0>QG*@)-S6Ljz zae+JesWV09JBe-f(Qj}M_?_VE!W~g-7{yX(9K_$~#cAr&L|pI|7Eob)L9=~L>B`%L zczI4(pED>#)|QX=je4(ixon6=`?|o3nuKe@ZPt8f^Edr_!tnPkG4^9{W&~Bmf_ipw+W9x9GW`YA|ADs`?fn(2JU@e}Rz^|X)p9My_-eSL=LbI z9ZDjRPh#`Oq^JF}fXUY1BkVCzZlQv#)}HIU_ep zP!viX(n>!3m%$;?Kwj!B=)nmkT_PhCdhTX;JfvZ>jbgP*+%kySt=V*B+8#e!Id^n! z6Da*!q)0NYshA6=+*D)=TL7-~drCAcv6AJAycEwn6un$d<+BgxxK{SJT2EjQ%`S!@ z`R-Wmm7w@CqrPrcIhe$;QG!zPIpx~T2cH>k==Nq%@ro^$O^8;zat*R6p|GSg(~UT$SM&=pReLA$OH_4GDZ;uzcA=afDr0ija``{K0Ew@^MmZE^3Hs8{0(e7SO;fts+&t#i;DNCMQ0zF2gq8YbAZqVAB9 z`KT&_i*zjRbj9;!tK~+F*u!;-`#7WSw?zwZYFQ2<;R2i-Duq)YCFWevDE@-EDf8&| zb|rLY;ThP(-WrWMb6N|PEi&TRo|lEB2Au5rJyHfJLrurnPD_7uQhp9SX1P%t$*<7L zfY*z+(P)jdS5d;UvaN}i7+!!HLwb`kZM5>uVJ)uL$u$Ea-;ao?nA9p;G_+E?wqMrw zy;879)GF%D=_9o)J5*TJ%iO)q#s-e0fB&2{@fupB!q^!W1>7Fg2d>_iX4-t7+oXR` z`;!3sK!5g98{d-7$k|~2Xw}L{eK9(E! z^P8tFLiniNWttn7L|sgiM^6_u!Fa9_?#16xm7ssCfgGDG7`pI%IgXP(mx#d5^KLV={@8_G!>@h;QyA^X5O~gyY6nf>Lif?1d(@)~x zM%IauE+anM@tOFp=jtZV7~`DE)Yu`Trcc~qko$s?GOV`xEK~}t{pu)GQdZJ1flt${ zDML|=M@95`E0rsDq{aLupv;=qU;{zx6}LZB3%z?VxhnHoc@h+-#yn(~UL)svjMb$r zcV;P_sL^Ys>PWen0`0y<^K_4YqMe06;?a|L++e+0yz)Bd+txR4QDX*VR_c>V(ezc=IN z0sQ`z$w&uOfr66Kp5&~{9v^s(|NeZS#x*(Qw$Tu=iFPP<*$i{{S(%BrVwbAN_0psnjlJnyy6)xURU^)`#)P7YINs)d?dKE1jGh>p_7M9I6q z%M1CjKp0|`3;y$9ufha7$~4~OYtm)~-VOJ0Trwh6Ss%kIbnQ1`5S>0anrTtNt9xuh z|3b{34ZM4AH?Pv}a5Dlia#)g1JP4(@cbtgt!Jm1_-~-MK9%u3{g#fyOR!3Wncvooz zWdYy|$idX@ieevGX}D&+LPE81EuLKbBl0B(aaND6E@4b(P}}0){}dmlz5hC-y&X_! zlg<_LhQp3S6Koaq2SFourrwP-3DOKxxYKS)i;bYQ9kQ@q(J%cbEmYy7U71yFYqr@S zdq|X(o6LZsLC0PrwH%_Ow~l<=B}5=0VPT#;%%XtE2Ox>b&atlQ$IS5rIhw{BaJ7QA z0ipglRyBZyWu<@Bm&xCP4P2f|S)x~7F*z|XYsv;D@@vFXX&rC9_NP<8aA%&v^xLJl zNM|yFaLgQTTKl@){HIIaGoFcR>}irOt>r>wK8OP4X%z;-`B({l_f?O^^Hv~|MYt;h z8%z6#SYEfuh0=&- zNh{f&_R7X+gJe-Bz&A#lP*i@Q3wEM6D#Q2WX!X}pK577<&+|bObx`78=jsY;Z3R? z3iig^+7#T}+!P}HYONeK2KRvAMa#&~a{nvp`t6LKuH#QER{>hLwmoOI;gD!ktkV&U zOb8AoCw!{5>sa3{_kdD#Pt1SZ?0mwYnY98@-!XgcdmP(~-d0zs20k?Ut&sZSbQ~?EK^HWEwqVXnKYsjVOA9mgG5AzR~FphGzW#0NGv(wT&A?? zm^~A>M@~48=h#Dc?0|esA*^! z?@LMKSoyvLq#0Wec7do#E&?XHr<7bQo9E67v3r)$yln<5`0 zJ^y07^r>G%-A%~U$Y2!{CERp!+<7cHaW#F<{*d_DaIBPIuu~I(Ma=z>>+^SC?IZ&u z2i6=%ufpLcC#Sr0-cHbO!mg7+G=@i`QEA84$0kEV#+ro7&URHmb+Hbo!W__NA$|Hi z2#>#*Z^m!uTlx4Tt--Vb>u8ts;~@9N*^WiXhE~h#VP9PZZxK!HkS|(Og$P?@(|PUr zxUTrnowd=vK*L@Tb#mn-CwXcth{X&QT>fLZl?wb`Z<@!5n)m&VdNb}6d^<+FQI{)1 zCBk8dXe8650!pNR26-D!Dfo>vZR&n7F%e`%n>sf=L2>=5Lc#!B4QA$N5h%RG?~l#EqQR- zcx!0y`0)q7(LFcmvBZht;nwk$??9k_N$Pl9j2wxz}2IH&%@k7Q7+)0FDne|2_X>GRFisRe6!3Y+Otb= zPsy0Z!_9x5(g;{uD%Nk*Y*N66SxN$T^e6?Zy zz=tR)1C4Au2Zx5WjF+gdVN8Y23(Ww2g_p@Us^mdA#$!`5`a|KFpvh+GZqYcIyfM2G zUxvN0b%?6UTTcw6@8cfD$hi6vtHc9-Ax@`cm4{&Ekvgv-%NASh{f7%lEGFv*9S6rt zDOf$%EWR>drZFVPq$U`Zkx0wM(a-hu2V-5|-hBO(6LWXe2;B)G^V*F`1E-QBJR7kr znyfp9cm;gHOig(;iDD!n{O}bsb)k}5VP}c0zun%6{Y-<*ZOCm6V!XPm5~HHEP2{ z*n6?6PGZA6p~{Fh)~W5xUf2szvjZX4yC|FhyNp+pAWH)Ll~AEE7q&gjk9jm z0w+O|BQO{s3G{*^8#V$IN#FLa zl6{a^*r)IKhq~=%M6#KYFK%+OA?_WA`BUGJ_$wT@*H}Z6cGnz{M`UD5Sk8z_2JtGK zy>OrQ=14;VgRpwFmE*>0n$T0h0BG50wfA^kXt%7!QU6aSEDDEki@>ILD*-D5q>^^5 ztPEzW4v}!LP|VCCP?)gIJvqA|Rdm!?u{>E5T5&SUGdYGH`~l!C@S^$x^xia>HgE7v zd=wgkgamg2da*$7EW+z2A{IGd;n<`yH5SlSa)&AmxuXiPi=y|bWQ2eS%-Yqsp}R~d z7VZyK0n?H@U~`}8MmIS)8h1M+i8#FBbd8Qi!f9CUtrkyf4D!r%f|g_*a1q%XIxZ`J zDU8>S!`g5+XFR+0i;5T@Ok_kU4kvrRsLUH<@(zgZX2MOBrem}sZ&B)cEL1@Z&O02B zd_IR#_DMC{{x4L@|L8gXCwa4UafwJHD%|$*9gzD2wpLCB KRw8Tq`ab~p8zO=L literal 0 HcmV?d00001 diff --git a/.playwright-mcp/eco-batterymenu-bright.png b/.playwright-mcp/eco-batterymenu-bright.png new file mode 100644 index 0000000000000000000000000000000000000000..269282e6ade86fe9111a5862ee965d496bd6c3f9 GIT binary patch literal 16903 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 literal 0 HcmV?d00001 diff --git a/.playwright-mcp/eco-soundmenu-dark.png b/.playwright-mcp/eco-soundmenu-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6643295ec76bf044796a0f93eb3ed8e558e64155 GIT binary patch literal 17483 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
57SAdd7H8_l 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 M#N;7mB7cAVZ-8SqXaE2J literal 0 HcmV?d00001 diff --git a/.playwright-mcp/eco-wifimenu-bright.png b/.playwright-mcp/eco-wifimenu-bright.png new file mode 100644 index 0000000000000000000000000000000000000000..62f2e6d06769d2f670fc5516c01ee3fead90b64f GIT binary patch literal 20216 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 html` + +
+ console.log('Battery saver:', e.detail)} + @settings-click=${() => console.log('Settings clicked')} + > +
+`; diff --git a/ts_web/elements/00group-applauncher/eco-applauncher-batterymenu/eco-applauncher-batterymenu.ts b/ts_web/elements/00group-applauncher/eco-applauncher-batterymenu/eco-applauncher-batterymenu.ts new file mode 100644 index 0000000..3aa74c3 --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher-batterymenu/eco-applauncher-batterymenu.ts @@ -0,0 +1,346 @@ +import { + customElement, + DeesElement, + type TemplateResult, + html, + property, + css, + cssManager, +} from '@design.estate/dees-element'; +import { DeesIcon } from '@design.estate/dees-catalog'; +import { demo } from './eco-applauncher-batterymenu.demo.js'; + +// Ensure dees-icon is registered +DeesIcon; + +declare global { + interface HTMLElementTagNameMap { + 'eco-applauncher-batterymenu': EcoApplauncherBatterymenu; + } +} + +@customElement('eco-applauncher-batterymenu') +export class EcoApplauncherBatterymenu extends DeesElement { + public static demo = demo; + public static demoGroup = 'App Launcher'; + + public static styles = [ + cssManager.defaultStyles, + css` + :host { + display: block; + position: relative; + } + + .menu-container { + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 10%)')}; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 20%)')}; + border-radius: 12px; + box-shadow: ${cssManager.bdTheme( + '0 8px 32px rgba(0, 0, 0, 0.15)', + '0 8px 32px rgba(0, 0, 0, 0.4)' + )}; + min-width: 280px; + overflow: hidden; + opacity: 0; + transform: scale(0.95) translateY(-8px); + transition: all 0.2s ease-out; + pointer-events: none; + } + + :host([open]) .menu-container { + opacity: 1; + transform: scale(1) translateY(0); + pointer-events: auto; + } + + .battery-display { + padding: 24px 16px; + display: flex; + flex-direction: column; + align-items: center; + gap: 12px; + } + + .battery-visual { + display: flex; + align-items: center; + gap: 8px; + } + + .battery-icon { + position: relative; + width: 80px; + height: 36px; + border: 2px solid ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 70%)')}; + border-radius: 6px; + overflow: hidden; + } + + .battery-icon::after { + content: ''; + position: absolute; + right: -6px; + top: 50%; + transform: translateY(-50%); + width: 4px; + height: 14px; + background: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 70%)')}; + border-radius: 0 2px 2px 0; + } + + .battery-fill { + height: 100%; + transition: width 0.3s ease, background 0.3s ease; + } + + .battery-fill.good { + background: hsl(142 71% 45%); + } + + .battery-fill.medium { + background: hsl(47 100% 50%); + } + + .battery-fill.low { + background: hsl(0 72% 51%); + } + + .battery-fill.charging { + background: linear-gradient( + 90deg, + hsl(142 71% 45%) 0%, + hsl(142 71% 55%) 50%, + hsl(142 71% 45%) 100% + ); + background-size: 200% 100%; + animation: charging-pulse 1.5s ease-in-out infinite; + } + + @keyframes charging-pulse { + 0% { background-position: 100% 0; } + 100% { background-position: -100% 0; } + } + + .charging-icon { + color: hsl(47 100% 50%); + } + + .battery-percentage { + font-size: 32px; + font-weight: 600; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 98%)')}; + } + + .battery-status { + font-size: 14px; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + display: flex; + align-items: center; + gap: 6px; + } + + .menu-divider { + height: 1px; + background: ${cssManager.bdTheme('hsl(0 0% 92%)', 'hsl(240 5% 15%)')}; + } + + .menu-option { + display: flex; + align-items: center; + justify-content: space-between; + padding: 14px 16px; + cursor: pointer; + transition: background 0.15s ease; + } + + .menu-option:hover { + background: ${cssManager.bdTheme('hsl(0 0% 96%)', 'hsl(240 5% 15%)')}; + } + + .option-label { + display: flex; + align-items: center; + gap: 10px; + font-size: 14px; + color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')}; + } + + .option-description { + font-size: 12px; + color: ${cssManager.bdTheme('hsl(0 0% 60%)', 'hsl(0 0% 50%)')}; + margin-top: 2px; + } + + .toggle-switch { + position: relative; + width: 44px; + height: 24px; + background: ${cssManager.bdTheme('hsl(0 0% 85%)', 'hsl(240 5% 25%)')}; + border-radius: 12px; + cursor: pointer; + transition: background 0.2s ease; + flex-shrink: 0; + } + + .toggle-switch.active { + background: hsl(217 91% 60%); + } + + .toggle-switch::after { + content: ''; + position: absolute; + top: 2px; + left: 2px; + width: 20px; + height: 20px; + background: white; + border-radius: 50%; + transition: transform 0.2s ease; + box-shadow: ${cssManager.bdTheme('0 1px 3px rgba(0,0,0,0.2)', 'none')}; + } + + .toggle-switch.active::after { + transform: translateX(20px); + } + + .menu-footer { + padding: 12px 16px; + border-top: 1px solid ${cssManager.bdTheme('hsl(0 0% 92%)', 'hsl(240 5% 15%)')}; + } + + .settings-link { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + color: hsl(217 91% 60%); + cursor: pointer; + transition: color 0.15s ease; + } + + .settings-link:hover { + color: hsl(217 91% 50%); + } + `, + ]; + + @property({ type: Boolean, reflect: true }) + accessor open = false; + + @property({ type: Number }) + accessor batteryLevel = 100; + + @property({ type: Boolean }) + accessor isCharging = false; + + @property({ type: Boolean }) + accessor batterySaverEnabled = false; + + @property({ type: String }) + accessor timeRemaining: string | null = null; + + private boundHandleClickOutside = this.handleClickOutside.bind(this); + + public render(): TemplateResult { + const fillClass = this.getFillClass(); + + return html` + + `; + } + + private getFillClass(): string { + if (this.batteryLevel > 50) return 'good'; + if (this.batteryLevel > 20) return 'medium'; + return 'low'; + } + + private handleBatterySaverToggle(): void { + this.batterySaverEnabled = !this.batterySaverEnabled; + this.dispatchEvent(new CustomEvent('battery-saver-toggle', { + detail: { enabled: this.batterySaverEnabled }, + bubbles: true, + composed: true, + })); + } + + private handleSettingsClick(): void { + this.dispatchEvent(new CustomEvent('settings-click', { + bubbles: true, + composed: true, + })); + } + + private handleClickOutside(e: MouseEvent): void { + if (this.open && !this.contains(e.target as Node)) { + this.open = false; + this.dispatchEvent(new CustomEvent('menu-close', { + bubbles: true, + composed: true, + })); + } + } + + async connectedCallback(): Promise { + await super.connectedCallback(); + setTimeout(() => { + document.addEventListener('click', this.boundHandleClickOutside); + }, 0); + } + + async disconnectedCallback(): Promise { + await super.disconnectedCallback(); + document.removeEventListener('click', this.boundHandleClickOutside); + } +} diff --git a/ts_web/elements/00group-applauncher/eco-applauncher-batterymenu/index.ts b/ts_web/elements/00group-applauncher/eco-applauncher-batterymenu/index.ts new file mode 100644 index 0000000..01edbf5 --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher-batterymenu/index.ts @@ -0,0 +1 @@ +export * from './eco-applauncher-batterymenu.js'; diff --git a/ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/eco-applauncher-soundmenu.demo.ts b/ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/eco-applauncher-soundmenu.demo.ts new file mode 100644 index 0000000..578c196 --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/eco-applauncher-soundmenu.demo.ts @@ -0,0 +1,33 @@ +import { html } from '@design.estate/dees-element'; +import type { IAudioDevice } from './eco-applauncher-soundmenu.js'; + +const mockDevices: IAudioDevice[] = [ + { id: 'speakers', name: 'Built-in Speakers', type: 'speaker' }, + { id: 'headphones', name: 'AirPods Pro', type: 'bluetooth' }, + { id: 'hdmi', name: 'LG Monitor', type: 'hdmi' }, +]; + +export const demo = () => html` + +
+ console.log('Volume:', e.detail)} + @mute-toggle=${(e: CustomEvent) => console.log('Mute:', e.detail)} + @device-select=${(e: CustomEvent) => console.log('Device:', e.detail)} + @settings-click=${() => console.log('Settings clicked')} + > +
+`; diff --git a/ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/eco-applauncher-soundmenu.ts b/ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/eco-applauncher-soundmenu.ts new file mode 100644 index 0000000..e00906c --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/eco-applauncher-soundmenu.ts @@ -0,0 +1,427 @@ +import { + customElement, + DeesElement, + type TemplateResult, + html, + property, + css, + cssManager, +} from '@design.estate/dees-element'; +import { DeesIcon } from '@design.estate/dees-catalog'; +import { demo } from './eco-applauncher-soundmenu.demo.js'; + +// Ensure dees-icon is registered +DeesIcon; + +declare global { + interface HTMLElementTagNameMap { + 'eco-applauncher-soundmenu': EcoApplauncherSoundmenu; + } +} + +export interface IAudioDevice { + id: string; + name: string; + type: 'speaker' | 'headphones' | 'bluetooth' | 'hdmi'; + active?: boolean; +} + +@customElement('eco-applauncher-soundmenu') +export class EcoApplauncherSoundmenu extends DeesElement { + public static demo = demo; + public static demoGroup = 'App Launcher'; + + public static styles = [ + cssManager.defaultStyles, + css` + :host { + display: block; + position: relative; + } + + .menu-container { + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 10%)')}; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 20%)')}; + border-radius: 12px; + box-shadow: ${cssManager.bdTheme( + '0 8px 32px rgba(0, 0, 0, 0.15)', + '0 8px 32px rgba(0, 0, 0, 0.4)' + )}; + min-width: 280px; + overflow: hidden; + opacity: 0; + transform: scale(0.95) translateY(-8px); + transition: all 0.2s ease-out; + pointer-events: none; + } + + :host([open]) .menu-container { + opacity: 1; + transform: scale(1) translateY(0); + pointer-events: auto; + } + + .menu-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px; + border-bottom: 1px solid ${cssManager.bdTheme('hsl(0 0% 92%)', 'hsl(240 5% 15%)')}; + } + + .menu-title { + font-size: 15px; + font-weight: 600; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 98%)')}; + display: flex; + align-items: center; + gap: 10px; + } + + .volume-section { + padding: 20px 16px; + } + + .volume-slider-container { + display: flex; + align-items: center; + gap: 12px; + } + + .volume-icon { + color: ${cssManager.bdTheme('hsl(0 0% 40%)', 'hsl(0 0% 70%)')}; + cursor: pointer; + transition: color 0.15s ease; + } + + .volume-icon:hover { + color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')}; + } + + .volume-icon.muted { + color: hsl(0 72% 51%); + } + + .volume-slider { + flex: 1; + height: 6px; + background: ${cssManager.bdTheme('hsl(0 0% 88%)', 'hsl(240 5% 20%)')}; + border-radius: 3px; + position: relative; + cursor: pointer; + } + + .volume-fill { + height: 100%; + background: hsl(217 91% 60%); + border-radius: 3px; + transition: width 0.1s ease; + } + + .volume-fill.muted { + background: ${cssManager.bdTheme('hsl(0 0% 70%)', 'hsl(0 0% 40%)')}; + } + + .volume-thumb { + position: absolute; + top: 50%; + transform: translate(-50%, -50%); + width: 16px; + height: 16px; + background: white; + border-radius: 50%; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + cursor: grab; + } + + .volume-thumb:active { + cursor: grabbing; + } + + .volume-percentage { + min-width: 36px; + text-align: right; + font-size: 14px; + font-weight: 500; + color: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 80%)')}; + } + + .menu-divider { + height: 1px; + background: ${cssManager.bdTheme('hsl(0 0% 92%)', 'hsl(240 5% 15%)')}; + } + + .section-title { + padding: 12px 16px 8px; + font-size: 12px; + font-weight: 600; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 50%)')}; + text-transform: uppercase; + letter-spacing: 0.5px; + } + + .device-list { + max-height: 160px; + overflow-y: auto; + } + + .device-item { + display: flex; + align-items: center; + gap: 12px; + padding: 10px 16px; + cursor: pointer; + transition: background 0.15s ease; + } + + .device-item:hover { + background: ${cssManager.bdTheme('hsl(0 0% 96%)', 'hsl(240 5% 15%)')}; + } + + .device-item.active { + background: ${cssManager.bdTheme('hsl(217 91% 95%)', 'hsl(217 91% 60% / 0.15)')}; + } + + .device-item.active:hover { + background: ${cssManager.bdTheme('hsl(217 91% 92%)', 'hsl(217 91% 60% / 0.25)')}; + } + + .device-icon { + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + } + + .device-item.active .device-icon { + color: hsl(217 91% 60%); + } + + .device-name { + flex: 1; + font-size: 14px; + color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')}; + } + + .device-check { + color: hsl(217 91% 60%); + } + + .menu-footer { + padding: 12px 16px; + border-top: 1px solid ${cssManager.bdTheme('hsl(0 0% 92%)', 'hsl(240 5% 15%)')}; + } + + .settings-link { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + color: hsl(217 91% 60%); + cursor: pointer; + transition: color 0.15s ease; + } + + .settings-link:hover { + color: hsl(217 91% 50%); + } + `, + ]; + + @property({ type: Boolean, reflect: true }) + accessor open = false; + + @property({ type: Number }) + accessor volume = 50; + + @property({ type: Boolean }) + accessor muted = false; + + @property({ type: Array }) + accessor outputDevices: IAudioDevice[] = []; + + @property({ type: String }) + accessor activeDeviceId: string | null = null; + + private boundHandleClickOutside = this.handleClickOutside.bind(this); + private isDragging = false; + + public render(): TemplateResult { + const volumeIcon = this.getVolumeIcon(); + + return html` + + `; + } + + private renderDeviceItem(device: IAudioDevice): TemplateResult { + const isActive = device.id === this.activeDeviceId; + const icon = this.getDeviceIcon(device.type); + + return html` +
this.handleDeviceSelect(device)} + > + + ${device.name} + ${isActive ? html` + + ` : ''} +
+ `; + } + + private getVolumeIcon(): string { + if (this.muted || this.volume === 0) return 'lucide:volumeX'; + if (this.volume < 33) return 'lucide:volume'; + if (this.volume < 66) return 'lucide:volume1'; + return 'lucide:volume2'; + } + + private getDeviceIcon(type: IAudioDevice['type']): string { + switch (type) { + case 'headphones': + return 'lucide:headphones'; + case 'bluetooth': + return 'lucide:bluetooth'; + case 'hdmi': + return 'lucide:monitor'; + case 'speaker': + default: + return 'lucide:speaker'; + } + } + + private handleMuteToggle(): void { + this.muted = !this.muted; + this.dispatchEvent(new CustomEvent('mute-toggle', { + detail: { muted: this.muted }, + bubbles: true, + composed: true, + })); + } + + private handleSliderClick(e: MouseEvent): void { + const slider = e.currentTarget as HTMLElement; + const rect = slider.getBoundingClientRect(); + const percentage = Math.round(((e.clientX - rect.left) / rect.width) * 100); + this.setVolume(Math.max(0, Math.min(100, percentage))); + } + + private handleSliderMouseDown(e: MouseEvent): void { + this.isDragging = true; + const slider = e.currentTarget as HTMLElement; + + const handleMouseMove = (moveEvent: MouseEvent) => { + if (!this.isDragging) return; + const rect = slider.getBoundingClientRect(); + const percentage = Math.round(((moveEvent.clientX - rect.left) / rect.width) * 100); + this.setVolume(Math.max(0, Math.min(100, percentage))); + }; + + const handleMouseUp = () => { + this.isDragging = false; + document.removeEventListener('mousemove', handleMouseMove); + document.removeEventListener('mouseup', handleMouseUp); + }; + + document.addEventListener('mousemove', handleMouseMove); + document.addEventListener('mouseup', handleMouseUp); + } + + private setVolume(value: number): void { + this.volume = value; + if (this.muted && value > 0) { + this.muted = false; + } + this.dispatchEvent(new CustomEvent('volume-change', { + detail: { volume: this.volume }, + bubbles: true, + composed: true, + })); + } + + private handleDeviceSelect(device: IAudioDevice): void { + this.activeDeviceId = device.id; + this.dispatchEvent(new CustomEvent('device-select', { + detail: { device }, + bubbles: true, + composed: true, + })); + } + + private handleSettingsClick(): void { + this.dispatchEvent(new CustomEvent('settings-click', { + bubbles: true, + composed: true, + })); + } + + private handleClickOutside(e: MouseEvent): void { + if (this.open && !this.contains(e.target as Node)) { + this.open = false; + this.dispatchEvent(new CustomEvent('menu-close', { + bubbles: true, + composed: true, + })); + } + } + + async connectedCallback(): Promise { + await super.connectedCallback(); + setTimeout(() => { + document.addEventListener('click', this.boundHandleClickOutside); + }, 0); + } + + async disconnectedCallback(): Promise { + await super.disconnectedCallback(); + document.removeEventListener('click', this.boundHandleClickOutside); + } +} diff --git a/ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/index.ts b/ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/index.ts new file mode 100644 index 0000000..8ff3999 --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher-soundmenu/index.ts @@ -0,0 +1 @@ +export * from './eco-applauncher-soundmenu.js'; diff --git a/ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/eco-applauncher-wifimenu.demo.ts b/ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/eco-applauncher-wifimenu.demo.ts new file mode 100644 index 0000000..1df0ad8 --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/eco-applauncher-wifimenu.demo.ts @@ -0,0 +1,33 @@ +import { html } from '@design.estate/dees-element'; +import type { IWifiNetwork } from './eco-applauncher-wifimenu.js'; + +const mockNetworks: IWifiNetwork[] = [ + { ssid: 'HomeNetwork', signalStrength: 95, secured: true }, + { ssid: 'OfficeWiFi', signalStrength: 75, secured: true }, + { ssid: 'CoffeeShop_Guest', signalStrength: 60, secured: false }, + { ssid: 'Neighbor_5G', signalStrength: 40, secured: true }, + { ssid: 'WeakSignal', signalStrength: 15, secured: true }, +]; + +export const demo = () => html` + +
+ console.log('WiFi toggle:', e.detail)} + @network-select=${(e: CustomEvent) => console.log('Network selected:', e.detail)} + @settings-click=${() => console.log('Settings clicked')} + > +
+`; diff --git a/ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/eco-applauncher-wifimenu.ts b/ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/eco-applauncher-wifimenu.ts new file mode 100644 index 0000000..4048ec0 --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/eco-applauncher-wifimenu.ts @@ -0,0 +1,355 @@ +import { + customElement, + DeesElement, + type TemplateResult, + html, + property, + css, + cssManager, +} from '@design.estate/dees-element'; +import { DeesIcon } from '@design.estate/dees-catalog'; +import { demo } from './eco-applauncher-wifimenu.demo.js'; + +// Ensure dees-icon is registered +DeesIcon; + +declare global { + interface HTMLElementTagNameMap { + 'eco-applauncher-wifimenu': EcoApplauncherWifimenu; + } +} + +export interface IWifiNetwork { + ssid: string; + signalStrength: number; // 0-100 + secured: boolean; + connected?: boolean; +} + +@customElement('eco-applauncher-wifimenu') +export class EcoApplauncherWifimenu extends DeesElement { + public static demo = demo; + public static demoGroup = 'App Launcher'; + + public static styles = [ + cssManager.defaultStyles, + css` + :host { + display: block; + position: relative; + } + + .menu-container { + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 10%)')}; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 20%)')}; + border-radius: 12px; + box-shadow: ${cssManager.bdTheme( + '0 8px 32px rgba(0, 0, 0, 0.15)', + '0 8px 32px rgba(0, 0, 0, 0.4)' + )}; + min-width: 280px; + overflow: hidden; + opacity: 0; + transform: scale(0.95) translateY(-8px); + transition: all 0.2s ease-out; + pointer-events: none; + } + + :host([open]) .menu-container { + opacity: 1; + transform: scale(1) translateY(0); + pointer-events: auto; + } + + .menu-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px; + border-bottom: 1px solid ${cssManager.bdTheme('hsl(0 0% 92%)', 'hsl(240 5% 15%)')}; + } + + .menu-title { + font-size: 15px; + font-weight: 600; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 98%)')}; + display: flex; + align-items: center; + gap: 10px; + } + + .toggle-switch { + position: relative; + width: 44px; + height: 24px; + background: ${cssManager.bdTheme('hsl(0 0% 85%)', 'hsl(240 5% 25%)')}; + border-radius: 12px; + cursor: pointer; + transition: background 0.2s ease; + } + + .toggle-switch.active { + background: hsl(217 91% 60%); + } + + .toggle-switch::after { + content: ''; + position: absolute; + top: 2px; + left: 2px; + width: 20px; + height: 20px; + background: white; + border-radius: 50%; + transition: transform 0.2s ease; + box-shadow: ${cssManager.bdTheme('0 1px 3px rgba(0,0,0,0.2)', 'none')}; + } + + .toggle-switch.active::after { + transform: translateX(20px); + } + + .network-list { + max-height: 240px; + overflow-y: auto; + } + + .network-item { + display: flex; + align-items: center; + gap: 12px; + padding: 12px 16px; + cursor: pointer; + transition: background 0.15s ease; + } + + .network-item:hover { + background: ${cssManager.bdTheme('hsl(0 0% 96%)', 'hsl(240 5% 15%)')}; + } + + .network-item.connected { + background: ${cssManager.bdTheme('hsl(217 91% 95%)', 'hsl(217 91% 60% / 0.15)')}; + } + + .network-item.connected:hover { + background: ${cssManager.bdTheme('hsl(217 91% 92%)', 'hsl(217 91% 60% / 0.25)')}; + } + + .signal-bars { + display: flex; + align-items: flex-end; + gap: 2px; + height: 16px; + width: 20px; + } + + .signal-bar { + width: 4px; + background: ${cssManager.bdTheme('hsl(0 0% 80%)', 'hsl(0 0% 40%)')}; + border-radius: 1px; + transition: background 0.2s ease; + } + + .signal-bar.active { + background: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 90%)')}; + } + + .signal-bar:nth-child(1) { height: 4px; } + .signal-bar:nth-child(2) { height: 8px; } + .signal-bar:nth-child(3) { height: 12px; } + .signal-bar:nth-child(4) { height: 16px; } + + .network-info { + flex: 1; + min-width: 0; + } + + .network-name { + font-size: 14px; + font-weight: 500; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 98%)')}; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .network-status { + font-size: 12px; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + margin-top: 2px; + } + + .network-secured { + color: ${cssManager.bdTheme('hsl(0 0% 60%)', 'hsl(0 0% 50%)')}; + } + + .menu-footer { + padding: 12px 16px; + border-top: 1px solid ${cssManager.bdTheme('hsl(0 0% 92%)', 'hsl(240 5% 15%)')}; + } + + .settings-link { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + color: hsl(217 91% 60%); + cursor: pointer; + transition: color 0.15s ease; + } + + .settings-link:hover { + color: hsl(217 91% 50%); + } + + .disabled-message { + padding: 32px 16px; + text-align: center; + color: ${cssManager.bdTheme('hsl(0 0% 60%)', 'hsl(0 0% 50%)')}; + font-size: 14px; + } + `, + ]; + + @property({ type: Boolean, reflect: true }) + accessor open = false; + + @property({ type: Array }) + accessor networks: IWifiNetwork[] = []; + + @property({ type: String }) + accessor connectedNetwork: string | null = null; + + @property({ type: Boolean }) + accessor wifiEnabled = true; + + private boundHandleClickOutside = this.handleClickOutside.bind(this); + + public render(): TemplateResult { + return html` + + `; + } + + private renderNetworkList(): TemplateResult { + const sortedNetworks = [...this.networks].sort((a, b) => { + // Connected network first, then by signal strength + if (a.ssid === this.connectedNetwork) return -1; + if (b.ssid === this.connectedNetwork) return 1; + return b.signalStrength - a.signalStrength; + }); + + return html` +
+ ${sortedNetworks.map((network) => this.renderNetworkItem(network))} +
+ `; + } + + private renderNetworkItem(network: IWifiNetwork): TemplateResult { + const isConnected = network.ssid === this.connectedNetwork; + const signalBars = this.getSignalBars(network.signalStrength); + + return html` +
this.handleNetworkSelect(network)} + > +
+ ${[1, 2, 3, 4].map((bar) => html` +
+ `)} +
+
+
${network.ssid}
+ ${isConnected ? html`
Connected
` : ''} +
+ ${network.secured ? html` + + ` : ''} +
+ `; + } + + private renderDisabledMessage(): TemplateResult { + return html` +
+ Wi-Fi is turned off +
+ `; + } + + private getSignalBars(strength: number): number { + if (strength >= 75) return 4; + if (strength >= 50) return 3; + if (strength >= 25) return 2; + return 1; + } + + private handleToggleWifi(): void { + this.wifiEnabled = !this.wifiEnabled; + this.dispatchEvent(new CustomEvent('wifi-toggle', { + detail: { enabled: this.wifiEnabled }, + bubbles: true, + composed: true, + })); + } + + private handleNetworkSelect(network: IWifiNetwork): void { + this.dispatchEvent(new CustomEvent('network-select', { + detail: { network }, + bubbles: true, + composed: true, + })); + } + + private handleSettingsClick(): void { + this.dispatchEvent(new CustomEvent('settings-click', { + bubbles: true, + composed: true, + })); + } + + private handleClickOutside(e: MouseEvent): void { + if (this.open && !this.contains(e.target as Node)) { + this.open = false; + this.dispatchEvent(new CustomEvent('menu-close', { + bubbles: true, + composed: true, + })); + } + } + + async connectedCallback(): Promise { + await super.connectedCallback(); + // Delay to prevent immediate close when clicking to open + setTimeout(() => { + document.addEventListener('click', this.boundHandleClickOutside); + }, 0); + } + + async disconnectedCallback(): Promise { + await super.disconnectedCallback(); + document.removeEventListener('click', this.boundHandleClickOutside); + } +} diff --git a/ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/index.ts b/ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/index.ts new file mode 100644 index 0000000..8585a56 --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher-wifimenu/index.ts @@ -0,0 +1 @@ +export * from './eco-applauncher-wifimenu.js'; diff --git a/ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.demo.ts b/ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.demo.ts new file mode 100644 index 0000000..9ccd9b5 --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.demo.ts @@ -0,0 +1,71 @@ +import { html } from '@design.estate/dees-element'; +import type { IAppIcon } from './eco-applauncher.js'; +import type { IWifiNetwork } from '../eco-applauncher-wifimenu/index.js'; +import type { IAudioDevice } from '../eco-applauncher-soundmenu/index.js'; + +const mockApps: IAppIcon[] = [ + { name: 'Settings', icon: 'lucide:settings', action: () => console.log('Settings clicked') }, + { name: 'Browser', icon: 'lucide:globe', action: () => console.log('Browser clicked') }, + { name: 'Terminal', icon: 'lucide:terminal', action: () => console.log('Terminal clicked') }, + { name: 'Files', icon: 'lucide:folder', action: () => console.log('Files clicked') }, + { name: 'Calendar', icon: 'lucide:calendar', action: () => console.log('Calendar clicked') }, + { name: 'Mail', icon: 'lucide:mail', action: () => console.log('Mail clicked') }, + { name: 'Music', icon: 'lucide:music', action: () => console.log('Music clicked') }, + { name: 'Photos', icon: 'lucide:image', action: () => console.log('Photos clicked') }, + { name: 'Notes', icon: 'lucide:fileText', action: () => console.log('Notes clicked') }, + { name: 'Calculator', icon: 'lucide:calculator', action: () => console.log('Calculator clicked') }, + { name: 'Weather', icon: 'lucide:cloudSun', action: () => console.log('Weather clicked') }, + { name: 'Maps', icon: 'lucide:map', action: () => console.log('Maps clicked') }, +]; + +const mockNetworks: IWifiNetwork[] = [ + { ssid: 'HomeNetwork', signalStrength: 95, secured: true }, + { ssid: 'OfficeWiFi', signalStrength: 75, secured: true }, + { ssid: 'CoffeeShop_Guest', signalStrength: 60, secured: false }, + { ssid: 'Neighbor_5G', signalStrength: 40, secured: true }, + { ssid: 'WeakSignal', signalStrength: 15, secured: true }, +]; + +const mockAudioDevices: IAudioDevice[] = [ + { id: 'speakers', name: 'Built-in Speakers', type: 'speaker' }, + { id: 'headphones', name: 'AirPods Pro', type: 'bluetooth' }, + { id: 'hdmi', name: 'LG Monitor', type: 'hdmi' }, +]; + +export const demo = () => html` + +
+ console.log('WiFi toggle:', e.detail)} + @network-select=${(e: CustomEvent) => console.log('Network selected:', e.detail)} + @wifi-settings-click=${() => console.log('WiFi settings clicked')} + @battery-saver-toggle=${(e: CustomEvent) => console.log('Battery saver:', e.detail)} + @battery-settings-click=${() => console.log('Battery settings clicked')} + @volume-change=${(e: CustomEvent) => console.log('Volume:', e.detail)} + @mute-toggle=${(e: CustomEvent) => console.log('Mute:', e.detail)} + @device-select=${(e: CustomEvent) => console.log('Device:', e.detail)} + @sound-settings-click=${() => console.log('Sound settings clicked')} + @search-click=${() => console.log('Search clicked')} + @notifications-click=${() => console.log('Notifications clicked')} + @user-click=${() => console.log('User clicked')} + > +
+`; diff --git a/ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.ts b/ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.ts new file mode 100644 index 0000000..ff75592 --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.ts @@ -0,0 +1,955 @@ +import { + customElement, + DeesElement, + type TemplateResult, + html, + property, + css, + cssManager, + state, +} from '@design.estate/dees-element'; +import { DeesIcon } from '@design.estate/dees-catalog'; +import { demo } from './eco-applauncher.demo.js'; +import { EcoApplauncherWifimenu, type IWifiNetwork } from '../eco-applauncher-wifimenu/index.js'; +import { EcoApplauncherBatterymenu } from '../eco-applauncher-batterymenu/index.js'; +import { EcoApplauncherSoundmenu, type IAudioDevice } from '../eco-applauncher-soundmenu/index.js'; + +// Ensure components are registered +DeesIcon; +EcoApplauncherWifimenu; +EcoApplauncherBatterymenu; +EcoApplauncherSoundmenu; + +declare global { + interface HTMLElementTagNameMap { + 'eco-applauncher': EcoApplauncher; + } +} + +export interface IAppIcon { + name: string; + icon: string; + action?: () => void; +} + +export interface IStatusBarConfig { + showTime?: boolean; + showNetwork?: boolean; + showBattery?: boolean; + showSound?: boolean; +} + +export interface ITopBarConfig { + showSearch?: boolean; + showDate?: boolean; + showNotifications?: boolean; + showUser?: boolean; +} + +export type TNetworkStatus = 'online' | 'offline' | 'connecting'; +export type TBatteryStatus = number | 'charging'; + +@customElement('eco-applauncher') +export class EcoApplauncher extends DeesElement { + public static demo = demo; + public static demoGroup = 'App Launcher'; + + public static styles = [ + cssManager.defaultStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + background: ${cssManager.bdTheme('hsl(220 20% 97%)', 'hsl(240 10% 4%)')}; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 98%)')}; + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + position: relative; + overflow: hidden; + } + + .launcher-container { + display: flex; + flex-direction: column; + height: 100%; + } + + .top-bar { + height: 48px; + background: ${cssManager.bdTheme('hsl(220 15% 94%)', 'hsl(240 6% 8%)')}; + border-bottom: 1px solid ${cssManager.bdTheme('hsl(220 15% 88%)', 'hsl(240 5% 15%)')}; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 24px; + flex-shrink: 0; + } + + .top-left { + display: flex; + align-items: center; + gap: 16px; + } + + .top-center { + display: flex; + align-items: center; + gap: 8px; + } + + .top-right { + display: flex; + align-items: center; + gap: 16px; + } + + .top-date { + font-size: 14px; + font-weight: 500; + color: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 80%)')}; + } + + .search-box { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 16px; + background: ${cssManager.bdTheme('hsl(220 15% 90%)', 'hsl(240 5% 12%)')}; + border-radius: 20px; + min-width: 200px; + cursor: pointer; + transition: background 0.15s ease; + } + + .search-box:hover { + background: ${cssManager.bdTheme('hsl(220 15% 86%)', 'hsl(240 5% 15%)')}; + } + + .search-box dees-icon { + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 50%)')}; + } + + .search-text { + font-size: 14px; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 50%)')}; + } + + .top-icon-button { + display: flex; + align-items: center; + justify-content: center; + width: 36px; + height: 36px; + border-radius: 50%; + cursor: pointer; + transition: background 0.15s ease; + color: ${cssManager.bdTheme('hsl(0 0% 40%)', 'hsl(0 0% 70%)')}; + } + + .top-icon-button:hover { + background: ${cssManager.bdTheme('hsl(220 15% 88%)', 'hsl(240 5% 15%)')}; + } + + .user-avatar { + width: 32px; + height: 32px; + border-radius: 50%; + background: ${cssManager.bdTheme('hsl(217 91% 60%)', 'hsl(217 91% 50%)')}; + display: flex; + align-items: center; + justify-content: center; + color: white; + font-size: 14px; + font-weight: 600; + cursor: pointer; + transition: transform 0.15s ease; + } + + .user-avatar:hover { + transform: scale(1.05); + } + + .notification-badge { + position: relative; + } + + .notification-badge .badge { + position: absolute; + top: -4px; + right: -4px; + min-width: 16px; + height: 16px; + padding: 0 4px; + background: hsl(0 72% 51%); + color: white; + font-size: 10px; + font-weight: 600; + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + } + + .apps-area { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + padding: 48px; + overflow-y: auto; + } + + .apps-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + gap: 32px; + max-width: 800px; + width: 100%; + } + + .app-icon { + display: flex; + flex-direction: column; + align-items: center; + gap: 12px; + padding: 16px; + border-radius: 16px; + cursor: pointer; + transition: background 0.2s ease, transform 0.15s ease; + user-select: none; + -webkit-tap-highlight-color: transparent; + } + + .app-icon:hover { + background: ${cssManager.bdTheme('hsl(220 15% 92%)', 'hsl(240 5% 12%)')}; + } + + .app-icon:active { + transform: scale(0.95); + background: ${cssManager.bdTheme('hsl(220 15% 88%)', 'hsl(240 5% 16%)')}; + } + + .app-icon-circle { + width: 64px; + height: 64px; + border-radius: 16px; + background: ${cssManager.bdTheme('hsl(220 15% 90%)', 'hsl(240 5% 15%)')}; + display: flex; + align-items: center; + justify-content: center; + color: ${cssManager.bdTheme('hsl(0 0% 40%)', 'hsl(0 0% 80%)')}; + } + + .app-icon-circle dees-icon { + --dees-icon-size: 28px; + } + + .app-icon-name { + font-size: 13px; + font-weight: 500; + color: ${cssManager.bdTheme('hsl(0 0% 25%)', 'hsl(0 0% 85%)')}; + text-align: center; + max-width: 90px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .status-bar { + height: 48px; + background: ${cssManager.bdTheme('hsl(220 15% 94%)', 'hsl(240 6% 8%)')}; + border-top: 1px solid ${cssManager.bdTheme('hsl(220 15% 88%)', 'hsl(240 5% 15%)')}; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 24px; + flex-shrink: 0; + } + + .status-left { + display: flex; + align-items: center; + gap: 20px; + } + + .status-right { + display: flex; + align-items: center; + gap: 20px; + } + + .status-item { + display: flex; + align-items: center; + gap: 8px; + font-size: 13px; + color: ${cssManager.bdTheme('hsl(0 0% 40%)', 'hsl(0 0% 70%)')}; + } + + .status-icon { + font-size: 16px; + opacity: 0.8; + } + + .status-time { + font-size: 14px; + font-weight: 500; + color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')}; + } + + .battery-indicator { + display: flex; + align-items: center; + gap: 6px; + } + + .battery-bar { + width: 24px; + height: 12px; + border: 1.5px solid ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + border-radius: 3px; + position: relative; + overflow: hidden; + } + + .battery-bar::after { + content: ''; + position: absolute; + right: -4px; + top: 50%; + transform: translateY(-50%); + width: 2px; + height: 6px; + background: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + border-radius: 0 1px 1px 0; + } + + .battery-fill { + height: 100%; + background: hsl(142 71% 45%); + transition: width 0.3s ease; + } + + .battery-fill.low { + background: hsl(0 72% 51%); + } + + .battery-fill.charging { + background: hsl(47 100% 50%); + } + + .network-indicator { + display: flex; + align-items: flex-end; + gap: 2px; + height: 14px; + } + + .network-bar { + width: 3px; + background: ${cssManager.bdTheme('hsl(0 0% 75%)', 'hsl(0 0% 40%)')}; + border-radius: 1px; + transition: background 0.2s ease; + } + + .network-bar.active { + background: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 90%)')}; + } + + .network-bar:nth-child(1) { height: 4px; } + .network-bar:nth-child(2) { height: 7px; } + .network-bar:nth-child(3) { height: 10px; } + .network-bar:nth-child(4) { height: 14px; } + + .sound-indicator { + display: flex; + align-items: center; + gap: 4px; + } + + .sound-bars { + display: flex; + align-items: flex-end; + gap: 2px; + height: 12px; + } + + .sound-bar { + width: 2px; + background: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 90%)')}; + border-radius: 1px; + } + + .sound-bar:nth-child(1) { height: 4px; } + .sound-bar:nth-child(2) { height: 8px; } + .sound-bar:nth-child(3) { height: 12px; } + + .status-item-wrapper { + position: relative; + } + + .status-item.clickable { + cursor: pointer; + padding: 4px 8px; + margin: -4px -8px; + border-radius: 6px; + transition: background 0.15s ease; + } + + .status-item.clickable:hover { + background: ${cssManager.bdTheme('hsl(220 15% 88%)', 'hsl(240 5% 15%)')}; + } + + .status-item.clickable.active { + background: ${cssManager.bdTheme('hsl(220 15% 85%)', 'hsl(240 5% 18%)')}; + } + + .menu-popup { + position: absolute; + bottom: calc(100% + 8px); + left: 0; + z-index: 100; + } + + @media (max-width: 600px) { + .apps-area { + padding: 24px; + } + + .apps-grid { + grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); + gap: 16px; + } + + .app-icon-circle { + width: 56px; + height: 56px; + font-size: 24px; + } + + .app-icon-name { + font-size: 12px; + } + + .status-bar { + padding: 0 16px; + } + + .status-left, + .status-right { + gap: 12px; + } + } + `, + ]; + + @property({ type: Array }) + accessor apps: IAppIcon[] = []; + + @property({ type: Object }) + accessor statusConfig: IStatusBarConfig = { + showTime: true, + showNetwork: true, + showBattery: true, + showSound: true, + }; + + @property({ type: Object }) + accessor topBarConfig: ITopBarConfig = { + showSearch: true, + showDate: true, + showNotifications: true, + showUser: true, + }; + + @property({ type: String }) + accessor userName = 'User'; + + @property({ type: Number }) + accessor notificationCount = 0; + + @property({ type: Number }) + accessor batteryLevel: TBatteryStatus = 100; + + @property({ type: String }) + accessor networkStatus: TNetworkStatus = 'online'; + + @property({ type: Number }) + accessor soundLevel = 50; + + @state() + accessor currentTime = ''; + + @state() + accessor currentDate = ''; + + @state() + accessor wifiMenuOpen = false; + + @state() + accessor batteryMenuOpen = false; + + @state() + accessor soundMenuOpen = false; + + @property({ type: Array }) + accessor networks: IWifiNetwork[] = []; + + @property({ type: String }) + accessor connectedNetwork: string | null = null; + + @property({ type: Boolean }) + accessor wifiEnabled = true; + + @property({ type: Boolean }) + accessor isCharging = false; + + @property({ type: Boolean }) + accessor batterySaverEnabled = false; + + @property({ type: String }) + accessor timeRemaining: string | null = null; + + @property({ type: Array }) + accessor outputDevices: IAudioDevice[] = []; + + @property({ type: String }) + accessor activeDeviceId: string | null = null; + + @property({ type: Boolean }) + accessor muted = false; + + private timeUpdateInterval: ReturnType | null = null; + + constructor() { + super(); + this.updateTime(); + } + + public render(): TemplateResult { + return html` +
+ ${this.renderTopBar()} +
+
+ ${this.apps.map((app) => this.renderAppIcon(app))} +
+
+
+
+ ${this.statusConfig.showNetwork ? this.renderNetworkStatusWithMenu() : ''} + ${this.statusConfig.showBattery ? this.renderBatteryStatusWithMenu() : ''} + ${this.statusConfig.showSound ? this.renderSoundStatusWithMenu() : ''} +
+
+ ${this.statusConfig.showTime ? html` + ${this.currentTime} + ` : ''} +
+
+
+ `; + } + + private renderAppIcon(app: IAppIcon): TemplateResult { + return html` +
this.handleAppClick(app)}> +
+ +
+ ${app.name} +
+ `; + } + + private renderTopBar(): TemplateResult { + const userInitials = this.userName + .split(' ') + .map((n) => n[0]) + .join('') + .slice(0, 2) + .toUpperCase(); + + return html` +
+
+ ${this.topBarConfig.showDate ? html` + ${this.currentDate} + ` : ''} +
+
+ ${this.topBarConfig.showSearch ? html` + + ` : ''} +
+
+ ${this.topBarConfig.showNotifications ? html` +
+ + ${this.notificationCount > 0 ? html` + ${this.notificationCount > 99 ? '99+' : this.notificationCount} + ` : ''} +
+ ` : ''} + ${this.topBarConfig.showUser ? html` +
+ ${userInitials} +
+ ` : ''} +
+
+ `; + } + + private renderNetworkStatusWithMenu(): TemplateResult { + const bars = this.getNetworkBars(); + return html` +
+
+
+ ${[1, 2, 3, 4].map((bar) => html` +
+ `)} +
+
+ +
+ `; + } + + private renderNetworkStatus(): TemplateResult { + const bars = this.getNetworkBars(); + return html` +
+
+ ${[1, 2, 3, 4].map((bar) => html` +
+ `)} +
+
+ `; + } + + private renderBatteryStatusWithMenu(): TemplateResult { + const level = typeof this.batteryLevel === 'number' ? this.batteryLevel : 100; + const isCharging = this.batteryLevel === 'charging' || this.isCharging; + const isLow = level < 20; + + return html` +
+
+
+
+
+ ${isCharging + ? html`` + : html`${level}%` + } +
+ +
+ `; + } + + private renderBatteryStatus(): TemplateResult { + const level = typeof this.batteryLevel === 'number' ? this.batteryLevel : 100; + const isCharging = this.batteryLevel === 'charging'; + const isLow = level < 20; + + return html` +
+
+
+
+ ${isCharging + ? html`` + : html`${level}%` + } +
+ `; + } + + private renderSoundStatusWithMenu(): TemplateResult { + const activeBars = Math.ceil((this.soundLevel / 100) * 3); + const soundIcon = this.muted || this.soundLevel === 0 ? 'lucide:volumeX' : 'lucide:volume2'; + + return html` +
+
+ +
+ ${[1, 2, 3].map((bar) => html` +
+ `)} +
+
+ +
+ `; + } + + private renderSoundStatus(): TemplateResult { + const activeBars = Math.ceil((this.soundLevel / 100) * 3); + const soundIcon = this.soundLevel === 0 ? 'lucide:volumeX' : 'lucide:volume2'; + return html` +
+ +
+ ${[1, 2, 3].map((bar) => html` +
+ `)} +
+
+ `; + } + + private getNetworkBars(): number { + switch (this.networkStatus) { + case 'online': + return 4; + case 'connecting': + return 2; + case 'offline': + return 0; + default: + return 4; + } + } + + private handleAppClick(app: IAppIcon): void { + this.dispatchEvent( + new CustomEvent('app-click', { + detail: { app }, + bubbles: true, + composed: true, + }) + ); + if (app.action) { + app.action(); + } + } + + private handleNetworkClick(e: MouseEvent): void { + e.stopPropagation(); + this.batteryMenuOpen = false; + this.soundMenuOpen = false; + this.wifiMenuOpen = !this.wifiMenuOpen; + } + + private handleBatteryClick(e: MouseEvent): void { + e.stopPropagation(); + this.wifiMenuOpen = false; + this.soundMenuOpen = false; + this.batteryMenuOpen = !this.batteryMenuOpen; + } + + private handleSoundClick(e: MouseEvent): void { + e.stopPropagation(); + this.wifiMenuOpen = false; + this.batteryMenuOpen = false; + this.soundMenuOpen = !this.soundMenuOpen; + } + + private handleWifiMenuClose(): void { + this.wifiMenuOpen = false; + } + + private handleBatteryMenuClose(): void { + this.batteryMenuOpen = false; + } + + private handleSoundMenuClose(): void { + this.soundMenuOpen = false; + } + + private handleVolumeChange(e: CustomEvent): void { + this.soundLevel = e.detail.volume; + this.dispatchEvent(new CustomEvent('volume-change', { + detail: e.detail, + bubbles: true, + composed: true, + })); + } + + private handleMuteToggle(e: CustomEvent): void { + this.muted = e.detail.muted; + this.dispatchEvent(new CustomEvent('mute-toggle', { + detail: e.detail, + bubbles: true, + composed: true, + })); + } + + private handleDeviceSelect(e: CustomEvent): void { + this.activeDeviceId = e.detail.device.id; + this.dispatchEvent(new CustomEvent('device-select', { + detail: e.detail, + bubbles: true, + composed: true, + })); + } + + private handleSoundSettingsClick(): void { + this.soundMenuOpen = false; + this.dispatchEvent(new CustomEvent('sound-settings-click', { + bubbles: true, + composed: true, + })); + } + + private handleWifiToggle(e: CustomEvent): void { + this.wifiEnabled = e.detail.enabled; + this.dispatchEvent(new CustomEvent('wifi-toggle', { + detail: e.detail, + bubbles: true, + composed: true, + })); + } + + private handleNetworkSelect(e: CustomEvent): void { + this.dispatchEvent(new CustomEvent('network-select', { + detail: e.detail, + bubbles: true, + composed: true, + })); + } + + private handleWifiSettingsClick(): void { + this.wifiMenuOpen = false; + this.dispatchEvent(new CustomEvent('wifi-settings-click', { + bubbles: true, + composed: true, + })); + } + + private handleBatterySaverToggle(e: CustomEvent): void { + this.batterySaverEnabled = e.detail.enabled; + this.dispatchEvent(new CustomEvent('battery-saver-toggle', { + detail: e.detail, + bubbles: true, + composed: true, + })); + } + + private handleBatterySettingsClick(): void { + this.batteryMenuOpen = false; + this.dispatchEvent(new CustomEvent('battery-settings-click', { + bubbles: true, + composed: true, + })); + } + + private handleSearchClick(): void { + this.dispatchEvent(new CustomEvent('search-click', { + bubbles: true, + composed: true, + })); + } + + private handleNotificationsClick(): void { + this.dispatchEvent(new CustomEvent('notifications-click', { + bubbles: true, + composed: true, + })); + } + + private handleUserClick(): void { + this.dispatchEvent(new CustomEvent('user-click', { + bubbles: true, + composed: true, + })); + } + + private updateTime(): void { + const now = new Date(); + const hours = now.getHours(); + const minutes = String(now.getMinutes()).padStart(2, '0'); + const ampm = hours >= 12 ? 'PM' : 'AM'; + const displayHours = hours % 12 || 12; + this.currentTime = `${displayHours}:${minutes} ${ampm}`; + + // Update date + const options: Intl.DateTimeFormatOptions = { + weekday: 'short', + month: 'short', + day: 'numeric', + }; + this.currentDate = now.toLocaleDateString('en-US', options); + } + + async connectedCallback(): Promise { + await super.connectedCallback(); + this.updateTime(); + this.timeUpdateInterval = setInterval(() => this.updateTime(), 1000); + } + + async disconnectedCallback(): Promise { + await super.disconnectedCallback(); + if (this.timeUpdateInterval) { + clearInterval(this.timeUpdateInterval); + this.timeUpdateInterval = null; + } + } +} diff --git a/ts_web/elements/00group-applauncher/eco-applauncher/index.ts b/ts_web/elements/00group-applauncher/eco-applauncher/index.ts new file mode 100644 index 0000000..3007e56 --- /dev/null +++ b/ts_web/elements/00group-applauncher/eco-applauncher/index.ts @@ -0,0 +1 @@ +export * from './eco-applauncher.js'; diff --git a/ts_web/elements/00group-applauncher/index.ts b/ts_web/elements/00group-applauncher/index.ts new file mode 100644 index 0000000..32bbea4 --- /dev/null +++ b/ts_web/elements/00group-applauncher/index.ts @@ -0,0 +1,5 @@ +// App Launcher Components +export * from './eco-applauncher/index.js'; +export * from './eco-applauncher-wifimenu/index.js'; +export * from './eco-applauncher-batterymenu/index.js'; +export * from './eco-applauncher-soundmenu/index.js'; diff --git a/ts_web/elements/00zindex.ts b/ts_web/elements/00zindex.ts index 9344e49..c43efe0 100644 --- a/ts_web/elements/00zindex.ts +++ b/ts_web/elements/00zindex.ts @@ -46,5 +46,5 @@ export function getZIndex(category: keyof typeof zIndexLayers, subcategory?: str // Z-index assignments for components export const componentZIndex = { - 'dees-screensaver': zIndexLayers.overlay.screensaver, + 'eco-screensaver': zIndexLayers.overlay.screensaver, } as const; diff --git a/ts_web/elements/dees-screensaver/index.ts b/ts_web/elements/dees-screensaver/index.ts deleted file mode 100644 index 9ff042f..0000000 --- a/ts_web/elements/dees-screensaver/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dees-screensaver.js'; diff --git a/ts_web/elements/eco-screensaver/eco-screensaver.demo.ts b/ts_web/elements/eco-screensaver/eco-screensaver.demo.ts new file mode 100644 index 0000000..d5b6292 --- /dev/null +++ b/ts_web/elements/eco-screensaver/eco-screensaver.demo.ts @@ -0,0 +1,18 @@ +import { html } from '@design.estate/dees-element'; +import { EcoScreensaver } from './eco-screensaver.js'; + +export const demo = () => { + // Clean up any existing instance first + if (EcoScreensaver.instance) { + EcoScreensaver.instance.remove(); + EcoScreensaver.instance = null; + } + + return html` + +
+ Screensaver activates after 2 seconds of inactivity.
+ Move mouse or press keys to reset timer. +
+ `; +}; diff --git a/ts_web/elements/dees-screensaver/dees-screensaver.ts b/ts_web/elements/eco-screensaver/eco-screensaver.ts similarity index 70% rename from ts_web/elements/dees-screensaver/dees-screensaver.ts rename to ts_web/elements/eco-screensaver/eco-screensaver.ts index d1cdaf7..9e7f513 100644 --- a/ts_web/elements/dees-screensaver/dees-screensaver.ts +++ b/ts_web/elements/eco-screensaver/eco-screensaver.ts @@ -9,10 +9,11 @@ import { state, } from '@design.estate/dees-element'; import { zIndexLayers } from '../00zindex.js'; +import { demo } from './eco-screensaver.demo.js'; declare global { interface HTMLElementTagNameMap { - 'dees-screensaver': DeesScreensaver; + 'eco-screensaver': EcoScreensaver; } } @@ -26,56 +27,36 @@ const colors = [ 'hsl(142 71% 45%)', // green-500 ]; -@customElement('dees-screensaver') -export class DeesScreensaver extends DeesElement { - public static demo = () => { - // Clean up any existing instance first - if (DeesScreensaver.instance) { - DeesScreensaver.instance.remove(); - DeesScreensaver.instance = null; - } - - // Create screensaver element immediately but inactive - const screensaver = document.createElement('dees-screensaver') as DeesScreensaver; - document.body.appendChild(screensaver); - DeesScreensaver.instance = screensaver; - - // Activate after 2 seconds to show the animation - setTimeout(() => { - if (DeesScreensaver.instance === screensaver) { - screensaver.active = true; - } - }, 2000); - - return html`
Screensaver will activate in 2 seconds...
`; - }; +@customElement('eco-screensaver') +export class EcoScreensaver extends DeesElement { + public static demo = demo; // Instance management - private static instance: DeesScreensaver | null = null; + public static instance: EcoScreensaver | null = null; - public static async show(): Promise { - if (DeesScreensaver.instance) { - DeesScreensaver.instance.active = true; - return DeesScreensaver.instance; + public static async show(): Promise { + if (EcoScreensaver.instance) { + EcoScreensaver.instance.active = true; + return EcoScreensaver.instance; } - const screensaver = new DeesScreensaver(); + const screensaver = new EcoScreensaver(); screensaver.active = true; document.body.appendChild(screensaver); - DeesScreensaver.instance = screensaver; + EcoScreensaver.instance = screensaver; return screensaver; } public static hide(): void { - if (DeesScreensaver.instance) { - DeesScreensaver.instance.active = false; + if (EcoScreensaver.instance) { + EcoScreensaver.instance.active = false; } } public static destroy(): void { - if (DeesScreensaver.instance) { - DeesScreensaver.instance.remove(); - DeesScreensaver.instance = null; + if (EcoScreensaver.instance) { + EcoScreensaver.instance.remove(); + EcoScreensaver.instance = null; } } @@ -201,12 +182,39 @@ export class DeesScreensaver extends DeesElement { font-size: 14px; } } + + .hint { + position: fixed; + bottom: 32px; + left: 50%; + transform: translateX(-50%) translateY(20px); + padding: 12px 24px; + background: hsl(240 6% 15%); + border: 1px solid hsl(240 5% 26%); + border-radius: 8px; + color: hsl(0 0% 90%); + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + font-size: 14px; + font-weight: 500; + opacity: 0; + pointer-events: none; + transition: opacity 0.3s ease, transform 0.3s ease; + z-index: 10; + } + + .hint.visible { + opacity: 1; + transform: translateX(-50%) translateY(0); + } `, ]; @property({ type: Boolean, reflect: true }) accessor active = false; + @property({ type: Number }) + accessor delay = 0; // milliseconds before activation (0 = no delay) + @state() accessor currentTime = ''; @@ -230,10 +238,18 @@ export class DeesScreensaver extends DeesElement { private timeContainerEl: HTMLElement | null = null; private vignetteEl: HTMLElement | null = null; private contentEl: HTMLElement | null = null; + private delayTimeoutId: ReturnType | null = null; + private boundResetDelayTimer: () => void; + private boundShowHint: () => void; + private hintEl: HTMLElement | null = null; + private hintTimeoutId: ReturnType | null = null; + private hintVisible = false; constructor() { super(); this.updateTime(); + this.boundResetDelayTimer = this.resetDelayTimer.bind(this); + this.boundShowHint = this.showHint.bind(this); } public render(): TemplateResult { @@ -246,6 +262,7 @@ export class DeesScreensaver extends DeesElement { ${this.currentDate} +
Click to exit screensaver
`; } @@ -253,18 +270,28 @@ export class DeesScreensaver extends DeesElement { this.timeContainerEl = this.shadowRoot?.querySelector('.time-container') as HTMLElement; this.vignetteEl = this.shadowRoot?.querySelector('.vignette') as HTMLElement; this.contentEl = this.shadowRoot?.querySelector('.screensaver-content') as HTMLElement; + this.hintEl = this.shadowRoot?.querySelector('.hint') as HTMLElement; } async connectedCallback(): Promise { await super.connectedCallback(); - this.startAnimation(); - this.startTimeUpdate(); + + // If delay is set, start the delay timer and listen for activity + if (this.delay > 0 && !this.active) { + this.startDelayTimer(); + this.addActivityListeners(); + } else if (this.active) { + this.startAnimation(); + this.startTimeUpdate(); + } } async disconnectedCallback(): Promise { await super.disconnectedCallback(); this.stopAnimation(); this.stopTimeUpdate(); + this.stopDelayTimer(); + this.removeActivityListeners(); } updated(changedProperties: Map): void { @@ -276,9 +303,15 @@ export class DeesScreensaver extends DeesElement { this.contentEl.style.maskImage = ''; this.contentEl.style.webkitMaskImage = ''; } + // Hide hint when freshly activated + this.hideHint(); + // Listen for mouse movement to show hint + window.addEventListener('mousemove', this.boundShowHint); this.startAnimation(); this.startTimeUpdate(); } else { + window.removeEventListener('mousemove', this.boundShowHint); + this.hideHint(); this.stopAnimation(); this.stopTimeUpdate(); } @@ -393,6 +426,71 @@ export class DeesScreensaver extends DeesElement { } } + private startDelayTimer(): void { + this.stopDelayTimer(); + this.delayTimeoutId = setTimeout(() => { + this.removeActivityListeners(); + this.active = true; + }, this.delay); + } + + private stopDelayTimer(): void { + if (this.delayTimeoutId) { + clearTimeout(this.delayTimeoutId); + this.delayTimeoutId = null; + } + } + + private resetDelayTimer(): void { + if (this.delay > 0 && !this.active) { + this.startDelayTimer(); + } + } + + private addActivityListeners(): void { + window.addEventListener('mousemove', this.boundResetDelayTimer); + window.addEventListener('keydown', this.boundResetDelayTimer); + window.addEventListener('click', this.boundResetDelayTimer); + window.addEventListener('touchstart', this.boundResetDelayTimer); + window.addEventListener('scroll', this.boundResetDelayTimer); + } + + private removeActivityListeners(): void { + window.removeEventListener('mousemove', this.boundResetDelayTimer); + window.removeEventListener('keydown', this.boundResetDelayTimer); + window.removeEventListener('click', this.boundResetDelayTimer); + window.removeEventListener('touchstart', this.boundResetDelayTimer); + window.removeEventListener('scroll', this.boundResetDelayTimer); + } + + private showHint(): void { + if (!this.active || this.hintVisible) return; + + this.hintVisible = true; + if (this.hintEl) { + this.hintEl.classList.add('visible'); + } + + // Auto-hide after 3 seconds + if (this.hintTimeoutId) { + clearTimeout(this.hintTimeoutId); + } + this.hintTimeoutId = setTimeout(() => { + this.hideHint(); + }, 3000); + } + + private hideHint(): void { + this.hintVisible = false; + if (this.hintEl) { + this.hintEl.classList.remove('visible'); + } + if (this.hintTimeoutId) { + clearTimeout(this.hintTimeoutId); + this.hintTimeoutId = null; + } + } + private handleClick(event: MouseEvent | TouchEvent): void { // Get click/touch position let x: number, y: number; @@ -434,7 +532,7 @@ export class DeesScreensaver extends DeesElement { } else { // Animation complete - remove screensaver this.active = false; - DeesScreensaver.destroy(); + EcoScreensaver.destroy(); } }; diff --git a/ts_web/elements/eco-screensaver/index.ts b/ts_web/elements/eco-screensaver/index.ts new file mode 100644 index 0000000..458156b --- /dev/null +++ b/ts_web/elements/eco-screensaver/index.ts @@ -0,0 +1 @@ +export * from './eco-screensaver.js'; diff --git a/ts_web/elements/index.ts b/ts_web/elements/index.ts index 32092ff..7964ef4 100644 --- a/ts_web/elements/index.ts +++ b/ts_web/elements/index.ts @@ -1,5 +1,8 @@ export * from './00zindex.js'; export * from './00theme.js'; +// Component Groups +export * from './00group-applauncher/index.js'; + // Standalone Components -export * from './dees-screensaver/index.js'; +export * from './eco-screensaver/index.js';