refactor: reorganize website configuration and update imports

- Moved website configuration to a new file for better modularity and maintainability.
- Updated import paths across the codebase to reference the new website configuration location.
- Removed the old website configuration from the config.tsx file to streamline the codebase.
This commit is contained in:
javayhu 2025-04-10 00:43:52 +08:00
parent 165673a998
commit 4d47201ce3
14 changed files with 98 additions and 89 deletions

View File

@ -1,6 +1,6 @@
'use server';
import { websiteConfig } from '@/config';
import { websiteConfig } from '@/config/website';
import { sendEmail } from '@/mail';
import { getLocale } from 'next-intl/server';
import { createSafeActionClient } from 'next-safe-action';

View File

@ -1,6 +1,6 @@
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
import { Button } from '@/components/ui/button';
import { websiteConfig } from '@/config';
import { websiteConfig } from '@/config/website';
import { constructMetadata } from '@/lib/metadata';
import { getBaseUrlWithLocale } from '@/lib/urls/urls';
import { MailIcon } from 'lucide-react';

View File

@ -1,7 +1,7 @@
import BlogGrid from '@/components/blog/blog-grid';
import EmptyGrid from '@/components/shared/empty-grid';
import CustomPagination from '@/components/shared/pagination';
import { websiteConfig } from '@/config';
import { websiteConfig } from '@/config/website';
import { constructMetadata } from '@/lib/metadata';
import { getBaseUrlWithLocale } from '@/lib/urls/urls';
import { NextPageProps } from '@/types/next-page-props';

View File

@ -1,7 +1,7 @@
import BlogGrid from '@/components/blog/blog-grid';
import EmptyGrid from '@/components/shared/empty-grid';
import CustomPagination from '@/components/shared/pagination';
import { websiteConfig } from '@/config';
import { websiteConfig } from '@/config/website';
import { constructMetadata } from '@/lib/metadata';
import { getBaseUrlWithLocale } from '@/lib/urls/urls';
import { NextPageProps } from '@/types/next-page-props';

View File

@ -3,7 +3,7 @@ import BlogGrid from '@/components/blog/blog-grid';
import { BlogToc } from '@/components/blog/blog-toc';
import { NewsletterCard } from '@/components/newsletter/newsletter-card';
import { CustomMDXContent } from '@/components/shared/custom-mdx-content';
import { websiteConfig } from '@/config';
import { websiteConfig } from '@/config/website';
import { LocaleLink } from '@/i18n/navigation';
import { getTableOfContents } from '@/lib/blog/toc';
import { constructMetadata } from '@/lib/metadata';

View File

@ -1,7 +1,7 @@
import { XTwitterIcon } from '@/components/icons/x';
import { ModeSwitcher } from '@/components/layout/mode-switcher';
import { Logo } from '@/components/layout/logo';
import { websiteConfig } from '@/config';
import { websiteConfig } from '@/config/website';
import { LOCALE_LIST } from '@/i18n/routing';
import { docsI18nConfig } from '@/lib/docs/i18n';
import { source } from '@/lib/docs/source';

View File

