fix: update depends on last version

This commit is contained in:
2026-06-18 21:55:52 +03:00
parent 1e2fd40c9f
commit aab4c6b101
10 changed files with 1922 additions and 3415 deletions

View File

@@ -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",

View File

@@ -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,
};
/**

View File

@@ -7,7 +7,7 @@ export interface UseInViewOptions {
}
export interface UseInViewReturn<T extends HTMLElement> {
ref: RefObject<T>;
ref: RefObject<T | null>;
isInView: boolean;
}

View File

@@ -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 }

View File

@@ -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">