From 472ae56a85473c7ca11e4d097c604603cb6d1f61 Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Mon, 15 Jun 2026 17:01:09 -0400 Subject: [PATCH 01/12] FOUR-31808 Update ProcessMaker Platform Login, Update Platform Sidebar to match new brand. Description: Please, help us updating ProcessMaker Platform Login. Focus on: - Background - Colors - Logo - Sidebar color - Sidebar logo Related tickets: https://processmaker.atlassian.net/browse/FOUR-31808 https://processmaker.atlassian.net/browse/FOUR-31809 --- resources/img/processmaker-icon.svg | 26 ++++++---------- resources/img/processmaker-login.svg | 45 +++++++++++----------------- resources/img/processmaker-logo.svg | 35 ++++++---------------- resources/sass/sidebar/sidebar.scss | 2 +- 4 files changed, 36 insertions(+), 72 deletions(-) diff --git a/resources/img/processmaker-icon.svg b/resources/img/processmaker-icon.svg index 5458260a80..944136ba27 100644 --- a/resources/img/processmaker-icon.svg +++ b/resources/img/processmaker-icon.svg @@ -1,19 +1,11 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/resources/img/processmaker-login.svg b/resources/img/processmaker-login.svg index 3d4a34cf8d..a2f5b692ef 100644 --- a/resources/img/processmaker-login.svg +++ b/resources/img/processmaker-login.svg @@ -1,30 +1,19 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/img/processmaker-logo.svg b/resources/img/processmaker-logo.svg index 744ec505e4..91f712adf3 100644 --- a/resources/img/processmaker-logo.svg +++ b/resources/img/processmaker-logo.svg @@ -1,28 +1,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/resources/sass/sidebar/sidebar.scss b/resources/sass/sidebar/sidebar.scss index 079cbfdb00..31d4cfa646 100644 --- a/resources/sass/sidebar/sidebar.scss +++ b/resources/sass/sidebar/sidebar.scss @@ -10,7 +10,7 @@ } &.sidebar-default { - background-color: #20242A; + background-color: #002D59; } #custom_icon{ From 161865e83901efda6e54abd9265516cea2a2ec00 Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Tue, 16 Jun 2026 16:30:29 -0400 Subject: [PATCH 02/12] Improvements to the login screen. --- resources/img/decisions-bg-pattern.svg | 4 ++++ resources/img/processmaker-about.svg | 18 ++++++++++++++++++ resources/views/about/index.blade.php | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 resources/img/decisions-bg-pattern.svg create mode 100644 resources/img/processmaker-about.svg diff --git a/resources/img/decisions-bg-pattern.svg b/resources/img/decisions-bg-pattern.svg new file mode 100644 index 0000000000..9f43dcce6e --- /dev/null +++ b/resources/img/decisions-bg-pattern.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/img/processmaker-about.svg b/resources/img/processmaker-about.svg new file mode 100644 index 0000000000..f50338d878 --- /dev/null +++ b/resources/img/processmaker-about.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/views/about/index.blade.php b/resources/views/about/index.blade.php index e37ab1c1ec..2552043944 100644 --- a/resources/views/about/index.blade.php +++ b/resources/views/about/index.blade.php @@ -18,7 +18,7 @@
- +
{{ __('ProcessMaker Platform') }} {{ $versionTitle }}

From 48e28f05e69f8f557b116cc2f349086582ff7a6d Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Tue, 16 Jun 2026 16:37:10 -0400 Subject: [PATCH 03/12] Improve login screen. --- resources/img/gradient-wave-left.svg | 1 - resources/img/gradient-wave-right.svg | 8 - resources/views/auth/newLogin.blade.php | 390 ++++++++++++++++-------- 3 files changed, 269 insertions(+), 130 deletions(-) delete mode 100644 resources/img/gradient-wave-left.svg delete mode 100644 resources/img/gradient-wave-right.svg diff --git a/resources/img/gradient-wave-left.svg b/resources/img/gradient-wave-left.svg deleted file mode 100644 index 118094a8a4..0000000000 --- a/resources/img/gradient-wave-left.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/resources/img/gradient-wave-right.svg b/resources/img/gradient-wave-right.svg deleted file mode 100644 index 13b9834b60..0000000000 --- a/resources/img/gradient-wave-right.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/resources/views/auth/newLogin.blade.php b/resources/views/auth/newLogin.blade.php index ba45536b0c..264bfa214e 100644 --- a/resources/views/auth/newLogin.blade.php +++ b/resources/views/auth/newLogin.blade.php @@ -18,8 +18,6 @@
- -
@@ -32,27 +30,10 @@ class="d-flex justify-content-end position-absolute language-button-container"> :show-language-code="true">
-
-
- @php - $isMobile = ( - isset($_SERVER['HTTP_USER_AGENT']) - && \ProcessMaker\Helpers\MobileHelper::isMobile($_SERVER['HTTP_USER_AGENT']) - ) ? true : false; - @endphp - @if (!$isMobile) -
-

{{ __("Business process automation") }}

-

{{ __("made") }} {{ __("efficient") }}

