fix: update depends on last version
This commit is contained in:
@@ -36,7 +36,7 @@ export function StatCard({
|
||||
const { ref, isInView } = useInView<HTMLDivElement>({ threshold: 0.5 });
|
||||
const count = useMotionValue(0);
|
||||
const rounded = useTransform(count, (latest) => Math.round(latest));
|
||||
const hasAnimated = useRef(false);
|
||||
const hasAnimatedRef = useRef(false);
|
||||
|
||||
// Попытка извлечь число из строки для анимации
|
||||
const numericValue =
|
||||
@@ -47,8 +47,8 @@ export function StatCard({
|
||||
const prefix = typeof value === "string" ? value.replace(/[0-9.,]/g, "") : "";
|
||||
|
||||
useEffect(() => {
|
||||
if (isInView && !hasAnimated.current && animated && isNumeric) {
|
||||
hasAnimated.current = true;
|
||||
if (isInView && !hasAnimatedRef.current && animated && isNumeric) {
|
||||
hasAnimatedRef.current = true;
|
||||
const controls = animate(count, numericValue, {
|
||||
duration: 2,
|
||||
ease: "easeOut",
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Card } from "@/shared/ui/card";
|
||||
import { motion } from "framer-motion";
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import { Github, Linkedin, Twitter } from "lucide-react";
|
||||
import { Code2, Network, AtSign } from "lucide-react";
|
||||
|
||||
export interface TeamMemberCardProps {
|
||||
name: string;
|
||||
@@ -20,9 +20,9 @@ export interface TeamMemberCardProps {
|
||||
}
|
||||
|
||||
const socialIcons = {
|
||||
github: Github,
|
||||
linkedin: Linkedin,
|
||||
twitter: Twitter,
|
||||
github: Code2,
|
||||
linkedin: Network,
|
||||
twitter: AtSign,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,7 +7,7 @@ export interface UseInViewOptions {
|
||||
}
|
||||
|
||||
export interface UseInViewReturn<T extends HTMLElement> {
|
||||
ref: RefObject<T>;
|
||||
ref: RefObject<T | null>;
|
||||
isInView: boolean;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
"use client"
|
||||
|
||||
import * as React from "react"
|
||||
import { GripVerticalIcon } from "lucide-react"
|
||||
import * as ResizablePrimitive from "react-resizable-panels"
|
||||
|
||||
@@ -9,12 +8,12 @@ import { cn } from "@/shared/lib/utils"
|
||||
function ResizablePanelGroup({
|
||||
className,
|
||||
...props
|
||||
}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {
|
||||
}: ResizablePrimitive.GroupProps) {
|
||||
return (
|
||||
<ResizablePrimitive.PanelGroup
|
||||
<ResizablePrimitive.Group
|
||||
data-slot="resizable-panel-group"
|
||||
className={cn(
|
||||
"flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
|
||||
"flex h-full w-full aria-[orientation=vertical]:flex-col",
|
||||
className
|
||||
)}
|
||||
{...props}
|
||||
@@ -22,9 +21,7 @@ function ResizablePanelGroup({
|
||||
)
|
||||
}
|
||||
|
||||
function ResizablePanel({
|
||||
...props
|
||||
}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {
|
||||
function ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {
|
||||
return <ResizablePrimitive.Panel data-slot="resizable-panel" {...props} />
|
||||
}
|
||||
|
||||
@@ -32,25 +29,25 @@ function ResizableHandle({
|
||||
withHandle,
|
||||
className,
|
||||
...props
|
||||
}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
|
||||
}: ResizablePrimitive.SeparatorProps & {
|
||||
withHandle?: boolean
|
||||
}) {
|
||||
return (
|
||||
<ResizablePrimitive.PanelResizeHandle
|
||||
<ResizablePrimitive.Separator
|
||||
data-slot="resizable-handle"
|
||||
className={cn(
|
||||
"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90",
|
||||
"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90",
|
||||
className
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
{withHandle && (
|
||||
<div className="bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border">
|
||||
<div className="z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border">
|
||||
<GripVerticalIcon className="size-2.5" />
|
||||
</div>
|
||||
)}
|
||||
</ResizablePrimitive.PanelResizeHandle>
|
||||
</ResizablePrimitive.Separator>
|
||||
)
|
||||
}
|
||||
|
||||
export { ResizablePanelGroup, ResizablePanel, ResizableHandle }
|
||||
export { ResizableHandle, ResizablePanel, ResizablePanelGroup }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import Link from "next/link";
|
||||
import { Separator } from "@/shared/ui/separator";
|
||||
import { Github, Twitter, Linkedin, Youtube } from "lucide-react";
|
||||
import { Code2, AtSign, Network, Play } from "lucide-react";
|
||||
|
||||
const footerLinks = {
|
||||
product: {
|
||||
@@ -43,11 +43,13 @@ const footerLinks = {
|
||||
},
|
||||
};
|
||||
|
||||
const CURRENT_YEAR = new Date().getFullYear()
|
||||
|
||||
const socialLinks = [
|
||||
{ name: "GitHub", icon: Github, href: "#" },
|
||||
{ name: "Twitter", icon: Twitter, href: "#" },
|
||||
{ name: "LinkedIn", icon: Linkedin, href: "#" },
|
||||
{ name: "YouTube", icon: Youtube, href: "#" },
|
||||
{ name: "GitHub", icon: Code2, href: "#" },
|
||||
{ name: "Twitter", icon: AtSign, href: "#" },
|
||||
{ name: "LinkedIn", icon: Network, href: "#" },
|
||||
{ name: "YouTube", icon: Play, href: "#" },
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -108,7 +110,7 @@ export function Footer() {
|
||||
{/* Bottom Bar */}
|
||||
<div className="flex flex-col md:flex-row justify-between items-center gap-4">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
© {new Date().getFullYear()} TaskFlow. Все права защищены.
|
||||
© {CURRENT_YEAR} TaskFlow. Все права защищены.
|
||||
</p>
|
||||
|
||||
<div className="flex flex-wrap gap-6 text-sm text-muted-foreground">
|
||||
|
||||
Reference in New Issue
Block a user