feat: update terminology from 'password' to 'kata sandi' across various components and pages #47

Merged
pangestu merged 1 commits from feat/update-terminology-from-password-to-kata-sandi into dev 2026-08-26 01:58:20 +08:00
8 changed files with 40 additions and 29 deletions

View File

@ -85,6 +85,6 @@ public function resetPassword(User $user): RedirectResponse
{
$this->service->resetPassword($user);
return Inertia::flash('toast', ['type' => 'success', 'message' => 'Password berhasil direset.'])->back();
return Inertia::flash('toast', ['type' => 'success', 'message' => 'Kata sandi berhasil direset.'])->back();
}
}

View File

@ -23,7 +23,11 @@ export default function PasswordInput({
type="button"
onClick={() => setShowPassword((prev) => !prev)}
className="absolute inset-y-0 right-0 flex items-center rounded-r-md px-3 text-muted-foreground hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring focus-visible:outline-none"
aria-label={showPassword ? 'Hide password' : 'Show password'}
aria-label={
showPassword
? 'Sembunyikan kata sandi'
: 'Tampilkan kata sandi'
}
tabIndex={-1}
>
{showPassword ? (

View File

@ -86,7 +86,7 @@ export function createLecturerColumns(
onClick: () => handleEdit(lecturer),
},
{
label: 'Reset Password',
label: 'Reset Kata Sandi',
icon: <Key className="h-4 w-4" />,
onClick: () => handleResetPassword(lecturer),
},

View File

@ -101,7 +101,7 @@ export function createStudentColumns(
onClick: () => handleEdit(student),
},
{
label: 'Reset Password',
label: 'Reset Kata Sandi',
icon: <Key className="h-4 w-4" />,
onClick: () => handleResetPassword(student),
},

View File

@ -9,17 +9,17 @@ import { store } from '@/routes/password/confirm';
export default function ConfirmPassword() {
return (
<>
<Head title="Konfirmasi password" />
<Head title="Konfirmasi Kata Sandi" />
<Form {...store.form()} resetOnSuccess={['password']}>
{({ processing, errors }) => (
<div className="space-y-6">
<div className="grid gap-2">
<Label htmlFor="password">Password</Label>
<Label htmlFor="password">Kata Sandi</Label>
<PasswordInput
id="password"
name="password"
placeholder="Password"
placeholder="Kata Sandi"
autoComplete="current-password"
autoFocus
/>
@ -34,7 +34,7 @@ export default function ConfirmPassword() {
data-test="confirm-password-button"
>
{processing && <Spinner />}
Konfirmasi password
Konfirmasi Kata Sandi
</Button>
</div>
</div>
@ -45,7 +45,7 @@ export default function ConfirmPassword() {
}
ConfirmPassword.layout = {
title: 'Konfirmasi password',
title: 'Konfirmasi Kata Sandi',
description:
'Ini adalah area aman dari aplikasi. Silakan konfirmasi password Anda sebelum melanjutkan.',
'Ini adalah area aman dari aplikasi. Silakan konfirmasi kata sandi Anda sebelum melanjutkan.',
};

View File

@ -11,7 +11,7 @@ import { email } from '@/routes/password';
export default function ForgotPassword({ status }: { status?: string }) {
return (
<>
<Head title="Lupa password" />
<Head title="Lupa Kata Sandi" />
{status && (
<div className="mb-4 text-center text-sm font-medium text-green-600">
@ -46,7 +46,7 @@ export default function ForgotPassword({ status }: { status?: string }) {
{processing && (
<LoaderCircle className="h-4 w-4 animate-spin" />
)}
Kirim link reset password
Kirim link reset kata sandi
</Button>
</div>
</>
@ -63,6 +63,6 @@ export default function ForgotPassword({ status }: { status?: string }) {
}
ForgotPassword.layout = {
title: 'Lupa password',
description: 'Masukkan email Anda untuk menerima link reset password',
title: 'Lupa Kata Sandi',
description: 'Masukkan email Anda untuk menerima link reset kata sandi',
};

View File

@ -1,3 +1,4 @@
import { Form, Head } from '@inertiajs/react';
import InputError from '@/components/input-error';
import PasswordInput from '@/components/password-input';
import TextLink from '@/components/text-link';
@ -9,7 +10,6 @@ import { Separator } from '@/components/ui/separator';
import { Spinner } from '@/components/ui/spinner';
import { store } from '@/routes/login';
import { request } from '@/routes/password';
import { Form, Head } from '@inertiajs/react';
type Props = {
status?: string;
@ -30,7 +30,10 @@ export default function Login({ status, canResetPassword }: Props) {
<>
<div className="grid gap-6">
<div className="grid gap-2">
<Label htmlFor="username">Email/Username{' '}<span className="text-destructive">*</span></Label>
<Label htmlFor="username">
Email/Username{' '}
<span className="text-destructive">*</span>
</Label>
<Input
id="username"
type="text"
@ -44,7 +47,12 @@ export default function Login({ status, canResetPassword }: Props) {
<div className="grid gap-2">
<div className="flex items-center">
<Label htmlFor="password">Kata Sandi{' '}<span className="text-destructive">*</span></Label>
<Label htmlFor="password">
Kata Sandi{' '}
<span className="text-destructive">
*
</span>
</Label>
{canResetPassword && (
<TextLink
href={request()}
@ -71,9 +79,7 @@ export default function Login({ status, canResetPassword }: Props) {
name="remember"
tabIndex={3}
/>
<Label htmlFor="remember">
Ingat saya
</Label>
<Label htmlFor="remember">Ingat saya</Label>
</div>
<Button
@ -139,5 +145,6 @@ export default function Login({ status, canResetPassword }: Props) {
Login.layout = {
title: 'Masuk ke akun Anda',
description: 'Masukkan username dan password Anda di bawah ini untuk masuk',
description:
'Masukkan username dan kata sandi Anda di bawah ini untuk masuk',
};

View File

@ -16,7 +16,7 @@ type Props = {
export default function ResetPassword({ token, email, passwordRules }: Props) {
return (
<>
<Head title="Reset password" />
<Head title="Reset Kata Sandi" />
<Form
{...update.form()}
@ -43,14 +43,14 @@ export default function ResetPassword({ token, email, passwordRules }: Props) {
</div>
<div className="grid gap-2">
<Label htmlFor="password">Password baru</Label>
<Label htmlFor="password">Kata Sandi Baru</Label>
<PasswordInput
id="password"
name="password"
autoComplete="new-password"
className="mt-1 block w-full"
autoFocus
placeholder="Password baru"
placeholder="Kata sandi baru"
passwordrules={passwordRules}
/>
<InputError message={errors.password} />
@ -58,14 +58,14 @@ export default function ResetPassword({ token, email, passwordRules }: Props) {
<div className="grid gap-2">
<Label htmlFor="password_confirmation">
Konfirmasi password
Konfirmasi Kata Sandi
</Label>
<PasswordInput
id="password_confirmation"
name="password_confirmation"
autoComplete="new-password"
className="mt-1 block w-full"
placeholder="Konfirmasi password"
placeholder="Konfirmasi kata sandi"
passwordrules={passwordRules}
/>
<InputError
@ -81,7 +81,7 @@ export default function ResetPassword({ token, email, passwordRules }: Props) {
data-test="reset-password-button"
>
{processing && <Spinner />}
Reset password
Reset kata sandi
</Button>
</div>
)}
@ -91,6 +91,6 @@ export default function ResetPassword({ token, email, passwordRules }: Props) {
}
ResetPassword.layout = {
title: 'Reset password',
description: 'Masukkan password baru Anda di bawah ini',
title: 'Reset Kata Sandi',
description: 'Masukkan kata sandi baru Anda di bawah ini',
};