-
- {{ __("All the tools to empower anyone to quickly automate processes, from custom forms to unique enterprise workflows and complex business rules.") }} -
-
- @endif -
-
- @php @@ -156,35 +161,72 @@ class="d-flex justify-content-end position-absolute language-button-container"> From ed48d2a68943c603bfa12ed32bb861842d326e55 Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Tue, 16 Jun 2026 17:20:57 -0400 Subject: [PATCH 04/12] Improvement section loguin. --- resources/views/auth/newLogin.blade.php | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/resources/views/auth/newLogin.blade.php b/resources/views/auth/newLogin.blade.php index 264bfa214e..24602fbb07 100644 --- a/resources/views/auth/newLogin.blade.php +++ b/resources/views/auth/newLogin.blade.php @@ -307,30 +307,7 @@ class="d-flex justify-content-end position-absolute language-button-container"> } .login-addons { - margin-top: 1.5rem; - } - - .login-addons .btn, - .login-addons a.btn { - height: 49px; - border-radius: 8px; - border: 1px solid #94A1B8; - background: #ffffff; - color: #333333; - font-weight: 500; - } - - .login-addons hr, - .login-addons .divider { - border: 0; - border-top: 1px solid #E6E6E6; - margin: 1.5rem 0; - } - - .login-addons .text-muted, - .login-addons .divider-text { - color: #808080 !important; - font-size: 0.875rem; + margin-top: 0; } .slogan-panel { From 2ce26990aae00dd1e366927f1fc1148f800585e5 Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Wed, 17 Jun 2026 11:30:59 -0400 Subject: [PATCH 05/12] Fix language issues and update the "Remember Me" control. --- resources/views/auth/newLogin.blade.php | 157 ++++++++++++++++++++---- 1 file changed, 130 insertions(+), 27 deletions(-) diff --git a/resources/views/auth/newLogin.blade.php b/resources/views/auth/newLogin.blade.php index 24602fbb07..11c9557e2a 100644 --- a/resources/views/auth/newLogin.blade.php +++ b/resources/views/auth/newLogin.blade.php @@ -19,17 +19,17 @@
+
+ + +
-
- - -
- +
+ + +
@@ -148,12 +154,29 @@ class="login-remember-input" const togglePassword = document.querySelector('#togglePassword'); const password = document.querySelector('#password'); + const capsLockWarning = document.querySelector('#capsLockWarning'); togglePassword.addEventListener('click', function (e) { const type = password.getAttribute('type') === 'password' ? 'text' : 'password'; password.setAttribute('type', type); this.classList.toggle('fa-eye-slash'); -}); + }); + + function updateCapsLockWarning(event) { + if (!password || !capsLockWarning || !event.getModifierState) { + return; + } + + capsLockWarning.hidden = !event.getModifierState('CapsLock'); + } + + if (password && capsLockWarning) { + password.addEventListener('keydown', updateCapsLockWarning); + password.addEventListener('keyup', updateCapsLockWarning); + password.addEventListener('blur', function () { + capsLockWarning.hidden = true; + }); + } @@ -228,6 +251,33 @@ class="login-remember-input" margin-bottom: 0.5rem; } + .password-field-header { + align-items: center; + display: flex; + gap: 0.75rem; + justify-content: space-between; + margin-bottom: 0.5rem; + } + + .password-field-header label { + margin-bottom: 0; + } + + .caps-lock-warning { + align-items: center; + color: #C66E00; + display: inline-flex; + font-size: 0.75rem; + font-weight: 500; + gap: 0.375rem; + line-height: 1.25rem; + white-space: nowrap; + } + + .caps-lock-warning[hidden] { + display: none !important; + } + .background-cover { background-color: #002D59; background-image: url('{{ asset('img/decisions-bg-pattern.svg') }}'); From 1fc3c3113f4e6358699842b7622651b012040450 Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Thu, 18 Jun 2026 11:41:50 -0400 Subject: [PATCH 07/12] Update png files. --- resources/img/processmaker_icon.png | Bin 2882 -> 1045 bytes resources/img/processmaker_login.png | Bin 14417 -> 10760 bytes resources/img/processmaker_logo.png | Bin 6578 -> 2972 bytes 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 resources/img/processmaker_icon.png diff --git a/resources/img/processmaker_icon.png b/resources/img/processmaker_icon.png old mode 100755 new mode 100644 index 4342e6c3628eaf69f2d3bdbbc0d0ae97c099ec72..9e421bb9be68e9c5cd34ef9ba4c3852471656d17 GIT binary patch literal 1045 zcmV+w1nT>VP)EX>4Tx04R}tk-tmBKpe$iTeTvUf_4yb2w0u$q9VH0DionYs1;guFuC-H(4-+r zad8w}3l9ERtU9+0Yt2!cOA`~$>E(M3x9UQ%cgctIG}2l zkxnLrY;HvezM>0#2xAyC5;OH#QB1*eeBHyx*Si?c@;>+H=vDG21AGE;oau%|yiPo| zY3ZEzi6g8eDa7Z*V+LK2_>t?f%Ws^E4*Pj##K@%Qh$F;8v5n<6W+g)85Ux+YNVJ*(|*FkKj`>Ha>?Y{ z03*jdDo`Oge(*o|-K|-e7YT&7*=ru}?r!hx-!skregNsta@H|yag+c600v@9M??Vs0RI60puMM)00009a7bBm z000fw000fw0YWI7cmMzZ2XskIMF;8z5)ULMCgR(c0006INklzrH!=KmVNnpSei-E*poE1~?&UL((rt-4Do*BM%8l>ypl#HODmsBxzD2QQ5o~ zfvgfenoH6+Qjfd9s7*rBI`9s-QCloX68$g%wt!{eZJ*}AL5aW!*fR>O0e=#i?2y27 z;6WFG(hlr6tag?bb7*|~>R;}_^vtKSuK*uwa-xk0{HScc(Xnt>7SoBN2s}2}%SM68@$|UND+J1Mbzn2|ZTZP6@Z4&b0bb8hbXMg-oSI-FHD%$n*@WSpwFe z$=zzH)*#(}|K->0v!vUOfd=XK%|#$cdJn7`bq|53UZ1B&$S!cx`1I2`&{VVTV)4jl P00000NkvXXu0mjfT&U)i literal 2882 zcmai0XFwBM77i9f1T2Umg2o{tpd=xbKuBO|lB}SSqBNBdCS-^yCWDz^d4y-7suV#` z5s*~@3r|o`EWrYnfKmh%pRz6%6a+*OQFJH4hx*jrA5-rA&iU>+-?{h9BrunH>1rEk zV=x$92HnFKeKJ*-mL_`NG4=H^3})OPkbfW?=;KXc3;B3fgfJY$BYY8xV=z<~M8snA zKo}biMnVD_&{K60z(Nr;V5OZ8(MRMCav^$*81#!->d%hhu^l4-7iVoMLO}`mAk4xd z{IvoJ1)%|IUJClInkE2PwF%6l0f9bDth-PQV(svDcp~7ejirhsI22!x#b2D!5e?wN zu!uq+NTpJ|)CMmUM-r?Z9UTco5`jdrLM^N$G6Bp&tOOEM6~zdL2Pk2SArTA-1y~g) zD_j^2(*OX)v0unR1p3M@kbFrW6@s8b2-bKa;ahVU;{3u~h5TSH;tFA*gew${Ch*-7 zqwo)osC++nL0F=n8T$2R_eSCJ#vF^wbptUK zMd$kmE~Iy?I1`Xj+4nN;VrJNVA6VO~m7aZ&8S)kt7N zN?dPcZ%34Ch0Lom;JVq&t+%#p+7`+jtZ(rH@%Q&x^dGKUOtsgp=dgrNXCB`CN1B~2 zOXj#LSm62o%+BFy6*&j8Gw)hFlrxgGSm(TnHRkh%3^N?J9KfDGS@6%zc^NKOPj*<6 zULIwYdTd)Xeq+ILdUQZ|FdVRWhh5d@-#$bg`tbXc7q5uT&LJ&4ax?#OYbLnKIH;x7 zx-z$&wC4I6=Phz_Lxp8r%q- zaP>#_b?;rq4GoxH^V{K~;HcnZ-M|Vf-_)TACHQe6=kp?lsmA?TjJEl2GrLXF1gWqsPkKMXqcL%a zI%G1GQ&sCOp4(*a8 zZQI z`D+^Q&5IKR%Y(ucIaB25q;bwt;5qlHwW!Fw=@cS?`>l01j!#ZCo^OT$9X5|0iyzaX zK^`-+W6DAPNur3*ODesoG$R?F;Nz^u=3;U!Ndg;4XCEe4V>P)fh@Mu2oAo?N-aq4Z zF6JTc`MEv!)`cY%N@LI1vSocngHEE7>|qQRqV<{+F-N)XpWTA{bF9nOoHSY}#cjev z{Nb}+jZ5U&JJ&tgb1madzKv;9`_L{V*I+O&+a#mh7@1p1V_v+h`~+V)hO4eMwBbcK zoz@r3QAqWCz`jFe_K%lEc1vGaCM=j;W_ULnI7ANdWl$H2O#j@^)VjnDI~7$t|3B8f zH>2K|WY-okVx8zC3` zR@#)EaQFO^+fLcenTE9JE7@Td2{+g8Do?~^&%QJ@?~!uA0&1Zy@aVE8?xc9FpqdPR znk(O{?D{a&b1S_$`U;`qNcM1BEDoB_5J<3(I```YUN~Nh)9*cx+8D26 z5i|MY(RSpFU%A{#dq3MQnD;j436e*Y+Zv z%6rNv$6AY&bMW;DMiVLE@+x9pO RJ3;m9%kW(4aojB|?!Oh%jsO4v diff --git a/resources/img/processmaker_login.png b/resources/img/processmaker_login.png index 8c9314cf1260277f0840deee728a6a4fea861ae4..40897b6428549f503253cc115b5afe4b7622a73d 100644 GIT binary patch literal 10760 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 literal 14417 zcma*OWmp_x(l&|&hoC`%ySq_lk}8e3?n ztjt7dwE2~}l{O2iiWAXjj6C1jkp-Ph%4aH02l-_rg8<_+BpJTMQNVx z0v>-qo#v#WdRBqih|&O+-&09Lpdc!K4t@?U8ZmS#5vZ9tKut#OpNk)lL}@HxFna(e zr;CdVhYK$U1Zu&_Ei5d|$;HFT!^8fl!S3j02QzkMw{xU@GVu=^G9X7&sFgj;3Svj~ zWYgFL;sg_=p?Q>3{SPv*{lARcIsP;H$2@Sl8rySnb8vC~r?R~z1O{=mg#2HY{7d{_ z3qh_{|Bm5*xp|WOmpaVK{Qsi6A($6PBb|9?jT2LG=>9AUD~kBRtaQvVmA|B2gC z!_6MVsRnX{I6+N8vd$no80~W|9=!pip&(-zNapb)O2fm&!^h4g#LmN`!6gjf<_2(a zvvUb@as5kK8DeH-?)LwxECAr+eN+bgr}iT~%#2~i|9|xVm2kk5_CG*9QuF^4(ZAP7 zLu?_?M{tiZ@IHh6w@5)+`aKk4Ze{x@b5wgPMWrAsEx;`-Ai&PU!TqfJv~Pg-R<0mh zpo|q5Was$EF;N;mK7s#3s`DRG?tg~)y!P3<`eSiDy7-65r@aLzfQ>Cc+E!*T%YR$@ zw?GMGXYnNYA4|`Yr#-TDdLp@|oz>&6@;pO$76Jb)6QvOr;QS9qI{zhlDjO=1XEFig ztsG$xsN3_Yf7FsX$l)JH|2VX@dM+X=s%I(zj7^{Xi_+LbA!bgdAhTx(kLLa%b%dD1 zT#TV0NsC7oiPA`#n_E31b)$N$Pb&*M5R{6Cis!NT`TqAR7faBi#s6b7|AR4{|3t_6 zRNDUoPlWTo0uXst_>W%jxb7e49(&AVv*P?$w|YGISHA<Wj+veiJNz~TN3pAUZyV&LtdMZN>cc)@cJ930Po=Kd)}3^`4qk> zmKkP6+gsg3qH@h~MOx__}(C~ zADN?KE7?fc{$Vnj(xfR#Xlg_A2j73Jgin-eUd^^>wU7yFe21b%7AD)FtD>V!DD|&{ zm(2NJ84!xS+89KE`>Co~%}y=;H_z{jz^B!z>cf>V%@)NoDROY@iok2O6k zn2PO8iAHbcrND6SvN4$HT4?`JZ>_q^%UZn4f;llZ_UFBq@1dW*5h5V(>0ysnqc(^l zOUMbeYm8E?y%QNsUb*OU2@`HHE#{ust1r3jyg8e`(XlD5Uk8=ccUpLtwQ)%^{1mFs zt2P%j-F-Qp+|T9Ai&&&*vmM8_Wcn@ss>_|cRhKL8J`@SVrwvM;dxdX$4q)@)39`{{ zw(?{VE0xVx0sHY=AkK8ojCZZp__VOsleg`)f`O%cK?i!h2YD|cx$|i~W;{usne#4K z(v;XT^eKT#Jru;woqw}mpqGQEa+uj__&$!AM(Wk#i98Tr+02=$`?9AA#D{!~1J4I6 z0mJT&S5vz3&w4{uk__=Lsmo*MYlf1GYf1Nr>X6!8n1rpigU1h$A98q-lo)ueG3h+< z^HuG>EP-47h#744WTf;|k6Q!c(~JzMvNsZLHojP=40)8?sOtG?K`>4{6eE7wpRZC^ z$JK1EZaHz^61zgX9F}WFA|hno3UAP8N`*ZW0>b9Ps}QSgNVM9Ghu@@7>9Zc->evvGGq|o9D~z z$35DJ+8=&+(Yxl>o?CZty+?}zzY*L>ED7XLv7^>qcaYL4Q47iHaDCU8JRLV3F(aaxw^FGaLYPHw%mJTVR-cBq)SuB&-SIhh_}fN)|^<2(qkIKD8hdW zI$W=c0S8)XmW^9gLN_%!qhG;SRlNB-sVg+=;SV%So!WZQVF7tPYNO)nnT;8E5qP~v zI+d_s4(<@86f%AE#$LTZ58OY!;WOP9s*)gOeK>Wf(_}7k6l^8ZWvs%szQ*KzqJ%qL zAjG6&RgCy2S(DwbFrAJ0Q!yoo=+yhZ={!OJClkH#aj^GPiFyYXYb|JT1m-jQLx8S? zznapm|8~@QqtQ+tz?n(+! z>(LA^qzM!e{x4c zj}ZD4)9Y64avJweUr9V5i#9FQdXl1$pKgHXY@Z%j_H_2kM<6?s%4nhTD~)}%B7?l~ z7bbM$xzlBUmvPPYxq)+c(Qk?lK98NVOcY3=H9rJ|xpWYw1)jAMg9j|Vs+t*|Jy}U< zTl6rN+v;F#8}7hT!vR%t#<>JpdI+JK9I~ zsC=E{Kzz%e;gbXQ@1{X^^#l6Vdw`!-)ku2fNI|i02KgR~iRYWl8gVL6tR6qUwh91PThj?{tQmFkVKJuX2tT|DdGWV~-Z*zUBR?nSV`xE} zt{{Av57b>9QxF-APZ3z+6vC-;`bplDEPpqQSIp@;%~bozQBrhH%_ZgmS~1<(#3eBh z?cAm#kLUS z8(&SE!HyBftn>F+a3LL;SGq%hhM^DkbCz__eM3eVYqM5!8z8wr_s)72Wex9487@0% zxn?XxC#6C0^9pH7-jkWne~&*k`09_%>U^5i9qYya>f5RH-PQ%)XITAnZJzHN8DeFo zV%@Mg0VT;OK6S8mXtBeMpLVs_@O;A+?cie|eNxNpKihuM$8GYwP$p|TIbbVT@f72j z)GC_RT`k5d0{rUGi`Xwy5jZ*$a8iov*z6bsPY{hWvU4kFP0{H(r|f=X=bJ0AkDD$r%9G%ep&12VH>;J(x9S0{Uz4L20Y1b zFR*xQ&*m?f%55=hzuTOB8vm&KRq3p>3hBE+7^p5HEnZMNKAmWc`vTcu=kv7O+Dpv} z$qc%clI}d6S4}$_*LIz1x`hwY@E0Mx*A7i~#oNgB#!*&DHP(+r6@G>;jE?DHDUE>| z_|Ag;dTn}58}CcNTRrK;Ip6B<@p5r5U7ctNbm{Bd<&YjGYG~Wa$?1zOy_^Ti-`phvd1En=@EDn3bop_X=8-CDl-E?G*U+qi}IW^W*R2}%g312vY8`>1& ze6vev(}>mOdJ7iRIk6KoM^LZ4Y>Jcwe{j(L3QevoC}lO)CIrvrdR7;tAUxC;P-Kk% z@LHaGLaXx;y?ClT=5yv7jI7*mZz?R+bmFGL#1P&HtaF+;yl$})&?qrjfggiuhNpB}iUq|-hn@C~yS3O&37O>lZVsua8;NUPxi*3$RU z%Shj-AIZ{7s)snfpSV)bxE~+qs??yOqDUPhCxQeyp6=|{6A;p&?wh8C5dH_y|NHU6 zOBm6Gu%N`YfL-UE9tm2tgirH_C5pO{+P}1~sn+MYT0h!y1Jq=ZJh*z`meaH)?)GN&=H;ZDEzwa zbT=c9<%J+Bqcl znG8#oNQ3RuS8sw$%RTMJe)W&fJ>De{mUGa{#ps2Fx=n36yuJO))4aWS)Y3P%1>?D^ zsld==L~y~uSu4nz;J%A3SMeIo5ct;MfXVj+e~E#P7-&)O9vcF*a! zEhNtL2xb7K=!(o=LB43E=XO6N!C32=!EIQv9lmmLL&T`16oJT@wTcBiZ+#DgNx%bU zb2;$&>@RdU5XD4q^10~5DnQejdg1WZ_OA$M1e|_{<2C##beyTUZuY+UM|;uba6C~$ ze+fM6JW_c0{fJUIx;Qi68OSw1WTB$8{M2Hb+m-aXEf+qEk-ak~C6D{H6Wq4a`l7e=nM-YI3c} zD3ny^xvj5$|3ku{rDTURz;l9Ft2)b6@Fq`!-M!(QojbN3zxT#Zd~iv)4;AuD;f(-3 zLB`G16-$x!1x6rOJV}B~7_uJR8-x`26u1k7T6iBgZ%n2Bqx)LKbYu}+AVwX!keBZT z1alYN_Ju8+2tpkq5bc(*U@WyL2pxIy^(4~d-@OGmLBv`(pBLT(yIw0haE*wOE;qUu zbr`}6HhvhsH|ADGE3NUZvC)pUv>Q&m_QHpYn6(e6iw|{s;<)wucF1-zrGE9_p} zRJS5lR+R;s@B)0gd?W`>tQXbRo!O=_T?wJ=c5ubE@Jhvre63K$aa3d{&0;XRc1FS< zU8P{ZG6zKO+HK`;dTN!p&vwW3H4or@bOfL_3PTFgg@URK#&a)MVh-BT;Lbr#n5iE zyBh9(aM%+ZvdEA%IEX^UdZYau-lKmsTEyzM7%!>5qB}%fv|Q~35vQY)q3kN_x9K?w z9vZb4bho}ieLx_K#N<(y+)wf4gv+N!G~%?Akx{NB;sGM;!jVOI8qGDt+`{#+JP`J` z42=09&b90{*zT0ITKIyxFL;=cUFplkj~kOVEAHc3aa&b`CMU|n;Ehnu<(tkyi{UV$ zhqnly5z2CJEYP6+cY=o;tAcZ!3)0?#$>0128@p5yA{@GKG_-CQ8$bMT#XUi`8c_wEF7 z-8uLb^!1!9_9Az%#69Ps!zxFy(ehoHq!&9oGDn{Jsrv^w6vPR5%5Sxs@WtVn6x#3> zG%n6Y|3(GsB!0b{Q0gyTx?&_x^okfG z$;wSXeIke~TZ;51r?}fYI>g&9`IKV2gDHYbD(GBuW+YgAnmqP?0(v8aP(N?<_CQOY z)4t19^uFm^EWRJ{2L71L&I#8RXK>JSy9E^*%t?ORJ;t`makle<_+<6ytlObpPDJhnhGL$DcUh^V6fAzM4|_@y2PL%gb;FGyS5CzYA4Q<;+hH8H)0 zX&bz?k&V&*%|vG88l2W{GP6&%oJ6nY6YXR>^CH8Kpl+tYF+6SJ#GAw9DC|PF0%K5W z-}UpW7N;mb%lG5b$k~!80|YkI{#GrBxUDtanHOO?lMnaZkv~)3r}}!T@HR^{bxiKa zEzz|j3A3S4?SCUEg14X*eA)I92iND`_h1ImwJYl8#UzEpXOcw+dHnn8pjj=9t1!w5 z5IG{7(@y_ae!mAZ`(FnMUcQlZ@eBSyQy;MF!i!~hk&lEC#@tX^u|DAlYP-!+iekc` z4Q;LPK@;0Qlc$ym-#zwkw6*L$9N>{_hH`%SfE;hF4o=5|@tSv(SlQO48%^}>gybXV z&EQ^izY6xSMQjKCprwHp{JIJW9y`WEj#Q)YuVYiw|6EsN7aSi+>kt5Lw7sxfExq25 zm+(YcOp-sAQ55NnlH7A|$J^>emJcge5V?==^wzHT!KT?CC69uqIa_hZf~FrRG}RD? zQ065{$(-=CE5mq~2|ameFdx!g2X%vk_eaY6iD-_76UC|b_ukEVkIUf+zhv062E4pV z^(JNaAvIy|xWyz{^?{!anY}v*sIznl9_J6PZlb?qbZ8QFH>Ba-KcESLAq!`u`6k5v zR5{O%*bo(P-xFAMvB$#uJo{o2+2KxR?F|tLu$QCB}g@-A^a(V*?RieN$Bl z6Ln67rj4X-3w!-GfzKfAkFq9Ld?w5;p;yk0e)Sj%sZGcsstbYb3+cNxq+MGQodwdw zx8}w^$?O+;bKD|kkIYIBT9dGGa9kuw=$2yg)qSzT!5-mG(LklMx)b}kDw!h~$#l1E z%|+=~sDIKcs;X<)@E4y{MW|$l#GM|7hv`jXHl_Ax=56A<%VCBL@_gQI(*~7)e;!sD zrL4=&9))`&O{vU_D3#)lT9BK~Vx{l0gW}`88mS}k(8`Y*L+)$=C++0&YCX{~RfQIUdR9Qu(%FR?wx_=u zO%KMP9C9ba(9G+rrFvJLng*@Lpy7HXH2IkC1z zoDU)Fjq36iO{aQ0-@R!^x)lZt zS~v}7EZkV069U^6k4!u%jztAS3_0%uX4{>L@b5`zPFZgz=TV}C^wmT9{JXLKym{Qw zy51Uy)Q_@vGP^aowVQso$oI4ro@DhT$yfqXvtOBqZkXm|A^fY!iWQtZ@q8f^-TV%O zJa!$X9k09l=gU2jLfX=$SF_n|drS*i0nQU{@47GyQm8^YYGg%hZ)3}+&0age$VPAk z$5k>uWki#2<6-aE5pNHgP%8>GL7FJ{<&bA>@XAUMo2!k9?RxPui>w-)Y z7T3ESx|Kwp({bCL6FSD;$jm4@gH z7QWpqdWvqnuJQf@V1p8g#SSgOkc-l8k^5<;7}EX@$)v!TKE4|kL`0o_C7wUTC{>Qw-rD0%V z5xoPh>zzN*=#&2KqxS-fVxp7*X8oInFvCDj;HAPaa$QMBeJ9x1+V*;60hE!$E?p90a zN7bY8@5#rwGMr5XIyf}5L(>FedI}he$Fxd_I=N)ohx65^`xbfI%< zp!8OKNTXLHv2(#HFC)OFa`JU(GRA11+bYQzlYf|Ok##IQSDH+&V%@X`;7ebxWwrkp zT|87C?h%JbEh}fpiJcfjhRvpbL~+x7Si;Fcy~d;?brGolx)gEs+DsynWWAx05ci=j zz|v-zhM&n$#>M`@S-H4!0JEkg0JeK5w%S>haYT3a2BG3IsJTXcLb0~^fPmG#(Hln@nSr{3&_YK+wOYoa)w#eHcs=uw0rR<;;^p?%4(2Fl%1k~IWg`}0?Mo_7lIKD`HVk@sc8PF3mIE0 zuQ>|cR&HDO+F-hH1=^Amn^#>Gy?@JW@j^JiNhxL`;%a1s?xaHO^FDlWn7O02e!0v-m@gl;wu9PC#8&6j)M~-$O)1#(lf-_QX__8H{ z?!_J677)r5gDa|?eIeD*wS=AP^A7s6bWgG~>!+Q`c6S`q>a{*2{`a4{R@1w4NqIGR z)xFr&rOu=gG}pJ&As`^Gi_wfF8#3$bjlj}2sbUHvDZo9qHl_zku|mDYy3{3MbSZpl z_@E8_7F+4rYYH2+5UR>wR2fT33USP{pHIPFoXw;xH)3fMR7V*a?jC*B@>oFeN;?sX zp1fuXW;EiOo9=R{xMk;cyP!ydBI@yRa(SMv`@TMqFcah7X3pJf`5+tdzKQC&l3Rwn zGKcSqwgu@0zh)CyUN|0wPqhLtO+bc1Sl`&)aTxY4Z8aBy`aTa5+2D>0 z_@+jEK$&bOCR5l;Pz{tEJ%vAC2=V@TD1}^ z$9ulU8{FFVSyzf`6^ZHMLUZ3Ip%yzFbr$BoL_6M+^*5# zcbAfSr6gOV1~`+$&<=eX@)iK{%;OuY7X3UG&e|y!Owb~Wet|8mo5`N%(Y6}y=U9*; zbg_(Z0in$yTNmFUzblfPBff0ON}1qkM8mk_u^dT4r?d6SYC=H6l7YFceYVHwUY_3K$~^y z%l^nQl03PH0nERp;$Al1Hr@#TT?4;23Cz^T z!0WBG`*ojA7q1a=%H7{HMA^|X4=AzSux#Z7t&q&;!bEsBbhke}=$cFk4cFLAR-F;v zjfIs20bzFx2eW9NY!yvbg$ZX-l9dZ8?Ap?eOc4E5RC4W$$KooUJ3D?(n8WWw;EJ5ZLp)Q@^9aI(cuCQyIk$td>A z$;5`{SCjU~FLO1YU*{@cccBb_v7UghIb&Mg=U-#Ed$pC5k%F_sv(7C)zCsln^EyX% z;tfvk6&=7J&mx8+VbX71GMAK;R%`VlI%q~&1j&J)!k-}jf>ouU@$zf;z8~GkCXA$o zGNbFcdvS~c%mHsmIYX2V@^ufw-e>F)vhw;=81^tx?EWzVbR-tKMk#T!%Q`oSrm!m< zC#(^fyw8eIIZ~7~X=4 zd+H;}b2N}y$y?cm7Kywm z$JWu$&%6amWQNKRZaq>5@j*T}V1p~jq4EU(m;X?3A@f4TsQwy(tEUF z?rn*6t`Ftk@c>PkTW+hc^SsDC;SKG$%^?+_b1vQpuE{QC9;4E zDxxKh*7G&BlO$*X8p2rzo(Eq{+E|GMtaJ()w*{NZ|67K3nM856R}|mcMKob^3-#8% zqjCtU7K{2{Dk%pfn!g^@;_0&TO{?tkU7;D#1CP(eL;T9<=+N{shP{Eg7ihCSxC*^K z=w~hs3^A7WEHTju$!2awfEB<7l@64-Y0{fQ;m1_eAyGAeN3>TPH(Fo2`5Y1)S1=(M zT-QGSU>8ix!63S67tjtnS8Z~Rc5e!XeLIqlw%O^(DJ#jRTEi_Mt&AQ(NTn86Wt*X> zmsE5k!aVkR;Ed4}&Jd9RjNdV>UPQefjigWG(xOt}o1p&Gz?-(wC;$~T47fEv>)+=Y zo>&gEavJ@%1rUAJ$jebD5~<2=&!!xZxV zTTjH?28?{asm3PPJ}4;1iK{(Qwi&huj==oLNQ1b872J605Dd)!`MDA2*YWIQGZfD{ zxtS!n5`#$3HrCdyEMPv~7;4AX+&}2l!Ci5z5Z{UgBl&O~>jC{6n4R>m9YXZx`>RFu z^n+&uI+B_iX|V>x@!5S)d*GTs!KBamqb@JhE^c48&-|cn?#eO6#nvtS>uve??3(7G z*0r`Q1v6?`j2|1pCs{++h-?lHi>j@>yI&@%tZz06A(!@C=o<2{PktvB`r_+_N|X5} zgr-ZOy>8Y%^ zq26LMLH&X*v@|Z%X&Ga>r|CDx0y#^qwp9$f2`*GwvA|;Sp!WEc)vCB|*& z{%et+Wi+J)hFYDu^31=v^w=iyQ)AVb%G7PP25qvwa z1HbBdzj^N!xU}x7PhRif#yq?Sa@-b1c-TBY(xdB~EJJdHOXJw2?;R{}ON9$$%%-#xz2xK>$pzvqC?`vYq{a8!hmW5VYv%Zhbi$ERZi zF(6QWt{i9iu!+rpg%`_EVXYj!#Lt@$Zci^ojD@#<;yzB)<`!snpn)|>QH`Nt3#Eii zq|Nipx-_o$YnM(&`3dd|yX8^86HG=KzifXF410a^{mj!VNUY4Y)E@~ycuib8V`n>O zr-|p`foGv5_a$A?2!Db=VCAI=5r~9DOc!?RcrhU-MbZfH;_Q=HE!Nf6OKk8Sfbh<@ z)b1CqY!bXFlI0lqnAT_v8`aOkb{X;yRE|rYDWY#~xeAUNbYGT`A#7Ia^L&U0Fd+!i zj^h8_t^w%+Jy*7^)uvyAtNESZIPk{bBxcoIBRCw-$fIT47kyb}kNIw@U-seK1-V|> zQH^^7)sPq!Uf`yr!{S!u0%a{P&Jj1%uAJ{KyiR z&FH^1bO3F*Oud)&)%8lJw^JVIE_af2h@zgR5&Lkf@rNeXu39*5Dy)^TG{J_Nv!(1j znuJSg=G(i<;UA{r9o+nk2>Bo1kQCDDjqmsU`BC`?ZxoGZ8U%PCTyR?({*W5W{4{t_ z0$9)eDi=qS=$hnHj3k@D{=)G(sX;_)$sqSQK;P8SGS$EIVM|m`croO;s;+ zzq+uZs)|jKSM~=uF*sFE3&>5y$_;aJ|Guj>XC+7UixZPFePwTB()cMazFHu#EdHSN z5~?DFL_N0Gm)y#MKTPB!4PNc8g65J`--lb&4}dimb6*wW0Y#P5;bo$`LN!QBJZ7bZ zPXUE7$?m@96XX8zzGF+-PW7FrA9!p~eKs|2hP$Sz3Y3?Dg2s`jl6|DLm{*K!pyzI(u|R*xT76;k@uknlgD9yUxm1{ zYi8Pg*c&pNsVQWKLBbo`H^CfiM$+rV&)f`F2lh%gjF-};qp;j>;2SHYy^yXdHEP-7 zN8Q;`v`}eC7SCuVK`oh=v-ZH~6>i=65z71MkAkAAFd$w-Io)W{!(S2C{dI{pi{siRoglEJDtrN+xnEy(0TygP@RK67Q>6`X}`82X>b4r8iq6@=v(!d zRiN)CZohWd=VZ#fKhI>8n7Zt{jU}i<$~1h`(F8Ht(9DLOuzn^l$*htHeP^qArSy(p z_C09N%EgQYP3{{WsF=m|VonEO{vmiS6@$~YmS!r2i0#zxd1}P|i(<|#<{C$kHe)UE zX{rkY9#2t8#UheEviWI{+Oj_&-ZBmKwP5&%rpTAv`ot7)DhM^b*-ul#*hV>Z`dtTw z(;~ISiUJO@t2NfLgys&k`1OD*n->_QjG}%J-?!YCAMYBcq$0vaV zB+;0sjp<9&($wBK%C@l4JU(h-$)cxsFQ`j_8M?`H@&FlKP0nOqz`IlRmzRE1!Se1@rr{2#@3Wy0{4tH*dLK<&0A*63D2c}1NdMjB z*1Rn|J}ka{kkAED5Kb`eUBCFcCFN6=bw285wI=EwdfqCdeH%M!1y*Tvy(-@RJ^V6- zrFH=_kkX6)=P5;bq}ICG(;ZtS{OWi4!6iQmYX-EcT{Hg>U?vQ%p*?9Z@S+BSQ>>j& z3Y%0Izh2r70ynAHd=3wIYX<(Z>7d!|c($1+8e5S!auo;jh{ zIfP}p=BEUQ~X2YvLvtpAh%1 z&+7z={OlA{0=Lf>&N!c-h@ySum9WcqG*Vqv_%il{?{)D4Mz^Ytm zux@Vg;fB)JBK}?f#rjg+)09yx$rqZ$xL+FY5RWS3GY879^<3<)Xbw-I1y^gHWY1SN zo;EeXf^pexdf#XzRa%U*-A$Ftd%vX}pw`!}EX>4Tx04R}tk-tmBKpe$iTeTvUf_4yb2w0u$q9VH0DionYs1;guFuC-H(4-+r zad8w}3l9ERtU9+0Yt2!cOA`~$>E(M3x9UQ%cgctIG}2l zkxnLrY;HvezM>0#2xAyC5;OH#QB1*eeBHyx*Si?c@;>+H=vDG21AGE;oau%|yiPo| zY3ZEzi6g8eDa7Z*V+LK2_>t?f%Ws^E4*Pj##K@%Qh$F;8v5n<6W+g)85Ux+YNVJ*(|*FkKj`>Ha>?Y{ z03*jdDo`Oge(*o|-K|-e7YT&7*=ru}?r!hx-!skregNsta@H|yag+c600v@9M??Vs0RI60puMM)00009a7bBm z000fw000fw0YWI7cmMzZ2XskIMF;8z5)URW8V@lh000S>Nkl|k4q%8a@xz;ikJw*qT{u^DaJ1LJ|C+pxg3Df$AMfO_CnV4<1qJiylYYG9&& zzX^D#4eL+=tOmLQ>wrEVm1wjkM{k@*olEj)5lMAziAE)@Dlod;D(QYn#~wiIdu=ej zueY(UN=Xgg*S`*l*J#W~OAQ+KgX{&?_|qL-ZvgLkeKl}B@Uo-}$}jN)&$2ZZW7z_W zmc+w#FVeF8tVqkYEy?eZR3T}gq!~fq+a>is0M@sIq^^E-EJ1%qd0$-)MzCF!0=SwY zfR;)8rhu)k(8bRKThPuVjSuee_k+=q{-{c&naz?k5~u?@75M7Ri&8H(vrQT8W&mSK z?aZ5*B;5`S0?r4{1V#Z*q&VAyfOCOvz!u;oV7{5{$pQZnz(wBw5x_>^1rJd6#@ZeO z4ECQdn%P_NXcagI_zZ9iunTw%n3=SOl7<4Efd(_1lN9{|pZ5NG0Na4&z-%*XN@(8) zI4#;2Gi#RA9vBXs?LpW|;Lm3EZpNDQ0xkr4IY!p|Jy#WC;cAMoXqm6nm}RRg_H|OI zWeeJ09Nh2s3H5{B>LtkvNrN+JjO!(BO3_^`sb5TISWtg?tgf%?BuS&Bn{@~kuQ zl^TGpt~Gv3E5O!X(iYd*5UaaP(#~L>fOg^!Y~C=DY;3E%t}*op3xJ;7khU@T;Ki3qkpv{`%eL zYDoHRP(LDVqlQZQX&ZqS0`8W!L}IN3+aH24oaAM91^^tAqIaIxOVV{g;ITXa$C)X* zKM3x5Q4ZK%_p;|x`WhAJU77>7+Mw;XQu?b29)@QVz_!QJ!uluZb_&4yM)ZJ6x;MD* z;R$-318e)sG@k7QU;|JJ2mUR0Xpi`?1MP&eEBtejnaxhoTj2a1K(xuH0%!U6$!7LS zitYpM7{BGgLzYC&c0Wl&5+0&Ixr5)MfRmgn{c}BVe@gJQ6qx2eKPRb2tVsp%sF^KJ z(A@#d^PfF|D8kyi3OLTMQ2s6H`)2l7Mn6@)*#K|n+_OITo^;}~GUxOr{&2l6X|!YJ zczsKU=k|qMTSEd0i=x~+;t{4j!@o3EnJluz2;m)Jwuo@upZFahqGv^eaE})-i zj3GbOxm27WaEGLafJ=aWzG0sLPH_;O08Ek8Y-VXzXE(6N_bqR1)xr1e3H8mbn8#lv zo$9>fxz4kl=+?HYyHDRCN~Dl2P3d20d$=fa)|?ln4a z@}n?*dX9cizq$ncRV24&=ysCyu%yY7u1E_IBz1GHZ*UR^<&oUif<1XAEkN*jt?{y@ zab7Og@7+OwbW#$}mZ5uJ(5|De(;%NiucWt&qzgT&m!w@;JX%c#Es_Pa4h0@pI|?A49dQeF_#EfFXlv} z_XqtAP3fz9@UX22BFeUa?LYqe$qc=_A|*2DjhYNvWP34Zof!x5zb*yX{OLYJ($s*q z*e2;y2@HEQ-<2Uj8Srqc0tWxspzhnjxM#;V#{1q7ul$whOGw;BY{5#KHR=w zpvYH#b&>6>fS2SEM-Z}qJcuCiC~J(FEsu?Tk)*qUTimBu?whvS9p+)dm~J<-(4oE$ zxD2?!&j8mrUsVtE_VNn%3vV>D_cGS7Nzz@w1P=<9NqWl9M59P?xI6w$z%O$4WVN3R z+~e!;f~0xgUk~8ofO?t%JW?Xxcsww|Bh+cm87>5N_`F8=-T?e0D|xbij~V6|5_FH0G%e%)P4NWD3{tm3(uClMEJ-#>x}?D4 zDwFh0C!LdIucY5d>XdahT8w4$@{zG4vAFE^^=xM`D-p_bo&}L5O|+zaXIaPgz*kd9 z-RWj_RRLi8p=U&-jbVdxg7eI*u|NQy0$k%A31d4BxR#cTmZO12 z&-!@W%oZlJ|GZmlfSc1SvZOI?(E)BSv)w^mH{i>(WViJ6h`-*s!rz(M>ZoCBrOqA2 zyr7}{C*`sLt^aq`zI-$@dzO}*u^r{*EK8}u_JPDlGn?gr+g@JMvXlyJsTsCz;YOD& zTvIdqm Se>9z3y literal 6578 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 PUo9|Q6P@Zyu95!( Date: Thu, 18 Jun 2026 14:42:33 -0400 Subject: [PATCH 08/12] Apply new auth layout to password screens and extract shared auth shell. Replace layouts.minimal on change, email, reset, and success password views with auth.layouts.auth and auth.partials.auth-styles to match the new login design. --- resources/views/auth/layouts/auth.blade.php | 86 +++++ .../views/auth/partials/auth-styles.blade.php | 346 ++++++++++++++++++ .../views/auth/passwords/change.blade.php | 231 ++++++------ .../views/auth/passwords/email.blade.php | 97 ++--- .../views/auth/passwords/reset.blade.php | 175 ++++++--- .../views/auth/passwords/success.blade.php | 44 +-- 6 files changed, 697 insertions(+), 282 deletions(-) create mode 100644 resources/views/auth/layouts/auth.blade.php create mode 100644 resources/views/auth/partials/auth-styles.blade.php diff --git a/resources/views/auth/layouts/auth.blade.php b/resources/views/auth/layouts/auth.blade.php new file mode 100644 index 0000000000..90f3db8e5a --- /dev/null +++ b/resources/views/auth/layouts/auth.blade.php @@ -0,0 +1,86 @@ + + + + + + + + + + + @yield('title') - {{ __('ProcessMaker') }} + + + @if (hasPackage('package-accessibility')) + @include('package-accessibility::userway') + @endif + @include('auth.partials.auth-styles') + @yield('css') + + +
+ @hasSection('skip-login-scripts') + @else +
+ + +
+ @endif +
+
+
+ +
+ @php + $loginFooterSetting = \ProcessMaker\Models\Setting::byKey('login-footer'); + @endphp + @if ($loginFooterSetting) + + @endif +
+
+ @yield('js') + @stack('scripts') + @hasSection('skip-login-scripts') + @else + + + + + @endif + + diff --git a/resources/views/auth/partials/auth-styles.blade.php b/resources/views/auth/partials/auth-styles.blade.php new file mode 100644 index 0000000000..ae926eaffe --- /dev/null +++ b/resources/views/auth/partials/auth-styles.blade.php @@ -0,0 +1,346 @@ + diff --git a/resources/views/auth/passwords/change.blade.php b/resources/views/auth/passwords/change.blade.php index 7216d85de6..a3c630e37d 100644 --- a/resources/views/auth/passwords/change.blade.php +++ b/resources/views/auth/passwords/change.blade.php @@ -1,67 +1,63 @@ -@extends('layouts.minimal') +@extends('auth.layouts.auth') + +@section('skip-login-scripts') +@endsection + @section('title') {{ __('Change Password') }} @endsection -@section('content') -
-
-
- @php - $loginLogo = \ProcessMaker\Models\Setting::getLogin(); - $isDefault = \ProcessMaker\Models\Setting::loginIsDefault(); - $class = $isDefault ? 'login-logo-default' : 'login-logo-custom'; - @endphp - {{ config('logo-alt-text', 'ProcessMaker') }} -
-
-
-
-
-
- -
{{ __('Welcome', ['name' => $user->fullname]) }}
-
-
{{ __('Please change your account password') }}
-
{{ __('Password Requirements') }}: -
    -
  • {{ __('Minimum of 8 characters in length') }}
  • -
  • {{ __('Contains an uppercase letter') }}
  • -
  • {{ __('Contains a number or symbol') }}
  • -
-
- @if (session()->has('timeout')) -
{{ __("Your account has been timed out for security.") }}
- @endif - @if (session()->has('login-error')) -
{{ session()->get('login-error')}}
- @endif -
- - -
- {{ html()->password('password')->id('password')->attribute('rows', 4)->class('form-control')->attribute('v-model', 'formData.password')->attribute('autocomplete', 'new-password')->attribute('@input', 'props.updatePassword($event.target.value)')->attribute('v-bind:class', '{\'form-control\':true, \'is-invalid\':errors.password}') }} -
-
- - @{{ error }} - -
-
- {{ html()->label(__('Confirm Password'), 'confpassword') }}* - {{ html()->password('confpassword')->class('form-control')->attribute('v-model', 'formData.confpassword')->attribute('v-bind:class', '{\'form-control\':true}')->attribute('autocomplete', 'new-password') }} -
-
- -
-
-
-
+@section('content') +
+
+
+ +
{{ __('Welcome', ['name' => $user->fullname]) }}
+
+

{{ __('Please change your account password') }}

+
{{ __('Password Requirements') }}: +
    +
  • {{ __('Minimum of 8 characters in length') }}
  • +
  • {{ __('Contains an uppercase letter') }}
  • +
  • {{ __('Contains a number or symbol') }}
  • +
+
+ @if (session()->has('timeout')) +
{{ __("Your account has been timed out for security.") }}
+ @endif + @if (session()->has('login-error')) +
{{ session()->get('login-error') }}
+ @endif +
+ + +
+ {{ html()->password('password')->id('password')->attribute('rows', 4)->class('form-control form-control-login')->attribute('v-model', 'formData.password')->attribute('autocomplete', 'new-password')->attribute('@input', 'props.updatePassword($event.target.value)')->attribute('v-bind:class', '{\'form-control\':true, \'form-control-login\':true, \'is-invalid\':errors.password}') }}
+
+ + @{{ error }} +
+
+ {{ html()->label(__('Confirm Password'), 'confpassword') }}* + {{ html()->password('confpassword')->class('form-control form-control-login')->attribute('v-model', 'formData.confpassword')->attribute('v-bind:class', '{\'form-control\':true, \'form-control-login\':true}')->attribute('autocomplete', 'new-password') }} +
+
+ +
+
@endsection +@section('css') + +@endsection + @section('js') @@ -71,82 +67,65 @@ -@endsection -@section('css') - + ProcessMaker.apiClient.put('password/change', this.formData) + .then(response => { + if (response.status === 200) { + window.location.href = '/'; + } + }) + .catch(error => { + this.errors = error.response.data.errors; + }); + }, + } + }); + @endsection diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php index 5467fdc25b..1d228df89e 100644 --- a/resources/views/auth/passwords/email.blade.php +++ b/resources/views/auth/passwords/email.blade.php @@ -1,72 +1,43 @@ -@extends('layouts.minimal') +@extends('auth.layouts.auth') @section('title') -{{__('Forgot Your Password?')}} +{{ __('Forgot Your Password?') }} @endsection @section('content') - -
-
- @component('components.logo') - @endcomponent -

