Merge remote-tracking branch 'origin/main' into cloudflare

This commit is contained in:
javayhu 2025-06-20 22:21:04 +08:00
commit 5d50135ed6
12 changed files with 293 additions and 1058 deletions

View File

@ -20,22 +20,17 @@
"preview": "opennextjs-cloudflare build && opennextjs-cloudflare preview",
"deploy": "opennextjs-cloudflare build && opennextjs-cloudflare deploy",
"upload": "opennextjs-cloudflare build && opennextjs-cloudflare upload",
"cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts"
"cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts",
"knip": "knip"
},
"dependencies": {
"@ai-sdk/openai": "^1.1.13",
"@aws-sdk/client-s3": "^3.758.0",
"@aws-sdk/s3-request-presigner": "^3.758.0",
"@base-ui-components/react": "1.0.0-beta.0",
"@better-fetch/fetch": "^1.1.18",
"@content-collections/core": "^0.8.0",
"@content-collections/mdx": "^0.2.0",
"@content-collections/next": "^0.2.4",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/modifiers": "^9.0.0",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@fumadocs/content-collections": "^1.1.8",
"@hookform/resolvers": "^4.1.0",
"@next/third-parties": "^15.3.0",
"@openpanel/nextjs": "^1.0.7",
@ -101,7 +96,6 @@
"motion": "^12.4.3",
"next": "15.2.1",
"next-intl": "^4.0.0",
"next-plausible": "^3.12.4",
"next-safe-action": "^7.10.4",
"next-themes": "^0.4.4",
"pg": "^8.16.0",
@ -125,7 +119,6 @@
"tailwind-merge": "^3.0.2",
"tailwindcss-animate": "^1.0.7",
"tw-animate-css": "^1.2.4",
"unist-util-visit": "^5.0.0",
"use-intl": "^3.26.5",
"use-media": "^1.5.0",
"vaul": "^1.1.2",
@ -134,21 +127,20 @@
},
"devDependencies": {
"@biomejs/biome": "1.9.4",
"@content-collections/cli": "^0.1.6",
"@opennextjs/cloudflare": "^1.2.1",
"@tailwindcss/postcss": "^4.0.14",
"@types/mdx": "^2.0.13",
"@types/node": "^20",
"@types/node": "^20.19.0",
"@types/pg": "^8.11.11",
"@types/react": "^19",
"@types/react-dom": "^19",
"concurrently": "^9.1.2",
"drizzle-kit": "^0.30.4",
"knip": "^5.61.2",
"postcss": "^8",
"react-email": "3.0.7",
"tailwindcss": "^4.0.14",
"tsx": "^4.19.3",
"typescript": "^5",
"typescript": "^5.8.3",
"wrangler": "^4.14.1"
}
}

1261
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
import Container from '@/components/layout/container';
import type { BlogCategory } from '@/types/blog-types';
import type { BlogCategory } from '@/types';
import { BlogCategoryListDesktop } from './blog-category-list-desktop';
import { BlogCategoryListMobile } from './blog-category-list-mobile';

View File

@ -3,7 +3,7 @@
import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group';
import { LocaleLink } from '@/i18n/navigation';
import { cn } from '@/lib/utils';
import type { BlogCategory } from '@/types/blog-types';
import type { BlogCategory } from '@/types';
import { useTranslations } from 'next-intl';
import { useParams } from 'next/navigation';

View File

@ -9,7 +9,7 @@ import {
DrawerTitle,
DrawerTrigger,
} from '@/components/ui/drawer';
import type { BlogCategory } from '@/types/blog-types';
import type { BlogCategory } from '@/types';
import { LayoutListIcon } from 'lucide-react';
import { useTranslations } from 'next-intl';
import { useParams } from 'next/navigation';

View File

@ -11,7 +11,7 @@ interface ContactMessageProps extends BaseEmailProps {
message: string;
}
export function ContactMessage({
export default function ContactMessage({
name,
email,
message,
@ -40,5 +40,3 @@ ContactMessage.PreviewProps = {
email: 'username@example.com',
message: 'This is a test message',
};
export default ContactMessage;

View File

@ -11,7 +11,7 @@ interface ForgotPasswordProps extends BaseEmailProps {
name: string;
}
export function ForgotPassword({
export default function ForgotPassword({
url,
name,
locale,
@ -38,5 +38,3 @@ ForgotPassword.PreviewProps = {
url: 'https://mksaas.com',
name: 'username',
};
export default ForgotPassword;

View File

@ -7,7 +7,7 @@ import { createTranslator } from 'use-intl/core';
interface SubscribeNewsletterProps extends BaseEmailProps {}
export function SubscribeNewsletter({
export default function SubscribeNewsletter({
locale,
messages,
}: SubscribeNewsletterProps) {
@ -29,5 +29,3 @@ SubscribeNewsletter.PreviewProps = {
locale: routing.defaultLocale,
messages: defaultMessages,
};
export default SubscribeNewsletter;

View File

@ -11,7 +11,12 @@ interface VerifyEmailProps extends BaseEmailProps {
name: string;
}
export function VerifyEmail({ url, name, locale, messages }: VerifyEmailProps) {
export default function VerifyEmail({
url,
name,
locale,
messages,
}: VerifyEmailProps) {
const t = createTranslator({
locale,
messages,
@ -33,5 +38,3 @@ VerifyEmail.PreviewProps = {
url: 'https://mksaas.com',
name: 'username',
};
export default VerifyEmail;

View File

@ -1,8 +1,8 @@
import type { Locale, Messages } from 'next-intl';
import { ContactMessage } from './templates/contact-message';
import { ForgotPassword } from './templates/forgot-password';
import { SubscribeNewsletter } from './templates/subscribe-newsletter';
import { VerifyEmail } from './templates/verify-email';
import ContactMessage from './templates/contact-message';
import ForgotPassword from './templates/forgot-password';
import SubscribeNewsletter from './templates/subscribe-newsletter';
import VerifyEmail from './templates/verify-email';
/**
* list all the email templates here

View File

@ -1,25 +0,0 @@
/**
* Blog Category
*
* we can not pass CategoryType from server component to client component
* so we need to define a new type, and use it in the client component
*/
export type BlogCategory = {
slug: string;
name: string;
description: string;
};
export type BlogAuthor = {
slug: string;
name: string;
description: string;
avatar: string;
};
export type BlogPost = {
slug: string;
title: string;
description: string;
date: string;
};

12
src/types/index.d.ts vendored
View File

@ -163,3 +163,15 @@ export type MenuItem = {
export type NestedMenuItem = MenuItem & {
items?: MenuItem[]; // The items to display in the nested menu
};
/**
* Blog Category
*
* we can not pass CategoryType from server component to client component
* so we need to define a new type, and use it in the client component
*/
export type BlogCategory = {
slug: string;
name: string;
description: string;
};