diff --git a/.tokeignore b/.tokeignore index b123ac9..ac6c384 100644 --- a/.tokeignore +++ b/.tokeignore @@ -9,3 +9,5 @@ MiSans.css *.yaml *.yml *.mdx +packages/solid/src/drizzle/cred +packages/solid/src/drizzle/main \ No newline at end of file diff --git a/bun.lock b/bun.lock index ecfd287..f44651e 100644 --- a/bun.lock +++ b/bun.lock @@ -95,7 +95,7 @@ "packages/solid": { "name": "example-basic", "dependencies": { - "@m3-components/solid": "^0.0.3", + "@m3-components/solid": "0.0.7", "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.0", "@solidjs/start": "^1.1.0", @@ -346,7 +346,7 @@ "@koshnic/ratelimit": ["@koshnic/ratelimit@1.0.3", "", { "dependencies": { "@types/chai": "^4.3.9", "@types/mocha": "^10.0.3", "chai": "^4.3.10", "ioredis": "^5.3.2", "mocha": "^10.2.0" } }, "sha512-cfDcSc+I+M4hNM+/4M+lfn8UuTq4OEFKl78ThOcGNaO7g8tWb1vm2qVpV1p1loYao1mqk00NBNwHQu2E/qFq2g=="], - "@m3-components/solid": ["@m3-components/solid@0.0.3", "", { "dependencies": { "solid-js": "^1.9.5" } }, "sha512-3TjrTTQyiD41uXO7TPuV6Q0FaemsBik4FXg4/2wi858hIkzre3rh/rmHNYG90z73/U9K0kTB6zZgO3HpnhVEwg=="], + "@m3-components/solid": ["@m3-components/solid@0.0.7", "", { "dependencies": { "solid-js": "^1.9.5" } }, "sha512-pyu8Of2wys0pgAV08lz9aOGGkiQPjzCXfuQyJeTu0auKYe8EvmqlcgH3JbX0cRP4CVxp6yd9ppfQT9B/i9DgvQ=="], "@mapbox/node-pre-gyp": ["@mapbox/node-pre-gyp@2.0.0", "", { "dependencies": { "consola": "^3.2.3", "detect-libc": "^2.0.0", "https-proxy-agent": "^7.0.5", "node-fetch": "^2.6.7", "nopt": "^8.0.0", "semver": "^7.5.3", "tar": "^7.4.0" }, "bin": { "node-pre-gyp": "bin/node-pre-gyp" } }, "sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg=="], diff --git a/packages/solid/package.json b/packages/solid/package.json index 8173ad8..0e87abd 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -8,7 +8,7 @@ "version": "vinxi version" }, "dependencies": { - "@m3-components/solid": "^0.0.3", + "@m3-components/solid": "0.0.7", "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.0", "@solidjs/start": "^1.1.0", diff --git a/packages/solid/public/icons/标题-浅色.svg b/packages/solid/public/icons/zh/appbar_desktop-light.svg similarity index 100% rename from packages/solid/public/icons/标题-浅色.svg rename to packages/solid/public/icons/zh/appbar_desktop-light.svg diff --git a/packages/solid/public/icons/标题-深色.svg b/packages/solid/public/icons/zh/appbar_desktop_dark.svg similarity index 100% rename from packages/solid/public/icons/标题-深色.svg rename to packages/solid/public/icons/zh/appbar_desktop_dark.svg diff --git a/packages/solid/public/icons/TitleBar Mobile Dark.svg b/packages/solid/public/icons/zh/appbar_mobile_dark.svg similarity index 100% rename from packages/solid/public/icons/TitleBar Mobile Dark.svg rename to packages/solid/public/icons/zh/appbar_mobile_dark.svg diff --git a/packages/solid/public/icons/TitleBar Mobile Light.svg b/packages/solid/public/icons/zh/appbar_mobile_light.svg similarity index 100% rename from packages/solid/public/icons/TitleBar Mobile Light.svg rename to packages/solid/public/icons/zh/appbar_mobile_light.svg diff --git a/packages/solid/src/components/icons/MenuOpen.tsx b/packages/solid/src/components/icons/MenuOpen.tsx new file mode 100644 index 0000000..25f4f21 --- /dev/null +++ b/packages/solid/src/components/icons/MenuOpen.tsx @@ -0,0 +1,9 @@ +import { type SVGIconComponent } from "./types"; + +export const MenuOpen: SVGIconComponent = () => { + return ( + + + + ); +} \ No newline at end of file diff --git a/packages/solid/src/components/icons/types.d.ts b/packages/solid/src/components/icons/types.d.ts new file mode 100644 index 0000000..0b0d17d --- /dev/null +++ b/packages/solid/src/components/icons/types.d.ts @@ -0,0 +1,3 @@ +import { Component, JSX } from "solid-js"; + +type SVGIconComponent = Component>; \ No newline at end of file diff --git a/packages/solid/src/components/shell/Header.tsx b/packages/solid/src/components/shell/Header.tsx index e870a3f..3ac5b8b 100644 --- a/packages/solid/src/components/shell/Header.tsx +++ b/packages/solid/src/components/shell/Header.tsx @@ -1,5 +1,31 @@ import { Component } from "solid-js"; +import { + AppBar, + AppBarSearchBox, + IconButton, + LeadingElement, + TrailingElementGroup, + TrailingElement +} from "@m3-components/solid"; +import "@m3-components/solid/index.css"; +import { MenuOpen } from "~/components/icons/MenuOpen"; export const Header: Component = () => { - return logo; + return ( +
+ + + + + + + + + + + + + +
+ ); }; diff --git a/packages/solid/src/entry-client.tsx b/packages/solid/src/entry-client.tsx index b883782..cc4e87d 100644 --- a/packages/solid/src/entry-client.tsx +++ b/packages/solid/src/entry-client.tsx @@ -1,11 +1,14 @@ // @refresh reload import { mount, StartClient } from "@solidjs/start/client"; import { RequestContextProvider } from "./components/requestContext"; +import { MetaProvider } from "@solidjs/meta"; mount( () => ( - + + + ), document.getElementById("app")! diff --git a/packages/solid/src/entry-server.tsx b/packages/solid/src/entry-server.tsx index 7d55bf6..6d46a1b 100644 --- a/packages/solid/src/entry-server.tsx +++ b/packages/solid/src/entry-server.tsx @@ -5,23 +5,23 @@ import { RequestContextProvider } from "~/components/requestContext"; export default createHandler(() => ( - ( - - - - - {/**/} - - 中V档案馆 - {assets} - - -
{children}
- {scripts} - - - )} - /> + + ( + + + + + {/**/} + {assets} + + +
{children}
+ {scripts} + + + )} + /> +
)); diff --git a/packages/solid/src/routes/song/[id]/info.tsx b/packages/solid/src/routes/song/[id]/info.tsx index 62f9fd2..8c5d519 100644 --- a/packages/solid/src/routes/song/[id]/info.tsx +++ b/packages/solid/src/routes/song/[id]/info.tsx @@ -1,7 +1,6 @@ import { DateTime } from "luxon"; import { useParams } from "@solidjs/router"; import { createResource } from "solid-js"; -import { Title } from "@solidjs/meta"; import { Suspense } from "solid-js"; import { For } from "solid-js"; import { useCachedFetch } from "~/lib/dbCache"; @@ -10,25 +9,44 @@ import { bilibiliMetadata, videoSnapshot } from "~db/main/schema"; import { desc, eq } from "drizzle-orm"; import { BilibiliMetadataType, VideoSnapshotType } from "~db/outerSchema"; import { Context, useRequestContext } from "~/components/requestContext"; +import { Header } from "~/components/shell/Header"; -async function getAllSnapshots (aid: number, context: Context) { +async function getAllSnapshots(aid: number, context: Context) { "use server"; - return useCachedFetch(async () => { - return dbMain.select().from(videoSnapshot).where(eq(videoSnapshot.aid,aid)).orderBy(desc(videoSnapshot.createdAt)); - }, "all-snapshots", context, [aid]); + return useCachedFetch( + async () => { + return dbMain + .select() + .from(videoSnapshot) + .where(eq(videoSnapshot.aid, aid)) + .orderBy(desc(videoSnapshot.createdAt)); + }, + "all-snapshots", + context, + [aid] + ); } async function getVideoMetadata(avORbv: number | string, context: Context) { "use server"; if (typeof avORbv === "number") { - return useCachedFetch(async () => { - return dbMain.select().from(bilibiliMetadata).where(eq(bilibiliMetadata.aid, avORbv)).limit(1); - }, "bili-metadata", context, [avORbv]); - } - else { - return useCachedFetch(async () => { - return dbMain.select().from(bilibiliMetadata).where(eq(bilibiliMetadata.bvid, avORbv)).limit(1); - }, "bili-metadata", context, [avORbv]); + return useCachedFetch( + async () => { + return dbMain.select().from(bilibiliMetadata).where(eq(bilibiliMetadata.aid, avORbv)).limit(1); + }, + "bili-metadata", + context, + [avORbv] + ); + } else { + return useCachedFetch( + async () => { + return dbMain.select().from(bilibiliMetadata).where(eq(bilibiliMetadata.bvid, avORbv)).limit(1); + }, + "bili-metadata", + context, + [avORbv] + ); } } @@ -78,101 +96,115 @@ export default function VideoInfoPage() { t: title }; }); + + return ( -
-
- loading
}> - {data()?.t} -