{{__('Forgot Your Password?')}}

-

{{__("Enter your email address and we'll send you a reset link.")}}

+

{{ __('Forgot Your Password?') }}

+

{{ __("Enter your email address and we'll send you a reset link.") }}

+ +
+ @csrf + @if (session('status')) +
+ {{ session('status') }}
- -
- -@endsection -@section('css') - +
+ +
+
+ @endsection diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php index 69d6f0b67c..817833a339 100644 --- a/resources/views/auth/passwords/reset.blade.php +++ b/resources/views/auth/passwords/reset.blade.php @@ -1,74 +1,129 @@ -@extends('layouts.minimal') +@extends('auth.layouts.auth') @section('title') -{{__('Welcome', ['name' => $username])}} +{{ __('Reset Your Password') }} @endsection @section('content') -
-
- @component('components.logo') - @endcomponent -

{{__('Reset Your Password')}}

-
- {{ csrf_field() }} - -
- - - @if ($errors->has('email')) - - {{ $errors->first('email') }} - - @endif +

{{ __('Reset Your Password') }}

-
-
- - -
-
- - - @if ($errors->has('password')) - - {{ $errors->first('password') }} - - @endif - -
-
- - -
-
- -
-
+
+ @csrf + +
+ +
+ + @if ($errors->has('email')) + + {{ $errors->first('email') }} + + @endif +
-
- +
+ +
+ +
+
+
+
+ + +
+
+ + + @if ($errors->has('password')) + + {{ $errors->first('password') }} + + @endif +
+
+
+ +
+ + +
+
+
+ +
+ @endsection -@section('css') - -@endsection + +@endpush diff --git a/resources/views/auth/passwords/success.blade.php b/resources/views/auth/passwords/success.blade.php index b54b239b35..b0454894ea 100644 --- a/resources/views/auth/passwords/success.blade.php +++ b/resources/views/auth/passwords/success.blade.php @@ -1,37 +1,15 @@ -@extends('layouts.minimal') - -@section('content') -
-
- @component('components.logo') - @endcomponent -
-
- - {{__('Success!')}} {{__('Your password has been updated.')}} - -
- -
-
-
+@extends('auth.layouts.auth') +@section('title') +{{ __('Success!') }} @endsection -@section('css') - +@section('content') +
+ {{ __('Success!') }} + {{ __('Your password has been updated.') }} +
+ @endsection From 4da50ca5b9366fe532682b0dc815e5d096f90ddf Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Thu, 25 Jun 2026 12:58:23 -0400 Subject: [PATCH 09/12] Add missing styles. --- resources/lang/en.json | 3 +++ resources/views/auth/newLogin.blade.php | 2 +- .../views/auth/partials/auth-styles.blade.php | 23 +++++++++++++++++++ .../views/auth/passwords/change.blade.php | 6 +++-- .../views/auth/passwords/email.blade.php | 21 +++++++++-------- .../views/auth/passwords/reset.blade.php | 6 +++-- 6 files changed, 46 insertions(+), 15 deletions(-) diff --git a/resources/lang/en.json b/resources/lang/en.json index c9aec9738c..f5747fc4d6 100644 --- a/resources/lang/en.json +++ b/resources/lang/en.json @@ -269,6 +269,7 @@ "Available Processes": "Available Processes", "Avatar": "Avatar", "Back to Login": "Back to Login", + "Back To Login": "Back To Login", "Back": "Back", "Background Color": "Background Color", "Base DN": "Base DN", @@ -1533,6 +1534,7 @@ "PARTICIPANTS": "PARTICIPANTS", "Participants": "Participants", "participants": "participants", + "Password Assistance": "Password Assistance", "Password expiration": "Password expiration", "Password Grant Client ID": "Password Grant Client ID", "Password Grant Secret": "Password Grant Secret", @@ -1576,6 +1578,7 @@ "Please choose the tasks in your inbox that this new rule should apply to. Use the column filters to achieve this.": "Please choose the tasks in your inbox that this new rule should apply to. Use the column filters to achieve this.", "Please contact your administrator to get started.": "Please contact your administrator to get started.", "Please enter Tab Name": "Please enter Tab Name", + "Please enter your email address and we'll send you a reset link.": "Please enter your email address and we'll send you a reset link.", "Please provide a valid URL (e.g., https://example.com ) to specify the allowed origin(s) permitted to embed ProcessMaker.": "Please provide a valid URL (e.g., https://example.com ) to specify the allowed origin(s) permitted to embed ProcessMaker.", "Please log in to continue your work on this page.": "Please log in to continue your work on this page.", "Please select a Saved Search": "Please select a Saved Search", diff --git a/resources/views/auth/newLogin.blade.php b/resources/views/auth/newLogin.blade.php index b85b167df9..1fdc3763cd 100644 --- a/resources/views/auth/newLogin.blade.php +++ b/resources/views/auth/newLogin.blade.php @@ -97,7 +97,7 @@ class="login-remember-input"
- +
@endif diff --git a/resources/views/auth/partials/auth-styles.blade.php b/resources/views/auth/partials/auth-styles.blade.php index ae926eaffe..ff71a28d49 100644 --- a/resources/views/auth/partials/auth-styles.blade.php +++ b/resources/views/auth/partials/auth-styles.blade.php @@ -65,6 +65,24 @@ text-align: center; } + .auth-card-header .auth-card-title, + .auth-card-header .auth-card-subtitle { + text-align: left; + } + + .auth-card-header .auth-card-title { + margin-bottom: 0.75rem; + } + + .auth-card-header .auth-card-subtitle { + margin-bottom: 2rem; + } + + .auth-card-footer { + margin-top: 3.25rem; + text-align: center; + } + .form { padding: 0; } @@ -170,6 +188,11 @@ text-transform: none; } + .button-login.button-login-uppercase { + letter-spacing: 0.02em; + text-transform: uppercase; + } + .slogan-panel { flex: 1; align-items: center; diff --git a/resources/views/auth/passwords/change.blade.php b/resources/views/auth/passwords/change.blade.php index a3c630e37d..896bde0e48 100644 --- a/resources/views/auth/passwords/change.blade.php +++ b/resources/views/auth/passwords/change.blade.php @@ -14,7 +14,9 @@
{{ __('Welcome', ['name' => $user->fullname]) }}
-

{{ __('Please change your account password') }}

+
+

{{ __('Please change your account password') }}

+
{{ __('Password Requirements') }}:
  • {{ __('Minimum of 8 characters in length') }}
  • @@ -44,7 +46,7 @@ {{ html()->password('confpassword')->class('form-control form-control-login')->attribute('v-model', 'formData.confpassword')->attribute('v-bind:class', '{\'form-control\':true, \'form-control-login\':true}')->attribute('autocomplete', 'new-password') }}
- +
diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php index 1d228df89e..255675788c 100644 --- a/resources/views/auth/passwords/email.blade.php +++ b/resources/views/auth/passwords/email.blade.php @@ -1,12 +1,14 @@ @extends('auth.layouts.auth') @section('title') -{{ __('Forgot Your Password?') }} +{{ __('Password Assistance') }} @endsection @section('content') -

{{ __('Forgot Your Password?') }}

-

{{ __("Enter your email address and we'll send you a reset link.") }}

+
+

{{ __('Password Assistance') }}

+

{{ __("Please enter your email address and we'll send you a reset link.") }}

+
@csrf @@ -15,8 +17,8 @@ {{ session('status') }}
@endif -
- +
+
@if ($errors->has('email')) @@ -33,11 +34,11 @@ class="form-control form-control-login{{ $errors->has('email') ? ' is-invalid' : @endif
-
- +
+
-
- {{ __('Back to Login') }} + @endsection diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php index 817833a339..b8257a549d 100644 --- a/resources/views/auth/passwords/reset.blade.php +++ b/resources/views/auth/passwords/reset.blade.php @@ -5,7 +5,9 @@ @endsection @section('content') -

{{ __('Reset Your Password') }}

+
+

{{ __('Reset Your Password') }}

+
@csrf @@ -82,7 +84,7 @@ class="form-control form-control-login"
- +
@endsection From 35f0fb0953b60b057f7bf36d5e866e731ef31e8f Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Thu, 25 Jun 2026 13:19:34 -0400 Subject: [PATCH 10/12] An improvement has been added to prevent flickering. --- resources/views/auth/newLogin.blade.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/resources/views/auth/newLogin.blade.php b/resources/views/auth/newLogin.blade.php index 1fdc3763cd..ac63250f26 100644 --- a/resources/views/auth/newLogin.blade.php +++ b/resources/views/auth/newLogin.blade.php @@ -10,6 +10,17 @@ {{ __('Login') }} - {{ __('ProcessMaker') }} + @if (hasPackage('package-accessibility')) @include('package-accessibility::userway') @@ -192,7 +203,6 @@ function updateCapsLockWarning(event) { + @include('auth.partials.login-critical-styles') + @include('auth.partials.auth-styles') + @include('auth.partials.login-extra-styles') @if (hasPackage('package-accessibility')) @include('package-accessibility::userway') @@ -30,14 +22,7 @@
-
- - -
+ @include('auth.partials.language-selector')
@@ -189,416 +174,5 @@ function updateCapsLockWarning(event) { }); } - - - -@foreach(GlobalScripts::getScripts() as $script) - @if (strpos($script, '/vendor/processmaker/packages/package-dynamic-ui/js/global.js') !== 0) - - @endif -@endforeach - - - +@include('auth.partials.auth-language-scripts') diff --git a/resources/views/auth/partials/auth-language-scripts-minimal.blade.php b/resources/views/auth/partials/auth-language-scripts-minimal.blade.php new file mode 100644 index 0000000000..ffd2e23558 --- /dev/null +++ b/resources/views/auth/partials/auth-language-scripts-minimal.blade.php @@ -0,0 +1,10 @@ +@foreach(GlobalScripts::getScripts() as $script) + @if (strpos($script, '/vendor/processmaker/packages/package-dynamic-ui/js/global.js') !== 0) + + @endif +@endforeach + + diff --git a/resources/views/auth/partials/auth-language-scripts.blade.php b/resources/views/auth/partials/auth-language-scripts.blade.php new file mode 100644 index 0000000000..691bb566d0 --- /dev/null +++ b/resources/views/auth/partials/auth-language-scripts.blade.php @@ -0,0 +1,4 @@ + + + +@include('auth.partials.auth-language-scripts-minimal') diff --git a/resources/views/auth/partials/auth-styles.blade.php b/resources/views/auth/partials/auth-styles.blade.php index ff71a28d49..c3da7e4abf 100644 --- a/resources/views/auth/partials/auth-styles.blade.php +++ b/resources/views/auth/partials/auth-styles.blade.php @@ -153,31 +153,25 @@ .form-control-login:focus, .login-container .form-control:focus { - border-color: #2563EB; - box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); + border-color: {{ color('primary') }}; + box-shadow: 0 0 0 3px rgba({{ color_rgb('primary') }}, 0.1); } .auth-link { - color: #2563EB; + color: {{ color('primary') }}; font-size: 0.875rem; font-weight: 500; text-decoration: none; } .auth-link:hover { - color: #1d4ed8; + color: color-mix(in srgb, {{ color('primary') }} 80%, black); text-decoration: underline; } - .btn-primary { - background-color: #2563EB; - border-color: #2563EB; - } - - .btn-primary:hover, - .btn-primary:focus { - background-color: #1d4ed8; - border-color: #1d4ed8; + .login-container .btn-primary.button-login { + background-color: {{ color('primary') }}; + border-color: {{ color('primary') }}; } .button-login { @@ -286,38 +280,50 @@ z-index: 1041; } + #language-selector.language-button-container .btn-language-selector-login, .language-button-container .btn-language-selector-login { - align-items: center; - background: transparent; - border: 1px solid #ffffff; - border-radius: 15.5px; - box-shadow: none; - color: #ffffff; - height: 31px; - justify-content: center; - min-width: 31px; - padding: 0 0.5rem; - text-transform: uppercase; - width: 31px; - } - + align-items: center !important; + background-color: #002D59 !important; + border: 1px solid #ffffff !important; + border-radius: 15.5px !important; + box-shadow: none !important; + color: #ffffff !important; + display: inline-flex !important; + height: 31px !important; + justify-content: center !important; + min-width: 31px !important; + padding: 0 0.5rem !important; + text-transform: uppercase !important; + width: 31px !important; + } + + #language-selector.language-button-container .btn-language-selector-login > div, .language-button-container .btn-language-selector-login > div { - color: #ffffff; - font-size: 0.75rem; - font-weight: 500; - line-height: 1; - text-transform: uppercase; - } - + background: transparent !important; + border-radius: 0 !important; + color: #ffffff !important; + font-size: 0.75rem !important; + font-weight: 500 !important; + height: auto !important; + line-height: 1 !important; + padding: 0 !important; + text-transform: uppercase !important; + width: auto !important; + } + + #language-selector.language-button-container .btn-language-selector-login:hover, .language-button-container .btn-language-selector-login:hover { - background: rgba(255, 255, 255, 0.12); + background-color: rgba(255, 255, 255, 0.12) !important; } + #language-selector.language-button-container .btn-language-selector-login:active, + #language-selector.language-button-container .btn-language-selector-login:focus, + #language-selector.language-button-container .btn-language-selector-login:focus-within, .language-button-container .btn-language-selector-login:active, .language-button-container .btn-language-selector-login:focus, .language-button-container .btn-language-selector-login:focus-within { - box-shadow: none; - outline: none; + box-shadow: none !important; + outline: none !important; } .auth-success-message { @@ -329,7 +335,7 @@ } .auth-success-message strong { - color: #2563EB; + color: {{ color('primary') }}; display: block; font-size: 1rem; margin-bottom: 0.5rem; diff --git a/resources/views/auth/partials/language-selector.blade.php b/resources/views/auth/partials/language-selector.blade.php new file mode 100644 index 0000000000..f41d2bc710 --- /dev/null +++ b/resources/views/auth/partials/language-selector.blade.php @@ -0,0 +1,8 @@ +
+ + +
diff --git a/resources/views/auth/partials/login-critical-styles.blade.php b/resources/views/auth/partials/login-critical-styles.blade.php new file mode 100644 index 0000000000..414cf61815 --- /dev/null +++ b/resources/views/auth/partials/login-critical-styles.blade.php @@ -0,0 +1,11 @@ + diff --git a/resources/views/auth/partials/login-extra-styles.blade.php b/resources/views/auth/partials/login-extra-styles.blade.php new file mode 100644 index 0000000000..a4ced842e2 --- /dev/null +++ b/resources/views/auth/partials/login-extra-styles.blade.php @@ -0,0 +1,107 @@ + diff --git a/resources/views/auth/passwords/change.blade.php b/resources/views/auth/passwords/change.blade.php index 896bde0e48..1f36c391d6 100644 --- a/resources/views/auth/passwords/change.blade.php +++ b/resources/views/auth/passwords/change.blade.php @@ -1,7 +1,6 @@ @extends('auth.layouts.auth') -@section('skip-login-scripts') -@endsection +@section('skip-auth-language-scripts', 'skip') @section('title') {{ __('Change Password') }} @@ -130,4 +129,5 @@ } }); +@include('auth.partials.auth-language-scripts-minimal') @endsection From f4a529341559dceab3426b93f0ec418926aa9d9b Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Thu, 25 Jun 2026 14:56:50 -0400 Subject: [PATCH 12/12] Fix php-cs-fixer issues. --- helpers.php | 1 + 1 file changed, 1 insertion(+) diff --git a/helpers.php b/helpers.php index 69bba1d6a3..cfcc0bc6cf 100644 --- a/helpers.php +++ b/helpers.php @@ -400,6 +400,7 @@ function feelExpression(string $expression, array $data) $formalExp = new FormalExpression(); $formalExp->setLanguage('FEEL'); $formalExp->setBody($expression); + return $formalExp($data); } }