diff --git a/assets/img/icons/file-video.svg b/assets/img/icons/file-video.svg new file mode 100755 index 0000000..c0e6865 --- /dev/null +++ b/assets/img/icons/file-video.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/img/icons/profile.svg b/assets/img/icons/profile.svg new file mode 100755 index 0000000..b545f72 --- /dev/null +++ b/assets/img/icons/profile.svg @@ -0,0 +1,4 @@ + + + + diff --git a/components/dialog/dialog.vue b/components/dialog/dialog.vue index 3d3166b..2bd30ae 100644 --- a/components/dialog/dialog.vue +++ b/components/dialog/dialog.vue @@ -1,6 +1,8 @@ + + + + diff --git a/components/settings/notifications.vue b/components/settings/notifications.vue new file mode 100644 index 0000000..0193c45 --- /dev/null +++ b/components/settings/notifications.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/components/settings/settings.vue b/components/settings/settings.vue index f17c1d9..351ee15 100644 --- a/components/settings/settings.vue +++ b/components/settings/settings.vue @@ -1,67 +1,66 @@ @@ -69,23 +68,74 @@ function toggleTag(tag, isChecked) { diff --git a/pages/users/@username/+Page.vue b/pages/users/@username/+Page.vue index 580b787..ac38477 100644 --- a/pages/users/@username/+Page.vue +++ b/pages/users/@username/+Page.vue @@ -27,7 +27,10 @@ function scrollHorizontal(event) {
- + {{ formatDistanceStrict(Date.now(), profile.createdAt) }}
@@ -160,6 +163,7 @@ function scrollHorizontal(event) { color: var(--highlight-strong-30); background: var(--shadow-strong-30); border-radius: 0 0 .5rem .5rem; + margin-bottom: .5rem; } .user { @@ -193,25 +197,41 @@ function scrollHorizontal(event) { } .domains { - display: flex; + width: 100%; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(30rem, 1fr)); gap: .5rem; + box-sizing: border-box; padding: .5rem 0; - margin-top: .25rem; - overflow-x: auto; + margin-top: .5rem; } .domain { + display: flex; + align-items: center; + gap: 1.5rem; flex-shrink: 0; color: var(--glass-strong-20); background: var(--background-dark-20); - padding: .5rem 1rem; + padding: 1.25rem 2rem; border-radius: 1rem; - font-size: .9rem; + font-size: 1rem; font-weight: bold; - &.active { + .icon { + width: 1.25rem; + height: 1.25rem; + transform: translateY(-1px); + fill: var(--glass-strong-20); + } + + &:hover { background: var(--primary); color: var(--text-light); + + .icon { + fill: var(--text-light); + } } } diff --git a/pages/users/@username/+route.js b/pages/users/@username/+route.js index 585181c..f87e65f 100644 --- a/pages/users/@username/+route.js +++ b/pages/users/@username/+route.js @@ -6,16 +6,17 @@ const urlMatch = match(path, { decode: decodeURIComponent }); export default (pageContext) => { const matched = urlMatch(pageContext.urlPathname); + const isSelf = pageContext.user?.username === matched.params?.username; if (matched) { - if (![undefined, 'stashes'].includes(matched.params.domain) && pageContext.user?.username !== matched.params.username) { - throw redirect(`/user/${matched.params.username}`); + if (!isSelf && matched.params.section !== 'stashes') { + throw redirect(`/user/${matched.params.username}/stashes`); } return { routeParams: { username: matched.params.username, - section: matched.params.section || 'stashes', + section: matched.params.section || '', domain: matched.params.domain || 'scenes', }, };