diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png index d466214..59641be 100644 Binary files a/public/apple-touch-icon.png and b/public/apple-touch-icon.png differ diff --git a/public/favicon-192.png b/public/favicon-192.png index 68534fe..835d959 100644 Binary files a/public/favicon-192.png and b/public/favicon-192.png differ diff --git a/public/favicon-512.png b/public/favicon-512.png new file mode 100644 index 0000000..e0fc5ae Binary files /dev/null and b/public/favicon-512.png differ diff --git a/public/favicon.ico b/public/favicon.ico index 53c4f3b..c51d2e3 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/illustrations/hero-lines.svg b/public/illustrations/hero-lines.svg new file mode 100644 index 0000000..919eaf5 --- /dev/null +++ b/public/illustrations/hero-lines.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/illustrations/hero-rails.svg b/public/illustrations/hero-rails.svg deleted file mode 100644 index e8bbd01..0000000 --- a/public/illustrations/hero-rails.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/public/partners/ajax-logo-w.png b/public/partners/ajax-logo-w.png new file mode 100644 index 0000000..d5d5ab4 Binary files /dev/null and b/public/partners/ajax-logo-w.png differ diff --git a/public/partners/buffet-logo-w.png b/public/partners/buffet-logo-w.png new file mode 100644 index 0000000..f24b38b Binary files /dev/null and b/public/partners/buffet-logo-w.png differ diff --git a/public/partners/chevalier.png b/public/partners/chevalier.png new file mode 100644 index 0000000..a5e81f2 Binary files /dev/null and b/public/partners/chevalier.png differ diff --git a/public/partners/loko-logo-w.png b/public/partners/loko-logo-w.png new file mode 100644 index 0000000..1d91b68 Binary files /dev/null and b/public/partners/loko-logo-w.png differ diff --git a/public/partners/mfa.png b/public/partners/mfa.png new file mode 100644 index 0000000..79cae75 Binary files /dev/null and b/public/partners/mfa.png differ diff --git a/public/partners/mvs.png b/public/partners/mvs.png new file mode 100644 index 0000000..c742eff Binary files /dev/null and b/public/partners/mvs.png differ diff --git a/public/partners/nova-ukraine-logo-w.png b/public/partners/nova-ukraine-logo-w.png new file mode 100644 index 0000000..10c9307 Binary files /dev/null and b/public/partners/nova-ukraine-logo-w.png differ diff --git a/public/partners/sense-w.png b/public/partners/sense-w.png new file mode 100644 index 0000000..96f452c Binary files /dev/null and b/public/partners/sense-w.png differ diff --git a/public/partners/superhumans.png b/public/partners/superhumans.png new file mode 100644 index 0000000..c5e650a Binary files /dev/null and b/public/partners/superhumans.png differ diff --git a/public/partners/suspilne.png b/public/partners/suspilne.png new file mode 100644 index 0000000..9371ef1 Binary files /dev/null and b/public/partners/suspilne.png differ diff --git a/public/partners/thewall-logo-w.png b/public/partners/thewall-logo-w.png new file mode 100644 index 0000000..0a54368 Binary files /dev/null and b/public/partners/thewall-logo-w.png differ diff --git a/public/partners/ual.png b/public/partners/ual.png new file mode 100644 index 0000000..e583789 Binary files /dev/null and b/public/partners/ual.png differ diff --git a/public/partners/ukrzaliznytsia.png b/public/partners/ukrzaliznytsia.png new file mode 100644 index 0000000..43ed251 Binary files /dev/null and b/public/partners/ukrzaliznytsia.png differ diff --git a/public/partners/urc.png b/public/partners/urc.png new file mode 100644 index 0000000..c52fac1 Binary files /dev/null and b/public/partners/urc.png differ diff --git a/src/Footer/Component.tsx b/src/Footer/Component.tsx index 0aec1f8..cc8d2df 100644 --- a/src/Footer/Component.tsx +++ b/src/Footer/Component.tsx @@ -8,7 +8,7 @@ import type { SiteLocale } from '@/utilities/locales' import { CMSLink } from '@/components/Link' import { Brand } from '@/components/Logo/Brand' import { LanguageSwitcher } from '@/components/LanguageSwitcher' -import { Rails } from '@/components/brand' +import { AccentLine } from '@/components/brand' import { getFrontendMessages } from '@/utilities/i18n' import { getHomeContent } from '@/components/Home/content' @@ -36,7 +36,7 @@ export async function Footer({ locale }: { locale: SiteLocale }) { > {t.brandName1} {t.brandName2} - +
diff --git a/src/Header/Component.client.tsx b/src/Header/Component.client.tsx index cea720f..2869445 100644 --- a/src/Header/Component.client.tsx +++ b/src/Header/Component.client.tsx @@ -15,8 +15,8 @@ interface HeaderClientProps { export const HeaderClient: React.FC = ({ data, locale }) => { return (
-
- +
+
diff --git a/src/app/(frontend)/[locale]/courses/category/[slug]/page.tsx b/src/app/(frontend)/[locale]/courses/category/[slug]/page.tsx index ae6e122..8a6d548 100644 --- a/src/app/(frontend)/[locale]/courses/category/[slug]/page.tsx +++ b/src/app/(frontend)/[locale]/courses/category/[slug]/page.tsx @@ -8,7 +8,7 @@ import { ArrowLeft } from 'lucide-react' import { locales, type SiteLocale } from '@/utilities/locales' import { getFrontendMessages } from '@/utilities/i18n' import { CourseGrid } from '@/components/Courses/CourseGrid' -import { Eyebrow, Rails } from '@/components/brand' +import { Eyebrow, AccentLine } from '@/components/brand' import { getCatalogData } from '@/lib/courses/getCatalogData' import { plural } from '@/utilities/plural' import type { Media as MediaType } from '@/payload-types' @@ -95,7 +95,7 @@ export default async function CourseCategoryPage({ params: paramsPromise }: Args

{category.title}

- + {category.description && (

{category.description} diff --git a/src/app/(frontend)/[locale]/search/page.tsx b/src/app/(frontend)/[locale]/search/page.tsx index 906c783..ce9848d 100644 --- a/src/app/(frontend)/[locale]/search/page.tsx +++ b/src/app/(frontend)/[locale]/search/page.tsx @@ -8,7 +8,7 @@ import type { SiteLocale } from '@/utilities/locales' import { Search } from '@/search/Component' import PageClient from './page.client' import { CardPostData } from '@/components/Card' -import { Rails } from '@/components/brand' +import { AccentLine } from '@/components/brand' import { getFrontendMessages } from '@/utilities/i18n' import { getCachedCommentsCounts, getCachedLikesCounts } from '@/utilities/contentCounts' @@ -115,7 +115,7 @@ export default async function Page({ params: paramsPromise, searchParams: search > {t.searchTitle} - +

diff --git a/src/app/(frontend)/globals.css b/src/app/(frontend)/globals.css index 0962616..8cd681e 100644 --- a/src/app/(frontend)/globals.css +++ b/src/app/(frontend)/globals.css @@ -255,34 +255,46 @@ text-wrap: balance; } - /* railway-track motif under headings */ - .rails { - width: 96px; - height: 11px; - position: relative; + /* abstract accent line under headings: a bold orange stroke trailing into a fading blue one */ + .accent-line { + width: 120px; + height: 3px; flex: none; + border-radius: 2px; + background: linear-gradient( + 90deg, + var(--orange) 0 34%, + transparent 34% 40%, + var(--line-2) 40%, + transparent + ); + } + .on-paper .accent-line { + background: linear-gradient( + 90deg, + var(--orange) 0 34%, + transparent 34% 40%, + #c9c2b2 40%, + transparent + ); + } + + /* full-width abstract divider between page sections */ + .section-divider { + position: relative; + height: 1px; + background: linear-gradient(90deg, transparent, var(--line-2) 20%, var(--line-2) 80%, transparent); } - .rails::before, - .rails::after { + .section-divider::after { content: ''; position: absolute; - left: 0; - right: 0; - height: 2.5px; - background: var(--orange); + left: 50%; + top: -1px; + width: 72px; + height: 3px; + transform: translateX(-50%); border-radius: 2px; - } - .rails::before { - top: 0; - } - .rails::after { - bottom: 0; - } - .rails > i { - position: absolute; - inset: 2.5px 0; - background: repeating-linear-gradient(90deg, var(--orange) 0 2.5px, transparent 2.5px 14px); - opacity: 0.6; + background: var(--orange); } /* diagonal warm-cream band (landing echo) */ diff --git a/src/app/(frontend)/layout.tsx b/src/app/(frontend)/layout.tsx index fa8c447..e059fd7 100644 --- a/src/app/(frontend)/layout.tsx +++ b/src/app/(frontend)/layout.tsx @@ -25,9 +25,10 @@ export default function RootLayout({ children }: { children: React.ReactNode }) suppressHydrationWarning > - - - + + + + diff --git a/src/app/(frontend)/not-found.tsx b/src/app/(frontend)/not-found.tsx index 54708c2..05fba7b 100644 --- a/src/app/(frontend)/not-found.tsx +++ b/src/app/(frontend)/not-found.tsx @@ -4,7 +4,7 @@ import React from 'react' import { usePathname } from 'next/navigation' import { Button } from '@/components/ui/button' -import { Rails } from '@/components/brand' +import { AccentLine } from '@/components/brand' import { getFrontendMessages, getLocaleFromPathname } from '@/utilities/i18n' export default function NotFound() { @@ -22,7 +22,7 @@ export default function NotFound() { aria-hidden="true" /> 404 - +

{t.notFoundMessage}

+ {open ? ( + + ) : null} +
+ ) } export function ContactSection({ + tag, title, + description, + detailsTitle, + socialsTitle, + write, + writeVia, phone, email, address, - telegramManager, telegram, + telegramManager, instagram, facebook, tiktok, discord, - cta, - ctaSecondary, }: Props) { const socials = [ { name: 'Telegram', url: telegram }, @@ -39,59 +109,83 @@ export function ContactSection({ { name: 'TikTok', url: tiktok }, { name: 'Discord', url: discord }, ] + const tel = `tel:${phone.replace(/\s/g, '')}` + + const details = [ + { icon: Phone, label: phone, href: tel }, + { icon: Mail, label: email, href: `mailto:${email}` }, + { icon: MapPin, label: address }, + ] return ( -
- -
-