refactor(core): consolidate core files under src/core directory

Move breakpoints, fonts, and app_constants into the core directory for better organization:
- Move src/lib/breakpoints.ts to src/core/breakpoints.ts
- Move src/lib/fonts.ts to src/core/fonts.ts
- Move src/core/constants/app_constants.ts to src/core/app_constants.ts and clean up outdated comments
This commit is contained in:
2026-06-11 18:16:08 +08:00
parent e68aa09395
commit 0ffc961e00
4 changed files with 0 additions and 26 deletions
@@ -1,17 +1,3 @@
/**
*
*
* 使
* Dart: lib/res/constants.dart
*
* `facebookAppId` / `googleClientId` Next.js
* OAuth `@/lib/auth/nextauth.ts` `AUTH_*_ID` /
* `AUTH_*_SECRET` env Auth.js v5
*
* `appTitle` / `appUrl` `core/net/config/api_config.ts` `getAppEnv()`
* `process.env.NEXT_PUBLIC_APP_ENV``development` / `test` / `production`
* `.env.example`
*/
import { getAppEnv } from "@/core/net/config/api_config";
export class AppConstants {
+21
View File
@@ -0,0 +1,21 @@
/**
* 响应式断点常量
*
* 原始 Dart: lib/ui/core/responsive.dart
*
* 与 `src/design/breakpoints.css` 中的 CSS 变量保持一致:
* - 客户端运行时检查(matchMedia)通过 `useBreakpoint` hook
* - 服务端 / 客户端 CSS 通过 `src/design/breakpoints.css` 的 media query
*/
export const Breakpoints = {
/** 手机设备最大宽度 */
mobileMaxWidth: 500,
/** 平板设备最小宽度 */
tabletMinWidth: 600,
/** 平板设备最大宽度 */
tabletMaxWidth: 1023,
/** 桌面设备最小宽度 */
desktopMinWidth: 1024,
} as const;
export type DeviceSize = "mobile" | "tablet" | "desktop";
+56
View File
@@ -0,0 +1,56 @@
import { Geist, Geist_Mono } from "next/font/google";
import localFont from "next/font/local";
/**
* 全局字体配置(仅供服务端组件使用,例如 `src/app/layout.tsx`)。
*
* - `next/font/google` 与 `next/font/local` 在构建期完成 self-host、preload、
* subset、inline,浏览器不会向 Google 发送请求,也不会产生 layout shift。
* - 产出的 CSS 变量由 `globals.css` 桥接到 Tailwind(如 `font-sans`、`font-athelas`)。
*
* 注意:本文件**不**通过 `src/lib/index.ts` 桶导出,避免被误打进客户端 bundle。
* 引用方式:`import { geistSans, geistMono, athelas } from "@/lib/fonts";`
*/
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
});
/**
* Athelas 本地字体。
*
* 原始资源:/Users/chase/Documents/cozsweet/fonts/Athelas-*.ttf
* 放置位置:/public/fonts/Athelas-*.ttf
*
* 路径计算(`next/font/local` 要求相对路径从**调用文件**出发):
* src/lib/fonts.ts → ../../public/fonts/...
*/
const athelas = localFont({
src: [
{
path: "../../public/fonts/Athelas-Regular.ttf",
weight: "400",
style: "normal",
},
{
path: "../../public/fonts/Athelas-Bold.ttf",
weight: "700",
style: "normal",
},
{
path: "../../public/fonts/Athelas-BoldItalic.ttf",
weight: "700",
style: "italic",
},
],
variable: "--font-athelas",
display: "swap",
});
export { geistSans, geistMono, athelas };