working on industrial page

This commit is contained in:
karl 2025-03-28 14:58:39 -04:00
parent 3ff6705298
commit a922353ea3
6 changed files with 608 additions and 5 deletions

View File

@ -1,3 +1,32 @@
import Layout from '@/app/layout'
import PageHeroGrid from '@/components/pages/PageHeroGrid'
// Assets
import HERO_1 from '@/images/industrial/__landing/1.jpg'
import HERO_2 from '@/images/industrial/__landing/2.jpg'
import HERO_3 from '@/images/industrial/__landing/3.jpg'
import HERO_4 from '@/images/industrial/__landing/4.jpg'
export default function Industrial() {
return <div>Industrial</div>
return (
<>
<PageHeroGrid
title="Industrial"
description={
<>
Trust Linconson for top-notch industrial solutions. Our reliable
equipment is designed to optimize warehouse operations, boost
efficiency, and ensure a productive environment. With
direct-to-consumer manufacturing, we offer the lowest prices in the
industry.
<br />
<br />
Linconson Industries - powering your warehouse for success.
</>
}
imageSrcs={[HERO_2, HERO_1, HERO_4, HERO_3]}
type="4-image"
/>
</>
)
}

View File

@ -9,7 +9,7 @@ import { Toaster } from 'sonner'
import './globals.css'
import '@/assets/main.css'
import '../components/layout/navbar/Navbar.css'
import '../components/pages/PageHeroGrid.scss'
import { baseUrl } from 'lib/utils'
const { SITE_NAME } = process.env

View File

@ -0,0 +1,14 @@
.pageHeroGrid__wrapper {
@media screen and (max-width: 1023px) {
display: table;
margin: auto;
}
.pageHeroGrid__images {
@media screen and (max-width: 1023px) {
margin-top: 6rem;
margin-left: 2.5%;
}
}
}

View File

