diff --git a/apps/ssr/client/components/items/grid.tsx b/apps/ssr/client/components/items/grid.tsx index 70b145b4e..8d6c73ec6 100644 --- a/apps/ssr/client/components/items/grid.tsx +++ b/apps/ssr/client/components/items/grid.tsx @@ -1,11 +1,9 @@ import type { EntriesPreview } from "@client/query/entries" import type { Feed } from "@client/query/feed" import { TitleMarquee } from "@follow/components/ui/marquee/index.jsx" -import { cn } from "@follow/utils/utils" import dayjs from "dayjs" import type { FC } from "react" -import { TeleportalTakeOff } from "../layout/main/teleportal" import { FeedIcon } from "../ui/feed-icon" import { LazyImage } from "../ui/image" @@ -14,41 +12,22 @@ export const GridList: FC<{ feed?: Feed }> = ({ entries, feed }) => { return ( - -
- {entries.map((entry) => ( - -
- -
- -
- ))} -
-
- ) -} - -const Wrapper: FC<{ - children: React.ReactNode - href: string - wrapperClassName?: string -}> = ({ children, href, wrapperClassName }) => { - return ( - - {children} - +
+ {entries.map((entry) => ( +
+
+ +
+ +
+ ))} +
) } diff --git a/apps/ssr/client/components/items/index.tsx b/apps/ssr/client/components/items/index.tsx index 6aa52d241..fb7cf9d0b 100644 --- a/apps/ssr/client/components/items/index.tsx +++ b/apps/ssr/client/components/items/index.tsx @@ -50,7 +50,7 @@ const NormalList: FC<{ return ( <> {entries?.map((entry) => ( - +
- +
))} ) diff --git a/apps/ssr/client/components/items/normal.tsx b/apps/ssr/client/components/items/normal.tsx index 3991e6c41..811f83e07 100644 --- a/apps/ssr/client/components/items/normal.tsx +++ b/apps/ssr/client/components/items/normal.tsx @@ -23,57 +23,42 @@ function NormalListItemImpl({ const displayTime = entry.entries.publishedAt return ( - + -
-
+
+
{feed?.title} ยท {!!displayTime && }
-
+
{entry.entries.title} - - {/* {!!entry.collections && } */}
{withDetails && (
-
+
{entry.entries.description}
- - {entry.entries.media?.[0] && ( -
- -
- )}
)}
+ {entry.entries.media?.[0] && ( +
+ +
+ )} ) } diff --git a/apps/ssr/client/components/items/picture.tsx b/apps/ssr/client/components/items/picture.tsx index 231c082c2..3a470ee60 100644 --- a/apps/ssr/client/components/items/picture.tsx +++ b/apps/ssr/client/components/items/picture.tsx @@ -1,4 +1,3 @@ -import { TeleportalTakeOff } from "@client/components/layout/main/teleportal" import { LazyImage } from "@client/components/ui/image" import { getPreferredTitle } from "@client/lib/helper" import type { EntriesPreview } from "@client/query/entries" @@ -75,7 +74,7 @@ const breakpoints = { // 48rem => 48 * 16= 768 768: 3, // 72rem => 72 * 16= 1152 - 1152: 4, + 976: 4, // 80rem => 80 * 16= 1280 1280: 5, 1536: 6, @@ -173,33 +172,31 @@ export const PictureList: FC<{ return ( - -
- {inlineStyle} -
- {isInitLayout && ( - - {/* eslint-disable-next-line @eslint-react/no-context-provider */} - - -
- -
-
-
-
- )} -
+
+ {inlineStyle} +
+ {isInitLayout && ( + + {/* eslint-disable-next-line @eslint-react/no-context-provider */} + + +
+ +
+
+
+
+ )}
- +
) } @@ -226,7 +223,7 @@ const render: React.ComponentType< ratio={data.height && data.width ? data.height / data.width : undefined} >
setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} > diff --git a/apps/ssr/client/components/layout/main/teleportal.tsx b/apps/ssr/client/components/layout/main/teleportal.tsx deleted file mode 100644 index 3e12994b8..000000000 --- a/apps/ssr/client/components/layout/main/teleportal.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { atom, useAtomValue, useSetAtom } from "jotai" -import type { FC, PropsWithChildren } from "react" -import { createPortal } from "react-dom" - -const portalAtoms = atom(null as HTMLElement | null) -export const TeleportalDestination = () => { - const setPortal = useSetAtom(portalAtoms) - - return
-} - -export const TeleportalTakeOff: FC = ({ children }) => { - const portal = useAtomValue(portalAtoms) - - if (!portal) return null - - return createPortal(children, portal) -} diff --git a/apps/ssr/client/components/ui/image.tsx b/apps/ssr/client/components/ui/image.tsx index 8f52f02c2..a4e594b8c 100644 --- a/apps/ssr/client/components/ui/image.tsx +++ b/apps/ssr/client/components/ui/image.tsx @@ -49,7 +49,7 @@ export const LazyImage = ({ src={nextSrc} height={height} width={width} - className={cn("size-full", className)} + className={cn("size-full object-cover", className)} onClick={onClick} tabIndex={1} /> diff --git a/apps/ssr/client/pages/(main)/share/feeds/[id]/index.tsx b/apps/ssr/client/pages/(main)/share/feeds/[id]/index.tsx index ebb117354..7b6da99c9 100644 --- a/apps/ssr/client/pages/(main)/share/feeds/[id]/index.tsx +++ b/apps/ssr/client/pages/(main)/share/feeds/[id]/index.tsx @@ -100,7 +100,7 @@ export function Component() {
-
+
{entries.isLoading && !entries.data ? ( ) : ( diff --git a/apps/ssr/client/pages/(main)/share/layout.tsx b/apps/ssr/client/pages/(main)/share/layout.tsx index 6b4d31a1c..71fcc0bf7 100644 --- a/apps/ssr/client/pages/(main)/share/layout.tsx +++ b/apps/ssr/client/pages/(main)/share/layout.tsx @@ -1,5 +1,4 @@ import { Header } from "@client/components/layout/header" -import { TeleportalDestination } from "@client/components/layout/main/teleportal" import { MemoedDangerousHTMLStyle } from "@follow/components/common/MemoedDangerousHTMLStyle.jsx" import { PoweredByFooter } from "@follow/components/common/PoweredByFooter.jsx" import { Outlet } from "react-router" @@ -16,7 +15,6 @@ export const Component = () => {
-
) diff --git a/packages/internal/components/src/ui/effect/MagneticHoverEffect.tsx b/packages/internal/components/src/ui/effect/MagneticHoverEffect.tsx index 23abccbe2..33514d189 100644 --- a/packages/internal/components/src/ui/effect/MagneticHoverEffect.tsx +++ b/packages/internal/components/src/ui/effect/MagneticHoverEffect.tsx @@ -1,6 +1,6 @@ import { cn } from "@follow/utils/utils" import * as React from "react" -import { useCallback, useImperativeHandle, useRef } from "react" +import { useImperativeHandle, useRef } from "react" type MagneticHoverEffectProps = { as?: T @@ -22,47 +22,13 @@ export const MagneticHoverEffect = ({ return itemRef.current as unknown as T }) - const handleMouseEnter = (e: React.MouseEvent) => { - if (!itemRef.current) return - const rect = itemRef.current.getBoundingClientRect() - - const x = ((e.clientX - rect.left) / rect.width) * 100 - const y = ((e.clientY - rect.top) / rect.height) * 100 - - itemRef.current.style.transition = "transform 0.2s cubic-bezier(0.33, 1, 0.68, 1)" - itemRef.current.style.setProperty("--origin-x", `${x}%`) - itemRef.current.style.setProperty("--origin-y", `${y}%`) - } - - const handleMouseLeave = () => { - if (!itemRef.current) return - itemRef.current.style.transform = "translate(0px, 0px)" - itemRef.current.style.transition = "transform 0.4s cubic-bezier(0.33, 1, 0.68, 1)" - } - - const handleMouseMove = useCallback((e: React.MouseEvent) => { - if (!itemRef.current) return - const rect = itemRef.current.getBoundingClientRect() - - const centerX = rect.left + rect.width / 2 - const centerY = rect.top + rect.height / 2 - - const distanceX = (e.clientX - centerX) * 0.05 - const distanceY = (e.clientY - centerY) * 0.05 - - itemRef.current.style.transform = `translate(${distanceX}px, ${distanceY}px)` - }, []) - return (