mirror of
https://github.com/versia-pub/frontend.git
synced 2026-03-13 03:29:16 +01:00
chore: ⬆️ Upgrade dependencies
This commit is contained in:
parent
3e28801709
commit
7649ecfb80
14 changed files with 947 additions and 627 deletions
|
|
@ -1,15 +1,24 @@
|
|||
<template>
|
||||
<div class="h-svh flex items-center justify-center px-4 bg-center bg-no-repeat bg-cover" :style="{
|
||||
backgroundImage: 'url(/images/banner.webp)'
|
||||
}">
|
||||
<div
|
||||
class="h-svh flex items-center justify-center px-4 bg-center bg-no-repeat bg-cover"
|
||||
:style="{
|
||||
backgroundImage: 'url(/images/banner.webp)',
|
||||
}"
|
||||
>
|
||||
<Card class="w-full max-w-md">
|
||||
<CardHeader>
|
||||
<CardTitle>{{ m.aware_awful_crow_spur() }}</CardTitle>
|
||||
<CardDescription>{{ m.mushy_soft_lizard_propel() }}<br />{{ m.short_arable_leopard_zap() }}
|
||||
<CardDescription
|
||||
>{{ m.mushy_soft_lizard_propel() }}<br />{{
|
||||
m.short_arable_leopard_zap()
|
||||
}}
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent class="grid">
|
||||
<pre class="rounded bg-muted px-4 py-2 border text-center w-full font-mono text-sm font-semibold select-all">{{ code }}</pre>
|
||||
<pre
|
||||
class="rounded bg-muted px-4 py-2 border text-center w-full font-mono text-sm font-semibold select-all"
|
||||
>{{ code }}</pre
|
||||
>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,83 @@
|
|||
<template>
|
||||
<div class="flex h-svh items-center justify-center px-6 py-12 lg:px-8 bg-center bg-no-repeat bg-cover" :style="{
|
||||
backgroundImage: 'url(/images/banner.webp)'
|
||||
}">
|
||||
<Card class="w-full max-w-md" as="form" method="POST" :action="url.pathname.replace('/oauth/consent', '/oauth/authorize')">
|
||||
<input type="hidden" v-for="([key, value]) in url.searchParams" :key="key" :name="key" :value="value" />
|
||||
<div
|
||||
class="flex h-svh items-center justify-center px-6 py-12 lg:px-8 bg-center bg-no-repeat bg-cover"
|
||||
:style="{
|
||||
backgroundImage: 'url(/images/banner.webp)',
|
||||
}"
|
||||
>
|
||||
<Card
|
||||
class="w-full max-w-md"
|
||||
as="form"
|
||||
method="POST"
|
||||
:action="url.pathname.replace('/oauth/consent', '/oauth/authorize')"
|
||||
>
|
||||
<input
|
||||
type="hidden"
|
||||
v-for="[key, value] in url.searchParams"
|
||||
:key="key"
|
||||
:name="key"
|
||||
:value="value"
|
||||
/>
|
||||
<CardHeader>
|
||||
<CardTitle as="h1" class="text-2xl break-words">{{ m.fresh_broad_cockroach_radiate({
|
||||
application: application ?? "",
|
||||
}) }}</CardTitle>
|
||||
<CardTitle as="h1" class="text-2xl break-words">{{
|
||||
m.fresh_broad_cockroach_radiate({
|
||||
application: application ?? "",
|
||||
})
|
||||
}}</CardTitle>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<Card>
|
||||
<CardContent class="flex flex-col px-4 py-2">
|
||||
<CardTitle as="h2" class="text-lg">{{ application }}</CardTitle>
|
||||
<a v-if="website" :href="website" target="_blank" rel="noopener noreferrer" class="underline">{{ website }}</a>
|
||||
<CardTitle as="h2" class="text-lg">{{
|
||||
application
|
||||
}}</CardTitle>
|
||||
<a
|
||||
v-if="website"
|
||||
:href="website"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="underline"
|
||||
>{{ website }}</a
|
||||
>
|
||||
</CardContent>
|
||||
</Card>
|
||||
<ul class="list-none my-6 [&>li]:mt-2">
|
||||
<li v-for="text in getScopeText(scopes)" :key="text[1]" class="flex flex-row gap-1 items-center">
|
||||
<li
|
||||
v-for="text in getScopeText(scopes)"
|
||||
:key="text[1]"
|
||||
class="flex flex-row gap-1 items-center"
|
||||
>
|
||||
<Check class="size-4" />
|
||||
<h2 class="text-sm">
|
||||
<strong class="font-bold">{{ text[0] }}</strong> {{ text[1] }}
|
||||
<strong class="font-bold">{{ text[0] }}</strong>
|
||||
{{ text[1] }}
|
||||
</h2>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="flex-col flex gap-y-1 text-sm">
|
||||
<p v-html="m.gross_antsy_kangaroo_succeed({
|
||||
application: application ?? '',
|
||||
})"></p>
|
||||
<p v-html="m.hour_close_giraffe_mop({
|
||||
application: application ?? '',
|
||||
})"></p>
|
||||
<p
|
||||
v-html="
|
||||
m.gross_antsy_kangaroo_succeed({
|
||||
application: application ?? '',
|
||||
})
|
||||
"
|
||||
></p>
|
||||
<p
|
||||
v-html="
|
||||
m.hour_close_giraffe_mop({
|
||||
application: application ?? '',
|
||||
})
|
||||
"
|
||||
></p>
|
||||
</div>
|
||||
</CardContent>
|
||||
<CardFooter class="grid gap-2">
|
||||
<Button variant="default" type="submit">{{ m.last_spare_polecat_reside() }}</Button>
|
||||
<Button :as="NuxtLink" href="/" variant="secondary">{{ m.soft_bold_ant_attend() }}</Button>
|
||||
<Button variant="default" type="submit">{{
|
||||
m.last_spare_polecat_reside()
|
||||
}}</Button>
|
||||
<Button :as="NuxtLink" href="/" variant="secondary">{{
|
||||
m.soft_bold_ant_attend()
|
||||
}}</Button>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
</div>
|
||||
|
|
@ -44,7 +86,13 @@
|
|||
<script setup lang="ts">
|
||||
import { Check } from "lucide-vue-next";
|
||||
import { Button } from "~/components/ui/button";
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "~/components/ui/card";
|
||||
import {
|
||||
Card,
|
||||
CardContent,
|
||||
CardFooter,
|
||||
CardHeader,
|
||||
CardTitle,
|
||||
} from "~/components/ui/card";
|
||||
import * as m from "~/paraglide/messages.js";
|
||||
import { NuxtLink } from "#components";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
<template>
|
||||
<div class="flex h-svh items-center justify-center px-6 py-12 lg:px-8 bg-center bg-no-repeat bg-cover" :style="{
|
||||
backgroundImage: 'url(/images/banner.webp)'
|
||||
}">
|
||||
<div
|
||||
class="flex h-svh items-center justify-center px-6 py-12 lg:px-8 bg-center bg-no-repeat bg-cover"
|
||||
:style="{
|
||||
backgroundImage: 'url(/images/banner.webp)',
|
||||
}"
|
||||
>
|
||||
<Card v-if="params.success" class="w-full max-w-md">
|
||||
<CardHeader>
|
||||
<CardTitle>{{ m.late_mean_capybara_fade() }}</CardTitle>
|
||||
|
|
@ -16,23 +19,39 @@
|
|||
</CardFooter>
|
||||
</Card>
|
||||
<Card v-else class="w-full max-w-md">
|
||||
<form method="POST" action="/api/auth/reset" @submit="form.submitForm">
|
||||
<form
|
||||
method="POST"
|
||||
action="/api/auth/reset"
|
||||
@submit="form.submitForm"
|
||||
>
|
||||
<CardHeader>
|
||||
<Alert v-if="params.login_reset" variant="default" class="mb-4">
|
||||
<Alert
|
||||
v-if="params.login_reset"
|
||||
variant="default"
|
||||
class="mb-4"
|
||||
>
|
||||
<AlertCircle class="size-4" />
|
||||
<AlertTitle>{{ m.east_loud_lobster_explore() }}</AlertTitle>
|
||||
<AlertTitle>{{
|
||||
m.east_loud_lobster_explore()
|
||||
}}</AlertTitle>
|
||||
<AlertDescription>
|
||||
{{ m.good_plane_gazelle_glow() }}
|
||||
</AlertDescription>
|
||||
</Alert>
|
||||
<Alert v-if="params.error" variant="destructive" class="mb-4">
|
||||
<Alert
|
||||
v-if="params.error"
|
||||
variant="destructive"
|
||||
class="mb-4"
|
||||
>
|
||||
<AlertCircle class="size-4" />
|
||||
<AlertTitle>{{ params.error }}</AlertTitle>
|
||||
<AlertDescription>
|
||||
{{ params.error_description }}
|
||||
</AlertDescription>
|
||||
</Alert>
|
||||
<CardTitle as="h1">{{ m.tired_green_sloth_evoke() }}</CardTitle>
|
||||
<CardTitle as="h1">{{
|
||||
m.tired_green_sloth_evoke()
|
||||
}}</CardTitle>
|
||||
<CardDescription>
|
||||
{{ m.solid_slow_platypus_talk() }}
|
||||
</CardDescription>
|
||||
|
|
@ -51,27 +70,42 @@
|
|||
{{ m.true_male_gadfly_stab() }}
|
||||
</FormLabel>
|
||||
<FormControl>
|
||||
<Input placeholder="hunter2" type="password" auto-capitalize="none" auto-correct="off"
|
||||
v-bind="componentField" />
|
||||
<Input
|
||||
placeholder="hunter2"
|
||||
type="password"
|
||||
auto-capitalize="none"
|
||||
auto-correct="off"
|
||||
v-bind="componentField"
|
||||
/>
|
||||
</FormControl>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
</FormField>
|
||||
<FormField v-slot="{ componentField }" name="password-confirm">
|
||||
<FormField
|
||||
v-slot="{ componentField }"
|
||||
name="password-confirm"
|
||||
>
|
||||
<FormItem>
|
||||
<FormLabel>
|
||||
{{ m.awful_cozy_jannes_rise() }}
|
||||
</FormLabel>
|
||||
<FormControl>
|
||||
<Input placeholder="hunter2" type="password" auto-capitalize="none" auto-correct="off"
|
||||
v-bind="componentField" />
|
||||
<Input
|
||||
placeholder="hunter2"
|
||||
type="password"
|
||||
auto-capitalize="none"
|
||||
auto-correct="off"
|
||||
v-bind="componentField"
|
||||
/>
|
||||
</FormControl>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
</FormField>
|
||||
</CardContent>
|
||||
<CardFooter class="grid gap-2">
|
||||
<Button variant="default" type="submit">{{ m.noisy_round_skate_yell() }}</Button>
|
||||
<Button variant="default" type="submit">{{
|
||||
m.noisy_round_skate_yell()
|
||||
}}</Button>
|
||||
</CardFooter>
|
||||
</form>
|
||||
</Card>
|
||||
|
|
@ -88,6 +122,7 @@ import { Button } from "~/components/ui/button";
|
|||
import {
|
||||
Card,
|
||||
CardContent,
|
||||
CardDescription,
|
||||
CardFooter,
|
||||
CardHeader,
|
||||
CardTitle,
|
||||
|
|
@ -147,7 +182,7 @@ const formSchema = toTypedSchema(
|
|||
});
|
||||
}
|
||||
return {};
|
||||
}),
|
||||
})
|
||||
);
|
||||
|
||||
const params = useUrlSearchParams();
|
||||
|
|
@ -158,4 +193,4 @@ const form = useForm({
|
|||
token: (params.token as string) ?? undefined,
|
||||
},
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,21 +1,28 @@
|
|||
<template>
|
||||
<div class="md:px-8 px-4 py-2 max-w-7xl mx-auto w-full space-y-6">
|
||||
<div :class="cn('grid gap-2', canUpload && 'grid-cols-[1fr,auto]')">
|
||||
<h1 class="scroll-m-20 text-3xl font-extrabold tracking-tight lg:text-4xl capitalize">
|
||||
<h1
|
||||
class="scroll-m-20 text-3xl font-extrabold tracking-tight lg:text-4xl capitalize"
|
||||
>
|
||||
{{ m.suave_smart_mantis_climb() }}
|
||||
</h1>
|
||||
<Uploader v-if="canUpload">
|
||||
<Button variant="default">
|
||||
<Upload /> Upload
|
||||
</Button>
|
||||
<Button variant="default"> <Upload /> Upload </Button>
|
||||
</Uploader>
|
||||
</div>
|
||||
<div v-if="emojis.length > 0" class="max-w-sm w-full relative">
|
||||
<Input v-model="search" placeholder="Search" class="pl-8" />
|
||||
<Search class="absolute size-4 top-1/2 left-2.5 transform -translate-y-1/2" />
|
||||
<Search
|
||||
class="absolute size-4 top-1/2 left-2.5 transform -translate-y-1/2"
|
||||
/>
|
||||
</div>
|
||||
<Category v-if="emojis.length > 0" v-for="([name, emojis]) in categories" :key="name" :emojis="emojis"
|
||||
:name="name" />
|
||||
<Category
|
||||
v-if="emojis.length > 0"
|
||||
v-for="[name, emojis] in categories"
|
||||
:key="name"
|
||||
:emojis="emojis"
|
||||
:name="name"
|
||||
/>
|
||||
<Card v-else class="shadow-none bg-transparent border-none p-4">
|
||||
<CardHeader class="text-center gap-y-4">
|
||||
<CardTitle>{{ m.actual_steep_llama_rest() }}</CardTitle>
|
||||
|
|
@ -33,6 +40,7 @@ import { type Emoji, RolePermission } from "@versia/client/types";
|
|||
import { Search, Upload } from "lucide-vue-next";
|
||||
import Category from "~/components/preferences/emojis/category.vue";
|
||||
import Uploader from "~/components/preferences/emojis/uploader.vue";
|
||||
import { Button } from "~/components/ui/button";
|
||||
import {
|
||||
Card,
|
||||
CardDescription,
|
||||
|
|
@ -60,14 +68,14 @@ const permissions = usePermissions();
|
|||
const canUpload = computed(
|
||||
() =>
|
||||
permissions.value.includes(RolePermission.ManageOwnEmojis) ||
|
||||
permissions.value.includes(RolePermission.ManageEmojis),
|
||||
permissions.value.includes(RolePermission.ManageEmojis)
|
||||
);
|
||||
|
||||
const emojis = computed(
|
||||
() =>
|
||||
identity.value?.emojis?.filter((emoji) =>
|
||||
emoji.shortcode.toLowerCase().includes(search.value.toLowerCase()),
|
||||
) ?? [],
|
||||
emoji.shortcode.toLowerCase().includes(search.value.toLowerCase())
|
||||
) ?? []
|
||||
);
|
||||
|
||||
const search = ref("");
|
||||
|
|
@ -95,4 +103,4 @@ const categories = computed(() => {
|
|||
}
|
||||
return categories;
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue