Merge branch 'main' of https://git.gnxsoft.com/gnx/GNX-WEB
This commit is contained in:
@@ -12,7 +12,11 @@ import ServicesInitAnimations from "@/components/pages/services/ServicesInitAnim
|
||||
import { Service } from "@/lib/api/serviceService";
|
||||
import { generateServiceMetadata } from "@/lib/seo/metadata";
|
||||
import { ServiceSchema, BreadcrumbSchema } from "@/components/shared/seo/StructuredData";
|
||||
<<<<<<< HEAD
|
||||
import { API_CONFIG, getApiHeaders } from "@/lib/config/api";
|
||||
=======
|
||||
import { API_CONFIG } from "@/lib/config/api";
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
|
||||
interface ServicePageProps {
|
||||
params: Promise<{
|
||||
@@ -24,6 +28,7 @@ interface ServicePageProps {
|
||||
// This pre-generates known pages, but new pages can still be generated on-demand
|
||||
export async function generateStaticParams() {
|
||||
try {
|
||||
<<<<<<< HEAD
|
||||
// Use internal API URL for server-side requests
|
||||
const apiUrl = process.env.INTERNAL_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:1086';
|
||||
const response = await fetch(
|
||||
@@ -31,6 +36,15 @@ export async function generateStaticParams() {
|
||||
{
|
||||
method: 'GET',
|
||||
headers: getApiHeaders(),
|
||||
=======
|
||||
const response = await fetch(
|
||||
`${API_CONFIG.BASE_URL}/api/services/`,
|
||||
{
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
next: { revalidate: 60 }, // Revalidate every minute for faster image updates
|
||||
}
|
||||
);
|
||||
@@ -57,6 +71,7 @@ export async function generateMetadata({ params }: ServicePageProps) {
|
||||
const { slug } = await params;
|
||||
|
||||
try {
|
||||
<<<<<<< HEAD
|
||||
// Use internal API URL for server-side requests
|
||||
const apiUrl = process.env.INTERNAL_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:1086';
|
||||
const response = await fetch(
|
||||
@@ -64,6 +79,15 @@ export async function generateMetadata({ params }: ServicePageProps) {
|
||||
{
|
||||
method: 'GET',
|
||||
headers: getApiHeaders(),
|
||||
=======
|
||||
const response = await fetch(
|
||||
`${API_CONFIG.BASE_URL}/api/services/${slug}/`,
|
||||
{
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
next: { revalidate: 60 }, // Revalidate every minute for faster image updates
|
||||
}
|
||||
);
|
||||
@@ -87,6 +111,7 @@ const ServicePage = async ({ params }: ServicePageProps) => {
|
||||
const { slug } = await params;
|
||||
|
||||
try {
|
||||
<<<<<<< HEAD
|
||||
// Use internal API URL for server-side requests
|
||||
const apiUrl = process.env.INTERNAL_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:1086';
|
||||
const response = await fetch(
|
||||
@@ -94,6 +119,15 @@ const ServicePage = async ({ params }: ServicePageProps) => {
|
||||
{
|
||||
method: 'GET',
|
||||
headers: getApiHeaders(),
|
||||
=======
|
||||
const response = await fetch(
|
||||
`${API_CONFIG.BASE_URL}/api/services/${slug}/`,
|
||||
{
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
next: { revalidate: 60 }, // Revalidate every minute for faster image updates
|
||||
}
|
||||
);
|
||||
|
||||
@@ -12,8 +12,29 @@ type ModalType = 'create' | 'knowledge' | 'status' | null;
|
||||
const SupportCenterPage = () => {
|
||||
// Set metadata for client component
|
||||
useEffect(() => {
|
||||
<<<<<<< HEAD
|
||||
// Only run on client side
|
||||
if (typeof window === 'undefined' || typeof document === 'undefined') return;
|
||||
=======
|
||||
const metadata = createMetadata({
|
||||
title: "Support Center - Enterprise Support & Help Desk",
|
||||
description: "Get 24/7 enterprise support from GNX Soft. Access our knowledge base, create support tickets, check ticket status, and get help with our software solutions and services.",
|
||||
keywords: [
|
||||
"Support Center",
|
||||
"Customer Support",
|
||||
"Help Desk",
|
||||
"Technical Support",
|
||||
"Knowledge Base",
|
||||
"Support Tickets",
|
||||
"Enterprise Support",
|
||||
"IT Support",
|
||||
],
|
||||
url: "/support-center",
|
||||
});
|
||||
|
||||
const titleString = typeof metadata.title === 'string' ? metadata.title : "Support Center | GNX Soft";
|
||||
document.title = titleString;
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
|
||||
try {
|
||||
const metadata = createMetadata({
|
||||
|
||||
@@ -227,7 +227,11 @@ const AboutBanner = () => {
|
||||
|
||||
{/* Social Links */}
|
||||
<div className="social-links">
|
||||
<<<<<<< HEAD
|
||||
<Link href="https://www.linkedin.com" target="_blank" className="social-link">
|
||||
=======
|
||||
<Link href="https://linkedin.com" target="_blank" className="social-link">
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
<i className="fa-brands fa-linkedin-in"></i>
|
||||
</Link>
|
||||
<Link href="https://github.com" target="_blank" className="social-link">
|
||||
|
||||
@@ -117,7 +117,11 @@ const CareerBanner = () => {
|
||||
<ul className="social">
|
||||
<li>
|
||||
<Link
|
||||
<<<<<<< HEAD
|
||||
href="https://www.linkedin.com"
|
||||
=======
|
||||
href="https://linkedin.com"
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
target="_blank"
|
||||
aria-label="connect with us on linkedin"
|
||||
>
|
||||
|
||||
@@ -5,7 +5,10 @@ import Link from "next/link";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useCaseStudy } from "@/lib/hooks/useCaseStudy";
|
||||
import { getImageUrl } from "@/lib/imageUtils";
|
||||
<<<<<<< HEAD
|
||||
import { sanitizeHTML } from "@/lib/security/sanitize";
|
||||
=======
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
|
||||
interface CaseSingleProps {
|
||||
slug: string;
|
||||
|
||||
@@ -84,7 +84,11 @@ const ServicesBanner = () => {
|
||||
<ul className="social">
|
||||
<li>
|
||||
<Link
|
||||
<<<<<<< HEAD
|
||||
href="https://www.linkedin.com"
|
||||
=======
|
||||
href="https://linkedin.com"
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
target="_blank"
|
||||
aria-label="connect with us on linkedin"
|
||||
>
|
||||
|
||||
@@ -289,7 +289,11 @@ const Footer = () => {
|
||||
<div className="col-12 col-lg-6">
|
||||
<div className="social-links justify-content-center justify-content-lg-end">
|
||||
<Link
|
||||
<<<<<<< HEAD
|
||||
href="https://www.linkedin.com"
|
||||
=======
|
||||
href="https://linkedin.com"
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
title="LinkedIn"
|
||||
@@ -298,7 +302,11 @@ const Footer = () => {
|
||||
<i className="fa-brands fa-linkedin-in"></i>
|
||||
</Link>
|
||||
<Link
|
||||
<<<<<<< HEAD
|
||||
href="https://github.com/"
|
||||
=======
|
||||
href="https://github.com"
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
title="GitHub"
|
||||
|
||||
@@ -175,7 +175,11 @@ const OffcanvasMenu = ({
|
||||
<ul className="enterprise-social nav-fade">
|
||||
<li>
|
||||
<Link
|
||||
<<<<<<< HEAD
|
||||
href="https://www.linkedin.com"
|
||||
=======
|
||||
href="https://linkedin.com"
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
target="_blank"
|
||||
aria-label="Connect with us on LinkedIn"
|
||||
>
|
||||
|
||||
@@ -123,9 +123,13 @@ const nextConfig = {
|
||||
// Note: Removed conflicting directives that are ignored with 'strict-dynamic'
|
||||
{
|
||||
key: 'Content-Security-Policy',
|
||||
<<<<<<< HEAD
|
||||
value: process.env.NODE_ENV === 'production'
|
||||
? "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.googletagmanager.com https://www.google-analytics.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https:; font-src 'self' data: https://fonts.gstatic.com; connect-src 'self' https://www.google-analytics.com; frame-src 'self' https://www.google.com; frame-ancestors 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; upgrade-insecure-requests;"
|
||||
: "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.googletagmanager.com https://www.google-analytics.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https: http://localhost:8000 http://localhost:8080; font-src 'self' data: https://fonts.gstatic.com; connect-src 'self' http://localhost:8000 https://www.google-analytics.com; frame-src 'self' https://www.google.com; frame-ancestors 'self'; base-uri 'self'; form-action 'self';"
|
||||
=======
|
||||
value: "default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' https://www.googletagmanager.com https://www.google-analytics.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https: http://localhost:8000 http://localhost:8080; font-src 'self' data: https://fonts.gstatic.com; connect-src 'self' http://localhost:8000 https://www.google-analytics.com; frame-src 'self' https://www.google.com; frame-ancestors 'self'; base-uri 'self'; form-action 'self'"
|
||||
>>>>>>> d7d7a2757a183aa1abd9dbabff804c45298df4e5
|
||||
},
|
||||
// Hide X-Powered-By header from Next.js
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user