- 视频信息:{" "} - - av{data()?.v.aid} - -

+ <> +
+
+
+ loading
}> + {data()?.t} + {data()?.t} +

+ 视频信息:{" "} + + av{data()?.v.aid} + +

-
-

基本信息

-
- - - - - - - - - - - - - - -
+
+

基本信息

+
+ + + + + + + + + + + + + + +
+
-
-
-

播放量历史数据

+
+

播放量历史数据

-
- - - - - - - - - - - - - - - - {(snapshot) => ( - - - - - - - - - - - )} - - -
创建时间观看硬币点赞收藏分享弹幕评论
- {DateTime.fromJSDate(new Date(snapshot.createdAt)).toFormat( - "yyyy-MM-dd HH:mm:ss" - )} - {snapshot.views}{snapshot.coins}{snapshot.likes} - {snapshot.favorites} - {snapshot.shares} - {snapshot.danmakus} - - {snapshot.replies} -
+
+ + + + + + + + + + + + + + + + {(snapshot) => ( + + + + + + + + + + + )} + + +
创建时间观看硬币点赞收藏分享弹幕评论
+ {DateTime.fromJSDate(new Date(snapshot.createdAt)).toFormat( + "yyyy-MM-dd HH:mm:ss" + )} + + {snapshot.views} + + {snapshot.coins} + + {snapshot.likes} + + {snapshot.favorites} + + {snapshot.shares} + + {snapshot.danmakus} + + {snapshot.replies} +
+
-
- -
-
+ + +
+ ); }