Use HTTP POST for logout (#7489)

* Use HTTP POST for logout
To avoid potential CSRF risks

* Fixed button font issue

* Minor whitespace
This commit is contained in:
Alexandre Alapetite
2025-04-05 23:15:37 +02:00
committed by GitHub
parent 711a14fd9c
commit d858053a7c
28 changed files with 179 additions and 132 deletions

View File

@@ -223,9 +223,13 @@ class FreshRSS_auth_Controller extends FreshRSS_ActionController {
* This action removes all accesses of the current user.
*/
public function logoutAction(): void {
invalidateHttpCache();
FreshRSS_Auth::removeAccess();
Minz_Request::good(_t('feedback.auth.logout.success'), [ 'c' => 'index', 'a' => 'index' ]);
if (Minz_Request::isPost()) {
invalidateHttpCache();
FreshRSS_Auth::removeAccess();
Minz_Request::good(_t('feedback.auth.logout.success'), [ 'c' => 'index', 'a' => 'index' ]);
} else {
Minz_Error::error(403);
}
}
/**

View File

@@ -2,6 +2,9 @@
declare(strict_types=1);
?>
<nav class="nav nav-list aside" id="aside_feed">
<form id="post-csrf" method="post">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
</form>
<a class="toggle_aside" href="#close"><?= _i('close') ?></a>
<ul>
@@ -19,9 +22,8 @@
<a href="<?= _url('user', 'profile') ?>"><?= _t('gen.menu.user_profile') ?></a>
</li>
<li class="item">
<a class="signout" href="<?= FreshRSS_auth_Controller::getLogoutUrl() ?>">
<?php
echo _t('gen.auth.logout'); ?> <?= _i('logout') ?></a>
<button class="as-link signout" form="post-csrf" formaction="<?=
FreshRSS_auth_Controller::getLogoutUrl() ?>"><?= _t('gen.auth.logout'); ?><?= _i('logout') ?></button>
</li>
</ul>
</li>

View File

@@ -50,6 +50,9 @@
<?php if (FreshRSS_Auth::hasAccess()) { ?>
<nav class="item configure">
<form id="post-csrf" method="post">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
</form>
<div class="dropdown">
<div id="dropdown-configure" class="dropdown-target"></div>
<a class="btn dropdown-toggle" href="#dropdown-configure"><?= _i('configure') ?></a>
@@ -63,7 +66,9 @@
<ul>
<li class="item"><a href="<?= _url('user', 'profile') ?>"><?= _t('gen.menu.user_profile') ?></a></li>
<?php if (FreshRSS_Auth::accessNeedsAction()): ?>
<li class="item"><a class="signout" href="<?= _url('auth', 'logout') ?>"><?= _t('gen.auth.logout'); ?><?= _i('logout') ?></a></li>
<li class="item">
<button class="as-link signout" form="post-csrf" formaction="<?= _url('auth', 'logout') ?>"><?= _t('gen.auth.logout'); ?><?= _i('logout') ?></button>
</li>
<?php else: ?>
<li class="item"><span class="signout">(<?= htmlspecialchars(Minz_User::name() ?? '', ENT_NOQUOTES, 'UTF-8') ?>)</span></li>
<?php endif; ?>

View File

@@ -60,13 +60,15 @@
<div class="item"></div>
<form id="post-csrf" method="post">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
</form>
<?php if (FreshRSS_Auth::accessNeedsAction()): ?>
<div class="item configure">
<?php if (FreshRSS_Auth::hasAccess()): ?>
<a class="signout" href="<?= Minz_Url::display(['c' => 'auth', 'a' => 'logout'], 'html', 'root') ?>">
<?= _i('logout') ?><?= _t('gen.auth.logout') ?>
(<?= htmlspecialchars(Minz_User::name() ?? '', ENT_NOQUOTES, 'UTF-8') ?>)
</a>
<button class="as-link signout" form="post-csrf" formaction="<?=
_url('auth', 'logout') ?>"><?= _t('gen.auth.logout'); ?><?= _i('logout') ?></button>
<?php else: ?>
<a class="signin" href="<?= Minz_Url::display(['c' => 'auth', 'a' => 'login'], 'html', 'root') ?>">
<?= _i('login') ?><?= _t('gen.auth.login') ?>

View File

@@ -185,14 +185,16 @@
line-height: 2.5em;
}
a {
a,
.as-link {
padding: 0 1rem;
color: variables.$sid-font-color;
@include mixins.transition(all, 0.15s, ease-in-out);
}
a:hover {
a:hover,
.as-link:hover {
background: variables.$sid-bg-dark;
text-decoration: none;
}

View File

@@ -599,12 +599,14 @@ th {
min-height: 2.5em;
line-height: 2.5em;
}
.nav-list .item a {
.nav-list .item a,
.nav-list .item .as-link {
padding: 0 1rem;
color: #363330;
transition: all 0.15s ease-in-out;
}
.nav-list .item a:hover {
.nav-list .item a:hover,
.nav-list .item .as-link:hover {
background: #efe3d3;
text-decoration: none;
}
@@ -1210,21 +1212,21 @@ main.prompt {
padding: 0.5rem 1rem;
}
.aside .toggle_aside,
#overlay .close,
.dropdown-menu .toggle_aside,
#slider .toggle_aside {
#overlay .close,
.dropdown-menu .toggle_aside,
#slider .toggle_aside {
background-color: #ca7227;
}
.aside .toggle_aside:hover,
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover,
#slider .toggle_aside:hover {
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover,
#slider .toggle_aside:hover {
background-color: #b7641d;
}
.aside .toggle_aside .icon,
#overlay .close .icon,
.dropdown-menu .toggle_aside .icon,
#slider .toggle_aside .icon {
#overlay .close .icon,
.dropdown-menu .toggle_aside .icon,
#slider .toggle_aside .icon {
filter: grayscale(100%) brightness(2.5);
}
.header .item.search {
@@ -1253,16 +1255,16 @@ main.prompt {
padding: 0.85rem 1.25rem;
}
.nav_menu .stick,
.nav_menu .group {
.nav_menu .group {
margin: 0.5rem 0.5rem;
}
.nav_menu .stick .btn,
.nav_menu .group .btn {
.nav_menu .group .btn {
margin: 0;
padding: 0.85rem 1.25rem;
}
.nav_menu .stick .btn.read_all,
.nav_menu .group .btn.read_all {
.nav_menu .group .btn.read_all {
padding: 0.85rem 1.25rem;
}
.nav_menu .search .input {
@@ -1333,3 +1335,5 @@ a, button.as-link {
outline: none;
color: #ca7227;
}
/*# sourceMappingURL=ansum.css.map */

View File

File diff suppressed because one or more lines are too long

View File

@@ -599,12 +599,14 @@ th {
min-height: 2.5em;
line-height: 2.5em;
}
.nav-list .item a {
.nav-list .item a,
.nav-list .item .as-link {
padding: 0 1rem;
color: #363330;
transition: all 0.15s ease-in-out;
}
.nav-list .item a:hover {
.nav-list .item a:hover,
.nav-list .item .as-link:hover {
background: #efe3d3;
text-decoration: none;
}
@@ -1210,21 +1212,21 @@ main.prompt {
padding: 0.5rem 1rem;
}
.aside .toggle_aside,
#overlay .close,
.dropdown-menu .toggle_aside,
#slider .toggle_aside {
#overlay .close,
.dropdown-menu .toggle_aside,
#slider .toggle_aside {
background-color: #ca7227;
}
.aside .toggle_aside:hover,
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover,
#slider .toggle_aside:hover {
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover,
#slider .toggle_aside:hover {
background-color: #b7641d;
}
.aside .toggle_aside .icon,
#overlay .close .icon,
.dropdown-menu .toggle_aside .icon,
#slider .toggle_aside .icon {
#overlay .close .icon,
.dropdown-menu .toggle_aside .icon,
#slider .toggle_aside .icon {
filter: grayscale(100%) brightness(2.5);
}
.header .item.search {
@@ -1253,16 +1255,16 @@ main.prompt {
padding: 0.85rem 1.25rem;
}
.nav_menu .stick,
.nav_menu .group {
.nav_menu .group {
margin: 0.5rem 0.5rem;
}
.nav_menu .stick .btn,
.nav_menu .group .btn {
.nav_menu .group .btn {
margin: 0;
padding: 0.85rem 1.25rem;
}
.nav_menu .stick .btn.read_all,
.nav_menu .group .btn.read_all {
.nav_menu .group .btn.read_all {
padding: 0.85rem 1.25rem;
}
.nav_menu .search .input {

View File

@@ -266,7 +266,8 @@ th {
color: #fff;
}
.nav-list .item > a {
.nav-list .item > a,
.nav-list .item > .as-link {
padding: 0 1rem;
}

View File

@@ -266,7 +266,8 @@ th {
color: #fff;
}
.nav-list .item > a {
.nav-list .item > a,
.nav-list .item > .as-link {
padding: 0 1rem;
}

View File

@@ -184,14 +184,14 @@
line-height: 2.5em;
}
a {
a, .as-link {
padding: 0 1rem;
color: variables.$sid-font-color;
@include mixins.transition(all, 0.15s, ease-in-out);
}
a:hover {
a:hover, .as-link:hover {
background: variables.$sid-bg-dark;
text-decoration: none;
}

View File

@@ -613,12 +613,12 @@ th {
min-height: 2.5em;
line-height: 2.5em;
}
.nav-list .item a {
.nav-list .item a, .nav-list .item .as-link {
padding: 0 1rem;
color: #ffffff;
transition: all 0.15s ease-in-out;
}
.nav-list .item a:hover {
.nav-list .item a:hover, .nav-list .item .as-link:hover {
background: #17181a;
text-decoration: none;
}
@@ -1225,21 +1225,21 @@ main.prompt {
padding: 0.5rem 1rem;
}
.aside .toggle_aside,
#overlay .close,
.dropdown-menu .toggle_aside,
#slider .toggle_aside {
#overlay .close,
.dropdown-menu .toggle_aside,
#slider .toggle_aside {
background-color: #36c;
}
.aside .toggle_aside:hover,
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover,
#slider .toggle_aside:hover {
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover,
#slider .toggle_aside:hover {
background-color: #25c;
}
.aside .toggle_aside .icon,
#overlay .close .icon,
.dropdown-menu .toggle_aside .icon,
#slider .toggle_aside .icon {
#overlay .close .icon,
.dropdown-menu .toggle_aside .icon,
#slider .toggle_aside .icon {
filter: grayscale(100%) brightness(2.5);
}
.header .item.search {
@@ -1273,16 +1273,16 @@ main.prompt {
padding: 0.85rem 1.25rem;
}
.nav_menu .stick,
.nav_menu .group {
.nav_menu .group {
margin: 0.5rem 0.5rem;
}
.nav_menu .stick .btn,
.nav_menu .group .btn {
.nav_menu .group .btn {
margin: 0;
padding: 0.85rem 1.25rem;
}
.nav_menu .stick .btn.read_all,
.nav_menu .group .btn.read_all {
.nav_menu .group .btn.read_all {
padding: 0.85rem 1.25rem;
}
.nav_menu .search .input {
@@ -1353,3 +1353,5 @@ a, button.as-link {
outline: none;
color: #36c;
}
/*# sourceMappingURL=mapco.css.map */

View File

File diff suppressed because one or more lines are too long

View File

@@ -613,12 +613,12 @@ th {
min-height: 2.5em;
line-height: 2.5em;
}
.nav-list .item a {
.nav-list .item a, .nav-list .item .as-link {
padding: 0 1rem;
color: #ffffff;
transition: all 0.15s ease-in-out;
}
.nav-list .item a:hover {
.nav-list .item a:hover, .nav-list .item .as-link:hover {
background: #17181a;
text-decoration: none;
}
@@ -1225,21 +1225,21 @@ main.prompt {
padding: 0.5rem 1rem;
}
.aside .toggle_aside,
#overlay .close,
.dropdown-menu .toggle_aside,
#slider .toggle_aside {
#overlay .close,
.dropdown-menu .toggle_aside,
#slider .toggle_aside {
background-color: #36c;
}
.aside .toggle_aside:hover,
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover,
#slider .toggle_aside:hover {
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover,
#slider .toggle_aside:hover {
background-color: #25c;
}
.aside .toggle_aside .icon,
#overlay .close .icon,
.dropdown-menu .toggle_aside .icon,
#slider .toggle_aside .icon {
#overlay .close .icon,
.dropdown-menu .toggle_aside .icon,
#slider .toggle_aside .icon {
filter: grayscale(100%) brightness(2.5);
}
.header .item.search {
@@ -1273,16 +1273,16 @@ main.prompt {
padding: 0.85rem 1.25rem;
}
.nav_menu .stick,
.nav_menu .group {
.nav_menu .group {
margin: 0.5rem 0.5rem;
}
.nav_menu .stick .btn,
.nav_menu .group .btn {
.nav_menu .group .btn {
margin: 0;
padding: 0.85rem 1.25rem;
}
.nav_menu .stick .btn.read_all,
.nav_menu .group .btn.read_all {
.nav_menu .group .btn.read_all {
padding: 0.85rem 1.25rem;
}
.nav_menu .search .input {

View File

@@ -1117,7 +1117,8 @@ optgroup::before {
line-height: 2.5;
}
.nav-list .item > a {
.nav-list .item > a,
.nav-list .item > .as-link {
padding: 0 1rem;
}

View File

@@ -1117,7 +1117,8 @@ optgroup::before {
line-height: 2.5;
}
.nav-list .item > a {
.nav-list .item > a,
.nav-list .item > .as-link {
padding: 0 1rem;
}

View File

@@ -389,6 +389,7 @@ a:hover .icon {
}
.nav-list .item > a,
.nav-list .item > .as-link,
.nav-list .item > span,
.nav-list .item > div {
padding: 0 1rem;

View File

@@ -389,6 +389,7 @@ a:hover .icon {
}
.nav-list .item > a,
.nav-list .item > .as-link,
.nav-list .item > span,
.nav-list .item > div {
padding: 0 1rem;

View File

@@ -317,7 +317,8 @@ th {
color: var(--font-color-white);
}
.nav-list .item > a {
.nav-list .item > a,
.nav-list .item > .as-link {
padding: 0 1rem;
}

View File

@@ -317,7 +317,8 @@ th {
color: var(--font-color-white);
}
.nav-list .item > a {
.nav-list .item > a,
.nav-list .item > .as-link {
padding: 0 1rem;
}

View File

@@ -2,30 +2,30 @@
--color-text-light: #fcfcfc;
--color-text-light-darker: #969696;
--color-text-dark: #181621;
--color-text-nav: #00488b;
--color-text-nav: rgb(0, 71.6947368421, 139);
--color-text-aside: #22303d;
--color-text-alert: #fa8052;
--color-text-good: #5eaabf;
--color-text-bad: #b0425b;
--color-text-bad-lighter: #c46178;
--color-text-bad-lighter: rgb(195.8181818182, 97.1818181818, 119.5991735537);
--color-text-shadow-light: #fcfcfc;
--color-box-shadow-light: #e3e3e3;
--color-box-shadow-light: rgb(226.5, 226.5, 226.5);
--color-border-light: #fcfcfc;
--color-border-light-darker: #e3e3e3;
--color-border-light-darker: rgb(226.5, 226.5, 226.5);
--color-border-grey: #e3e3e3;
--color-border-nav: #00488b;
--color-border-nav: rgb(0, 71.6947368421, 139);
--color-border-bad: #b0425b;
--color-background-light: #fcfcfc;
--color-background-light-darker: #e3e3e3;
--color-background-light-darker: rgb(226.5, 226.5, 226.5);
--color-background-light-darker-transparent: rgba(217, 217, 217, 0.7333333333);
--color-background-dark: #181621;
--color-background-nav: #0062be;
--color-background-nav-darker: #00488b;
--color-background-nav-darker: rgb(0, 71.6947368421, 139);
--color-background-aside: #22303d;
--color-background-alert: #fa8052;
--color-background-alert-darker: #f95c20;
--color-background-alert-darker: rgb(248.5674157303, 91.6123595506, 32.4325842697);
--color-background-good: #5eaabf;
--color-background-bad: #c46178;
--color-background-bad: rgb(195.8181818182, 97.1818181818, 119.5991735537);
--color-background-stared: #fff6da;
--color-background-unread: #fff3ed;
--color-background-hover: #fff;
@@ -260,7 +260,8 @@ form th {
color: var(--color-text-light);
cursor: default;
}
.nav-list .item a:hover {
.nav-list .item a:hover,
.nav-list .item .as-link:hover {
background-color: var(--color-background-nav-darker);
color: var(--color-text-light);
}
@@ -271,7 +272,8 @@ form th {
.nav-list .item.active a {
color: var(--color-text-light);
}
.nav-list .item > a {
.nav-list .item > a,
.nav-list .item > .as-link {
padding: 0 1.5rem;
}
.nav-list .item .icon {
@@ -934,7 +936,7 @@ a.signin {
display: none;
}
.flux .item.manage,
.flux_header .item.website {
.flux_header .item.website {
width: 35px;
text-align: center;
}
@@ -981,11 +983,11 @@ a.signin {
margin: 0;
}
.nav_menu .stick,
.nav_menu .group {
.nav_menu .group {
margin: 0;
}
.nav_menu .stick .btn,
.nav_menu .group .btn {
.nav_menu .group .btn {
margin: 0;
}
.nav_menu .item.search {
@@ -1001,7 +1003,7 @@ a.signin {
width: 100%;
}
#overlay .close,
.dropdown-menu .toggle_aside {
.dropdown-menu .toggle_aside {
background-color: var(--color-background-aside);
display: block;
height: 50px;
@@ -1010,11 +1012,11 @@ a.signin {
padding-right: 10px;
}
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover {
.dropdown-menu .toggle_aside:hover {
background-color: var(--color-background-nav);
}
.dropdown-target:target ~ .dropdown-toggle::after,
.dropdown-target:target ~ .dropdown-toggle.btn::after {
.dropdown-target:target ~ .dropdown-toggle.btn::after {
display: none;
}
.share .dropdown-menu {
@@ -1053,10 +1055,10 @@ a.signin {
top: 0;
}
form#mark-read-menu,
a#actualize,
a#toggle-order,
div#nav_menu_actions,
div#nav_menu_views {
a#actualize,
a#toggle-order,
div#nav_menu_actions,
div#nav_menu_views {
position: absolute;
}
form#mark-read-menu {
@@ -1064,15 +1066,15 @@ div#nav_menu_views {
top: 0;
}
a#actualize,
a#toggle-order {
a#toggle-order {
right: 0;
}
a#actualize {
top: 0;
}
a#toggle-order,
div#nav_menu_actions,
div#nav_menu_views {
div#nav_menu_actions,
div#nav_menu_views {
top: 36px;
}
div#nav_menu_actions {
@@ -1169,3 +1171,5 @@ button.as-link {
#slider label {
min-height: initial;
}
/*# sourceMappingURL=swage.css.map */

View File

File diff suppressed because one or more lines are too long

View File

@@ -2,30 +2,30 @@
--color-text-light: #fcfcfc;
--color-text-light-darker: #969696;
--color-text-dark: #181621;
--color-text-nav: #00488b;
--color-text-nav: rgb(0, 71.6947368421, 139);
--color-text-aside: #22303d;
--color-text-alert: #fa8052;
--color-text-good: #5eaabf;
--color-text-bad: #b0425b;
--color-text-bad-lighter: #c46178;
--color-text-bad-lighter: rgb(195.8181818182, 97.1818181818, 119.5991735537);
--color-text-shadow-light: #fcfcfc;
--color-box-shadow-light: #e3e3e3;
--color-box-shadow-light: rgb(226.5, 226.5, 226.5);
--color-border-light: #fcfcfc;
--color-border-light-darker: #e3e3e3;
--color-border-light-darker: rgb(226.5, 226.5, 226.5);
--color-border-grey: #e3e3e3;
--color-border-nav: #00488b;
--color-border-nav: rgb(0, 71.6947368421, 139);
--color-border-bad: #b0425b;
--color-background-light: #fcfcfc;
--color-background-light-darker: #e3e3e3;
--color-background-light-darker: rgb(226.5, 226.5, 226.5);
--color-background-light-darker-transparent: rgba(217, 217, 217, 0.7333333333);
--color-background-dark: #181621;
--color-background-nav: #0062be;
--color-background-nav-darker: #00488b;
--color-background-nav-darker: rgb(0, 71.6947368421, 139);
--color-background-aside: #22303d;
--color-background-alert: #fa8052;
--color-background-alert-darker: #f95c20;
--color-background-alert-darker: rgb(248.5674157303, 91.6123595506, 32.4325842697);
--color-background-good: #5eaabf;
--color-background-bad: #c46178;
--color-background-bad: rgb(195.8181818182, 97.1818181818, 119.5991735537);
--color-background-stared: #fff6da;
--color-background-unread: #fff3ed;
--color-background-hover: #fff;
@@ -260,7 +260,8 @@ form th {
color: var(--color-text-light);
cursor: default;
}
.nav-list .item a:hover {
.nav-list .item a:hover,
.nav-list .item .as-link:hover {
background-color: var(--color-background-nav-darker);
color: var(--color-text-light);
}
@@ -271,7 +272,8 @@ form th {
.nav-list .item.active a {
color: var(--color-text-light);
}
.nav-list .item > a {
.nav-list .item > a,
.nav-list .item > .as-link {
padding: 0 1.5rem;
}
.nav-list .item .icon {
@@ -934,7 +936,7 @@ a.signin {
display: none;
}
.flux .item.manage,
.flux_header .item.website {
.flux_header .item.website {
width: 35px;
text-align: center;
}
@@ -981,11 +983,11 @@ a.signin {
margin: 0;
}
.nav_menu .stick,
.nav_menu .group {
.nav_menu .group {
margin: 0;
}
.nav_menu .stick .btn,
.nav_menu .group .btn {
.nav_menu .group .btn {
margin: 0;
}
.nav_menu .item.search {
@@ -1001,7 +1003,7 @@ a.signin {
width: 100%;
}
#overlay .close,
.dropdown-menu .toggle_aside {
.dropdown-menu .toggle_aside {
background-color: var(--color-background-aside);
display: block;
height: 50px;
@@ -1010,11 +1012,11 @@ a.signin {
padding-left: 10px;
}
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover {
.dropdown-menu .toggle_aside:hover {
background-color: var(--color-background-nav);
}
.dropdown-target:target ~ .dropdown-toggle::after,
.dropdown-target:target ~ .dropdown-toggle.btn::after {
.dropdown-target:target ~ .dropdown-toggle.btn::after {
display: none;
}
.share .dropdown-menu {
@@ -1053,10 +1055,10 @@ a.signin {
top: 0;
}
form#mark-read-menu,
a#actualize,
a#toggle-order,
div#nav_menu_actions,
div#nav_menu_views {
a#actualize,
a#toggle-order,
div#nav_menu_actions,
div#nav_menu_views {
position: absolute;
}
form#mark-read-menu {
@@ -1064,15 +1066,15 @@ div#nav_menu_views {
top: 0;
}
a#actualize,
a#toggle-order {
a#toggle-order {
left: 0;
}
a#actualize {
top: 0;
}
a#toggle-order,
div#nav_menu_actions,
div#nav_menu_views {
div#nav_menu_actions,
div#nav_menu_views {
top: 36px;
}
div#nav_menu_actions {

View File

@@ -338,7 +338,8 @@ form {
cursor: default;
}
a:hover {
a:hover,
.as-link:hover {
background-color: var(--color-background-nav-darker);
color: var(--color-text-light);
}
@@ -352,7 +353,8 @@ form {
}
}
> a {
> a,
> .as-link {
padding: 0 1.5rem;
}

View File

@@ -180,7 +180,8 @@ th {
.nav-list .item.active a {
}
.nav-list .item > a {
.nav-list .item > a,
.nav-list .item > .as-link {
padding: 0 10px;
}

View File

@@ -180,7 +180,8 @@ th {
.nav-list .item.active a {
}
.nav-list .item > a {
.nav-list .item > a,
.nav-list .item > .as-link {
padding: 0 10px;
}

View File

@@ -395,6 +395,8 @@ button.as-link:hover,
button.as-link:active {
background: transparent;
color: inherit;
font-family: inherit;
font-size: inherit;
border: none;
cursor: pointer;
text-align: left;
@@ -670,6 +672,7 @@ input[type="checkbox"]:focus-visible {
.nav-list .item,
.nav-list .item > a,
.nav-list .item > .as-link,
.nav-list .item > span {
display: block;
overflow: hidden;

View File

@@ -395,6 +395,8 @@ button.as-link:hover,
button.as-link:active {
background: transparent;
color: inherit;
font-family: inherit;
font-size: inherit;
border: none;
cursor: pointer;
text-align: right;
@@ -670,6 +672,7 @@ input[type="checkbox"]:focus-visible {
.nav-list .item,
.nav-list .item > a,
.nav-list .item > .as-link,
.nav-list .item > span {
display: block;
overflow: hidden;