ai/at
ai/at
1
0
at/repos_extra/frontpage/diff_min.patch

296 lines
11 KiB
Diff
Raw Normal View History

2024-10-18 13:49:50 +00:00
diff --git a/packages/frontpage/app/(app)/layout.tsx b/packages/frontpage/app/(app)/layout.tsx
index 232502d..8340a9f 100644
--- a/packages/frontpage/app/(app)/layout.tsx
+++ b/packages/frontpage/app/(app)/layout.tsx
@@ -31,7 +31,8 @@ export default async function Layout({
}) {
const session = await getSession();
return (
- <div className="container mx-auto px-4 md:px-6 pt-4 pb-8 md:py-12 max-w-3xl">
+ <div className="container mx-auto px-4 md:px-6 pt-4 pb-8 md:py-12">
+ {/* <div className="container mx-auto px-4 md:px-6 pt-4 pb-8 md:py-12 max-w-3xl"> */}
<div className="flex place-content-between items-center mb-8">
<Link href="/">
{/* eslint-disable-next-line @next/next/no-img-element */}
@@ -52,6 +53,8 @@ export default async function Layout({
<main className="mb-6">{children}</main>
+ <footer> <span className="flex flex-row-reverse"><a href="https://github.com/likeandscribe/frontpage/" className="text-blue-600"><img src="https://raw.githubusercontent.com/likeandscribe/frontpage/refs/heads/main/packages/frontpage/public/frontpage-logo.svg" alt="Frontpage | MIT License | https://github.com/likeandscribe/frontpage/blob/main/LICENSE" className="h-10" /></a></span> <span className="flex justify-center items-center text-gray-500 dark:text-gray-400"> <a href={`https://bsky.app/profile/${FRONTPAGE_ATPROTO_HANDLE}`} className="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300" > @syui.ai </a> </span> </footer>
+ {/*
<footer className="flex justify-between items-center text-gray-500 dark:text-gray-400">
<p>
Made by{" "}
@@ -59,10 +62,11 @@ export default async function Layout({
href={`https://bsky.app/profile/${FRONTPAGE_ATPROTO_HANDLE}`}
className="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300"
>
- @frontpage.fyi <OpenInNewWindowIcon className="inline" />
+ @o.syui.ai <OpenInNewWindowIcon className="inline" />
</a>
</p>
</footer>
+ */}
</div>
);
}
@@ -141,8 +145,8 @@ async function LoginOrLogout() {
}
return (
- <Button variant="outline" asChild>
- <Link href="/login">Login</Link>
+ <Button asChild>
+ <Link href="/login">@</Link>
</Button>
);
}
diff --git a/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/_lib/comment-client.tsx b/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/_lib/comment-client.tsx
index 71dd664..46ab83a 100644
--- a/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/_lib/comment-client.tsx
+++ b/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/_lib/comment-client.tsx
@@ -283,16 +283,16 @@ export function NewComment({
ref={textAreaRef}
placeholder="Write a comment..."
disabled={isPending}
- className="resize-y flex-1"
+ className=""
/>
<div className="w-full flex justify-between">
<InputLengthIndicator
length={input.length}
maxLength={MAX_COMMENT_LENGTH}
/>
- <div className="flex gap-2">
+ <div className="w-full">
{extraButton}
- <Button type="submit" disabled={isPending}>
+ <Button type="submit" disabled={isPending} className="w-full">
{isPending ? <Spinner /> : "Post"}
</Button>
</div>
diff --git a/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/layout.tsx b/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/layout.tsx
index 517c871..ef73ecb 100644
--- a/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/layout.tsx
+++ b/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/layout.tsx
@@ -29,7 +29,7 @@ export default async function Post(props: {
}
return (
- <main className="mx-auto max-w-4xl space-y-6">
+ <main className="mx-auto space-y-1">
<PostCard
author={post.authorDid}
createdAt={post.createdAt}
diff --git a/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/page.tsx b/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/page.tsx
index a83f810..11003f9 100644
--- a/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/page.tsx
+++ b/packages/frontpage/app/(app)/post/[postAuthor]/[postRkey]/page.tsx
@@ -20,7 +20,7 @@ export async function generateMetadata(props: {
title: post.title,
description: "Discuss this post on Frontpage.",
alternates: {
- canonical: `https://frontpage.fyi${path}`,
+ canonical: `https://o.syui.ai${path}`,
},
openGraph: {
title: post.title,
@@ -28,7 +28,7 @@ export async function generateMetadata(props: {
type: "article",
publishedTime: post.createdAt.toISOString(),
authors: [`@${handle}`],
- url: `https://frontpage.fyi${path}`,
+ url: `https://o.syui.ai${path}`,
images: [
{
url: `${path}/og-image`,
@@ -45,6 +45,8 @@ export default async function Post(props: { params: Promise<PostPageParams> }) {
return (
<>
+
+ {/*
<LinkAlternateAtUri
authority={authorDid}
collection={PostCollection}
@@ -65,6 +67,71 @@ export default async function Post(props: { params: Promise<PostPageParams> }) {
/>
))}
</div>
+ */}
+
+ {params.postAuthor === "syui.ai" && (post.title.includes("live") || post.title.includes("video")) && (
+ <div className="flex py-10 max-h-[720px] md:h-screen space-x-8">
+ <iframe className="w-full h-[300px] sm:h-[450px] md:h-[630px]
+ [&::-webkit-scrollbar]:w-2
+ [&::-webkit-scrollbar-track]:bg-gray-100
+ [&::-webkit-scrollbar-thumb]:bg-gray-300
+ dark:[&::-webkit-scrollbar-track]:bg-neutral-700
+ dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500"
+ title="stream" src={post.url}>
+ </iframe>
+ <div className="hidden w-64 hidden-scrollbar md:block md:overflow-y-scroll
+ max-h-[600px]
+ [&::-webkit-scrollbar]:w-2
+ [&::-webkit-scrollbar-track]:bg-gray-100
+ [&::-webkit-scrollbar-thumb]:bg-gray-300
+ dark:[&::-webkit-scrollbar-track]:bg-neutral-700
+ dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500">
+ <LinkAlternateAtUri
+ authority={authorDid}
+ collection={PostCollection}
+ rkey={post.rkey}
+ />
+ <NewComment postRkey={post.rkey} postAuthorDid={authorDid} />
+ {comments.map((comment) => (
+ <Comment
+ key={comment.id}
+ comment={comment}
+ level={0}
+ postAuthorParam={params.postAuthor}
+ postRkey={post.rkey}
+ />
+ ))}
+ </div>
+ </div>
+ )}
+ <LinkAlternateAtUri
+ authority={authorDid}
+ collection={PostCollection}
+ rkey={post.rkey}
+ />
+ {post.status === "live" ? (
+ <NewComment postRkey={post.rkey} postAuthorDid={authorDid} />
+ ) : (
+ <Alert>
+ <AlertTitle>This post has been deleted</AlertTitle>
+ <AlertDescription>
+ Deleted posts cannot receive new comments.
+ </AlertDescription>
+ </Alert>
+ )}
+ <div className="flex flex-col gap-6 bg-white">
+ {comments.map((comment) => (
+ <Comment
+ key={comment.id}
+ comment={comment}
+ level={0}
+ postAuthorParam={params.postAuthor}
+ postRkey={post.rkey}
+ />
+ ))}
+
+ </div>
+
</>
);
}
diff --git a/packages/frontpage/app/(auth)/login/page.tsx b/packages/frontpage/app/(auth)/login/page.tsx
index e3165f9..4d661ce 100644
--- a/packages/frontpage/app/(auth)/login/page.tsx
+++ b/packages/frontpage/app/(auth)/login/page.tsx
@@ -14,17 +14,15 @@ export default async function LoginPage() {
<div className="w-full max-w-md space-y-6">
<div className="text-center">
<h2 className="text-3xl font-bold tracking-tight text-gray-900 dark:text-gray-100">
- Sign in to Frontpage
+ Login with <span className="text-blue-600">at</span>proto
</h2>
<p className="mt-2 text-sm text-gray-600 dark:text-gray-400">
- Don&apos;t have an account?{" "}
<a
href="https://bsky.app/"
className="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300"
>
- Sign up on Bluesky
- </a>
- , then return here to login.
+ Bluesky
+ </a> oauth login
</p>
</div>
<LoginForm />
diff --git a/packages/frontpage/app/globals.css b/packages/frontpage/app/globals.css
index 9abc86b..464377c 100644
--- a/packages/frontpage/app/globals.css
+++ b/packages/frontpage/app/globals.css
@@ -13,8 +13,12 @@
--popover: 0 0% 100%;
--popover-foreground: 222.2 84% 4.9%;
+ /*
--primary: 222.2 47.4% 11.2%;
- --primary-foreground: 210 40% 98%;
+ --primary-foreground: 210 40% 98%; */
+
+ --primary: 210 100% 50%; /* HSLカラーで青色を定義 */
+ --primary-foreground: 0 0% 100%; /* 白色のテキスト */
--secondary: 210 40% 96.1%;
--secondary-foreground: 222.2 47.4% 11.2%;
@@ -67,8 +71,12 @@
--popover: 222.2 84% 4.9%;
--popover-foreground: 210 40% 98%;
- --primary: 210 40% 98%;
- --primary-foreground: 222.2 47.4% 11.2%;
+ /*--primary: 210 40% 98%;
+ *--primary-foreground: 222.2 47.4% 11.2%;*/
+
+ /* ダークモード用に少し明るい青 */
+ --primary: 210 100% 60%;
+ --primary-foreground: 0 0% 100%;
--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;
@@ -89,3 +97,7 @@
--input: 217.2 32.6% 17.5%;
--ring: 215.4 16.3% 46.9%;
}
diff --git a/packages/frontpage/app/layout.tsx b/packages/frontpage/app/layout.tsx
index e8b5a39..a9fa945 100644
--- a/packages/frontpage/app/layout.tsx
+++ b/packages/frontpage/app/layout.tsx
@@ -22,13 +22,13 @@ const sourceSans = Source_Sans_3({
});
export const metadata: Metadata = {
- title: "Frontpage",
+ title: "o.syui.ai",
description: "A federated link aggregator. Your frontpage to the internet.",
openGraph: {
title: "Frontpage",
description: "Your frontpage to the internet.",
type: "website",
- siteName: "frontpage.fyi",
+ siteName: "o.syui.ai",
},
};
@@ -53,11 +53,7 @@ export default function Layout({ children }: { children: React.ReactNode }) {
<SpeedInsights />
<Analytics />
</ThemeProvider>
- <script
- defer
- src="https://static.cloudflareinsights.com/beacon.min.js"
- data-cf-beacon='{"token": "5e64b32c70b34b1583d863032b03d9ad"}'
- />
+ {/* <script defer src="https://static.cloudflareinsights.com/beacon.min.js" data-cf-beacon='{"token": "5e64b32c70b34b1583d863032b03d9ad"}' /> */}
</body>
</html>
);
diff --git a/packages/frontpage/app/(app)/_components/post-card.tsx b/packages/frontpage/app/(app)/_components/post-card.tsx
index c0720e5..e619a5f 100644
--- a/packages/frontpage/app/(app)/_components/post-card.tsx
+++ b/packages/frontpage/app/(app)/_components/post-card.tsx
@@ -83,7 +83,7 @@ export async function PostCard({
votes={votes}
/>
</div>
- <div className="w-full">
+ <div className="w-full overflow-hidden">
<h2 className="mb-1 text-xl">
<a
href={url}