forked from UKSOURCE/hailearning.edu.vn
Merge branch 'main' of https://gits.techvanguard.vn/UKSOURCE/hailearning.edu.vn into fix/thanh-23032026-style-scss
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -43,3 +43,4 @@ next-env.d.ts
|
|||||||
#vs code
|
#vs code
|
||||||
/.vscode
|
/.vscode
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
standalone-deploy.tar.gz
|
||||||
@@ -6,7 +6,7 @@ export default function Loader() {
|
|||||||
const [show, setShow] = useState(true);
|
const [show, setShow] = useState(true);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const timer = setTimeout(() => setShow(false), 700);
|
const timer = setTimeout(() => setShow(false), 1100);
|
||||||
return () => clearTimeout(timer);
|
return () => clearTimeout(timer);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@@ -17,13 +17,39 @@ export default function Loader() {
|
|||||||
<div className="animation-preloader">
|
<div className="animation-preloader">
|
||||||
<div className="spinner"></div>
|
<div className="spinner"></div>
|
||||||
<div className="txt-loading">
|
<div className="txt-loading">
|
||||||
<span data-text-preloader="V" className="letters-loading">V</span>
|
<span data-text-preloader="H" className="letters-loading">
|
||||||
<span data-text-preloader="I" className="letters-loading">I</span>
|
H
|
||||||
<span data-text-preloader="S" className="letters-loading">S</span>
|
</span>
|
||||||
<span data-text-preloader="A" className="letters-loading">A</span>
|
<span data-text-preloader="A" className="letters-loading">
|
||||||
<span data-text-preloader="W" className="letters-loading">W</span>
|
A
|
||||||
<span data-text-preloader="A" className="letters-loading">A</span>
|
</span>
|
||||||
<span data-text-preloader="Y" className="letters-loading">Y</span>
|
<span data-text-preloader="I" className="letters-loading">
|
||||||
|
I
|
||||||
|
</span>
|
||||||
|
<span data-text-preloader="L" className="letters-loading">
|
||||||
|
L
|
||||||
|
</span>
|
||||||
|
<span data-text-preloader="E" className="letters-loading">
|
||||||
|
E
|
||||||
|
</span>
|
||||||
|
<span data-text-preloader="A" className="letters-loading">
|
||||||
|
A
|
||||||
|
</span>
|
||||||
|
<span data-text-preloader="R" className="letters-loading">
|
||||||
|
R
|
||||||
|
</span>
|
||||||
|
<span data-text-preloader="N" className="letters-loading">
|
||||||
|
N
|
||||||
|
</span>
|
||||||
|
<span data-text-preloader="I" className="letters-loading">
|
||||||
|
I
|
||||||
|
</span>
|
||||||
|
<span data-text-preloader="N" className="letters-loading">
|
||||||
|
N
|
||||||
|
</span>
|
||||||
|
<span data-text-preloader="G" className="letters-loading">
|
||||||
|
G
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<p className="text-center">Loading</p>
|
<p className="text-center">Loading</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -46,4 +72,3 @@ export default function Loader() {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import MouseCursor from "./components/MouseCursor";
|
|||||||
import Script from "next/script";
|
import Script from "next/script";
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Visaway – Immigration & Visa Consulting HTML Template",
|
title: "H.A.I Learning",
|
||||||
description: "Visaway – Immigration & Visa Consulting HTML Template",
|
description: "H.A.I Learning",
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import type { NextConfig } from "next";
|
|||||||
|
|
||||||
const nextConfig: NextConfig = {
|
const nextConfig: NextConfig = {
|
||||||
/* config options here */
|
/* config options here */
|
||||||
|
output: "standalone",
|
||||||
};
|
};
|
||||||
|
|
||||||
export default nextConfig;
|
export default nextConfig;
|
||||||
|
|||||||
6538
package-lock.json
generated
6538
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -45,9 +45,9 @@ Version: 1.0.0
|
|||||||
--body: #fff;
|
--body: #fff;
|
||||||
--black: #000;
|
--black: #000;
|
||||||
--white: #fff;
|
--white: #fff;
|
||||||
--theme: #E13833;
|
--theme: #BA312E;
|
||||||
--theme-2: #0048B4;
|
--theme-2: #071830;
|
||||||
--header: #151A26;
|
--header: #151a26;
|
||||||
--text: #535761;
|
--text: #535761;
|
||||||
--text-2: #0B4E3D;
|
--text-2: #0B4E3D;
|
||||||
--border: #C9C9C9;
|
--border: #C9C9C9;
|
||||||
@@ -6525,26 +6525,71 @@ html.lenis, html.lenis body {
|
|||||||
color: var(--theme);
|
color: var(--theme);
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
.preloader .animation-preloader .txt-loading .letters-loading:nth-child(2):before {
|
.preloader
|
||||||
|
.animation-preloader
|
||||||
|
.txt-loading
|
||||||
|
.letters-loading:nth-child(2):before {
|
||||||
|
animation-delay: 0.1s;
|
||||||
|
}
|
||||||
|
.preloader
|
||||||
|
.animation-preloader
|
||||||
|
.txt-loading
|
||||||
|
.letters-loading:nth-child(3):before {
|
||||||
animation-delay: 0.2s;
|
animation-delay: 0.2s;
|
||||||
}
|
}
|
||||||
.preloader .animation-preloader .txt-loading .letters-loading:nth-child(3):before {
|
.preloader
|
||||||
|
.animation-preloader
|
||||||
|
.txt-loading
|
||||||
|
.letters-loading:nth-child(4):before {
|
||||||
|
animation-delay: 0.3s;
|
||||||
|
}
|
||||||
|
.preloader
|
||||||
|
.animation-preloader
|
||||||
|
.txt-loading
|
||||||
|
.letters-loading:nth-child(5):before {
|
||||||
animation-delay: 0.4s;
|
animation-delay: 0.4s;
|
||||||
}
|
}
|
||||||
.preloader .animation-preloader .txt-loading .letters-loading:nth-child(4):before {
|
.preloader
|
||||||
|
.animation-preloader
|
||||||
|
.txt-loading
|
||||||
|
.letters-loading:nth-child(6):before {
|
||||||
|
animation-delay: 0.5s;
|
||||||
|
}
|
||||||
|
.preloader
|
||||||
|
.animation-preloader
|
||||||
|
.txt-loading
|
||||||
|
.letters-loading:nth-child(7):before {
|
||||||
animation-delay: 0.6s;
|
animation-delay: 0.6s;
|
||||||
}
|
}
|
||||||
.preloader .animation-preloader .txt-loading .letters-loading:nth-child(5):before {
|
.preloader
|
||||||
|
.animation-preloader
|
||||||
|
.txt-loading
|
||||||
|
.letters-loading:nth-child(8):before {
|
||||||
|
animation-delay: 0.7s;
|
||||||
|
}
|
||||||
|
.preloader
|
||||||
|
.animation-preloader
|
||||||
|
.txt-loading
|
||||||
|
.letters-loading:nth-child(8):before {
|
||||||
animation-delay: 0.8s;
|
animation-delay: 0.8s;
|
||||||
}
|
}
|
||||||
.preloader .animation-preloader .txt-loading .letters-loading:nth-child(6):before {
|
.preloader
|
||||||
|
.animation-preloader
|
||||||
|
.txt-loading
|
||||||
|
.letters-loading:nth-child(9):before {
|
||||||
|
animation-delay: 0.9s;
|
||||||
|
}
|
||||||
|
.preloader
|
||||||
|
.animation-preloader
|
||||||
|
.txt-loading
|
||||||
|
.letters-loading:nth-child(10):before {
|
||||||
animation-delay: 1s;
|
animation-delay: 1s;
|
||||||
}
|
}
|
||||||
.preloader .animation-preloader .txt-loading .letters-loading:nth-child(7):before {
|
.preloader
|
||||||
animation-delay: 1.2s;
|
.animation-preloader
|
||||||
}
|
.txt-loading
|
||||||
.preloader .animation-preloader .txt-loading .letters-loading:nth-child(8):before {
|
.letters-loading:nth-child(11):before {
|
||||||
animation-delay: 1.4s;
|
animation-delay: 1.1s;
|
||||||
}
|
}
|
||||||
.preloader .animation-preloader .txt-loading .letters-loading::before {
|
.preloader .animation-preloader .txt-loading .letters-loading::before {
|
||||||
animation: letters-loading 4s infinite;
|
animation: letters-loading 4s infinite;
|
||||||
|
|||||||
BIN
public/assets/img/logo/Logo_HaiLearning.jpg
Normal file
BIN
public/assets/img/logo/Logo_HaiLearning.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 60 KiB |
43
standalone-build.sh
Executable file
43
standalone-build.sh
Executable file
@@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "=== Next.js Standalone Build ==="
|
||||||
|
|
||||||
|
APP_DIR=$(pwd)
|
||||||
|
BUILD_DIR=".next"
|
||||||
|
STANDALONE_DIR=".next/standalone"
|
||||||
|
|
||||||
|
echo "1. Installing dependencies..."
|
||||||
|
npm install
|
||||||
|
|
||||||
|
echo "2. Building Next.js..."
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
echo "3. Preparing standalone structure..."
|
||||||
|
|
||||||
|
# ensure directories exist
|
||||||
|
mkdir -p $STANDALONE_DIR/.next
|
||||||
|
|
||||||
|
# copy static assets
|
||||||
|
echo "Copying static assets..."
|
||||||
|
cp -r $BUILD_DIR/static $STANDALONE_DIR/.next/ 2>/dev/null || true
|
||||||
|
|
||||||
|
# copy public folder
|
||||||
|
if [ -d "public" ]; then
|
||||||
|
echo "Copying public folder..."
|
||||||
|
cp -r public $STANDALONE_DIR/
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "4. Creating deploy package..."
|
||||||
|
|
||||||
|
tar -czf standalone-deploy.tar.gz \
|
||||||
|
-C $STANDALONE_DIR . \
|
||||||
|
-C $APP_DIR public 2>/dev/null || true
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Build completed."
|
||||||
|
echo "Deploy file: standalone-deploy.tar.gz"
|
||||||
|
echo ""
|
||||||
|
echo "Run on server:"
|
||||||
|
echo "PORT=3005 node server.js"
|
||||||
Reference in New Issue
Block a user