@ -1,5 +1,5 @@
import BlogCard, { BlogCardSkeleton } from '@/components/blog/blog-card';
import { websiteConfig } from '@/config';
import { websiteConfig } from '@/config/website';
import { Post } from 'content-collections';
interface BlogGridProps {

View File

@ -1,6 +1,6 @@
"use client";
import { websiteConfig } from "@/config";
import { websiteConfig } from "@/config/website";
import {
ReactNode,
createContext,

View File

@ -1,6 +1,6 @@
'use client';
import { websiteConfig } from '@/config';
import { websiteConfig } from '@/config/website';
import { cn } from '@/lib/utils';
import { useTheme } from 'next-themes';
import Image from 'next/image';

View File

@ -11,7 +11,7 @@ import {
PlanIntervals
} from '@/payment/types';
import { Routes } from '@/routes';
import { MenuItem, NestedMenuItem, WebsiteConfig } from '@/types';
import { MenuItem, NestedMenuItem } from '@/types';
import {
AudioLinesIcon,
BellIcon,
@ -48,83 +48,10 @@ import {
} from 'lucide-react';
import { useTranslations } from 'next-intl';
import { XTwitterIcon } from './components/icons/x';
import { websiteConfig } from './config/website';
/**
* website config, without translations
*/
export const websiteConfig: WebsiteConfig = {
theme: "default",
metadata: {
image: '/og.png',
},
logo: {
light: '/logo.png',
dark: '/logo-dark.png',
},
mail: {
from: 'support@mksaas.com',
to: 'support@mksaas.com',
},
blog: {
paginationSize: 6,
relatedPostsSize: 3,
},
social: {
github: 'https://github.com/MkSaaSHQ',
twitter: 'https://x.com/mksaascom',
youtube: 'https://www.youtube.com/@MkSaaS',
blueSky: 'https://bsky.app/profile/mksaas.com',
linkedin: 'https://linkedin.com/company/mksaas',
facebook: 'https://facebook.com/mksaas',
instagram: 'https://instagram.com/mksaas',
tiktok: 'https://tiktok.com/@mksaas',
},
payment: {
plans: {
free: {
id: "free",
prices: [],
isFree: true,
isLifetime: false,
},
pro: {
id: "pro",
prices: [
{
type: PaymentTypes.SUBSCRIPTION,
priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_PRO_MONTHLY!,
amount: 990,
currency: "USD",
interval: PlanIntervals.MONTH,
},
{
type: PaymentTypes.SUBSCRIPTION,
priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_PRO_YEARLY!,
amount: 9900,
currency: "USD",
interval: PlanIntervals.YEAR,
},
],
isFree: false,
isLifetime: false,
recommended: true,
},
lifetime: {
id: "lifetime",
prices: [
{
type: PaymentTypes.ONE_TIME,
priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_LIFETIME!,
amount: 19900,
currency: "USD",
},
],
isFree: false,
isLifetime: true,
}
}
}
};
// Export the websiteConfig from the new location for backward compatibility
export { websiteConfig } from './config/website';
/**
* Get menu links with translations

82
src/config/website.tsx Normal file
View File

@ -0,0 +1,82 @@
import {
PaymentTypes,
PlanIntervals
} from '@/payment/types';
import { WebsiteConfig } from '@/types';
/**
* website config, without translations
*/
export const websiteConfig: WebsiteConfig = {
theme: "default",
metadata: {
image: '/og.png',
},
logo: {
light: '/logo.png',
dark: '/logo-dark.png',
},
mail: {
from: 'support@mksaas.com',
to: 'support@mksaas.com',
},
blog: {
paginationSize: 6,
relatedPostsSize: 3,
},
social: {
github: 'https://github.com/MkSaaSHQ',
twitter: 'https://x.com/mksaascom',
youtube: 'https://www.youtube.com/@MkSaaS',
blueSky: 'https://bsky.app/profile/mksaas.com',
linkedin: 'https://linkedin.com/company/mksaas',
facebook: 'https://facebook.com/mksaas',
instagram: 'https://instagram.com/mksaas',
tiktok: 'https://tiktok.com/@mksaas',
},
payment: {
plans: {
free: {
id: "free",
prices: [],
isFree: true,
isLifetime: false,
},
pro: {
id: "pro",
prices: [
{
type: PaymentTypes.SUBSCRIPTION,
priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_PRO_MONTHLY!,
amount: 990,
currency: "USD",
interval: PlanIntervals.MONTH,
},
{
type: PaymentTypes.SUBSCRIPTION,
priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_PRO_YEARLY!,
amount: 9900,
currency: "USD",
interval: PlanIntervals.YEAR,
},
],
isFree: false,
isLifetime: false,
recommended: true,
},
lifetime: {
id: "lifetime",
prices: [
{
type: PaymentTypes.ONE_TIME,
priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_LIFETIME!,
amount: 19900,
currency: "USD",
},
],
isFree: false,
isLifetime: true,
}
}
}
};

View File

@ -1,4 +1,4 @@
import { websiteConfig } from '@/config';
import { websiteConfig } from '@/config/website';
import { routing } from '@/i18n/routing';
import type { Metadata } from 'next';
import { getBaseUrl } from './urls/urls';

View File

@ -1,4 +1,4 @@
import { websiteConfig } from '@/config';
import { websiteConfig } from '@/config/website';
import { MailProvider, SendEmailResult, SendRawEmailParams, SendTemplateParams } from '@/mail/types';
import { getTemplate } from '@/mail';
import { Resend } from 'resend';

View File

@ -1,6 +1,6 @@
import { PaymentProvider, PricePlan, PaymentConfig, Customer, Subscription, Payment, PaymentStatus, PlanInterval, PaymentType, Price, CreateCheckoutParams, CheckoutResult, CreatePortalParams, PortalResult, getSubscriptionsParams } from "./types";
import { StripeProvider } from "./provider/stripe";
import { websiteConfig } from "@/config";
import { websiteConfig } from "@/config/website";
/**
* Global payment provider instance