Add login button, UI tweaks
Docker / build (push) Canceled after 46s

This commit is contained in:
asowneryt committed 2026-07-17 00:32:39 +12:00
1 parent 7cb01d7ad0
commit 53df8dcefc
6 files changed
+45 -27

No files matched your search

+2 -2
View File
@@ -3,9 +3,9 @@
# ============================================
# IMPORTANT: Node.js Version Maintenance
# This Dockerfile uses Node.js 24.13.0-slim, which was the latest LTS version at the time of writing.
# This Dockerfile uses Node.js 24.18.0-slim, which was the latest LTS version at the time of writing.
# To ensure security and compatibility, regularly update the NODE_VERSION ARG to the latest LTS version.
ARG NODE_VERSION=24.13.0-slim
ARG NODE_VERSION=24.18.0-slim
FROM node:${NODE_VERSION} AS dependencies
+17 -2
View File
@@ -60,7 +60,14 @@ export function Header() {
</div>
{/* CTA Button */}
<div className="hidden md:block">
<div className="hidden md:flex items-center gap-8">
<Link
href="https://auth.cloudrite.co.nz"
className="relative text-sm font-medium text-muted-foreground hover:text-foreground transition-colors duration-300 group"
>
Login
<span className="absolute -bottom-1 left-0 w-0 h-0.5 bg-primary transition-all duration-300 group-hover:w-full" />
</Link>
<Button
asChild
className="bg-primary text-primary-foreground hover:bg-primary/90 transition-all duration-300 hover:scale-105 hover:shadow-lg hover:shadow-primary/25"
@@ -115,7 +122,15 @@ export function Header() {
))}
<Button
asChild
className="w-full mt-4 bg-primary text-primary-foreground hover:bg-primary/90"
className="w-full mt-4 bg-secondary text-secondary-foreground hover:bg-secondary/90"
>
<Link href="https://auth.cloudrite.co.nz" onClick={() => setIsMobileMenuOpen(false)}>
Login
</Link>
</Button>
<Button
asChild
className="w-full bg-primary text-primary-foreground hover:bg-primary/90"
>
<Link href="#contact" onClick={() => setIsMobileMenuOpen(false)}>
Get in Touch
+13 -13
View File
@@ -5,11 +5,11 @@ import { Button } from "@/components/ui/button"
import { ArrowRight } from "lucide-react"
import Link from "next/link"
function FloatingElement({ delay = 0, duration = 20, children, className = "" }: {
function FloatingElement({ delay = 0, duration = 20, children, className = "" }: {
delay?: number
duration?: number
children: React.ReactNode
className?: string
className?: string
}) {
return (
<div
@@ -85,7 +85,7 @@ export function Hero() {
>
{/* Background Elements */}
<GridPattern />
{/* Floating decorative elements */}
<FloatingElement delay={0} duration={25} className="top-[15%] left-[10%]">
<div className="w-32 h-32 border border-primary/20 rounded-full" />
@@ -96,7 +96,7 @@ export function Hero() {
<FloatingElement delay={10} duration={22} className="bottom-[20%] left-[20%]">
<div className="w-16 h-16 bg-primary/10 rounded-lg" />
</FloatingElement>
{/* Glow effect */}
<div
className="absolute w-[600px] h-[600px] rounded-full bg-primary/10 blur-[120px] transition-transform duration-500 ease-out"
@@ -117,8 +117,8 @@ export function Hero() {
<AnimatedText text="Every Business" className="mb-2 pb-1" />
<AnimatedText text="Needs an" className="mb-2 pb-1" />
<span className="relative inline-block pb-2">
<AnimatedText
text="I.T Guy"
<AnimatedText
text="I.T Guy"
className="text-primary"
/>
<div className="absolute -inset-2 bg-primary/20 blur-2xl -z-10 animate-pulse" />
@@ -127,16 +127,16 @@ export function Hero() {
{/* Subtitle */}
<p className="max-w-2xl mx-auto text-lg md:text-xl text-muted-foreground mb-12 animate-fade-in animation-delay-500">
From websites and cloud infrastructure to computer repairs and I.T support —
From websites and cloud infrastructure to computer repairs and I.T support —
we help small businesses thrive in the digital world.
</p>
{/* CTA Buttons */}
<div className="flex flex-col sm:flex-row items-center justify-center gap-4 animate-fade-in animation-delay-700">
<div className="flex flex-col sm:flex-row items-center justify-center gap-4 animate-fade-in animation-delay-700 max-w-36 mx-auto">
<Button
asChild
size="lg"
className="group bg-primary text-primary-foreground hover:bg-primary/90 px-8 py-6 text-lg transition-all duration-300 hover:scale-105 hover:shadow-xl hover:shadow-primary/25"
className="group bg-primary text-primary-foreground hover:bg-primary/90 w-full py-6 text-lg transition-all duration-300 hover:scale-105 hover:shadow-xl hover:shadow-primary/25"
>
<Link href="#contact">
Let&apos;s Talk
@@ -147,7 +147,7 @@ export function Hero() {
asChild
variant="outline"
size="lg"
className="px-8 py-6 text-lg border-border hover:bg-card hover:border-primary/50 transition-all duration-300"
className="w-full py-6 text-lg border-border hover:bg-card hover:border-primary/50 transition-all duration-300"
>
<Link href="#services">Our Services</Link>
</Button>
@@ -179,17 +179,17 @@ export function Hero() {
0%, 100% { transform: translateY(0px) rotate(0deg); }
50% { transform: translateY(-20px) rotate(5deg); }
}
.animate-fade-in {
animation: fadeIn 0.8s ease-out forwards;
opacity: 0;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.animation-delay-500 { animation-delay: 500ms; }
.animation-delay-700 { animation-delay: 700ms; }
.animation-delay-1000 { animation-delay: 1000ms; }
+1 -1
View File
@@ -61,7 +61,7 @@
},
"devDependencies": {
"@tailwindcss/postcss": "^4.2.0",
"@types/node": "^22",
"@types/node": "^24",
"@types/react": "19.2.14",
"@types/react-dom": "19.2.3",
"postcss": "^8.5",
+10 -9
View File
@@ -160,8 +160,8 @@ importers:
specifier: ^4.2.0
version: 4.2.2
'@types/node':
specifier: ^22
version: 22.19.15
specifier: ^24
version: 24.13.3
'@types/react':
specifier: 19.2.14
version: 19.2.14
@@ -1219,8 +1219,8 @@ packages:
'@types/[email protected]':
resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==}
'@types/node@22.19.15':
resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==}
'@types/node@24.13.3':
resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==}
'@types/[email protected]':
resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
@@ -1646,6 +1646,7 @@ packages:
[email protected]:
resolution: {integrity: sha512-cIvMxDfpAmqAmVgc4yb7pgm/O1tmmkl/CjrvXuW+62/+7jj/iF9Ykm+hb/UJt42TREHMyd3gb+pkgoa2MxgDIw==}
engines: {node: '>=14'}
deprecated: 1.x and 2.x branches are no longer active. Bump to Recharts v3 to receive latest features and bugfixes. See https://github.com/recharts/recharts/wiki/3.0-migration-guide
peerDependencies:
react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -1709,8 +1710,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
undici-types@7.18.2:
resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
[email protected]:
resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
@@ -2723,9 +2724,9 @@ snapshots:
'@types/[email protected]': {}
'@types/node@22.19.15':
'@types/node@24.13.3':
dependencies:
undici-types: 6.21.0
undici-types: 7.18.2
'@types/[email protected](@types/[email protected])':
dependencies:
@@ -3153,7 +3154,7 @@ snapshots:
[email protected]: {}
undici-types@6.21.0: {}
undici-types@7.18.2: {}
[email protected]([email protected]):
dependencies:
+2
View File
@@ -0,0 +1,2 @@
allowBuilds:
sharp: false