diff --git a/README.md b/README.md index b0e4d6f..32e5143 100644 --- a/README.md +++ b/README.md @@ -68,16 +68,18 @@ The website is currently in a refactor, here is what is still left on the fronte - [x] Styling for progress page - [x] Styling for progress on main page - [X] Account: Mii editor -- [ ] Account: View account -- [ ] Account: Delete account -- [ ] Account: Link discord account -- [ ] Account: Edit server environment -- [ ] Donations: stripe checkout frontend +- [X] Account: View account +- [X] Account: Delete account +- [X] Account: Link discord account +- [X] Account: Edit server environment +- [ ] Account: Edit account info +- [X] Donations: stripe checkout frontend - [ ] Auth: Login - [ ] Auth: Logout - [ ] Auth: Register - [ ] Auth: Forgot password flow - [ ] Content: Term pages +- [ ] April fools' - [X] Content: Documentation pages - [x] Content: Blog diff --git a/package-lock.json b/package-lock.json index ac3bbf4..a4fc408 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@nuxt/content": "^3.4.0", "@nuxt/eslint": "^1.3.0", "@nuxt/fonts": "^0.14.0", - "@nuxt/icon": "^2.4.1", + "@nuxt/icon": "^2.5.0", "@nuxtjs/i18n": "^10.6.0", "@pinia/nuxt": "^1.0.1", "@pretendonetwork/error-codes": "^1.2.2", @@ -1685,9 +1685,9 @@ } }, "node_modules/@iconify/collections": { - "version": "1.0.719", - "resolved": "https://registry.npmjs.org/@iconify/collections/-/collections-1.0.719.tgz", - "integrity": "sha512-v3I7sBgR0UWOr6y4bXGiuNrOOl9d+tRDPg1d7vfQHofQ4nTt3AU15S2UsePjHztYAc7ptSPUTT74Io2M7Y1CZg==", + "version": "1.0.724", + "resolved": "https://registry.npmjs.org/@iconify/collections/-/collections-1.0.724.tgz", + "integrity": "sha512-wl26lugNV8a3z1bsJyNceAnGeOCrvkXdZmw1Yvs40qLlz90EzMYPYA2OLFITzC9ALx6Ar3vyzEKo7ZNNKw0zjg==", "license": "MIT", "dependencies": { "@iconify/types": "*" @@ -3281,17 +3281,17 @@ } }, "node_modules/@nuxt/icon": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@nuxt/icon/-/icon-2.4.1.tgz", - "integrity": "sha512-fOY3kiT6OoL4bWXVmMLc1VgoCm1PxIGSBmsSaLO090NEgtd1ub441dZ7MEoOD5UIilWzba1kCWdwJcAkGCOwLg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@nuxt/icon/-/icon-2.5.0.tgz", + "integrity": "sha512-EBczSfd3QmAD7GoSmJ5jCPvQ5zzNaPPuWPU9DSMcBuBM10A3JIvjaMLEOEniHQRz4iVPb05cJRO/JdC60oiiwg==", "license": "MIT", "dependencies": { - "@iconify/collections": "^1.0.715", + "@iconify/collections": "^1.0.721", "@iconify/types": "^2.0.0", "@iconify/utils": "^3.1.4", "@iconify/vue": "^5.0.1", - "@nuxt/devtools-kit": "^3.3.1", - "@nuxt/kit": "^4.5.0", + "@nuxt/devtools-kit": "^3.4.1", + "@nuxt/kit": "^4.5.2", "consola": "^3.4.2", "local-pkg": "^1.2.1", "mlly": "^1.8.2", diff --git a/package.json b/package.json index 88a00b2..a45fc2d 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@nuxt/content": "^3.4.0", "@nuxt/eslint": "^1.3.0", "@nuxt/fonts": "^0.14.0", - "@nuxt/icon": "^2.4.1", + "@nuxt/icon": "^2.5.0", "@nuxtjs/i18n": "^10.6.0", "@pinia/nuxt": "^1.0.1", "@pretendonetwork/error-codes": "^1.2.2", diff --git a/server/api/auth/me.get.ts b/server/api/auth/me.get.ts index 6c5b5b6..fd55b1a 100644 --- a/server/api/auth/me.get.ts +++ b/server/api/auth/me.get.ts @@ -10,13 +10,19 @@ export default defineEventHandler(async (event): Promise => { pid: data.pid, username: data.username, accessLevel: data.accessLevel, + birthday: data.birthday, + gender: data.gender, + country: data.country, + timezone: data.timezone, + emailAddress: data.emailAddress, serverAccessLevel: data.serverAccessLevel as any, discordId: data.connections?.discord?.id ?? null, stripeTier: data.connections?.stripe?.subscriptionId ? { subscriptionId: data.connections.stripe.subscriptionId, priceId: data.connections.stripe.priceId ?? '', - tierName: data.connections.stripe.tierName ?? '' + tierName: data.connections.stripe.tierName ?? '', + tierLevel: data.connections.stripe.tierLevel ?? '' } : null, mii: data.mii diff --git a/shared/api-types.ts b/shared/api-types.ts index 0eecc43..3d2e9a5 100644 --- a/shared/api-types.ts +++ b/shared/api-types.ts @@ -4,12 +4,18 @@ export type GetApiAuthMe = { pid: number; username: string; accessLevel: number; + birthday: string; + gender: string; + country: string; + timezone: string; + emailAddress: string; serverAccessLevel: 'dev' | 'test' | 'prod'; discordId: string | null; stripeTier: { subscriptionId: string; priceId: string; tierName: string; + tierLevel: string | number; } | null; mii: { imageUrl: string; diff --git a/src/assets/css/main.css b/src/assets/css/main.css index 1430c58..d43c458 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -140,7 +140,7 @@ div.modal-wrapper { align-items: center; background: rgba(0, 0, 0, 0.6); - z-index: 10; + z-index: 100; } div.modal-wrapper.hidden { display: none; @@ -152,34 +152,37 @@ div.modal { text-align: left; width: min(660px, 90%); box-sizing: border-box; + margin: auto; } -div.modal h1 { +div.modal h2 { margin-top: 0; -} -p.modal-caption { - color: var(--text-shade-1); -} -p.modal-caption span, -p.switch-tier-modal-caption span { color: var(--text-shade-3); } +.modal-caption span span { + color: var(--text-shade-3); + font-weight: bold; +} + .modal-button-wrapper { margin-top: 24px; - display: flex; - justify-content: flex-end; -} -.modal-button-wrapper button { - margin-left: 12px; - width: fit-content; -} -.modal-button-wrapper button.cancel { - background: none; + display: grid; + grid-auto-flow: column; + gap: 1em; } .modal-button-wrapper button { padding: 12px 24px; } +.modal-button-wrapper button.cancel { + background: var(--bg-shade-4); +} +.modal-button-wrapper button.alert { + background: var(--red-shade-1); +} +.modal-button-wrapper button.action { + background: var(--green-shade-0); +} .purple-card { border-radius: 10px; @@ -270,6 +273,31 @@ input[type="range"]:focus::-moz-range-thumb { background-color: var(--accent-shade-3); } +.progress-bar { + position: relative; + display: block; + width: 100%; + height: 12px; + margin: 1rem 0; + border-radius: 6px; + background: var(--bg-shade-3); +} +.progress-bar-real, +.progress-bar-capped { + position: absolute; + height: 100%; + border-radius: 6px; + width: var(--progress-bar-width); +} +.progress-bar-capped { + background-color: var(--accent-shade-0); + max-width: 100%; +} +.progress-bar-real { + background-color: var(--green-shade-1); + width: calc(var(--progress-bar-width) - 6px); + left: 6px; +} .wrapper { width: 95%; @@ -293,6 +321,10 @@ input[type="range"]:focus::-moz-range-thumb { .hide-on-desktop { display: unset !important; } + + .modal-button-wrapper { + grid-auto-flow: row; + } } /* Scrollbar styling 'cause it's fancy */ diff --git a/src/pages/account/index.vue b/src/pages/account/index.vue index a92c3c1..98ec3df 100644 --- a/src/pages/account/index.vue +++ b/src/pages/account/index.vue @@ -1,15 +1,39 @@ + + diff --git a/src/pages/account/upgrade.vue b/src/pages/account/upgrade.vue index 98c4f2b..37bbb55 100644 --- a/src/pages/account/upgrade.vue +++ b/src/pages/account/upgrade.vue @@ -1,13 +1,46 @@ + + diff --git a/src/pages/docs/error/[code].vue b/src/pages/docs/error/[code].vue index 10b5f0c..385a47c 100644 --- a/src/pages/docs/error/[code].vue +++ b/src/pages/docs/error/[code].vue @@ -4,8 +4,6 @@ const { data: error } = await useAsyncData(`${code}`, () => { return queryCollection('errorcodes').where('stem', '=', code).first(); }); -console.log(error.value); - if (!error.value) { throw createError({ statusCode: 404, statusMessage: 'Page Not Found' }); } diff --git a/src/pages/terms/[slug].vue b/src/pages/terms/[slug].vue index 2455fb1..865cd33 100644 --- a/src/pages/terms/[slug].vue +++ b/src/pages/terms/[slug].vue @@ -7,6 +7,16 @@ const { data: termContent } = await useAsyncData(`terms-${slug}`, () => { if (!termContent.value) { throw createError({ statusCode: 404, statusMessage: 'Page Not Found' }); } + +useHead({ + title: `${termContent.value.title} | Docs`, + meta: [ + { property: 'description', content: termContent.value.description }, + { property: 'og:description', content: termContent.value.description }, + { property: 'og:image:alt', content: '' }, + { name: 'twitter:description', content: termContent.value.description } + ] +});