diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 8151ff4..b2fb884 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,58 +1,25 @@
import type { Metadata } from "next";
-import { Halant } from "next/font/google";
import { Inter } from "next/font/google";
-import { Nunito_Sans } from "next/font/google";
+import "./styles/variables.css";
import "./globals.css";
-import { ServiceWrapper } from "@/components/ServiceWrapper";
-import Tag from "@/tag/Tag";
-
-const halant = Halant({
- variable: "--font-halant", subsets: ["latin"],
- weight: ["300", "400", "500", "600", "700"],
-});
const inter = Inter({
variable: "--font-inter", subsets: ["latin"],
});
-const nunitoSans = Nunito_Sans({
- variable: "--font-nunito-sans", subsets: ["latin"],
-});
-
export const metadata: Metadata = {
- title: "Smart ERP – Driving Intelligent Growth | Enterprise Platform", description: "Smart ERP unifies operations, finance, and decision-making across your organization. Transform fragmented business systems into a connected ecosystem with real-time intelligence and data-driven insights.", keywords: "ERP software, enterprise resource planning, manufacturing ERP, business intelligence, operations management, supply chain, finance integration, smart manufacturing", metadataBase: new URL("https://smarterp.example.com"),
- alternates: {
- canonical: "https://smarterp.example.com"},
- openGraph: {
- title: "Smart ERP – Driving Intelligent Growth", description: "Unified business platform for manufacturing, operations, finance, and intelligent decision-making.", url: "https://smarterp.example.com", siteName: "Smart ERP", images: [
- {
- url: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AWn4ywnX9oOwYiN1Z30Ju8qMH6/a-modern-sleek-software-dashboard-interf-1772717506288-13ddd917.png", alt: "Smart ERP unified dashboard"},
- ],
- type: "website"},
- twitter: {
- card: "summary_large_image", title: "Smart ERP – Driving Intelligent Growth", description: "Transform your fragmented business operations into a unified, intelligent ecosystem.", images: [
- "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AWn4ywnX9oOwYiN1Z30Ju8qMH6/a-modern-sleek-software-dashboard-interf-1772717506288-13ddd917.png"],
- },
- robots: {
- index: true,
- follow: true,
- },
-};
+ title: "Smart ERP | Enterprise Intelligence Platform", description: "Transform your business with unified operations, real-time intelligence, and connected workflows"};
export default function RootLayout({
children,
-}: Readonly<{
+}: {
children: React.ReactNode;
-}>) {
+}) {
return (
-
-
-
-
- {children}
-
+
+
+ {children}
+
-
);
}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 6454fe3..03c4984 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -13,6 +13,12 @@ import TestimonialCardThirteen from "@/components/sections/testimonial/Testimoni
import ContactCTA from "@/components/sections/contact/ContactCTA";
import FooterSimple from "@/components/sections/footer/FooterSimple";
import { AlertCircle, Award, Building2, MessageCircle, Network, Package, Rocket, TrendingUp, Zap } from "lucide-react";
+import dynamic from "next/dynamic";
+
+const IDMSLogo3D = dynamic(() => import("@/components/3d/IDMSLogo3D"), {
+ ssr: false,
+ loading: () =>
,
+});
export default function LandingPage() {
return (
@@ -334,6 +340,12 @@ export default function LandingPage() {
bottomRightText="Driving Intelligent Growth"
/>
+
+
);
}
diff --git a/src/components/3d/IDMSLogo3D.tsx b/src/components/3d/IDMSLogo3D.tsx
new file mode 100644
index 0000000..c9d8807
--- /dev/null
+++ b/src/components/3d/IDMSLogo3D.tsx
@@ -0,0 +1,221 @@
+"use client";
+
+import React, { useEffect, useRef } from "react";
+
+const IDMSLogo3D = () => {
+ const containerRef = useRef(null);
+ const sceneRef = useRef(null);
+ const cameraRef = useRef(null);
+ const rendererRef = useRef(null);
+ const groupRef = useRef(null);
+
+ useEffect(() => {
+ // Dynamically import THREE to avoid SSR issues
+ import("three").then((THREE) => {
+ if (!containerRef.current) return;
+
+ // Scene setup
+ const scene = new THREE.Scene();
+ scene.background = new THREE.Color(0x000000);
+ sceneRef.current = scene;
+
+ const camera = new THREE.PerspectiveCamera(
+ 75,
+ containerRef.current.clientWidth / containerRef.current.clientHeight,
+ 0.1,
+ 1000
+ );
+ camera.position.z = 8;
+ cameraRef.current = camera;
+
+ const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
+ renderer.setSize(
+ containerRef.current.clientWidth,
+ containerRef.current.clientHeight
+ );
+ renderer.shadowMap.enabled = true;
+ renderer.shadowMap.type = THREE.PCFShadowShadowMap;
+ containerRef.current.appendChild(renderer.domElement);
+ rendererRef.current = renderer;
+
+ // Create group for rotation
+ const group = new THREE.Group();
+ scene.add(group);
+ groupRef.current = group;
+
+ // Lighting
+ const ambientLight = new THREE.AmbientLight(0xffffff, 0.5);
+ scene.add(ambientLight);
+
+ const pointLight1 = new THREE.PointLight(0x00ffff, 2, 100);
+ pointLight1.position.set(10, 10, 10);
+ scene.add(pointLight1);
+
+ const pointLight2 = new THREE.PointLight(0xff00ff, 2, 100);
+ pointLight2.position.set(-10, -10, 10);
+ scene.add(pointLight2);
+
+ const pointLight3 = new THREE.PointLight(0xff1493, 1.5, 100);
+ pointLight3.position.set(0, 10, -10);
+ scene.add(pointLight3);
+
+ // Create interconnected geometric shapes representing IDMS systems
+ const geometry1 = new THREE.IcosahedronGeometry(1.5, 3);
+ const geometry2 = new THREE.OctahedronGeometry(1.2, 2);
+ const geometry3 = new THREE.TetrahedronGeometry(1, 1);
+
+ // Chrome metallic material with chromatic reflections
+ const chromeMatPrimary = new THREE.MeshStandardMaterial({
+ color: 0xcccccc,
+ metalness: 0.95,
+ roughness: 0.05,
+ emissive: 0x0066ff,
+ emissiveIntensity: 0.3,
+ });
+
+ const chromeMatSecondary = new THREE.MeshStandardMaterial({
+ color: 0xdddddd,
+ metalness: 0.92,
+ roughness: 0.08,
+ emissive: 0xff00ff,
+ emissiveIntensity: 0.25,
+ });
+
+ const chromeMatTertiary = new THREE.MeshStandardMaterial({
+ color: 0xbbbbbb,
+ metalness: 0.93,
+ roughness: 0.06,
+ emissive: 0xff1493,
+ emissiveIntensity: 0.2,
+ });
+
+ const mesh1 = new THREE.Mesh(geometry1, chromeMatPrimary);
+ mesh1.position.set(0, 0, 0);
+ mesh1.castShadow = true;
+ mesh1.receiveShadow = true;
+
+ const mesh2 = new THREE.Mesh(geometry2, chromeMatSecondary);
+ mesh2.position.set(2, 1, 0);
+ mesh2.scale.set(0.7, 0.7, 0.7);
+ mesh2.castShadow = true;
+ mesh2.receiveShadow = true;
+
+ const mesh3 = new THREE.Mesh(geometry3, chromeMatTertiary);
+ mesh3.position.set(-1.5, -1.2, 0);
+ mesh3.scale.set(0.6, 0.6, 0.6);
+ mesh3.castShadow = true;
+ mesh3.receiveShadow = true;
+
+ group.add(mesh1);
+ group.add(mesh2);
+ group.add(mesh3);
+
+ // Create connecting lines (edges) with glow
+ const lineMaterial = new THREE.LineBasicMaterial({
+ color: 0x00ffff,
+ linewidth: 2,
+ });
+
+ const linePoints = [
+ new THREE.Vector3(0, 0, 0),
+ new THREE.Vector3(2, 1, 0),
+ new THREE.Vector3(-1.5, -1.2, 0),
+ new THREE.Vector3(0, 0, 0),
+ ];
+
+ const lineGeometry = new THREE.BufferGeometry().setFromPoints(linePoints);
+ const lines = new THREE.Line(lineGeometry, lineMaterial);
+ group.add(lines);
+
+ // Glow effect around objects
+ const glowGeometry = new THREE.IcosahedronGeometry(1.8, 3);
+ const glowMaterial = new THREE.MeshBasicMaterial({
+ color: 0x00ffff,
+ transparent: true,
+ opacity: 0.15,
+ side: THREE.BackSide,
+ });
+ const glowMesh = new THREE.Mesh(glowGeometry, glowMaterial);
+ glowMesh.position.set(0, 0, 0);
+ group.add(glowMesh);
+
+ // Secondary glow with pink/purple
+ const glowGeometry2 = new THREE.OctahedronGeometry(1.5, 2);
+ const glowMaterial2 = new THREE.MeshBasicMaterial({
+ color: 0xff00ff,
+ transparent: true,
+ opacity: 0.1,
+ side: THREE.BackSide,
+ });
+ const glowMesh2 = new THREE.Mesh(glowGeometry2, glowMaterial2);
+ glowMesh2.position.set(0, 0, 0);
+ group.add(glowMesh2);
+
+ // Animation loop
+ const animate = () => {
+ requestAnimationFrame(animate);
+
+ // Slow ambient rotation
+ if (groupRef.current) {
+ groupRef.current.rotation.x += 0.0008;
+ groupRef.current.rotation.y += 0.001;
+ groupRef.current.rotation.z += 0.0005;
+ }
+
+ // Subtle mesh movements for dynamic effect
+ mesh1.rotation.x += 0.002;
+ mesh1.rotation.y += 0.003;
+
+ mesh2.rotation.x -= 0.001;
+ mesh2.rotation.z += 0.0025;
+
+ mesh3.rotation.y -= 0.0015;
+ mesh3.rotation.z += 0.001;
+
+ // Pulsing glow effect
+ const pulse = Math.sin(Date.now() * 0.001) * 0.05 + 0.15;
+ glowMaterial.opacity = pulse;
+ glowMaterial2.opacity = pulse * 0.65;
+
+ if (rendererRef.current) {
+ rendererRef.current.render(scene, camera);
+ }
+ };
+
+ animate();
+
+ // Handle resize
+ const handleResize = () => {
+ if (!containerRef.current || !cameraRef.current || !rendererRef.current)
+ return;
+
+ const width = containerRef.current.clientWidth;
+ const height = containerRef.current.clientHeight;
+ cameraRef.current.aspect = width / height;
+ cameraRef.current.updateProjectionMatrix();
+ rendererRef.current.setSize(width, height);
+ };
+
+ window.addEventListener("resize", handleResize);
+
+ return () => {
+ window.removeEventListener("resize", handleResize);
+ if (containerRef.current && rendererRef.current) {
+ containerRef.current.removeChild(rendererRef.current.domElement);
+ }
+ };
+ });
+ }, []);
+
+ return (
+
+ );
+};
+
+export default IDMSLogo3D;