"use client"; import React, { useEffect, useRef, useState } from "react"; import { motion, useScroll, useTransform } from "motion/react"; import { cn } from "@/lib/utils"; import { IconBrightnessDown, IconBrightnessUp, IconCaretRightFilled, IconCaretUpFilled, IconChevronUp, IconMicrophone, IconMoon, IconPlayerSkipForward, IconPlayerTrackNext, IconPlayerTrackPrev, IconTable, IconVolume, IconVolume2, IconVolume3, } from "@tabler/icons-react"; import { IconSearch } from "@tabler/icons-react"; import { IconWorld } from "@tabler/icons-react"; import { IconCommand } from "@tabler/icons-react"; import { IconCaretLeftFilled } from "@tabler/icons-react"; import { IconCaretDownFilled } from "@tabler/icons-react"; export const MacbookScroll = ({ src, showGradient, title, badge }) => { const ref = useRef(null); const { scrollYProgress } = useScroll({ target: ref, offset: ["start start", "end start"], }); const [isMobile, setIsMobile] = useState(false); useEffect(() => { if (window && window.innerWidth < 768) { setIsMobile(true); } }, []); const scaleX = useTransform(scrollYProgress, [0, 0.3], [1.2, isMobile ? 1 : 1.5]); const scaleY = useTransform(scrollYProgress, [0, 0.3], [0.6, isMobile ? 1 : 1.5]); const translate = useTransform(scrollYProgress, [0, 1], [0, 1500]); const rotate = useTransform(scrollYProgress, [0.1, 0.12, 0.3], [-28, -28, 0]); const textTransform = useTransform(scrollYProgress, [0, 0.3], [0, 100]); const textOpacity = useTransform(scrollYProgress, [0, 0.2], [1, 0]); return (
{/* Lid */} {/* Base area */}
{/* above keyboard bar */}
{showGradient && (
)} {badge &&
{badge}
}
); }; export const Lid = ({ scaleX, scaleY, rotate, translate, src }) => { return (
aceternity logo
); }; export const Trackpad = () => { return (
); }; export const Keypad = () => { return (
{/* First Row */}
esc F1 F2 F3 F4 F5 F6 F7 F8 F8 F10 F11 F12
{/* Second row */}
~ ` ! 1 @ 2 # 3 $ 4 % 5 ^ 6 & 7 * 8 ( 9 ) 0 _ + = delete
{/* Third row */}
tab Q W E R T Y U I O P {`{`} {`[`} {`}`} {`]`} {`|`} {`\\`}
{/* Fourth Row */}
caps lock A S D F G H J K L {`:`} {`;`} {`"`} {`'`} return
{/* Fifth Row */}
shift Z X C V B N M {`<`} {`,`} {`>`} {`.`} {`?`} {`/`} shift
{/* sixth Row */}
fn
control
option
command
command
option
); }; export const KBtn = ({ className, children, childrenClassName, backlit = true }) => { return (
{children}
); }; export const SpeakerGrid = () => { return (
); }; export const OptionKey = ({ className }) => { return ( ); }; const AceternityLogo = () => { return ( ); };