diff --git a/app/Http/Controllers/TeamsController.php b/app/Http/Controllers/TeamsController.php index 92b6de5f8f8..c58a9311823 100644 --- a/app/Http/Controllers/TeamsController.php +++ b/app/Http/Controllers/TeamsController.php @@ -19,6 +19,34 @@ public function __construct() $this->middleware('auth', ['only' => ['part']]); } + public static function pageLinks(string $current, Team $team): array + { + $ret = [ + [ + 'active' => $current === 'show', + 'title' => osu_trans('teams.header_links.show'), + 'url' => route('teams.show', ['team' => $team->getKey()]), + ], + ]; + + if (priv_check('TeamUpdate', $team)->can()) { + $applicationCount = $team->applications()->count(); + $ret[] = [ + 'active' => $current === 'edit', + 'title' => osu_trans('teams.header_links.edit'), + 'url' => route('teams.edit', ['team' => $team->getKey()]), + ]; + $ret[] = [ + 'active' => $current === 'members.index', + 'count' => $applicationCount === 0 ? null : $applicationCount, + 'title' => osu_trans('teams.header_links.members.index'), + 'url' => route('teams.members.index', ['team' => $team->getKey()]), + ]; + } + + return $ret; + } + public function destroy(string $id): Response { $team = Team::findOrFail($id); diff --git a/resources/css/bem/btn-circle.less b/resources/css/bem/btn-circle.less index 625a852f39d..516e5f2e9d8 100644 --- a/resources/css/bem/btn-circle.less +++ b/resources/css/bem/btn-circle.less @@ -183,22 +183,6 @@ position: relative; } - &__count { - .center-content(); - - background-color: hsl(var(--hsl-red-2)); - border-radius: 10000px; - font-size: @font-size--small; - - height: 2em; - width: 2em; - - position: absolute; - right: 0; - top: 0; - transform: translate(50%, -50%); - } - &__icon { .full-size(); .center-content(); diff --git a/resources/css/bem/fake-bold.less b/resources/css/bem/fake-bold.less index effa0ecb1a5..bde342fe04f 100644 --- a/resources/css/bem/fake-bold.less +++ b/resources/css/bem/fake-bold.less @@ -2,7 +2,8 @@ // See the LICENCE file in the repository root for full licence text. .fake-bold { - &::after { + &::after, + &::before { content: attr(data-content); font-weight: bold; opacity: 0; @@ -10,4 +11,8 @@ display: block; height: 0; } + // some text may be longer at normal weight (ex: "manage members") + &::before { + font-weight: normal; + } } diff --git a/resources/css/bem/header-nav-v4.less b/resources/css/bem/header-nav-v4.less index 8d520691e39..036b8810c41 100644 --- a/resources/css/bem/header-nav-v4.less +++ b/resources/css/bem/header-nav-v4.less @@ -51,8 +51,11 @@ } &__link { - position: relative; + align-items: baseline; + display: flex; + gap: 2px 5px; padding: var(--header-nav-item-padding-y) 0; + position: relative; &::before { display: none; @@ -96,6 +99,16 @@ } } + &__link-count { + background: hsl(var(--hsl-red-2)); + // keep the original 1em + padding: (1em * (1em - $font-size) / 2 / $font-size) 10px; + font-size: 0.7em; + border-radius: @border-radius-large; + color: hsl(var(--hsl-c1)); + font-weight: normal; + } + &__text { padding: var(--header-nav-item-padding-y) 0; } diff --git a/resources/lang/en/page_title.php b/resources/lang/en/page_title.php index 7533545d6c5..9c0db2fdbc3 100644 --- a/resources/lang/en/page_title.php +++ b/resources/lang/en/page_title.php @@ -109,6 +109,7 @@ ], 'teams_controller' => [ '_' => 'teams', + 'edit' => 'team settings', 'show' => 'team info', ], 'tournaments_controller' => [ @@ -134,6 +135,11 @@ 'store' => [ '_' => 'store', ], + 'teams' => [ + 'members_controller' => [ + 'index' => 'team members', + ], + ], 'users' => [ 'modding_history_controller' => [ '_' => 'modder info', diff --git a/resources/lang/en/teams.php b/resources/lang/en/teams.php index 63d36649d34..d7785e75068 100644 --- a/resources/lang/en/teams.php +++ b/resources/lang/en/teams.php @@ -57,6 +57,15 @@ ], ], + 'header_links' => [ + 'edit' => 'settings', + 'show' => 'info', + + 'members' => [ + 'index' => 'manage members', + ], + ], + 'members' => [ 'destroy' => [ 'success' => 'Team member removed', diff --git a/resources/views/layout/_page_header_v4.blade.php b/resources/views/layout/_page_header_v4.blade.php index 899204d1454..55e3c5365bb 100644 --- a/resources/views/layout/_page_header_v4.blade.php +++ b/resources/views/layout/_page_header_v4.blade.php @@ -76,6 +76,11 @@ class=" class="fake-bold" data-content="{{ $link['title'] }}" >{{ $link['title'] }} + @if (isset($link['count'])) + + {{ i18n_number_format($link['count']) }} + + @endif @else {{ $link['title'] }} diff --git a/resources/views/teams/edit.blade.php b/resources/views/teams/edit.blade.php index bc922eb7aea..08f4e83fe11 100644 --- a/resources/views/teams/edit.blade.php +++ b/resources/views/teams/edit.blade.php @@ -5,7 +5,11 @@ @extends('master') @section('content') - @include('layout._page_header_v4') + @include('layout._page_header_v4', ['params' => [ + 'backgroundImage' => $team->header()->url(), + 'links' => App\Http\Controllers\TeamsController::pageLinks('edit', $team), + 'theme' => 'team', + ]])