@ -0,0 +1,220 @@
'use client'
import Image, { StaticImageData } from 'next/image'
import Link from 'next/link'
import { get } from 'lodash-es'
import { motion } from 'framer-motion'
import { ArrowRightIcon } from '@heroicons/react/20/solid'
const fadeInUp = {
hidden: { opacity: 0, y: 40 },
visible: { opacity: 1, y: 0 },
}
export default function PageHeroGrid({
title,
description,
imageSrcs,
imageStyles,
type,
buyNowLink,
buyNowText,
}: {
title: React.ReactNode
description: React.ReactNode
imageSrcs: string[] | StaticImageData[]
imageStyles?: Array<React.CSSProperties | null>
type?: '4-image' | '6-image' | '1-image'
buyNowLink?: string
buyNowText?: string
}) {
if (type === '1-image') {
return (
<motion.div
initial="hidden"
animate="visible"
variants={fadeInUp}
transition={{ duration: 1 }}
className="relative z-10 mx-auto max-w-7xl pt-12 px-4 sm:px-6 lg:px-8 mb-8"
>
<div className="relative isolate overflow-hidden shadow-2xl rounded-2xl bg-gray-900">
<div className="relative isolate overflow-hidden bg-gray-900">
<div className="mx-auto px-6 pt-10 lg:pb-24 sm:pb-8 lg:flex lg:py-40 lg:pt-20 lg:px-8 flex">
<div className="lg:mx-0 lg:pt-8 lg:pl-12 pl-6 max-w-none md:max-w-[46%]">
<motion.h1
className="mt-10 text-4xl font-bold tracking-tight text-white sm:text-6xl"
variants={fadeInUp}
transition={{ delay: 0.1, duration: 1.2 }}
>
{title}
</motion.h1>
<motion.div
className="mt-6 text-lg leading-8 text-gray-300 lg:max-w-md"
variants={fadeInUp}
transition={{ delay: 0.2, duration: 1.2 }}
>
{description}
</motion.div>
{buyNowLink && (
<motion.div
className="mt-10"
variants={fadeInUp}
transition={{ delay: 0.3, duration: 1 }}
>
<Link
href={buyNowLink || ''}
className="inline-flex items-center gap-x-1.5 rounded-[24px] px-6 py-3 text-md font-semibold focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white bg-white text-black shadow-sm hover:bg-gray-200"
>
{buyNowText || 'Buy Now'}
<ArrowRightIcon
className="-mr-0.5 h-5 w-5"
aria-hidden="true"
/>
</Link>
</motion.div>
)}
</div>
</div>
</div>
<div
className="relative md:absolute md:top-0 md:left-1/2 w-full md:w-1/2 h-80 md:h-full mt-10 md:mt-0"
style={{
backgroundImage: `url(${
typeof imageSrcs?.[0] === 'string'
? imageSrcs?.[0]
: imageSrcs?.[0]?.src || ''
})`,
backgroundSize: 'cover',
backgroundPosition: 'center',
}}
>
<div className="block md:hidden absolute top-0 left-0 w-full h-96 bg-gradient-to-b from-gray-900" />
</div>
<div className="hidden md:block absolute top-0 left-1/2 w-96 h-full bg-gradient-to-r from-gray-900" />
</div>
</motion.div>
)
}
return (
<motion.div
initial="hidden"
animate="visible"
variants={fadeInUp}
transition={{ duration: 1 }}
className="mx-auto max-w-7xl pt-12 px-4 sm:px-6 lg:px-8 mb-8"
>
<div className="relative isolate overflow-hidden shadow-2xl rounded-2xl">
<div className="relative isolate overflow-hidden bg-gray-900">
<div className="mx-auto max-w-7xl px-6 pt-10 lg:pb-24 sm:pb-8 lg:flex lg:py-40 lg:pt-20 lg:px-8">
<div className="mx-auto max-w-2xl flex-shrink-0 lg:mx-0 lg:max-w-xl lg:pt-8 lg:pl-12 pl-6">
<motion.h1
className="mt-10 text-4xl font-bold tracking-tight text-white sm:text-6xl"
variants={fadeInUp}
transition={{ delay: 0.1, duration: 1.2 }}
>
{title}
</motion.h1>
<motion.div
className="mt-6 text-lg leading-8 text-gray-300 lg:max-w-md"
variants={fadeInUp}
transition={{ delay: 0.2, duration: 1.2 }}
>
{description}
</motion.div>
{buyNowLink && (
<motion.div
className="mt-10"
variants={fadeInUp}
transition={{ delay: 0.3, duration: 1 }}
>
<Link
href={buyNowLink || ''}
className="inline-flex items-center gap-x-1.5 rounded-[24px] px-6 py-3 text-md font-semibold focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white bg-white text-black shadow-sm hover:bg-gray-200"
>
{buyNowText || 'Buy Now'}
<ArrowRightIcon
className="-mr-0.5 h-5 w-5"
aria-hidden="true"
/>
</Link>
</motion.div>
)}
</div>
<div className="lg:absolute -top-32 left-1/2 -translate-x-1/2 transform sm:top-16 sm:translate-x-0 pageHeroGrid__wrapper">
<div className="ml-24 flex min-w-max space-x-6 sm:ml-3 lg:space-x-8 pageHeroGrid__images">
<div className="flex space-x-6 sm:flex-col sm:space-x-0 sm:space-y-6 lg:space-y-8">
<div className="flex-shrink-0">
<Image
className="h-64 w-64 rounded-lg object-cover md:h-72 md:w-72"
src={imageSrcs[0] || ''}
alt=""
style={get(imageStyles, 0) || undefined}
/>
</div>
<div
className="mt-8 flex-shrink-0 sm:mt-0"
style={{ textAlign: 'right', marginLeft: '4rem' }}
>
<Image
className="h-64 w-64 rounded-lg object-cover md:h-72 md:w-72"
src={imageSrcs[1] || ''}
alt=""
style={
{
opacity: 0.6,
width: '14rem',
height: '16rem',
WebkitMaskImage:
'linear-gradient(to bottom, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0))',
...get(imageStyles, 1),
} as any
}
/>
</div>
</div>
<div className="flex space-x-6 sm:-mt-20 sm:flex-col sm:space-x-0 sm:space-y-6 lg:space-y-8">
<div className="flex-shrink-0">
<Image
className="h-64 w-64 rounded-lg object-cover md:h-72 md:w-72"
src={imageSrcs[2] || ''}
alt=""
style={
{
opacity: 0.6,
width: '14rem',
height: '16rem',
WebkitMaskImage:
'linear-gradient(to top, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0))',
...get(imageStyles, 2),
} as any
}
/>
</div>
<div className="mt-8 flex-shrink-0 sm:mt-0">
<Image
className="h-64 w-64 rounded-lg object-cover md:h-72 md:w-72"
src={imageSrcs[3] || ''}
alt=""
style={get(imageStyles, 3) || undefined}
/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</motion.div>
)
}

