···11+import { useState } from "react";
22+13import { userStore } from "@/common/user";
24import { User } from "@/common/user";
33-import { ApiError, ApiV1UsersMeGetResponse, ApiV1UsersGetResponse } from "@/typings";
55+import { ApiError,ApiV1UsersMeGetResponse } from "@/typings";
46import cn from "@/utils/cn";
57import { deepMerge } from "@/utils/deepMerge";
66-import { useState } from "react";
7889export default function LeaderboardStyle() {
910 const user = userStore((s) => s);
···9899 <div key={i} className="flex gap-2">
99100 <div
100101 className={cn(
101101- `duration-200 h-4 w-4 aspect-square rounded-full`,
102102+ "duration-200 h-4 w-4 aspect-square rounded-full",
102103 !user?.extended?.rank?.useLeaderboardList
103104 ? "dark:bg-neutral-700/90 dark:group-hover:bg-neutral-400/60 bg-neutral-300/90 group-hover:bg-neutral-600/60"
104105 : "dark:bg-violet-400/50 dark:group-hover:bg-violet-400/70 bg-violet-600/50 group-hover:bg-violet-600/70"
+4-2
app/user/[userId]/layout.tsx
···11-import ImageReduceMotion from "@/components/image-reduce-motion";
21import { Image } from "@nextui-org/react";
33-import { getUser } from "./api";
22+33+import ImageReduceMotion from "@/components/image-reduce-motion";
44import paintPic from "@/public/paint.webp";
55+66+import { getUser } from "./api";
57import Side from "./side.component";
6879interface Props {
+2-2
app/user/[userId]/page.tsx
···77export const revalidate = 60 * 60;
8899export default async function Home({
1010- params,
1010+ params
1111}: Props) {
1212 const user = await getUser(params.userId);
1313···1515 <>
1616 <i>User has no bio yet</i>
1717 </>
1818- )
1818+ );
1919}
+5-4
app/user/[userId]/side.component.tsx
···11"use client";
2233-import { ClientCountUp } from "@/components/counter";
44-import { ApiV1UsersGetResponse, RouteErrorResponse } from "@/typings";
53import { Accordion, AccordionItem, Skeleton } from "@nextui-org/react";
64import { useCookies } from "next-client-cookies";
75import { HiAnnotation, HiLink, HiVolumeUp } from "react-icons/hi";
66+77+import { ClientCountUp } from "@/components/counter";
88+import { ApiV1UsersGetResponse, RouteErrorResponse } from "@/typings";
89910export default function Side({
1011 user
···6263 }
6364 </div>
6465 </div>
6565- )
6666+ );
6667 }
67686869 return (
···8687 </AccordionItem>
8788 </Accordion>
8889 </div>
8989- )
9090+ );
9091}
···3737 const response = await res?.json()
3838 .catch(() => null);
39394040- onError((response as unknown as RouteErrorResponse | null)?.message || "unknown server error")
4040+ onError((response as unknown as RouteErrorResponse | null)?.message || "unknown server error");
4141}
+2-2
components/inputs/slider-input.tsx
···22import { useState } from "react";
33import { TailSpin } from "react-loading-icons";
4455-import { RouteErrorResponse } from "@/typings";
65import cn from "@/utils/cn";
66+77import { request } from "./request";
8899enum State {
···43434444 url,
4545 dataName,
4646- defaultState,
4646+ defaultState
4747}: Props) {
4848 const [state, setState] = useState<State>(State.Idle);
4949 const [error, setError] = useState<string | null>(null);
+2-1
components/link-tag.tsx
···11-import cn from "@/utils/cn";
21import Link from "next/link";
32import { HiExternalLink } from "react-icons/hi";
33+44+import cn from "@/utils/cn";
4556export default function LinkTag({
67 href,