Files
kovakyazilim/lib/types.ts
T
egecankomur 2e001680bf feat: Çözümler bölümü + mobil menü; admin parser düzeltmeleri
- Çözümler: solutions tablosu, /cozumler liste + detay sayfası, anasayfa
  bölümü, tam admin CRUD (/admin/cozumler), header & footer linkleri,
  projelerde solution_slug ilişkisi, services-grid genelleştirildi
- Mobil menü (hamburger drawer) eklendi — header artık < lg'de gezilebilir
- Site ayarları parser: textarea CRLF (\r\n) normalizasyonu — neden biz,
  süreç adımları, değerler ve SSS blokları artık doğru parçalanıyor
- homepage_faq + garanti (title/description/items) saveSiteSettings'e
  bağlandı (daha önce hiç kaydedilmiyordu)
2026-06-02 18:21:58 +03:00

242 lines
6.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { AwRow } from "@/lib/appwrite-rest";
export type Row = AwRow;
export interface ServiceRow extends AwRow {
slug: string;
title: string;
description: string;
icon?: string | null;
order?: number | null;
featured?: boolean | null;
content?: string | null;
features?: string[] | null;
faq?: string[] | null; // each item is JSON: {"q":"...","a":"..."}
hero_image?: string | null;
}
// İşletmelere sunulan çözümler — Hizmetler ile birebir aynı yapı, ayrı tablo.
export interface SolutionRow extends AwRow {
slug: string;
title: string;
description: string;
icon?: string | null;
order?: number | null;
featured?: boolean | null;
content?: string | null;
features?: string[] | null;
faq?: string[] | null; // each item is JSON: {"q":"...","a":"..."}
hero_image?: string | null;
}
export interface FaqItem {
q: string;
a: string;
}
export interface ProjectRow extends AwRow {
slug: string;
title: string;
description: string;
image_url?: string | null;
live_url?: string | null;
category?: string | null;
technologies?: string[] | null;
year?: number | null;
featured?: boolean | null;
gallery?: string[] | null;
content?: string | null;
client_name?: string | null;
industry?: string | null;
duration?: string | null;
service_slug?: string | null;
solution_slug?: string | null;
metrics?: string[] | null; // JSON {"value":"+150%","label":"Trafik artışı"}
}
export interface BlogPostRow extends AwRow {
slug: string;
title: string;
excerpt?: string | null;
content?: string | null;
cover_image?: string | null;
cover_file_id?: string | null;
author?: string | null;
status?: "draft" | "published" | null;
published_at?: string | null;
tags?: string[] | null;
seo_title?: string | null;
seo_description?: string | null;
seo_image?: string | null;
}
export interface TestimonialRow extends AwRow {
name: string;
role?: string | null;
company?: string | null;
message: string;
rating?: number | null;
image_url?: string | null;
order?: number | null;
featured?: boolean | null;
}
export interface SeoPageRow extends AwRow {
path: string;
title?: string | null;
description?: string | null;
og_image?: string | null;
canonical?: string | null;
noindex?: boolean | null;
}
export interface SeoSettingsRow extends AwRow {
site_name?: string | null;
site_description?: string | null;
default_og_image?: string | null;
twitter_handle?: string | null;
facebook_url?: string | null;
linkedin_url?: string | null;
instagram_url?: string | null;
google_site_verification?: string | null;
gtm_id?: string | null;
}
export interface StatItem {
value: string;
label: string;
}
export interface SiteSettingsRow extends AwRow {
hero_badge?: string | null;
hero_title?: string | null;
hero_subtitle?: string | null;
hero_cta_primary_label?: string | null;
hero_cta_primary_href?: string | null;
hero_cta_secondary_label?: string | null;
hero_cta_secondary_href?: string | null;
hero_stats?: string[] | null; // each item JSON: {"value":"...","label":"..."}
services_eyebrow?: string | null;
services_title?: string | null;
services_description?: string | null;
solutions_eyebrow?: string | null;
solutions_title?: string | null;
solutions_description?: string | null;
projects_eyebrow?: string | null;
projects_title?: string | null;
projects_description?: string | null;
testimonials_eyebrow?: string | null;
testimonials_title?: string | null;
testimonials_description?: string | null;
cta_title?: string | null;
cta_description?: string | null;
cta_button_label?: string | null;
cta_button_href?: string | null;
contact_phone?: string | null;
contact_phone_raw?: string | null;
contact_email?: string | null;
contact_address?: string | null;
contact_hours_weekday?: string | null;
contact_hours_weekend?: string | null;
social_linkedin?: string | null;
social_instagram?: string | null;
social_twitter?: string | null;
social_facebook?: string | null;
footer_tagline?: string | null;
whatsapp_message?: string | null;
client_logos?: string[] | null;
trust_items?: string[] | null; // JSON {"icon":"Star","value":"4.9","label":"..."}
why_us?: string[] | null; // JSON {"icon":"Zap","title":"...","description":"..."}
process_steps?: string[] | null; // JSON {"title":"...","description":"..."}
lead_form_title?: string | null;
lead_form_description?: string | null;
google_review_url?: string | null;
google_rating?: number | null;
google_review_count?: number | null;
homepage_faq?: string[] | null; // JSON {"q","a"}
guarantee_title?: string | null;
guarantee_description?: string | null;
guarantee_items?: string[] | null;
// Hakkımızda sayfası
about_eyebrow?: string | null;
about_title?: string | null;
about_description?: string | null;
about_values?: string[] | null; // JSON {"title","description"}
about_hero_image?: string | null;
about_team_eyebrow?: string | null;
about_team_title?: string | null;
about_team_description?: string | null;
about_stats?: string[] | null; // JSON {"value","label"}
}
export interface AboutValue {
title: string;
description: string;
}
export interface TeamMemberRow extends AwRow {
name: string;
role?: string | null;
bio?: string | null;
photo_url?: string | null;
linkedin_url?: string | null;
order?: number | null;
skills?: string[] | null;
}
export interface IndustryRow extends AwRow {
slug: string;
title: string;
subtitle?: string | null;
content?: string | null;
hero_image?: string | null;
features?: string[] | null;
faq?: string[] | null;
seo_title?: string | null;
seo_description?: string | null;
featured?: boolean | null;
order?: number | null;
}
export interface ProjectMetric {
value: string;
label: string;
}
export interface TrustItem {
icon: string;
value: string;
label: string;
}
export interface WhyUsItem {
icon: string;
title: string;
description: string;
}
export interface ProcessStep {
title: string;
description: string;
}
export interface ContactMessageRow extends AwRow {
name: string;
email: string;
phone?: string | null;
subject?: string | null;
message: string;
status?: "new" | "read" | "replied" | "archived" | null;
}