Done
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled

This commit is contained in:
2026-07-04 23:09:00 +10:00
parent 0485b85a59
commit 439139a057
50 changed files with 2405 additions and 548 deletions
+99
View File
@@ -0,0 +1,99 @@
<script setup lang="ts">
import { Head, useForm, Link } from '@inertiajs/vue3';
import { route } from 'ziggy-js';
import MainLayout from '@/layouts/MainLayout.vue';
import PageCard from '@/components/PageCard.vue';
import SectionHeading from '@/components/SectionHeading.vue';
defineOptions({ layout: MainLayout });
defineProps<{
status?: string;
}>();
const form = useForm({
email: '',
password: '',
remember: false,
});
const submit = () => {
form.post(route('login.store'), {
onFinish: () => form.reset('password'),
});
};
</script>
<template>
<Head title="Login" />
<VContainer class="d-flex justify-center py-8">
<PageCard max-width="400">
<template #header>
<SectionHeading
title="Sign in"
subtitle="Welcome back. Enter your details to continue reading."
/>
</template>
<VAlert
v-if="status"
type="success"
variant="tonal"
density="compact"
class="mb-4"
>
{{ status }}
</VAlert>
<VForm @submit.prevent="submit">
<VTextField
v-model="form.email"
label="Email address"
type="email"
autofocus
autocomplete="username"
:error-messages="form.errors.email"
class="mb-4"
/>
<VTextField
v-model="form.password"
label="Password"
type="password"
autocomplete="current-password"
:error-messages="form.errors.password"
class="mb-1"
/>
<VCheckbox
v-model="form.remember"
label="Keep me signed in"
density="compact"
hide-details
class="mb-4"
/>
<VBtn
type="submit"
block
size="large"
color="primary"
:loading="form.processing"
>
Sign in
</VBtn>
</VForm>
<template #footer>
New to DredgeNews?
<Link
:href="route('register')"
class="text-primary font-weight-medium"
>
Create an account
</Link>
</template>
</PageCard>
</VContainer>
</template>
+95
View File
@@ -0,0 +1,95 @@
<script setup lang="ts">
import { Head, useForm, Link } from '@inertiajs/vue3';
import { route } from 'ziggy-js';
import MainLayout from '@/layouts/MainLayout.vue';
import PageCard from '@/components/PageCard.vue';
import SectionHeading from '@/components/SectionHeading.vue';
defineOptions({ layout: MainLayout });
const form = useForm({
name: '',
email: '',
password: '',
password_confirmation: '',
});
const submit = () => {
form.post(route('register.store'), {
onFinish: () => form.reset('password', 'password_confirmation'),
});
};
</script>
<template>
<Head title="Register" />
<VContainer class="d-flex justify-center py-8">
<PageCard max-width="400">
<template #header>
<SectionHeading
eyebrow="Join DredgeNews"
title="Create your account"
subtitle="Unlimited stories, straight reporting, no noise."
/>
</template>
<VForm @submit.prevent="submit">
<VTextField
v-model="form.name"
label="Full name"
autofocus
autocomplete="name"
:error-messages="form.errors.name"
class="mb-4"
/>
<VTextField
v-model="form.email"
label="Email address"
type="email"
autocomplete="username"
:error-messages="form.errors.email"
class="mb-4"
/>
<VTextField
v-model="form.password"
label="Password"
type="password"
autocomplete="new-password"
:error-messages="form.errors.password"
class="mb-4"
/>
<VTextField
v-model="form.password_confirmation"
label="Confirm password"
type="password"
autocomplete="new-password"
:error-messages="form.errors.password_confirmation"
class="mb-4"
/>
<VBtn
type="submit"
block
size="large"
color="primary"
:loading="form.processing"
>
Create account
</VBtn>
</VForm>
<template #footer>
Already have an account?
<Link
:href="route('login')"
class="text-primary font-weight-medium"
>Sign in</Link
>
</template>
</PageCard>
</VContainer>
</template>