chore: update dependencies and improve type safety
- Updated various package dependencies across the project, including @sentry/react, @tanstack/react-query, and others to their latest versions for improved performance and security. - Enhanced type safety in several components by refining type definitions, particularly in motion-related imports. - Adjusted transition configurations to utilize new presets for smoother animations. Signed-off-by: Innei <tukon479@gmail.com>
This commit is contained in:
parent
9f0e7522d9
commit
6d76d6b558
|
|
@ -27,20 +27,20 @@
|
|||
"@follow/shared": "workspace:*",
|
||||
"@follow/utils": "workspace:*",
|
||||
"@openpanel/web": "1.0.1",
|
||||
"@sentry/electron": "6.6.0",
|
||||
"@sentry/electron": "6.8.0",
|
||||
"builder-util-runtime": "9.3.1",
|
||||
"cookie-es": "2.0.0",
|
||||
"electron-context-menu": "4.0.5",
|
||||
"electron-log": "5.4.0",
|
||||
"electron-log": "5.4.1",
|
||||
"electron-squirrel-startup": "1.0.1",
|
||||
"electron-store": "10.0.1",
|
||||
"electron-store": "10.1.0",
|
||||
"electron-updater": "6.6.2",
|
||||
"es-toolkit": "1.38.0",
|
||||
"es-toolkit": "1.39.3",
|
||||
"fast-folder-size": "2.4.0",
|
||||
"font-list": "1.5.1",
|
||||
"i18next": "25.2.1",
|
||||
"js-yaml": "4.1.0",
|
||||
"linkedom": "0.18.10",
|
||||
"linkedom": "0.18.11",
|
||||
"lowdb": "7.0.1",
|
||||
"msedge-tts": "2.0.0",
|
||||
"node-machine-id": "1.1.12",
|
||||
|
|
@ -53,10 +53,10 @@
|
|||
"@follow/models": "workspace:*",
|
||||
"@follow/types": "workspace:*",
|
||||
"@types/js-yaml": "4.0.9",
|
||||
"@types/node": "22.15.23",
|
||||
"@types/node": "24.0.3",
|
||||
"electron": "35.1.5",
|
||||
"electron-devtools-installer": "4.0.0",
|
||||
"hono": "4.7.10",
|
||||
"hono": "4.8.1",
|
||||
"typescript": "catalog:"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@
|
|||
"@follow/tracker": "workspace:*",
|
||||
"@fontsource/sn-pro": "5.2.5",
|
||||
"@headlessui/react": "2.2.4",
|
||||
"@hookform/resolvers": "4.1.3",
|
||||
"@lottiefiles/dotlottie-react": "0.13.5",
|
||||
"@hookform/resolvers": "5.1.1",
|
||||
"@lottiefiles/dotlottie-react": "0.14.1",
|
||||
"@openpanel/web": "1.0.1",
|
||||
"@radix-ui/react-avatar": "1.1.10",
|
||||
"@radix-ui/react-context-menu": "2.2.15",
|
||||
|
|
@ -34,13 +34,13 @@
|
|||
"@radix-ui/react-popover": "1.1.14",
|
||||
"@radix-ui/react-slider": "1.3.5",
|
||||
"@radix-ui/react-slot": "1.2.3",
|
||||
"@sentry/react": "9.22.0",
|
||||
"@shikijs/transformers": "3.4.2",
|
||||
"@tanstack/query-sync-storage-persister": "5.77.2",
|
||||
"@tanstack/react-query": "5.77.2",
|
||||
"@tanstack/react-query-devtools": "5.77.2",
|
||||
"@tanstack/react-query-persist-client": "5.77.2",
|
||||
"@tanstack/react-virtual": "3.13.9",
|
||||
"@sentry/react": "9.30.0",
|
||||
"@shikijs/transformers": "3.7.0",
|
||||
"@tanstack/query-sync-storage-persister": "5.80.10",
|
||||
"@tanstack/react-query": "5.80.10",
|
||||
"@tanstack/react-query-devtools": "5.80.10",
|
||||
"@tanstack/react-query-persist-client": "5.80.10",
|
||||
"@tanstack/react-virtual": "3.13.10",
|
||||
"@use-gesture/react": "10.3.1",
|
||||
"@welldone-software/why-did-you-render": "10.0.1",
|
||||
"@yornaath/batshit": "0.10.1",
|
||||
|
|
@ -51,15 +51,15 @@
|
|||
"dnum": "2.15.0",
|
||||
"embla-carousel-react": "8.6.0",
|
||||
"embla-carousel-wheel-gestures": "8.0.2",
|
||||
"es-toolkit": "1.38.0",
|
||||
"firebase": "11.8.1",
|
||||
"foxact": "0.2.45",
|
||||
"es-toolkit": "1.39.3",
|
||||
"firebase": "11.9.1",
|
||||
"foxact": "0.2.49",
|
||||
"franc-min": "6.2.0",
|
||||
"fuse.js": "7.1.0",
|
||||
"hast-util-to-jsx-runtime": "2.3.6",
|
||||
"hast-util-to-mdast": "10.1.2",
|
||||
"i18next": "25.2.1",
|
||||
"i18next-browser-languagedetector": "8.1.0",
|
||||
"i18next-browser-languagedetector": "8.2.0",
|
||||
"idb-keyval": "6.2.2",
|
||||
"immer": "10.1.1",
|
||||
"jotai": "2.12.5",
|
||||
|
|
@ -67,34 +67,34 @@
|
|||
"masonic": "4.1.0",
|
||||
"mdast-util-gfm-table": "2.0.0",
|
||||
"mdast-util-to-markdown": "2.1.2",
|
||||
"motion": "12.15.0",
|
||||
"motion": "12.18.1",
|
||||
"nanoid": "5.1.5",
|
||||
"ofetch": "1.4.1",
|
||||
"plain-shiki": "0.2.0",
|
||||
"plain-shiki": "0.3.0",
|
||||
"re-resizable": "6.11.2",
|
||||
"react-blurhash": "0.3.0",
|
||||
"react-fast-marquee": "1.6.5",
|
||||
"react-hook-form": "7.56.4",
|
||||
"react-hook-form": "7.58.1",
|
||||
"react-hotkeys-hook": "5.1.0",
|
||||
"react-i18next": "15.5.2",
|
||||
"react-i18next": "15.5.3",
|
||||
"react-intersection-observer": "9.16.0",
|
||||
"react-ios-pwa-prompt": "2.0.6",
|
||||
"react-qr-code": "2.0.15",
|
||||
"react-qr-code": "2.0.16",
|
||||
"react-resizable-layout": "npm:@innei/react-resizable-layout@0.7.3-fork.1",
|
||||
"react-router": "7.6.1",
|
||||
"react-router": "7.6.2",
|
||||
"react-selecto": "1.26.3",
|
||||
"react-shadow": "20.6.0",
|
||||
"react-zoom-pan-pinch": "3.7.0",
|
||||
"shiki": "3.4.2",
|
||||
"sonner": "2.0.3",
|
||||
"shiki": "3.7.0",
|
||||
"sonner": "2.0.5",
|
||||
"tinykeys": "3.0.0",
|
||||
"title-case": "4.3.2",
|
||||
"tldts": "7.0.7",
|
||||
"tldts": "7.0.9",
|
||||
"ufo": "1.6.1",
|
||||
"use-context-selector": "2.0.0",
|
||||
"use-sync-external-store": "1.5.0",
|
||||
"usehooks-ts": "3.1.1",
|
||||
"zod": "3.25.32",
|
||||
"zod": "3.25.67",
|
||||
"zustand": "5.0.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
@ -106,10 +106,10 @@
|
|||
"@follow/models": "workspace:*",
|
||||
"@follow/types": "workspace:*",
|
||||
"@follow/utils": "workspace:*",
|
||||
"@types/node": "22.15.23",
|
||||
"@types/node": "24.0.3",
|
||||
"@vite-pwa/assets-generator": "1.0.0",
|
||||
"fake-indexeddb": "6.0.1",
|
||||
"happy-dom": "17.5.6",
|
||||
"happy-dom": "18.0.1",
|
||||
"react-scan": "0.3.4",
|
||||
"typescript": "catalog:"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import { Spring } from "@follow/components/constants/spring.js"
|
||||
import type { MotionProps, Target } from "motion/react"
|
||||
import type { MotionProps, TargetAndTransition } from "motion/react"
|
||||
|
||||
const enterStyle: Target = {
|
||||
const enterStyle: TargetAndTransition = {
|
||||
scale: 1,
|
||||
opacity: 1,
|
||||
}
|
||||
const initialStyle: Target = {
|
||||
const initialStyle: TargetAndTransition = {
|
||||
scale: 0.96,
|
||||
opacity: 0,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import { Spring } from "@follow/components/constants/spring.js"
|
||||
import { nextFrame, stopPropagation } from "@follow/utils/dom"
|
||||
import { cn } from "@follow/utils/utils"
|
||||
import { m, useAnimationControls } from "motion/react"
|
||||
|
|
@ -85,12 +86,7 @@ export const DrawerModalLayout: FC<PropsWithChildren> = ({ children }) => {
|
|||
initial="initial"
|
||||
animate={controller}
|
||||
variants={modalVariant}
|
||||
transition={{
|
||||
type: "spring",
|
||||
mass: 0.4,
|
||||
tension: 100,
|
||||
friction: 1,
|
||||
}}
|
||||
transition={Spring.presets.snappy}
|
||||
onAnimationComplete={(definition) => {
|
||||
if (definition === "exit") {
|
||||
dismiss()
|
||||
|
|
@ -117,12 +113,7 @@ export const ScaleModal: ModalTemplateType = (props) => {
|
|||
<div className={"center container h-full"} onPointerDown={dismiss} onClick={stopPropagation}>
|
||||
<m.div
|
||||
onPointerDown={stopPropagation}
|
||||
transition={{
|
||||
type: "spring",
|
||||
mass: 0.4,
|
||||
tension: 100,
|
||||
friction: 1,
|
||||
}}
|
||||
transition={Spring.presets.snappy}
|
||||
initial={{ transform: "scale(0)", opacity: 0 }}
|
||||
animate={{ transform: "scale(1)", opacity: 1 }}
|
||||
exit={{ transform: "scale(0.6)", opacity: 0 }}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
import { Spring } from "@follow/components/constants/spring.js"
|
||||
import { cn } from "@follow/utils/utils"
|
||||
import type { Target, Transition } from "motion/react"
|
||||
import type { TargetAndTransition, Transition } from "motion/react"
|
||||
import { AnimatePresence, m } from "motion/react"
|
||||
import * as React from "react"
|
||||
import { cloneElement, useEffect, useState } from "react"
|
||||
|
||||
type TransitionType = {
|
||||
initial: Target | boolean
|
||||
animate: Target
|
||||
exit: Target
|
||||
initial: TargetAndTransition | boolean
|
||||
animate: TargetAndTransition
|
||||
exit: TargetAndTransition
|
||||
}
|
||||
|
||||
type IconTransitionProps = {
|
||||
|
|
@ -93,9 +93,9 @@ const Presets = {
|
|||
export const IconTransition = (
|
||||
props: React.PropsWithChildren<{
|
||||
animatedKey: string
|
||||
initial?: Target
|
||||
animate?: Target
|
||||
exit?: Target
|
||||
initial?: TargetAndTransition
|
||||
animate?: TargetAndTransition
|
||||
exit?: TargetAndTransition
|
||||
transition?: Transition
|
||||
|
||||
preset?: "fade"
|
||||
|
|
|
|||
|
|
@ -412,12 +412,7 @@ const EntryToastPreview = ({ entryId }: { entryId: string }) => {
|
|||
onPointerDownCapture={stopPropagation}
|
||||
variants={variants}
|
||||
onWheel={stopPropagation}
|
||||
transition={{
|
||||
type: "spring",
|
||||
mass: 0.4,
|
||||
tension: 120,
|
||||
friction: 1.4,
|
||||
}}
|
||||
transition={Spring.presets.snappy}
|
||||
exit="exit"
|
||||
layout="size"
|
||||
className={cn(
|
||||
|
|
|
|||
|
|
@ -61,12 +61,12 @@ export const MobileFloatBar = ({
|
|||
const computedStyle = getComputedStyle(document.documentElement)
|
||||
const safeAreaBottom = computedStyle.getPropertyValue("--sab")
|
||||
animateController.start({
|
||||
translateY: `calc(100% + 40px + ${safeAreaBottom})`,
|
||||
y: `calc(100% + 40px + ${safeAreaBottom})`,
|
||||
transition: { type: "tween", duration: 0.1 },
|
||||
})
|
||||
} else {
|
||||
animateController.start({
|
||||
translateY: 0,
|
||||
y: 0,
|
||||
})
|
||||
}
|
||||
}, [isScrollDown, animateController])
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { EllipsisHorizontalTextWithTooltip } from "@follow/components/ui/typography/EllipsisWithTooltip.js"
|
||||
import { useEntry } from "@follow/store/entry/hooks"
|
||||
import { cn } from "@follow/utils/utils"
|
||||
import type { Target, TargetAndTransition } from "motion/react"
|
||||
import type { TargetAndTransition } from "motion/react"
|
||||
import { m } from "motion/react"
|
||||
|
||||
import { useIsZenMode } from "~/atoms/settings/ui"
|
||||
|
|
@ -36,7 +36,7 @@ const Timeline = ({ entryId }: { entryId: string }) => {
|
|||
)
|
||||
}
|
||||
|
||||
const initialButton: Target = {
|
||||
const initialButton: TargetAndTransition = {
|
||||
opacity: 0.0001,
|
||||
}
|
||||
const animateButton: TargetAndTransition = {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import { Spring } from "@follow/components/constants/spring.js"
|
||||
import { FollowIcon } from "@follow/components/icons/follow.jsx"
|
||||
import { Avatar, AvatarFallback, AvatarImage } from "@follow/components/ui/avatar/index.jsx"
|
||||
import { ActionButton, Button } from "@follow/components/ui/button/index.js"
|
||||
|
|
@ -193,12 +194,7 @@ export const UserProfileModalContent: FC<SubscriptionModalContentProps> = ({ use
|
|||
initial="initial"
|
||||
animate={controller}
|
||||
variants={modalVariant}
|
||||
transition={{
|
||||
type: "spring",
|
||||
mass: 0.4,
|
||||
tension: 100,
|
||||
friction: 1,
|
||||
}}
|
||||
transition={Spring.presets.snappy}
|
||||
exit="exit"
|
||||
layout="size"
|
||||
className={cn(
|
||||
|
|
|
|||
|
|
@ -38,15 +38,15 @@
|
|||
"cookie-es": "2.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@clack/prompts": "0.10.1",
|
||||
"@electron-forge/cli": "7.8.0",
|
||||
"@electron-forge/maker-appx": "7.8.0",
|
||||
"@electron-forge/maker-dmg": "7.8.0",
|
||||
"@electron-forge/maker-pkg": "7.8.0",
|
||||
"@electron-forge/maker-squirrel": "7.8.0",
|
||||
"@electron-forge/maker-zip": "7.8.0",
|
||||
"@electron-forge/plugin-fuses": "7.8.0",
|
||||
"@electron-forge/publisher-github": "7.8.0",
|
||||
"@clack/prompts": "0.11.0",
|
||||
"@electron-forge/cli": "7.8.1",
|
||||
"@electron-forge/maker-appx": "7.8.1",
|
||||
"@electron-forge/maker-dmg": "7.8.1",
|
||||
"@electron-forge/maker-pkg": "7.8.1",
|
||||
"@electron-forge/maker-squirrel": "7.8.1",
|
||||
"@electron-forge/maker-zip": "7.8.1",
|
||||
"@electron-forge/plugin-fuses": "7.8.1",
|
||||
"@electron-forge/publisher-github": "7.8.1",
|
||||
"@electron-toolkit/tsconfig": "1.0.1",
|
||||
"@follow-app/vite-plugin-route-builder": "workspace:*",
|
||||
"@follow/components": "workspace:*",
|
||||
|
|
@ -62,22 +62,22 @@
|
|||
"@types/html-minifier-terser": "7.0.2",
|
||||
"@types/js-yaml": "4.0.9",
|
||||
"@vitejs/plugin-legacy": "6.1.1",
|
||||
"@vitejs/plugin-react": "4.5.0",
|
||||
"@vitejs/plugin-react": "4.5.2",
|
||||
"async-es": "3.2.6",
|
||||
"autoprefixer": "10.4.21",
|
||||
"bufferutil": "4.0.9",
|
||||
"code-inspector-plugin": "0.20.11",
|
||||
"code-inspector-plugin": "0.20.12",
|
||||
"cssnano": "7.0.7",
|
||||
"dotenv": "16.5.0",
|
||||
"drizzle-orm": "0.43.1",
|
||||
"drizzle-orm": "0.44.2",
|
||||
"electron": "35.1.5",
|
||||
"electron-devtools-installer": "4.0.0",
|
||||
"electron-packager-languages": "0.6.0",
|
||||
"electron-vite": "3.1.0",
|
||||
"es-toolkit": "1.38.0",
|
||||
"es-toolkit": "1.39.3",
|
||||
"fake-indexeddb": "6.0.1",
|
||||
"happy-dom": "17.5.6",
|
||||
"hono": "4.7.10",
|
||||
"happy-dom": "18.0.1",
|
||||
"hono": "4.8.1",
|
||||
"html-minifier-terser": "7.2.0",
|
||||
"js-yaml": "4.1.0",
|
||||
"nbump": "2.1.2",
|
||||
|
|
@ -88,7 +88,7 @@
|
|||
"tar": "7.4.3",
|
||||
"unplugin-ast": "0.15.0",
|
||||
"utf-8-validate": "6.0.5",
|
||||
"vite-bundle-analyzer": "0.22.0",
|
||||
"vite-bundle-analyzer": "0.22.3",
|
||||
"vite-plugin-mkcert": "1.17.8",
|
||||
"vite-plugin-pwa": "1.0.0",
|
||||
"vite-tsconfig-paths": "5.1.4"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
"web": "expo start --web"
|
||||
},
|
||||
"dependencies": {
|
||||
"@better-auth/expo": "1.2.7",
|
||||
"@better-auth/expo": "1.2.9",
|
||||
"@expo/metro-runtime": "5.0.4",
|
||||
"@expo/react-native-action-sheet": "4.1.1",
|
||||
"@follow/components": "workspace:*",
|
||||
|
|
@ -32,27 +32,27 @@
|
|||
"@follow/types": "workspace:*",
|
||||
"@follow/utils": "workspace:*",
|
||||
"@gorhom/portal": "1.0.14",
|
||||
"@hookform/resolvers": "4.1.3",
|
||||
"@hookform/resolvers": "5.1.1",
|
||||
"@openpanel/sdk": "1.0.0",
|
||||
"@react-native-community/image-editor": "4.3.0",
|
||||
"@react-native-firebase/analytics": "22.1.0",
|
||||
"@react-native-firebase/app": "22.1.0",
|
||||
"@react-native-firebase/app-check": "22.1.0",
|
||||
"@react-native-firebase/crashlytics": "22.1.0",
|
||||
"@react-native-firebase/messaging": "22.1.0",
|
||||
"@react-native-firebase/analytics": "22.2.1",
|
||||
"@react-native-firebase/app": "22.2.1",
|
||||
"@react-native-firebase/app-check": "22.2.1",
|
||||
"@react-native-firebase/crashlytics": "22.2.1",
|
||||
"@react-native-firebase/messaging": "22.2.1",
|
||||
"@react-native-masked-view/masked-view": "0.3.2",
|
||||
"@react-native-menu/menu": "1.2.3",
|
||||
"@react-native-picker/picker": "2.11.0",
|
||||
"@shopify/flash-list": "1.7.6",
|
||||
"@tanstack/query-sync-storage-persister": "5.77.2",
|
||||
"@tanstack/react-query": "5.77.2",
|
||||
"@tanstack/react-query-persist-client": "5.77.2",
|
||||
"@tanstack/query-sync-storage-persister": "5.80.10",
|
||||
"@tanstack/react-query": "5.80.10",
|
||||
"@tanstack/react-query-persist-client": "5.80.10",
|
||||
"@types/qrcode": "1.5.5",
|
||||
"better-auth": "1.2.8",
|
||||
"better-auth": "1.2.9",
|
||||
"camelcase-keys": "9.1.3",
|
||||
"dayjs": "1.11.13",
|
||||
"dnum": "2.15.0",
|
||||
"es-toolkit": "1.38.0",
|
||||
"es-toolkit": "1.39.3",
|
||||
"expo": "53.0.4",
|
||||
"expo-apple-authentication": "7.2.4",
|
||||
"expo-application": "6.1.4",
|
||||
|
|
@ -86,7 +86,7 @@
|
|||
"expo-video": "2.1.8",
|
||||
"expo-web-browser": "14.1.6",
|
||||
"franc-min": "6.2.0",
|
||||
"hono": "4.7.10",
|
||||
"hono": "4.8.1",
|
||||
"i18next": "25.2.1",
|
||||
"immer": "10.1.1",
|
||||
"jotai": "2.12.5",
|
||||
|
|
@ -97,9 +97,9 @@
|
|||
"qrcode": "1.5.4",
|
||||
"react": "19.0.0",
|
||||
"react-dom": "19.0.0",
|
||||
"react-error-boundary": "5.0.0",
|
||||
"react-hook-form": "7.56.4",
|
||||
"react-i18next": "15.5.2",
|
||||
"react-error-boundary": "6.0.0",
|
||||
"react-hook-form": "7.58.1",
|
||||
"react-i18next": "15.5.3",
|
||||
"react-native": "0.79.1",
|
||||
"react-native-awesome-slider": "2.9.0",
|
||||
"react-native-bouncy-checkbox": "4.1.2",
|
||||
|
|
@ -122,23 +122,23 @@
|
|||
"react-native-volume-manager": "2.0.8",
|
||||
"react-native-web": "0.20.0",
|
||||
"react-native-webview": "13.13.5",
|
||||
"shiki": "3.4.2",
|
||||
"shiki": "3.7.0",
|
||||
"tailwindcss": "3.4.17",
|
||||
"use-sync-external-store": "1.5.0",
|
||||
"usehooks-ts": "3.1.1",
|
||||
"zeego": "3.0.6",
|
||||
"zod": "3.25.32",
|
||||
"zod": "3.25.67",
|
||||
"zustand": "5.0.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.27.3",
|
||||
"@babel/core": "7.27.4",
|
||||
"@follow/configs": "workspace:*",
|
||||
"@types/react": "19.1.6",
|
||||
"babel-plugin-inline-import": "3.0.0",
|
||||
"eas-cli": "16.6.2",
|
||||
"eas-cli": "16.12.0",
|
||||
"expo-sqlite-devtools": "0.0.2",
|
||||
"nbump": "2.1.2",
|
||||
"postcss": "8.5.3",
|
||||
"postcss": "8.5.6",
|
||||
"sf-symbols-typescript": "2.1.0",
|
||||
"typescript": "catalog:"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -17,29 +17,29 @@
|
|||
"@openpanel/web": "1.0.1",
|
||||
"@radix-ui/react-avatar": "1.1.10",
|
||||
"@resvg/resvg-js": "2.6.2",
|
||||
"@sentry/react": "9.22.0",
|
||||
"@tanstack/react-query": "5.77.2",
|
||||
"@sentry/react": "9.30.0",
|
||||
"@tanstack/react-query": "5.80.10",
|
||||
"blurhash": "2.0.5",
|
||||
"dayjs": "1.11.13",
|
||||
"fastify": "5.3.3",
|
||||
"fastify": "5.4.0",
|
||||
"i18next": "25.2.1",
|
||||
"jotai": "2.12.5",
|
||||
"kose-font": "1.0.0",
|
||||
"linkedom": "0.18.10",
|
||||
"motion": "12.15.0",
|
||||
"linkedom": "0.18.11",
|
||||
"motion": "12.18.1",
|
||||
"ofetch": "1.4.1",
|
||||
"rc-modal-sheet": "1.0.0",
|
||||
"react-blurhash": "0.3.0",
|
||||
"react-hook-form": "7.56.4",
|
||||
"react-hook-form": "7.58.1",
|
||||
"react-hotkeys-hook": "5.1.0",
|
||||
"react-i18next": "15.5.2",
|
||||
"react-i18next": "15.5.3",
|
||||
"react-photo-view": "1.2.7",
|
||||
"react-router": "7.6.1",
|
||||
"satori": "0.12.2",
|
||||
"sonner": "2.0.3",
|
||||
"react-router": "7.6.2",
|
||||
"satori": "0.15.2",
|
||||
"sonner": "2.0.5",
|
||||
"use-context-selector": "2.0.0",
|
||||
"xss": "1.0.15",
|
||||
"zod": "3.25.32"
|
||||
"zod": "3.25.67"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@follow-app/vite-plugin-route-builder": "workspace:*",
|
||||
|
|
@ -54,20 +54,20 @@
|
|||
"@follow/utils": "workspace:*",
|
||||
"@types/html-minifier-terser": "7.0.2",
|
||||
"chokidar": "4.0.3",
|
||||
"code-inspector-plugin": "0.20.11",
|
||||
"code-inspector-plugin": "0.20.12",
|
||||
"daisyui": "4.12.24",
|
||||
"dotenv-flow": "4.1.0",
|
||||
"es-toolkit": "1.38.0",
|
||||
"es-toolkit": "1.39.3",
|
||||
"fast-glob": "3.3.3",
|
||||
"foxact": "0.2.45",
|
||||
"foxact": "0.2.49",
|
||||
"html-minifier-terser": "7.2.0",
|
||||
"lightningcss": "1.30.1",
|
||||
"masonic": "4.1.0",
|
||||
"nanoid": "5.1.5",
|
||||
"path-to-regexp": "8.2.0",
|
||||
"tailwindcss-uikit-colors": "0.6.2",
|
||||
"tailwindcss-uikit-colors": "1.0.0-alpha.1",
|
||||
"tsdown": "0.12.8",
|
||||
"tsx": "4.19.4",
|
||||
"tsx": "4.20.3",
|
||||
"typescript": "catalog:",
|
||||
"vite": "6.3.5"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,6 +108,7 @@ export default defineConfig(
|
|||
rules: {
|
||||
"package-json-extend/ensure-package-version": "error",
|
||||
"package-json-extend/no-duplicate-package": "error",
|
||||
"package-json/require-type": 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
|||
26
package.json
26
package.json
|
|
@ -33,22 +33,22 @@
|
|||
"typecheck": "turbo typecheck"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/compat": "1.2.9",
|
||||
"@tsslint/cli": "1.5.16",
|
||||
"@tsslint/config": "1.5.16",
|
||||
"@tsslint/eslint": "1.5.16",
|
||||
"@types/node": "22.15.23",
|
||||
"@eslint/compat": "1.3.0",
|
||||
"@tsslint/cli": "1.5.17",
|
||||
"@tsslint/config": "1.5.17",
|
||||
"@tsslint/eslint": "1.5.17",
|
||||
"@types/node": "24.0.3",
|
||||
"@types/react": "19.1.6",
|
||||
"@types/react-dom": "19.1.5",
|
||||
"@vercel/node": "5.2.0",
|
||||
"@vercel/node": "5.3.0",
|
||||
"cross-env": "7.0.3",
|
||||
"eslint": "9.27.0",
|
||||
"eslint-config-hyoban": "4.0.3",
|
||||
"eslint": "9.29.0",
|
||||
"eslint-config-hyoban": "4.0.8",
|
||||
"eslint-plugin-react-native": "5.0.0",
|
||||
"fast-glob": "3.3.3",
|
||||
"lint-staged": "16.1.0",
|
||||
"lint-staged": "16.1.2",
|
||||
"prettier": "3.5.3",
|
||||
"prettier-plugin-tailwindcss": "0.6.11",
|
||||
"prettier-plugin-tailwindcss": "0.6.13",
|
||||
"raw-body": "3.0.0",
|
||||
"react": "19.0.0",
|
||||
"react-dom": "19.0.0",
|
||||
|
|
@ -56,11 +56,11 @@
|
|||
"simple-git-hooks": "2.13.0",
|
||||
"svg-parser": "2.0.4",
|
||||
"tar": "7.4.3",
|
||||
"tsx": "4.19.4",
|
||||
"turbo": "2.5.3",
|
||||
"tsx": "4.20.3",
|
||||
"turbo": "2.5.4",
|
||||
"typescript": "catalog:",
|
||||
"vite": "6.3.5",
|
||||
"vitest": "3.1.4"
|
||||
"vitest": "3.2.4"
|
||||
},
|
||||
"pnpm": {
|
||||
"patchedDependencies": {
|
||||
|
|
|
|||
|
|
@ -14,20 +14,20 @@
|
|||
"@egoist/tailwindcss-icons": "1.9.0",
|
||||
"@iconify-json/logos": "1.2.4",
|
||||
"@iconify-json/mingcute": "1.2.3",
|
||||
"@iconify-json/simple-icons": "1.2.36",
|
||||
"@iconify-json/simple-icons": "1.2.39",
|
||||
"@iconify/tools": "4.1.2",
|
||||
"@iconify/utils": "2.3.0",
|
||||
"@tailwindcss/container-queries": "0.1.1",
|
||||
"@tailwindcss/typography": "0.5.16",
|
||||
"es-toolkit": "1.38.0",
|
||||
"es-toolkit": "1.39.3",
|
||||
"tailwindcss-animate": "1.0.7",
|
||||
"tailwindcss-motion": "1.1.0",
|
||||
"tailwindcss-motion": "1.1.1",
|
||||
"tailwindcss-multi": "0.4.6",
|
||||
"tailwindcss-safe-area": "0.6.0",
|
||||
"tailwindcss-uikit-colors": "0.6.2"
|
||||
"tailwindcss-uikit-colors": "1.0.0-alpha.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"postcss": "8.5.3",
|
||||
"postcss": "8.5.6",
|
||||
"postcss-js": "4.0.1",
|
||||
"workspace-root": "3.3.1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,18 +51,18 @@
|
|||
"@types/unist": "3.0.3",
|
||||
"class-variance-authority": "0.7.1",
|
||||
"dayjs": "1.11.13",
|
||||
"foxact": "0.2.45",
|
||||
"foxact": "0.2.49",
|
||||
"hast-util-to-jsx-runtime": "2.3.6",
|
||||
"hast-util-to-text": "4.0.2",
|
||||
"input-otp": "1.4.2",
|
||||
"jotai": "2.12.5",
|
||||
"katex": "0.16.22",
|
||||
"masonic": "4.1.0",
|
||||
"motion": "12.15.0",
|
||||
"motion": "12.18.1",
|
||||
"react-blurhash": "0.3.0",
|
||||
"react-fast-marquee": "1.6.5",
|
||||
"react-hook-form": "7.56.4",
|
||||
"react-i18next": "15.5.2",
|
||||
"react-hook-form": "7.58.1",
|
||||
"react-i18next": "15.5.3",
|
||||
"rehype-infer-description-meta": "2.0.0",
|
||||
"rehype-parse": "9.0.1",
|
||||
"rehype-sanitize": "6.0.0",
|
||||
|
|
@ -71,8 +71,8 @@
|
|||
"remark-gfm": "4.0.1",
|
||||
"remark-gh-alerts": "0.0.3",
|
||||
"remark-rehype": "11.1.2",
|
||||
"sonner": "2.0.3",
|
||||
"tailwindcss-uikit-colors": "0.6.2",
|
||||
"sonner": "2.0.5",
|
||||
"tailwindcss-uikit-colors": "1.0.0-alpha.1",
|
||||
"unified": "11.0.5",
|
||||
"unist-util-visit": "5.0.0",
|
||||
"unist-util-visit-parents": "5.1.3",
|
||||
|
|
|
|||
|
|
@ -1,31 +1,31 @@
|
|||
import type { Spring } from "motion/react"
|
||||
import type { Transition } from "motion/react"
|
||||
|
||||
const reboundPreset: Spring = {
|
||||
const reboundPreset: Transition = {
|
||||
type: "spring",
|
||||
bounce: 10,
|
||||
stiffness: 140,
|
||||
damping: 8,
|
||||
}
|
||||
|
||||
const microDampingPreset: Spring = {
|
||||
const microDampingPreset: Transition = {
|
||||
type: "spring",
|
||||
damping: 24,
|
||||
}
|
||||
|
||||
const microReboundPreset: Spring = {
|
||||
const microReboundPreset: Transition = {
|
||||
type: "spring",
|
||||
stiffness: 300,
|
||||
damping: 20,
|
||||
}
|
||||
|
||||
const softSpringPreset: Spring = {
|
||||
const softSpringPreset: Transition = {
|
||||
duration: 0.35,
|
||||
type: "spring",
|
||||
stiffness: 120,
|
||||
damping: 20,
|
||||
}
|
||||
|
||||
const softBouncePreset: Spring = {
|
||||
const softBouncePreset: Transition = {
|
||||
type: "spring",
|
||||
damping: 10,
|
||||
stiffness: 100,
|
||||
|
|
@ -34,7 +34,7 @@ const softBouncePreset: Spring = {
|
|||
/**
|
||||
* A smooth spring with a predefined duration and no bounce.
|
||||
*/
|
||||
const smoothPreset: Spring = {
|
||||
const smoothPreset: Transition = {
|
||||
type: "spring",
|
||||
duration: 0.4,
|
||||
bounce: 0,
|
||||
|
|
@ -43,7 +43,7 @@ const smoothPreset: Spring = {
|
|||
/**
|
||||
* A spring with a predefined duration and small amount of bounce that feels more snappy.
|
||||
*/
|
||||
const snappyPreset: Spring = {
|
||||
const snappyPreset: Transition = {
|
||||
type: "spring",
|
||||
duration: 0.4,
|
||||
bounce: 0.15,
|
||||
|
|
@ -52,7 +52,7 @@ const snappyPreset: Spring = {
|
|||
/**
|
||||
* A spring with a predefined duration and higher amount of bounce.
|
||||
*/
|
||||
const bouncyPreset: Spring = {
|
||||
const bouncyPreset: Transition = {
|
||||
type: "spring",
|
||||
duration: 0.4,
|
||||
bounce: 0.3,
|
||||
|
|
@ -76,7 +76,7 @@ class SpringStatic {
|
|||
* @param duration The perceptual duration, which defines the pace of the spring.
|
||||
* @param extraBounce How much additional bounce should be added to the base bounce of 0.
|
||||
*/
|
||||
smooth(duration = 0.4, extraBounce = 0): Spring {
|
||||
smooth(duration = 0.4, extraBounce = 0): Transition {
|
||||
return {
|
||||
type: "spring",
|
||||
duration,
|
||||
|
|
@ -87,7 +87,7 @@ class SpringStatic {
|
|||
/**
|
||||
* A spring with a predefined duration and small amount of bounce that feels more snappy.
|
||||
*/
|
||||
snappy(duration = 0.4, extraBounce = 0): Spring {
|
||||
snappy(duration = 0.4, extraBounce = 0): Transition {
|
||||
return {
|
||||
type: "spring",
|
||||
duration,
|
||||
|
|
@ -98,7 +98,7 @@ class SpringStatic {
|
|||
/**
|
||||
* A spring with a predefined duration and higher amount of bounce that can be tuned.
|
||||
*/
|
||||
bouncy(duration = 0.4, extraBounce = 0): Spring {
|
||||
bouncy(duration = 0.4, extraBounce = 0): Transition {
|
||||
return {
|
||||
type: "spring",
|
||||
duration,
|
||||
|
|
|
|||
|
|
@ -26,8 +26,8 @@ const AvatarContainer = React.memo(({ children, zIndex, transition, translate }:
|
|||
>
|
||||
<motion.div
|
||||
variants={{
|
||||
initial: { translateY: 0 },
|
||||
hover: { translateY: translate },
|
||||
initial: { y: 0 },
|
||||
hover: { y: translate },
|
||||
}}
|
||||
transition={transition}
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import { Spring } from "@follow/components/constants/spring.js"
|
||||
import { cn } from "@follow/utils/utils"
|
||||
import * as TooltipPrimitive from "@radix-ui/react-tooltip"
|
||||
import { m } from "motion/react"
|
||||
|
|
@ -34,13 +35,7 @@ const TooltipContent = ({
|
|||
<m.div
|
||||
initial={{ opacity: 0.82, scale: 0.95 }}
|
||||
animate={{ opacity: 1, scale: 1 }}
|
||||
transition={{
|
||||
type: "spring",
|
||||
tension: 280,
|
||||
friction: 60,
|
||||
|
||||
duration: 0.1,
|
||||
}}
|
||||
transition={Spring.presets.snappy}
|
||||
>
|
||||
{/* https://github.com/radix-ui/primitives/discussions/868 */}
|
||||
<TooltipPrimitive.Arrow className="z-50 fill-white [clip-path:inset(0_-10px_-10px_-10px)] dark:fill-neutral-950 dark:drop-shadow-[0_0_1px_theme(colors.white/0.5)]" />
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
"@follow/constants": "workspace:*",
|
||||
"@follow/models": "workspace:*",
|
||||
"@follow/shared": "workspace:*",
|
||||
"drizzle-orm": "0.43.1",
|
||||
"drizzle-orm": "0.44.2",
|
||||
"expo-sqlite": "15.2.9",
|
||||
"sqlocal": "npm:@hyoban/sqlocal@0.14.1-fork.4"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
"@follow/shared": "workspace:*",
|
||||
"@follow/types": "workspace:*",
|
||||
"@follow/utils": "workspace:*",
|
||||
"foxact": "0.2.45",
|
||||
"foxact": "0.2.49",
|
||||
"jotai": "2.12.5",
|
||||
"usehooks-ts": "3.1.1"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
"typecheck": "tsc --noEmit"
|
||||
},
|
||||
"dependencies": {
|
||||
"electron-log": "5.4.0"
|
||||
"electron-log": "5.4.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@follow/configs": "workspace:*"
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
"@follow/shared": "workspace:*",
|
||||
"@follow/types": "workspace:*",
|
||||
"@follow/utils": "workspace:*",
|
||||
"hono": "4.7.10"
|
||||
"hono": "4.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@follow/configs": "workspace:*"
|
||||
|
|
|
|||
|
|
@ -33,12 +33,12 @@
|
|||
"dependencies": {
|
||||
"@electron-toolkit/preload": "3.0.2",
|
||||
"@electron-toolkit/tsconfig": "1.0.1",
|
||||
"@hono/node-server": "1.14.3",
|
||||
"@t3-oss/env-core": "0.13.6",
|
||||
"better-auth": "1.2.8",
|
||||
"drizzle-orm": "0.43.1",
|
||||
"hono": "4.7.10",
|
||||
"sonner": "2.0.3",
|
||||
"zod": "3.25.32"
|
||||
"@hono/node-server": "1.14.4",
|
||||
"@t3-oss/env-core": "0.13.8",
|
||||
"better-auth": "1.2.9",
|
||||
"drizzle-orm": "0.44.2",
|
||||
"hono": "4.8.1",
|
||||
"sonner": "2.0.5",
|
||||
"zod": "3.25.67"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,8 +116,8 @@
|
|||
"@follow/shared": "workspace:*",
|
||||
"@follow/tracker": "workspace:*",
|
||||
"@follow/utils": "workspace:*",
|
||||
"@tanstack/react-query": "5.77.2",
|
||||
"es-toolkit": "1.38.0",
|
||||
"@tanstack/react-query": "5.80.10",
|
||||
"es-toolkit": "1.39.3",
|
||||
"immer": "10.1.1",
|
||||
"zustand": "5.0.5"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@
|
|||
"private": true,
|
||||
"main": "./src/index.ts",
|
||||
"dependencies": {
|
||||
"posthog-js": "1.249.2"
|
||||
"posthog-js": "1.255.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@follow/configs": "workspace:*",
|
||||
"@react-native-firebase/analytics": "22.1.0"
|
||||
"@react-native-firebase/analytics": "22.2.1"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,12 +36,12 @@
|
|||
"chardet": "2.1.0",
|
||||
"clsx": "2.1.1",
|
||||
"dompurify": "3.2.6",
|
||||
"linkedom": "0.18.10",
|
||||
"motion": "12.15.0",
|
||||
"linkedom": "0.18.11",
|
||||
"motion": "12.18.1",
|
||||
"nanoid": "5.1.5",
|
||||
"path-to-regexp": "8.2.0",
|
||||
"tailwind-merge": "3.3.0",
|
||||
"tldts": "7.0.7",
|
||||
"tailwind-merge": "3.3.1",
|
||||
"tldts": "7.0.9",
|
||||
"uniqolor": "1.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
// @see https://github.com/Innei/sprightly/blob/2444dcdb789ca585337a4d241095640a524231db/src/lib/scroller.ts
|
||||
|
||||
import type { Spring } from "motion/react"
|
||||
import type { Transition } from "motion/react"
|
||||
import { animateValue } from "motion/react"
|
||||
|
||||
const spring: Spring = {
|
||||
const spring: Transition = {
|
||||
type: "spring",
|
||||
stiffness: 1000,
|
||||
damping: 250,
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
"@mozilla/readability": "0.6.0",
|
||||
"chardet": "2.1.0",
|
||||
"dompurify": "3.2.6",
|
||||
"linkedom": "0.18.10"
|
||||
"linkedom": "0.18.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@follow/configs": "workspace:*",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@follow-app/vite-plugin-route-builder",
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"version": "0.1.1",
|
||||
"exports": {
|
||||
".": "./src/index.ts"
|
||||
},
|
||||
|
|
@ -16,20 +16,26 @@
|
|||
"test:run": "vitest run"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "22.15.23",
|
||||
"es-toolkit": "1.38.0",
|
||||
"@types/node": "24.0.3",
|
||||
"es-toolkit": "1.39.3",
|
||||
"fast-glob": "3.3.3",
|
||||
"happy-dom": "17.5.6",
|
||||
"react-router": "7.6.1",
|
||||
"happy-dom": "18.0.1",
|
||||
"react-router": "7.6.2",
|
||||
"tsdown": "0.12.8",
|
||||
"typescript": "catalog:",
|
||||
"vite": "6.3.5",
|
||||
"vite-tsconfig-paths": "5.1.4",
|
||||
"vitest": "3.1.4"
|
||||
"vitest": "3.2.4"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts"
|
||||
"types": "dist/index.d.ts",
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./dist/index.d.ts",
|
||||
"import": "./dist/index.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
5830
pnpm-lock.yaml
5830
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue