feat: icon transition

This commit is contained in:
2026-07-24 14:33:41 +07:00 Unverified
parent ff09642d35
commit 21ad482d32
5 changed files with 55 additions and 43 deletions
+13 -11
View File
@@ -9,7 +9,7 @@ import {
import type { Metadata } from "next"; import type { Metadata } from "next";
import { cookies } from "next/headers"; import { cookies } from "next/headers";
import Link from "next/link"; import Link from "next/link";
import { Suspense } from "react"; import { Suspense, ViewTransition } from "react";
import banner from "#/logos/artifact.webp"; import banner from "#/logos/artifact.webp";
import { Blocker } from "@/components/blocker"; import { Blocker } from "@/components/blocker";
import { ComboBox } from "@/components/combobox"; import { ComboBox } from "@/components/combobox";
@@ -138,16 +138,18 @@ export default async function ArtifactFormPage({
<CardTitle> <CardTitle>
<div className="w-[276.5px]"> <div className="w-[276.5px]">
<Link href="/"> <Link href="/">
<Image <ViewTransition name="branch-/artifact">
style={{ <Image
transform: "translateY(-70%)", style={{
}} transform: "translateY(-70%)",
className="absolute z-50" }}
height={137.5} className="absolute z-50"
width={276.5} height={137.5}
src={banner} width={276.5}
alt="เสือกไอดีชาวบ้าน" src={banner}
/> alt="เสือกไอดีชาวบ้าน"
/>
</ViewTransition>
</Link> </Link>
</div> </div>
</CardTitle> </CardTitle>
+8 -5
View File
@@ -37,6 +37,7 @@ import {
} from "../rubgram/admin/@modal/manual/client"; } from "../rubgram/admin/@modal/manual/client";
import { DownloadButton } from "../rubgram/client"; import { DownloadButton } from "../rubgram/client";
import Link from "next/link"; import Link from "next/link";
import { ViewTransition } from "react";
const { TMN_DEST_PHONE_NUM, SASTIFY_API_PRIVKEY } = process.env as Record< const { TMN_DEST_PHONE_NUM, SASTIFY_API_PRIVKEY } = process.env as Record<
string, string,
@@ -273,11 +274,13 @@ export default async function () {
{/* oxlint-disable-next-line tailwindcss/enforce-canonical */} {/* oxlint-disable-next-line tailwindcss/enforce-canonical */}
<div className="relative aspect-[304.5/30] w-full"> <div className="relative aspect-[304.5/30] w-full">
<Link href="/"> <Link href="/">
<Image <ViewTransition name="branch-/donate">
src={DonateLogo} <Image
alt="Donate Logo" src={DonateLogo}
className="absolute left-1/2 w-3/4 -translate-x-1/2 -translate-y-2/3" alt="Donate Logo"
/> className="absolute left-1/2 w-3/4 -translate-x-1/2 -translate-y-2/3"
/>
</ViewTransition>
</Link> </Link>
</div> </div>
<FormProvider id="tip" inDialog={false} onSubmit={submit}> <FormProvider id="tip" inDialog={false} onSubmit={submit}>
+10 -8
View File
@@ -1,6 +1,6 @@
import type { StaticImport } from "next/dist/shared/lib/get-img-props"; import type { StaticImport } from "next/dist/shared/lib/get-img-props";
import Link from "next/link"; import Link from "next/link";
import type { ReactNode } from "react"; import { ViewTransition, type ReactNode } from "react";
import Banner from "#/banner_t.webp"; import Banner from "#/banner_t.webp";
import ArtifactLogo from "#/logos/artifact.webp"; import ArtifactLogo from "#/logos/artifact.webp";
import DonateLogo from "#/logos/donate.webp"; import DonateLogo from "#/logos/donate.webp";
@@ -159,13 +159,15 @@ function HomeLink({
className, className,
)} )}
> >
<Image <ViewTransition name={`branch-${href}`}>
src={logo} <Image
alt={name} src={logo}
className="h-24 w-48 object-contain transition-transform duration-100 hover:scale-110 sm:h-40 sm:w-50" alt={name}
width={200} className="h-24 w-48 object-contain transition-transform duration-100 hover:scale-110 sm:h-40 sm:w-50"
height={200} width={200}
/> height={200}
/>
</ViewTransition>
<span className="visible block text-lg md:hidden md:text-xs"> <span className="visible block text-lg md:hidden md:text-xs">
{name} {name}
</span> </span>
+13 -11
View File
@@ -10,7 +10,7 @@ import {
import type { Metadata } from "next"; import type { Metadata } from "next";
import { cookies } from "next/headers"; import { cookies } from "next/headers";
import Link from "next/link"; import Link from "next/link";
import { Suspense } from "react"; import { Suspense, ViewTransition } from "react";
import PromptpayImage from "#/assets/promptpay.jpg"; import PromptpayImage from "#/assets/promptpay.jpg";
import banner from "#/logos/rubgram.webp"; import banner from "#/logos/rubgram.webp";
import { Blocker } from "@/components/blocker"; import { Blocker } from "@/components/blocker";
@@ -181,16 +181,18 @@ export default async function EndgamePage({
<CardTitle> <CardTitle>
<div className="w-[276.5px]"> <div className="w-[276.5px]">
<Link href="/"> <Link href="/">
<Image <ViewTransition name="branch-/rubgram">
style={{ <Image
transform: "translateY(-70%)", style={{
}} transform: "translateY(-70%)",
className="absolute z-50" }}
height={137.5} className="absolute z-50"
width={276.5} height={137.5}
src={banner} width={276.5}
alt="รับกรรมแทนทางบ้าน" src={banner}
/> alt="รับกรรมแทนทางบ้าน"
/>
</ViewTransition>
</Link> </Link>
</div> </div>
</CardTitle> </CardTitle>
+11 -8
View File
@@ -9,6 +9,7 @@ import { SimpleTooltip } from "@/components/tooltip";
import { ScrollBar } from "@/components/ui/scroll-area"; import { ScrollBar } from "@/components/ui/scroll-area";
import { db } from "@/lib/db"; import { db } from "@/lib/db";
import { tierlistTypes, tierlistVersions } from "@/lib/db/schema"; import { tierlistTypes, tierlistVersions } from "@/lib/db/schema";
import { ViewTransition } from "react";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "จัดเทียร์ลิสต์", title: "จัดเทียร์ลิสต์",
@@ -47,14 +48,16 @@ export default async function TierlistSelectionPage() {
<div className="mx-2 flex min-h-full max-w-full flex-col justify-center gap-2"> <div className="mx-2 flex min-h-full max-w-full flex-col justify-center gap-2">
<center className="mb-2"> <center className="mb-2">
<Link href="/"> <Link href="/">
<Image <ViewTransition name="branch-/tl">
src={TierlistLogo} <Image
alt="Tierlist" src={TierlistLogo}
className="w-1/2 sm:w-96" alt="Tierlist"
width={200} className="w-1/2 sm:w-96"
height={100} width={200}
fetchPriority="high" height={100}
/> fetchPriority="high"
/>
</ViewTransition>
</Link> </Link>
</center> </center>
{vers.map((t) => ( {vers.map((t) => (