footer added, some design changes, etc...

This commit is contained in:
dimitar 2025-03-28 18:24:21 +01:00
parent 71a12f8c0e
commit 40041f2e14
7 changed files with 84 additions and 51 deletions

View File

@ -1,7 +1,6 @@
// ngc/src/app/[locale]/about/page.tsx
import { unstable_setRequestLocale } from "next-intl/server";
import { getTranslations } from "next-intl/server";
import Image from "next/image";
// import Image from "next/image";
type Props = {
params: { locale: string };
@ -12,7 +11,7 @@ export default async function AboutPage({ params: { locale } }: Props) {
const t = await getTranslations("about");
return (
<div className="py-12">
<div className="min-h-screen py-12 flex items-center justify-center">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="lg:text-center">
<h2 className="text-base text-blue-600 font-semibold tracking-wide uppercase">
@ -26,7 +25,7 @@ export default async function AboutPage({ params: { locale } }: Props) {
</p>
</div>
<div className="mt-16">
<div className="mt-28">
<div className="grid grid-cols-1 gap-12 lg:grid-cols-3">
{[1, 2, 3].map((index) => (
<div key={index} className="pt-6">
@ -62,35 +61,6 @@ export default async function AboutPage({ params: { locale } }: Props) {
))}
</div>
</div>
<div className="mt-20">
<h3 className="text-2xl font-bold text-gray-900 dark:text-white mb-8 lg:text-center">
{t("teamTitle")}
</h3>
<div className="grid grid-cols-1 gap-12 sm:grid-cols-2 lg:grid-cols-4">
{[1, 2, 3, 4].map((index) => (
<div key={index} className="text-center">
<div className="relative mx-auto h-40 w-40 overflow-hidden rounded-full">
<Image
className="h-full w-full object-cover"
src={`/team-member-${index}.jpg`}
alt={t(`team.${index}.name`)}
width={160}
height={160}
/>
</div>
<div className="mt-4">
<h4 className="text-lg font-semibold">
{t(`team.${index}.name`)}
</h4>
<p className="text-sm text-gray-500 dark:text-gray-400">
{t(`team.${index}.role`)}
</p>
</div>
</div>
))}
</div>
</div>
</div>
</div>
);

View File

@ -5,6 +5,7 @@ import { locales } from "@/i18n/config";
import { ThemeProvider } from "@/components/theme-provider";
import { Navbar } from "@/components/navbar";
import { unstable_setRequestLocale } from "next-intl/server";
import { Footer } from "@/components/footer";
const inter = Inter({
subsets: ["latin"],
@ -40,8 +41,9 @@ export default async function LocaleLayout({
<body className={`${inter.variable} ${robotoMono.variable} antialiased`}>
<ThemeProvider>
<Navbar />
<main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<main className="">
{children}
<Footer />
</main>
</ThemeProvider>
</body>

View File

@ -7,6 +7,7 @@ type Props = {
export default async function Home({ params: { locale } }: Props) {
unstable_setRequestLocale(locale);
// const t = await getTranslations(locale);
return (
<>

73
src/components/footer.tsx Normal file
View File

@ -0,0 +1,73 @@
export async function Footer() {
return (
<footer className="w-full bg-white dark:bg-gray-900 border-t border-gray-200 dark:border-gray-800">
<div className="max-w-7xl mx-auto px-4 py-8">
<div className="flex flex-col md:flex-row justify-between items-center space-y-4 md:space-y-0">
<div className="flex items-center">
<p className="text-sm text-gray-600 dark:text-gray-400">
© {new Date().getFullYear()}{" "}
<span className="text-lg text-cyan-500">NGC</span> All rights
reserved.
</p>
</div>
{/* Navigation Links */}
<div className="flex space-x-6">
<a
href="#"
className="text-sm text-gray-600 hover:text-blue-600 dark:text-gray-400 dark:hover:text-blue-500 transition-colors"
>
About
</a>
<a
href="#"
className="text-sm text-gray-600 hover:text-blue-600 dark:text-gray-400 dark:hover:text-blue-500 transition-colors"
>
Privacy
</a>
<a
href="#"
className="text-sm text-gray-600 hover:text-blue-600 dark:text-gray-400 dark:hover:text-blue-500 transition-colors"
>
Terms
</a>
</div>
{/* Social Links */}
<div className="flex space-x-4">
<a
href="#"
className="text-gray-400 hover:text-blue-600 dark:hover:text-blue-500 transition-colors"
>
<svg
className="h-5 w-5"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" />
</svg>
</a>
<a
href="#"
className="text-gray-400 hover:text-blue-600 dark:hover:text-blue-500 transition-colors"
>
<svg
className="h-5 w-5"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fillRule="evenodd"
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
clipRule="evenodd"
/>
</svg>
</a>
</div>
</div>
</div>
</footer>
);
}

View File

@ -62,7 +62,7 @@ export async function Hero() {
<Button variant="secondary">{t("secondaryButton")}</Button>
</div>
</div>
<div className="mx-auto mt-16 flex max-w-2xl sm:mt-24 lg:ml-10 lg:mt-0 lg:mr-0 lg:max-w-none lg:flex-none xl:ml-32">
{/* <div className="mx-auto mt-16 flex max-w-2xl sm:mt-24 lg:ml-10 lg:mt-0 lg:mr-0 lg:max-w-none lg:flex-none xl:ml-32">
<div className="max-w-3xl flex-none sm:max-w-5xl lg:max-w-none">
<Image
src="/hero-image.webp"
@ -72,7 +72,7 @@ export async function Hero() {
className="w-[76rem] rounded-md bg-white/5 shadow-2xl ring-1 ring-white/10"
/>
</div>
</div>
</div> */}
</div>
</div>
);

View File

@ -1,3 +1,3 @@
export const defaultLocale = "en";
export const defaultLocale = "mk";
export const locales = ["en", "mk", "sr"] as const;
export type Locale = (typeof locales)[number];

View File

@ -2,24 +2,11 @@ import createMiddleware from "next-intl/middleware";
import { locales, defaultLocale } from "./i18n/config";
export default createMiddleware({
// A list of all locales that are supported
locales,
// Used when no locale matches
defaultLocale,
// If this locale is matched, pathnames work without a prefix (e.g. `/about`)
localePrefix: "always",
});
// Apply middleware to all routes except static files and api routes
export const config = {
matcher: [
// Enable a redirect to a matching locale at the root
"/",
// Set a cookie to remember the previous locale for
// all requests that have a locale prefix
"/(mk|en|sr)/:path*",
// Enable redirects that add missing locales
// (e.g. `/pathnames` -> `/en/pathnames`)
"/((?!api|_next|_vercel|.*\\..*).*)",
],
matcher: ["/", "/(mk|en|sr)/:path*", "/((?!api|_next|_vercel|.*\\..*).*)"],
};