View File

@ -12,17 +12,22 @@
"@headlessui/react": "^2.2.0",
"@heroicons/react": "^2.2.0",
"clsx": "^2.1.1",
"framer-motion": "^12.6.2",
"geist": "^1.3.1",
"lodash-es": "^4.17.21",
"lodash.throttle": "^4.1.1",
"next": "15.3.0-canary.13",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-reveal": "^1.2.2",
"sass": "^1.86.0",
"sonner": "^2.0.1"
},
"devDependencies": {
"@tailwindcss/container-queries": "^0.1.1",
"@tailwindcss/postcss": "^4.0.14",
"@tailwindcss/typography": "^0.5.16",
"@types/lodash-es": "^4.17.12",
"@types/node": "22.13.10",
"@types/react": "19.0.12",
"@types/react-dom": "19.0.4",

341
pnpm-lock.yaml generated
View File

@ -6,11 +6,14 @@ specifiers:
'@tailwindcss/container-queries': ^0.1.1
'@tailwindcss/postcss': ^4.0.14
'@tailwindcss/typography': ^0.5.16
'@types/lodash-es': ^4.17.12
'@types/node': 22.13.10
'@types/react': 19.0.12
'@types/react-dom': 19.0.4
clsx: ^2.1.1
framer-motion: ^12.6.2
geist: ^1.3.1
lodash-es: ^4.17.21
lodash.throttle: ^4.1.1
next: 15.3.0-canary.13
postcss: ^8.5.3
@ -18,6 +21,8 @@ specifiers:
prettier-plugin-tailwindcss: ^0.6.11
react: 19.0.0
react-dom: 19.0.0
react-reveal: ^1.2.2
sass: ^1.86.0
sonner: ^2.0.1
tailwindcss: ^4.0.14
typescript: 5.8.2
@ -26,17 +31,22 @@ dependencies:
'@headlessui/react': 2.2.0_react-dom@19.0.0+react@19.0.0
'@heroicons/react': 2.2.0_react@19.0.0
clsx: 2.1.1
framer-motion: 12.6.2_react-dom@19.0.0+react@19.0.0
geist: 1.3.1_next@15.3.0-canary.13
lodash-es: 4.17.21
lodash.throttle: 4.1.1
next: 15.3.0-canary.13_react-dom@19.0.0+react@19.0.0
next: 15.3.0-canary.13_064f527c02edbe2d1727c89aa6e53a64
react: 19.0.0
react-dom: 19.0.0_react@19.0.0
react-reveal: 1.2.2_react@19.0.0
sass: 1.86.0
sonner: 2.0.2_react-dom@19.0.0+react@19.0.0
devDependencies:
'@tailwindcss/container-queries': 0.1.1_tailwindcss@4.0.17
'@tailwindcss/postcss': 4.0.17
'@tailwindcss/typography': 0.5.16_tailwindcss@4.0.17
'@types/lodash-es': 4.17.12
'@types/node': 22.13.10
'@types/react': 19.0.12
'@types/react-dom': 19.0.4_@types+react@19.0.12
@ -381,6 +391,149 @@ packages:
dev: false
optional: true
/@parcel/watcher-android-arm64/2.5.1:
resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-darwin-arm64/2.5.1:
resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-darwin-x64/2.5.1:
resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-freebsd-x64/2.5.1:
resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-linux-arm-glibc/2.5.1:
resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-linux-arm-musl/2.5.1:
resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-linux-arm64-glibc/2.5.1:
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-linux-arm64-musl/2.5.1:
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-linux-x64-glibc/2.5.1:
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-linux-x64-musl/2.5.1:
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-win32-arm64/2.5.1:
resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-win32-ia32/2.5.1:
resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
engines: {node: '>= 10.0.0'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher-win32-x64/2.5.1:
resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@parcel/watcher/2.5.1:
resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
engines: {node: '>= 10.0.0'}
requiresBuild: true
dependencies:
detect-libc: 1.0.3
is-glob: 4.0.3
micromatch: 4.0.8
node-addon-api: 7.1.1
optionalDependencies:
'@parcel/watcher-android-arm64': 2.5.1
'@parcel/watcher-darwin-arm64': 2.5.1
'@parcel/watcher-darwin-x64': 2.5.1
'@parcel/watcher-freebsd-x64': 2.5.1
'@parcel/watcher-linux-arm-glibc': 2.5.1
'@parcel/watcher-linux-arm-musl': 2.5.1
'@parcel/watcher-linux-arm64-glibc': 2.5.1
'@parcel/watcher-linux-arm64-musl': 2.5.1
'@parcel/watcher-linux-x64-glibc': 2.5.1
'@parcel/watcher-linux-x64-musl': 2.5.1
'@parcel/watcher-win32-arm64': 2.5.1
'@parcel/watcher-win32-ia32': 2.5.1
'@parcel/watcher-win32-x64': 2.5.1
dev: false
optional: true
/@react-aria/focus/3.20.1_react-dom@19.0.0+react@19.0.0:
resolution: {integrity: sha512-lgYs+sQ1TtBrAXnAdRBQrBo0/7o5H6IrfDxec1j+VRpcXL0xyk0xPq+m3lZp8typzIghqDgpnKkJ5Jf4OrzPIw==}
peerDependencies:
@ -640,6 +793,16 @@ packages:
resolution: {integrity: sha512-gMLNylxhJdUlfRR1G3U9rtuwUh2IjdrrniJIDcekVJN3/3i+bluvdMi3+eodnxzJq5nKnxnigo9h0lIpaqV6HQ==}
dev: false
/@types/lodash-es/4.17.12:
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
dependencies:
'@types/lodash': 4.17.16
dev: true
/@types/lodash/4.17.16:
resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==}
dev: true
/@types/node/22.13.10:
resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==}
dependencies:
@ -660,6 +823,14 @@ packages:
csstype: 3.1.3
dev: true
/braces/3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
dependencies:
fill-range: 7.1.1
dev: false
optional: true
/busboy/1.6.0:
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
engines: {node: '>=10.16.0'}
@ -671,6 +842,13 @@ packages:
resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==}
dev: false
/chokidar/4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
dependencies:
readdirp: 4.1.2
dev: false
/client-only/0.0.1:
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
dev: false
@ -720,6 +898,13 @@ packages:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
dev: true
/detect-libc/1.0.3:
resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
engines: {node: '>=0.10'}
hasBin: true
dev: false
optional: true
/detect-libc/2.0.3:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
engines: {node: '>=8'}
@ -732,28 +917,85 @@ packages:
tapable: 2.2.1
dev: true
/fill-range/7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
dev: false
optional: true
/framer-motion/12.6.2_react-dom@19.0.0+react@19.0.0:
resolution: {integrity: sha512-7LgPRlPs5aG8UxeZiMCMZz8firC53+2+9TnWV22tuSi38D3IFRxHRUqOREKckAkt6ztX+Dn6weLcatQilJTMcg==}
peerDependencies:
'@emotion/is-prop-valid': '*'
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@emotion/is-prop-valid':
optional: true
react:
optional: true
react-dom:
optional: true
dependencies:
motion-dom: 12.6.1
motion-utils: 12.5.0
react: 19.0.0
react-dom: 19.0.0_react@19.0.0
tslib: 2.8.1
dev: false
/geist/1.3.1_next@15.3.0-canary.13:
resolution: {integrity: sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw==}
peerDependencies:
next: '>=13.2.0'
dependencies:
next: 15.3.0-canary.13_react-dom@19.0.0+react@19.0.0
next: 15.3.0-canary.13_064f527c02edbe2d1727c89aa6e53a64
dev: false
/graceful-fs/4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
dev: true
/immutable/5.1.1:
resolution: {integrity: sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==}
dev: false
/is-arrayish/0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
dev: false
optional: true
/is-extglob/2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
dev: false
optional: true
/is-glob/4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
dependencies:
is-extglob: 2.1.1
dev: false
optional: true
/is-number/7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
dev: false
optional: true
/jiti/2.4.2:
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
hasBin: true
dev: true
/js-tokens/4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
dev: false
/lightningcss-darwin-arm64/1.29.2:
resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==}
engines: {node: '>= 12.0.0'}
@ -862,6 +1104,10 @@ packages:
lightningcss-win32-x64-msvc: 1.29.2
dev: true
/lodash-es/4.17.21:
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
dev: false
/lodash.castarray/4.4.0:
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
dev: true
@ -878,12 +1124,38 @@ packages:
resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
dev: false
/loose-envify/1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
dependencies:
js-tokens: 4.0.0
dev: false
/micromatch/4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
dependencies:
braces: 3.0.3
picomatch: 2.3.1
dev: false
optional: true
/motion-dom/12.6.1:
resolution: {integrity: sha512-8XVsriTUEVOepoIDgE/LDGdg7qaKXWdt+wQA/8z0p8YzJDLYL8gbimZ3YkCLlj7bB2i/4UBD/g+VO7y9ZY0zHQ==}
dependencies:
motion-utils: 12.5.0
dev: false
/motion-utils/12.5.0:
resolution: {integrity: sha512-+hFFzvimn0sBMP9iPxBa9OtRX35ZQ3py0UHnb8U29VD+d8lQ8zH3dTygJWqK7av2v6yhg7scj9iZuvTS0f4+SA==}
dev: false
/nanoid/3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
/next/15.3.0-canary.13_react-dom@19.0.0+react@19.0.0:
/next/15.3.0-canary.13_064f527c02edbe2d1727c89aa6e53a64:
resolution: {integrity: sha512-c8BO/c1FjV/jY4OmlBTKaeI0YYDIsakkmJQFgpjq9RzoBetoi/VLAloZMDpsrfSFIhHDHhraLMxzSvS6mFKeuA==}
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
hasBin: true
@ -912,6 +1184,7 @@ packages:
postcss: 8.4.31
react: 19.0.0
react-dom: 19.0.0_react@19.0.0
sass: 1.86.0
styled-jsx: 5.1.6_react@19.0.0
optionalDependencies:
'@next/swc-darwin-arm64': 15.3.0-canary.13
@ -928,9 +1201,25 @@ packages:
- babel-plugin-macros
dev: false
/node-addon-api/7.1.1:
resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
dev: false
optional: true
/object-assign/4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
dev: false
/picocolors/1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
/picomatch/2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
dev: false
optional: true
/postcss-selector-parser/6.0.10:
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
engines: {node: '>=4'}
@ -1021,6 +1310,14 @@ packages:
hasBin: true
dev: true
/prop-types/15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
dependencies:
loose-envify: 1.4.0
object-assign: 4.1.1
react-is: 16.13.1
dev: false
/react-dom/19.0.0_react@19.0.0:
resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
peerDependencies:
@ -1030,11 +1327,41 @@ packages:
scheduler: 0.25.0
dev: false
/react-is/16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
dev: false
/react-reveal/1.2.2_react@19.0.0:
resolution: {integrity: sha512-JCv3fAoU6Z+Lcd8U48bwzm4pMZ79qsedSXYwpwt6lJNtj/v5nKJYZZbw3yhaQPPgYePo3Y0NOCoYOq/jcsisuw==}
peerDependencies:
react: ^15.3.0 || ^16.0.0
dependencies:
prop-types: 15.8.1
react: 19.0.0
dev: false
/react/19.0.0:
resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
engines: {node: '>=0.10.0'}
dev: false
/readdirp/4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
dev: false
/sass/1.86.0:
resolution: {integrity: sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
chokidar: 4.0.3
immutable: 5.1.1
source-map-js: 1.2.1
optionalDependencies:
'@parcel/watcher': 2.5.1
dev: false
/scheduler/0.25.0:
resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
dev: false
@ -1133,6 +1460,14 @@ packages:
engines: {node: '>=6'}
dev: true
/to-regex-range/5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
dev: false
optional: true
/tslib/2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
dev: false