diff --git a/frontend/src/globalInterfaces.ts b/frontend/src/globalInterfaces.ts new file mode 100644 index 0000000..b14d7d6 --- /dev/null +++ b/frontend/src/globalInterfaces.ts @@ -0,0 +1,79 @@ +export interface Post { + id: string; + slug: string; + title: string; + description: string; + author: string; + category: string; + categoryColor: string; + date: string; + readTime: string; + image: string; + content?: string; + draft: boolean; +} + +export interface EmailOptions { + to: string; + subject: string; + html: string; +} + +export interface Review { + id: number; + name: string; + car: string; + text: string; + rating: number; + avatar: { initial: string; color: string; }; + date: string; + votesCount: number; + isHelpful: boolean; +} + +export interface Case { + id: number; + title: string; + category: CaseCategory; + description: string; + result: string; + clientStory: string; + amount: string; + duration: string; + image: string; + tags: string[]; + featured?: boolean; +} + +export type CaseCategory = + | "insurance" + | "rights" + | "accident" + | "court" + | "consultation"; + +export interface DocumentItem { + id: string; + title: string; + description: string; + fileSize: string; + fileType: 'pdf' | 'docx' | 'xlsx' | 'zip'; + downloadUrl: string; + category: string; + tags?: string[]; +} + +export interface NavLink { + name: string; + url: string; +} + +export interface CompanyInfo { + name: string; + fullName: string; + phone: string; + phoneClean: string; + email: string; + address: string; + workHours: string; +} diff --git a/frontend/src/lib/email.ts b/frontend/src/lib/email.ts index c598d6d..7b61fc0 100644 --- a/frontend/src/lib/email.ts +++ b/frontend/src/lib/email.ts @@ -1,4 +1,5 @@ import nodemailer from 'nodemailer'; +import type { EmailOptions } from '../globalInterfaces'; const SMTP_HOST = import.meta.env.SMTP_HOST || 'localhost'; const SMTP_PORT = import.meta.env.SMTP_PORT || 1025; @@ -20,12 +21,6 @@ function getTransporter() { return transporter; } -export interface EmailOptions { - to: string; - subject: string; - html: string; -} - export async function sendEmail(options: EmailOptions): Promise { try { console.log('Sending email to:', options.to); diff --git a/frontend/src/lib/pb.ts b/frontend/src/lib/pb.ts index 8d739bb..210aaf2 100644 --- a/frontend/src/lib/pb.ts +++ b/frontend/src/lib/pb.ts @@ -1,4 +1,5 @@ import PocketBase from 'pocketbase'; +import type { Post } from '../globalInterfaces'; const PB_URL = import.meta.env.POCKETBASE_URL || 'http://127.0.0.1:8090'; @@ -6,21 +7,6 @@ export const pb = new PocketBase(PB_URL); pb.collection('_superusers').authRefresh().catch(() => {}); -export interface Post { - id: string; - slug: string; - title: string; - description: string; - author: string; - category: string; - categoryColor: string; - date: string; - readTime: string; - image: string; - content?: string; - draft: boolean; -} - export async function getPosts(options?: { page?: number; perPage?: number; @@ -71,11 +57,11 @@ export async function getAllCategories(): Promise { fields: 'category', }); - const categories = (result || []).map((post: any) => post.category).filter(Boolean); + const categories = (result || []).map((post) => post.category as string).filter(Boolean); return ['Все', ...new Set(categories)]; } -export function getPostImageUrl(post: any): string { +export function getPostImageUrl(post: { image?: string }): string { if (post.image) { const fileUrl = pb.files.getUrl(post, post.image); if (fileUrl.startsWith('/')) { diff --git a/frontend/src/pages/api/auth/forgot-password.ts b/frontend/src/pages/api/auth/forgot-password.ts index 78208ed..5014de4 100644 --- a/frontend/src/pages/api/auth/forgot-password.ts +++ b/frontend/src/pages/api/auth/forgot-password.ts @@ -1,5 +1,5 @@ import type { APIRoute } from 'astro'; -import PocketBase from 'pocketbase'; +import { pb } from '../../../lib/pb'; import { sendEmail, getSiteUrl } from '../../../lib/email'; function generateResetPasswordHtml(firstName: string, resetLink: string): string { @@ -62,7 +62,6 @@ function generateResetPasswordHtml(firstName: string, resetLink: string): string export const POST: APIRoute = async ({ request }) => { try { - const pb = new PocketBase(import.meta.env.POCKETBASE_URL); const data = await request.json(); const { email } = data; diff --git a/frontend/src/pages/api/auth/reset-password.ts b/frontend/src/pages/api/auth/reset-password.ts index a38f6d4..cd4baef 100644 --- a/frontend/src/pages/api/auth/reset-password.ts +++ b/frontend/src/pages/api/auth/reset-password.ts @@ -1,9 +1,8 @@ import type { APIRoute } from 'astro'; -import PocketBase from 'pocketbase'; +import { pb } from '../../../lib/pb'; export const POST: APIRoute = async ({ request }) => { try { - const pb = new PocketBase(import.meta.env.POCKETBASE_URL); const data = await request.json(); const { token, userId, password } = data; diff --git a/frontend/src/pages/api/auth/sign-in.ts b/frontend/src/pages/api/auth/sign-in.ts index a1d4a07..926a53d 100644 --- a/frontend/src/pages/api/auth/sign-in.ts +++ b/frontend/src/pages/api/auth/sign-in.ts @@ -1,9 +1,8 @@ import type { APIRoute } from 'astro'; -import PocketBase from 'pocketbase'; +import { pb } from '../../../lib/pb'; export const POST: APIRoute = async ({ request, cookies }) => { try { - const pb = new PocketBase(import.meta.env.POCKETBASE_URL); const data = await request.json(); const { email, password } = data; diff --git a/frontend/src/pages/api/auth/sign-up.ts b/frontend/src/pages/api/auth/sign-up.ts index bc24b9c..519056c 100644 --- a/frontend/src/pages/api/auth/sign-up.ts +++ b/frontend/src/pages/api/auth/sign-up.ts @@ -1,10 +1,9 @@ import type { APIRoute } from 'astro'; -import PocketBase from 'pocketbase'; +import { pb } from '../../../lib/pb'; import { sendEmail, generateVerifyEmailHtml, getSiteUrl } from '../../../lib/email'; export const POST: APIRoute = async ({ request, redirect }) => { try { - const pb = new PocketBase(import.meta.env.POCKETBASE_URL); const data = await request.json(); console.log('Registration attempt:', { email: data.email, firstName: data.firstName, lastName: data.lastName }); diff --git a/frontend/src/pages/api/consultation.ts b/frontend/src/pages/api/consultation.ts index aa1f2a4..76095f1 100644 --- a/frontend/src/pages/api/consultation.ts +++ b/frontend/src/pages/api/consultation.ts @@ -1,9 +1,8 @@ import type { APIRoute } from 'astro'; -import PocketBase from 'pocketbase'; +import { pb } from '../../lib/pb'; export const POST: APIRoute = async ({ request }) => { try { - const pb = new PocketBase(import.meta.env.POCKETBASE_URL); const data = await request.json(); const { name, phone, service } = data; diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 1851f40..fa687f7 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -3,6 +3,7 @@ "include": [".astro/types.d.ts", "**/*"], "exclude": ["dist"], "compilerOptions": { + "ignoreDeprecations": "6.0", "baseUrl": ".", "paths": { "@styles/*": ["src/styles/*"],