Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions apps/frontend/src/assets/styles/layout.scss
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
.normal-page {
display: grid;
padding: 0 1.5rem;
padding-bottom: 1rem;

grid-template:
'header'
Expand Down Expand Up @@ -82,13 +83,15 @@
column-gap: 0.75rem;

grid-template:
'header header' auto
'sidebar content' auto
'info content' auto
'dummy content' 1fr
/ 18.75rem 1fr;

&.alt-layout {
grid-template:
'header header' auto
'content sidebar' auto
'content info' auto
'content dummy' 1fr
Expand Down
11 changes: 4 additions & 7 deletions apps/frontend/src/components/ui/charts/ChartDisplay.vue
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
</div>
</div>
<div v-else-if="!isInitialized || analytics.loading.value" class="universal-card">
<h2>
<div class="flex items-center justify-center gap-2">
<SpinnerIcon class="h-6 w-6 animate-spin" />
<span class="label__title">Loading analytics...</span>
</h2>
</div>
</div>
<div v-else class="graphs">
<div class="graphs__vertical-bar">
Expand Down Expand Up @@ -309,7 +310,7 @@
</template>

<script setup lang="ts">
import { DownloadIcon, UpdatedIcon } from '@modrinth/assets'
import { DownloadIcon, SpinnerIcon, UpdatedIcon } from '@modrinth/assets'
import { Button, Card, DropdownSelect } from '@modrinth/ui'
import { formatCategoryHeader, formatMoney, formatNumber } from '@modrinth/utils'
import dayjs from 'dayjs'
Expand Down Expand Up @@ -837,10 +838,6 @@ const defaultRanges: RangeObject[] = [
}

.graphs {
// Pages clip so we need to add a margin
margin-left: 0.25rem;
margin-top: 0.25rem;

display: flex;
flex-direction: column;

Expand Down
5 changes: 4 additions & 1 deletion apps/frontend/src/pages/dashboard.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<template>
<div class="normal-page !mt-8">
<div class="normal-page">
<div class="normal-page__header">
<h1>{{ formatMessage(commonMessages.dashboardLabel) }}</h1>
</div>
<div class="normal-page__sidebar">
<NavStack
:items="[
Expand Down
10 changes: 7 additions & 3 deletions apps/frontend/src/pages/dashboard/notifications.vue
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,13 @@
/>
</template>
<p v-else>You don't have any unread notifications.</p>
<div class="flex justify-end">
<Pagination :page="page" :count="pages" @switch-page="changePage" />
</div>
<Pagination
v-if="pages > 1"
class="mt-4 justify-end"
:page="page"
:count="pages"
@switch-page="changePage"
/>
</section>
</div>
</template>
Expand Down
6 changes: 4 additions & 2 deletions apps/frontend/src/pages/dashboard/organizations.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@
</button>
</div>
</div>
<template v-if="orgs?.length > 0">
<p v-if="orgs?.length < 1">
You don't have any organizations yet. Click the green button above to begin.
</p>
<template v-else>
<div class="orgs-grid">
<nuxt-link
v-for="org in sortedOrgs"
Expand Down Expand Up @@ -43,7 +46,6 @@
</nuxt-link>
</div>
</template>
<template v-else> Make an organization! </template>
</section>
</div>
</template>
Expand Down
156 changes: 77 additions & 79 deletions apps/frontend/src/pages/settings.vue
Original file line number Diff line number Diff line change
@@ -1,85 +1,83 @@
<template>
<div>
<div class="normal-page no-sidebar">
<div class="normal-page">
<div class="normal-page__header">
<h1>{{ formatMessage(commonMessages.settingsLabel) }}</h1>
</div>
<div class="normal-page">
<div class="normal-page__sidebar">
<NavStack
:items="
[
{ type: 'heading', label: 'Display' },
{
link: '/settings',
label: formatMessage(commonSettingsMessages.appearance),
icon: PaintbrushIcon,
},
isStaging
? {
link: '/settings/language',
label: formatMessage(commonSettingsMessages.language),
icon: LanguagesIcon,
badge: `${formatMessage(commonMessages.beta)}`,
}
: null,
auth.user ? { type: 'heading', label: 'Account' } : null,
auth.user
? {
link: '/settings/profile',
label: formatMessage(commonSettingsMessages.profile),
icon: UserIcon,
}
: null,
auth.user
? {
link: '/settings/account',
label: formatMessage(commonSettingsMessages.account),
icon: ShieldIcon,
}
: null,
auth.user
? {
link: '/settings/authorizations',
label: formatMessage(commonSettingsMessages.authorizedApps),
icon: GridIcon,
}
: null,
auth.user
? {
link: '/settings/sessions',
label: formatMessage(commonSettingsMessages.sessions),
icon: MonitorSmartphoneIcon,
}
: null,
auth.user
? {
link: '/settings/billing',
label: formatMessage(commonSettingsMessages.billing),
icon: CardIcon,
}
: null,
auth.user ? { type: 'heading', label: 'Developer' } : null,
auth.user
? {
link: '/settings/pats',
label: formatMessage(commonSettingsMessages.pats),
icon: KeyIcon,
}
: null,
auth.user
? {
link: '/settings/applications',
label: formatMessage(commonSettingsMessages.applications),
icon: ServerIcon,
}
: null,
].filter(Boolean)
"
/>
</div>
<div class="normal-page__content mt-3 lg:mt-0">
<NuxtPage :route="route" />
</div>
<div class="normal-page__sidebar">
<NavStack
:items="
[
{ type: 'heading', label: 'Display' },
{
link: '/settings',
label: formatMessage(commonSettingsMessages.appearance),
icon: PaintbrushIcon,
},
isStaging
? {
link: '/settings/language',
label: formatMessage(commonSettingsMessages.language),
icon: LanguagesIcon,
badge: `${formatMessage(commonMessages.beta)}`,
}
: null,
auth.user ? { type: 'heading', label: 'Account' } : null,
auth.user
? {
link: '/settings/profile',
label: formatMessage(commonSettingsMessages.profile),
icon: UserIcon,
}
: null,
auth.user
? {
link: '/settings/account',
label: formatMessage(commonSettingsMessages.account),
icon: ShieldIcon,
}
: null,
auth.user
? {
link: '/settings/authorizations',
label: formatMessage(commonSettingsMessages.authorizedApps),
icon: GridIcon,
}
: null,
auth.user
? {
link: '/settings/sessions',
label: formatMessage(commonSettingsMessages.sessions),
icon: MonitorSmartphoneIcon,
}
: null,
auth.user
? {
link: '/settings/billing',
label: formatMessage(commonSettingsMessages.billing),
icon: CardIcon,
}
: null,
auth.user ? { type: 'heading', label: 'Developer' } : null,
auth.user
? {
link: '/settings/pats',
label: formatMessage(commonSettingsMessages.pats),
icon: KeyIcon,
}
: null,
auth.user
? {
link: '/settings/applications',
label: formatMessage(commonSettingsMessages.applications),
icon: ServerIcon,
}
: null,
].filter(Boolean)
"
/>
</div>
<div class="normal-page__content mt-3 lg:mt-0">
<NuxtPage :route="route" />
</div>
</div>
</template>
Expand Down