footer added, some design changes, etc...
This commit is contained in:
parent
71a12f8c0e
commit
40041f2e14
@ -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>
|
||||
);
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
73
src/components/footer.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
@ -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>
|
||||
);
|
||||
|
||||
@ -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];
|
||||
|
||||
@ -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|.*\\..*).*)"],
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user