diff --git a/app/[locale]/about/noteFlans/page.tsx b/app/[locale]/about/noteFlans/page.tsx new file mode 100644 index 0000000..1adde5c --- /dev/null +++ b/app/[locale]/about/noteFlans/page.tsx @@ -0,0 +1,155 @@ +"use client"; + +import Image from "next/image"; +import { motion } from "framer-motion"; +import { FileText, ChevronRight } from "lucide-react"; +import { useTranslations } from "next-intl"; +import { Statistics } from "@/components/pages/home"; + +const ease = [0.22, 1, 0.36, 1] as [number, number, number, number]; + +export default function NoteFlansPage() { + const t = useTranslations(); + + return ( + <> + +
+ {/* ── Hero ── */} +
+ {t("about.noteFlansPage.hero.title")} + + {/* Layered overlays */} +
+
+ + {/* Grain texture */} +
+ + {/* Content anchored bottom-left */} +
+ + {t("about.noteFlansPage.hero.eyebrow")} + + + + {t("about.noteFlansPage.hero.titleLine1")} +
+ + {t("about.noteFlansPage.hero.titleLine2")} + +
+ + + {t("about.noteFlansPage.hero.description")} + + + {/* Animated underline */} + +
+
+ + {/* ── Content section ── */} +
+ {/* Section label */} + + {t("about.noteFlansPage.section.label")} + + + {/* Two-column layout: description left, details right */} +
+ {/* Left: main description */} + +
+ {t("about.noteFlansPage.section.cta")} + +
+
+ + {/* Right: feature list */} + + {(t.raw("about.noteFlansPage.section.features") as string[]).map( + (feature: string, i: number) => ( +
  • +
    + +
    + + {feature} + +
  • + ), + )} +
    +
    +
    + + {/* ── Bottom strip ── */} + +

    + {t("about.noteFlansPage.footer.label")} +

    +
    + +
    + + ); +} diff --git a/app/[locale]/about/notePP/page.tsx b/app/[locale]/about/notePP/page.tsx new file mode 100644 index 0000000..64f21ff --- /dev/null +++ b/app/[locale]/about/notePP/page.tsx @@ -0,0 +1,147 @@ +"use client"; + +import Image from "next/image"; +import { motion } from "framer-motion"; +import { FileText, ChevronRight } from "lucide-react"; +import { useTranslations } from "next-intl"; +import { Statistics } from "@/components/pages/home"; + +const ease = [0.22, 1, 0.36, 1] as [number, number, number, number]; + +export default function NotePPPage() { + const t = useTranslations(); + + return ( + <> + +
    + {/* Hero Section */} +
    + {t("about.notePPPage.hero.title")} + +
    +
    + +
    + +
    + + {t("about.notePPPage.hero.eyebrow")} + + + + {t("about.notePPPage.hero.titleLine1")} +
    + + {t("about.notePPPage.hero.titleLine2")} + +
    + + + {t("about.notePPPage.hero.description")} + + + +
    +
    + + {/* Content Section */} +
    + + {t("about.notePPPage.section.label")} + + +
    + +
    + {t("about.notePPPage.section.cta")} + +
    +
    + + + {(t.raw("about.notePPPage.section.features") as string[]).map( + (feature: string, i: number) => ( +
  • +
    + +
    + + {feature} + +
  • + ), + )} +
    +
    +
    + + {/* Bottom strip */} + +

    + {t("about.notePPPage.footer.label")} +

    +
    + +
    + + ); +} diff --git a/app/[locale]/about/noteTrailer/page.tsx b/app/[locale]/about/noteTrailer/page.tsx new file mode 100644 index 0000000..e6d0243 --- /dev/null +++ b/app/[locale]/about/noteTrailer/page.tsx @@ -0,0 +1,147 @@ +"use client"; + +import Image from "next/image"; +import { motion } from "framer-motion"; +import { FileText, ChevronRight } from "lucide-react"; +import { useTranslations } from "next-intl"; +import { Statistics } from "@/components/pages/home"; + +const ease = [0.22, 1, 0.36, 1] as [number, number, number, number]; + +export default function NoteTrailerPage() { + const t = useTranslations(); + + return ( + <> + +
    + {/* Hero Section */} +
    + {t("about.noteTrailerPage.hero.title")} + +
    +
    + +
    + +
    + + {t("about.noteTrailerPage.hero.eyebrow")} + + + + {t("about.noteTrailerPage.hero.titleLine1")} +
    + + {t("about.noteTrailerPage.hero.titleLine2")} + +
    + + + {t("about.noteTrailerPage.hero.description")} + + + +
    +
    + + {/* Content Section */} +
    + + {t("about.noteTrailerPage.section.label")} + + +
    + +
    + {t("about.noteTrailerPage.section.cta")} + +
    +
    + + + {( + t.raw("about.noteTrailerPage.section.features") as string[] + ).map((feature: string, i: number) => ( +
  • +
    + +
    + + {feature} + +
  • + ))} +
    +
    +
    + + {/* Bottom strip */} + +

    + {t("about.noteTrailerPage.footer.label")} +

    +
    + +
    + + ); +} diff --git a/app/[locale]/about/sertificate/page.tsx b/app/[locale]/about/sertificate/page.tsx new file mode 100644 index 0000000..fca38d7 --- /dev/null +++ b/app/[locale]/about/sertificate/page.tsx @@ -0,0 +1,182 @@ +"use client"; + +import Image from "next/image"; +import { motion } from "framer-motion"; +import Link from "next/link"; +import { Download, ExternalLink, Award } from "lucide-react"; +import { useTranslations } from "next-intl"; +import { Statistics } from "@/components/pages/home"; + +export default function SertificatePage() { + const t = useTranslations(); + + const certs = [ + { + id: 1, + src: "/images/about/sertificate.webp", + title: "Sertifikat 1", + desc: "lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", + year: "2024", + }, + ]; + return ( + <> + +
    + {/* ── Hero ── */} +
    + + {t("about.certificatePage.hero.label")} + + + + {t("about.certificatePage.hero.title1")}{" "} + + {t("about.certificatePage.hero.title2")} + + + + + {t("about.certificatePage.hero.description")} + + + {/* Divider */} + +
    + + {/* ── Horizontal scroll track ── */} +
    + {/* Section header */} +
    +
    + + + {certs.length} {t("about.certificatePage.count.suffix")} + +
    +
    + + {/* ── Count strip ── */} + + + {certs.length} + +

    + {t("about.certificatePage.count.description")} +

    +
    + + {/* Scrollable row */} +
    + {certs.map((c, i) => ( + + {/* ── Left: certificate image ── */} +
    + {c.title} +
    + + {/* ── Right: info + actions ── */} +
    + {/* Label + title + desc */} +
    +
    + +

    + {t("about.certificatePage.card.badge")} +

    +
    + +

    + {c.title} +

    + +

    + {c.desc} +

    +
    + + {/* Actions */} +
    + + + {t("about.certificatePage.card.view")} + + + + + {t("about.certificatePage.card.download")} + +
    +
    +
    + ))} + + {/* End spacer */} +
    +
    +
    +
    + + ); +} diff --git a/components/pages/about/innerNavbar.tsx b/components/pages/about/innerNavbar.tsx index ec5ff52..dbfd196 100644 --- a/components/pages/about/innerNavbar.tsx +++ b/components/pages/about/innerNavbar.tsx @@ -11,7 +11,7 @@ export function InnerNavbar() { const tabs = [ { name: t("about.subPages.baza"), value: "baza" }, - { name: t("about.subPages.certificate"), value: "certificate" }, + { name: t("about.subPages.certificate"), value: "sertificate" }, { name: t("about.subPages.notePP"), value: "notePP" }, { name: t("about.subPages.noteTrailer"), value: "noteTrailer" }, { name: t("about.subPages.noteFlans"), value: "noteFlans" }, diff --git a/components/pages/home/banner/banner.tsx b/components/pages/home/banner/banner.tsx index d5dfda7..6f803a6 100644 --- a/components/pages/home/banner/banner.tsx +++ b/components/pages/home/banner/banner.tsx @@ -1,13 +1,8 @@ -import { useLocale, useTranslations } from "next-intl"; -import DotAnimatsiya from "../../../dot/DotAnimatsiya"; -import Link from "next/link"; import { BannerSlider } from "./slider"; export function Banner() { - const t = useTranslations(); - const locale = useLocale(); return ( -
    +
    {/* Background Image */}