phase 1-2 done

This commit is contained in:
Ali Taghavi
2026-04-24 03:42:34 +03:30
commit 95a546df11
83 changed files with 17168 additions and 0 deletions

51
sanity/schemas/project.ts Normal file
View File

@@ -0,0 +1,51 @@
import { defineField, defineType } from "sanity";
export const project = defineType({
name: "project",
title: "Project",
type: "document",
fields: [
defineField({ name: "title", title: "عنوان", type: "string", validation: (r) => r.required() }),
defineField({ name: "slug", title: "Slug", type: "slug", options: { source: "title" }, validation: (r) => r.required() }),
defineField({ name: "locale", title: "زبان", type: "string", options: { list: [{ value: "fa", title: "فارسی" }, { value: "en", title: "English" }] }, initialValue: "fa" }),
defineField({
name: "projectType",
title: "نوع پروژه",
type: "string",
options: {
list: [
{ value: "product", title: "محصول" },
{ value: "brand-system", title: "سیستم برند" },
{ value: "open-source", title: "متن‌باز" },
{ value: "creative-work", title: "اثر خلاقانه" },
],
},
validation: (r) => r.required(),
}),
defineField({ name: "description", title: "توضیح کوتاه", type: "text", rows: 2 }),
defineField({ name: "coverImage", title: "تصویر کاور", type: "image", options: { hotspot: true }, fields: [defineField({ name: "alt", type: "string", title: "Alt text" })] }),
defineField({ name: "gallery", title: "گالری", type: "array", of: [{ type: "image", options: { hotspot: true }, fields: [defineField({ name: "alt", type: "string", title: "Alt text" })] }] }),
defineField({
name: "body",
title: "محتوا",
type: "array",
of: [{ type: "block" }, { type: "image", options: { hotspot: true } }],
}),
defineField({ name: "techStack", title: "تکنولوژی‌ها", type: "array", of: [{ type: "string" }] }),
defineField({ name: "toolsUsed", title: "ابزارها", type: "array", of: [{ type: "string" }] }),
defineField({ name: "liveUrl", title: "لینک زنده", type: "url" }),
defineField({ name: "githubUrl", title: "GitHub", type: "url" }),
defineField({ name: "featured", title: "برگزیده", type: "boolean", initialValue: false }),
defineField({
name: "seo",
title: "SEO",
type: "object",
fields: [
defineField({ name: "title", type: "string", title: "عنوان SEO" }),
defineField({ name: "description", type: "text", title: "توضیحات", rows: 2 }),
defineField({ name: "ogImage", type: "image", title: "تصویر OG" }),
],
}),
],
preview: { select: { title: "title", subtitle: "projectType", media: "coverImage" } },
});