feat(categories): kategori ağacı, varsayılan Türkçe set ve yönetim ekranı

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-05 02:57:58 +03:00
parent eaf80c6bb4
commit 380ddaf303
10 changed files with 1469 additions and 0 deletions
+117
View File
@@ -0,0 +1,117 @@
import type { IconKey, Swatch } from "@/shared/appearance";
import type { CategoryKind } from "@/shared/schemas/category";
/**
* Hane oluşturulunca yüklenen varsayılan Türkçe kategori seti (Bölüm 6.2).
* `key` sabittir: set tekrar yüklendiğinde kopya oluşmaz, kullanıcı adı değiştirse bile tanınır.
*/
export type DefaultCategory = {
key: string;
name: string;
icon: IconKey;
color: Swatch;
children?: Omit<DefaultCategory, "children">[];
};
export const DEFAULT_CATEGORIES: Record<CategoryKind, DefaultCategory[]> = {
expense: [
{
key: "market",
name: "Market",
icon: "shopping-cart",
color: "green",
children: [
{ key: "market.gida", name: "Gıda", icon: "shopping-basket", color: "green" },
{ key: "market.temizlik", name: "Temizlik", icon: "spray-can", color: "teal" },
{ key: "market.kisisel-bakim", name: "Kişisel bakım", icon: "sparkles", color: "pink" },
],
},
{
key: "faturalar",
name: "Faturalar",
icon: "receipt",
color: "amber",
children: [
{ key: "faturalar.elektrik", name: "Elektrik", icon: "zap", color: "amber" },
{ key: "faturalar.su", name: "Su", icon: "droplet", color: "sky" },
{ key: "faturalar.dogalgaz", name: "Doğalgaz", icon: "flame", color: "orange" },
{ key: "faturalar.internet", name: "İnternet", icon: "wifi", color: "indigo" },
{ key: "faturalar.telefon", name: "Telefon", icon: "smartphone", color: "purple" },
],
},
{ key: "kira", name: "Kira", icon: "house", color: "blue" },
{ key: "aidat", name: "Aidat", icon: "building", color: "slate" },
{
key: "ulasim",
name: "Ulaşım",
icon: "car",
color: "sky",
children: [
{ key: "ulasim.yakit", name: "Yakıt", icon: "fuel", color: "orange" },
{ key: "ulasim.toplu-tasima", name: "Toplu taşıma", icon: "bus", color: "sky" },
{ key: "ulasim.arac-bakim", name: "Araç bakım ve sigorta", icon: "wrench", color: "slate" },
],
},
{
key: "saglik",
name: "Sağlık",
icon: "heart-pulse",
color: "red",
children: [
{ key: "saglik.ilac", name: "İlaç", icon: "pill", color: "red" },
{ key: "saglik.muayene", name: "Muayene ve tahlil", icon: "heart-pulse", color: "rose" },
],
},
{ key: "egitim", name: "Eğitim", icon: "graduation-cap", color: "indigo" },
{ key: "giyim", name: "Giyim", icon: "shirt", color: "purple" },
{
key: "eglence",
name: "Eğlence",
icon: "film",
color: "pink",
children: [
{
key: "eglence.disarida-yemek",
name: "Dışarıda yemek",
icon: "utensils",
color: "orange",
},
{ key: "eglence.kafe", name: "Kafe", icon: "coffee", color: "amber" },
{ key: "eglence.tatil", name: "Tatil", icon: "plane", color: "sky" },
],
},
{ key: "abonelikler", name: "Abonelikler", icon: "repeat", color: "purple" },
{ key: "ev", name: "Ev ve mobilya", icon: "sofa", color: "teal" },
{ key: "cocuk", name: "Çocuk", icon: "baby", color: "rose" },
{ key: "evcil-hayvan", name: "Evcil hayvan", icon: "paw-print", color: "lime" },
{ key: "hediye", name: "Hediye ve bağış", icon: "gift", color: "pink" },
{
key: "banka",
name: "Banka ve kart giderleri",
icon: "percent",
color: "slate",
children: [
{ key: "banka.faiz", name: "Faiz", icon: "percent", color: "red" },
{ key: "banka.vergi", name: "KKDF / BSMV", icon: "receipt", color: "slate" },
{
key: "banka.ucret",
name: "Kart ve hesap ücretleri",
icon: "credit-card",
color: "slate",
},
],
},
{ key: "vergi", name: "Vergi ve harçlar", icon: "landmark", color: "slate" },
{ key: "diger-gider", name: "Diğer", icon: "circle-ellipsis", color: "slate" },
],
income: [
{ key: "maas", name: "Maaş", icon: "briefcase", color: "green" },
{ key: "ek-gelir", name: "Ek gelir", icon: "coins", color: "teal" },
{ key: "yemek-karti", name: "Yemek kartı yüklemesi", icon: "utensils", color: "lime" },
{ key: "kira-geliri", name: "Kira geliri", icon: "house", color: "blue" },
{ key: "getiri", name: "Faiz ve getiri", icon: "trending-up", color: "indigo" },
{ key: "iade", name: "İade", icon: "undo", color: "sky" },
{ key: "hediye-gelir", name: "Hediye", icon: "gift", color: "pink" },
{ key: "diger-gelir", name: "Diğer", icon: "circle-ellipsis", color: "slate" },
],
};