feat(layout): login, uygulama kabuğu, alt menü, hızlı ekle ve dashboard

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-05 01:35:10 +03:00
parent 4dbd2eb441
commit 1cf9fd9d8c
31 changed files with 1061 additions and 14 deletions
+33
View File
@@ -0,0 +1,33 @@
"use client";
import { Eye, EyeOff } from "lucide-react";
import { useState } from "react";
import {
InputGroup,
InputGroupAddon,
InputGroupButton,
InputGroupInput,
} from "@/components/ui/input-group";
import { tr } from "@/i18n/tr";
/** Göster/gizle düğmeli şifre alanı. */
export function PasswordInput(props: Omit<React.ComponentProps<typeof InputGroupInput>, "type">) {
const [visible, setVisible] = useState(false);
const label = visible ? tr.common.hidePassword : tr.common.showPassword;
return (
<InputGroup>
<InputGroupInput type={visible ? "text" : "password"} {...props} />
<InputGroupAddon align="inline-end">
<InputGroupButton
size="icon-xs"
aria-label={label}
title={label}
aria-pressed={visible}
onClick={() => setVisible((v) => !v)}
>
{visible ? <EyeOff /> : <Eye />}
</InputGroupButton>
</InputGroupAddon>
</InputGroup>
);
}