From 85a061280c0893aeebb05c40fd01d55fa0b3354f Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Thu, 7 May 2026 18:55:02 +0300 Subject: [PATCH 01/14] restructure join-us page to support new figma card hierarchy, stacked layout and updated block composition --- .../app/[lng]/(helper)/join-us/_getPage.ts | 20 +-- .../src/entities/JoinUs/index.ts | 3 + .../entities/JoinUs/model/makeJoinUsBlocks.ts | 63 ++++++++- .../src/entities/JoinUs/ui/Block.module.scss | 128 +++++++++--------- .../JoinUsPage/ui/JoinUsPage.stories.tsx | 9 +- .../JoinUsPage/ui/JoinUsPage.tsx | 25 ++-- .../ui/SectionJoinUs.module.scss | 13 +- 7 files changed, 156 insertions(+), 105 deletions(-) diff --git a/frontend-next-migration/src/app/[lng]/(helper)/join-us/_getPage.ts b/frontend-next-migration/src/app/[lng]/(helper)/join-us/_getPage.ts index 997603549..65cae02e5 100644 --- a/frontend-next-migration/src/app/[lng]/(helper)/join-us/_getPage.ts +++ b/frontend-next-migration/src/app/[lng]/(helper)/join-us/_getPage.ts @@ -2,38 +2,38 @@ import { createPage } from '@/app/_helpers'; import { JoinUsProps } from '@/preparedPages/JoinUsPage'; import { getServerTranslation } from '@/shared/i18n'; import { - makeDiscordBlock, - makeRedditBlock, - makeDuunitoriBlock, + makeGetInTouchAndFollowBlock, + makeCommunityAndOpportunitiesBlock, + makeEducationProfessionalsBlock, makeFeedbackBlock, - makeTeachersBlock, - makeInstagramBlock, } from '@/entities/JoinUs'; import { getRouteJoinUsPage } from '@/shared/appLinks/RoutePaths'; import { defaultOpenGraph } from '@/shared/seoConstants'; export async function _getPage(lng: string) { const { t } = await getServerTranslation(lng, 'join-us'); + return createPage({ buildPage: () => ({ title: t('join-us'), - discordBlock: makeDiscordBlock(t), - connectionBlock: makeRedditBlock(t), - teachersBlock: makeTeachersBlock(t), + getInTouchAndFollowBlock: makeGetInTouchAndFollowBlock(t), + communityAndOpportunitiesBlock: makeCommunityAndOpportunitiesBlock(t), + educationProfessionalsBlock: makeEducationProfessionalsBlock(t), feedbackBlock: makeFeedbackBlock(t), - duunitoriBlock: makeDuunitoriBlock(t), - instagramBlock: makeInstagramBlock(t), }), + buildSeo: () => ({ title: t('head-title'), description: t('head-description'), keywords: t('head-keywords'), + openGraph: { ...defaultOpenGraph, title: t('og-title'), description: t('og-description'), url: `/${lng}${getRouteJoinUsPage()}`, }, + alternates: { canonical: `/${lng}${getRouteJoinUsPage()}`, }, diff --git a/frontend-next-migration/src/entities/JoinUs/index.ts b/frontend-next-migration/src/entities/JoinUs/index.ts index e324a88a6..264b9619b 100644 --- a/frontend-next-migration/src/entities/JoinUs/index.ts +++ b/frontend-next-migration/src/entities/JoinUs/index.ts @@ -1,6 +1,9 @@ export { Block } from './ui/Block'; export { + makeGetInTouchAndFollowBlock, + makeCommunityAndOpportunitiesBlock, + makeEducationProfessionalsBlock, makeDiscordBlock, makeRedditBlock, makeTeachersBlock, diff --git a/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts b/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts index ff7672542..acc9911de 100644 --- a/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts +++ b/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts @@ -16,8 +16,8 @@ import ytIcon from '@/shared/assets/images/Youtube2.svg'; * Supports multiple links per block, internationalized text labels, descriptions, and an optional image. * * @param {string} section - - * A section identifier (e.g., "discord", "teachers", "feedback") that is used to construct the correct - * translation keys dynamically. These keys are combined to fetch the localized label, description, link texts, and alt texts. + * A section identifier used to construct translation keys dynamically. + * These keys are combined to fetch the localized label, description, link texts, and alt texts. * * @param {BlockSection['links']} link - * An array of link objects. Each object represents a link associated with the block and should include: @@ -37,7 +37,7 @@ import ytIcon from '@/shared/assets/images/Youtube2.svg'; * * @callback t * @param {string} key - - * The translation key used to fetch the localized string (e.g., "block-label-discord", "block-description-feedback"). + * The translation key used to fetch the localized string. * * @returns {string} - * The translated string value associated with the provided key. @@ -64,11 +64,64 @@ export const makeBlocksWithI18n = ( }; }; +export const makeGetInTouchAndFollowBlock = makeBlocksWithI18n( + 'getInTouchAndFollow', + [ + { text: 'email', url: 'mailto:proyaleg@gmail.com', isExternal: true }, + { text: 'phone', url: 'tel:+358442407396', isExternal: true }, + { + text: 'icone', + url: AppExternalLinks.discord, + isExternal: true, + iconSrc: discordIcon.src, + }, + { + text: 'icone', + url: AppExternalLinks.facebook, + isExternal: true, + iconSrc: fbdIcon.src, + }, + { + text: 'icone', + url: AppExternalLinks.youtube, + isExternal: true, + iconSrc: ytIcon.src, + }, + { + text: 'icone', + url: AppExternalLinks.instagram, + isExternal: true, + iconSrc: igIcon.src, + }, + ], + ConnectionImage.src.toString(), +); + +export const makeCommunityAndOpportunitiesBlock = makeBlocksWithI18n( + 'communityAndOpportunities', + [ + { text: 'discord', url: AppExternalLinks.discord, isExternal: true }, + { text: 'duunitori', url: AppExternalLinks.duunitori, isExternal: true }, + ], + discordImage.src.toString(), +); + +export const makeEducationProfessionalsBlock = makeBlocksWithI18n( + 'educationProfessionals', + [ + { text: 'email', url: 'mailto:proyaleg@gmail.com', isExternal: true }, + { text: 'phone', url: 'tel:+358442407396', isExternal: true }, + { text: 'teacherPg', url: AppExternalLinks.dlpackage, isExternal: true }, + ], + teachersImage.src.toString(), +); + export const makeDiscordBlock = makeBlocksWithI18n( 'discord', [{ text: 'discord', url: AppExternalLinks.discord, isExternal: true }], discordImage.src.toString(), ); + export const makeRedditBlock = makeBlocksWithI18n( 'connection', [ @@ -77,6 +130,7 @@ export const makeRedditBlock = makeBlocksWithI18n( ], ConnectionImage.src.toString(), ); + export const makeTeachersBlock = makeBlocksWithI18n( 'teachers', [ @@ -86,6 +140,7 @@ export const makeTeachersBlock = makeBlocksWithI18n( ], teachersImage.src.toString(), ); + export const makeFeedbackBlock = makeBlocksWithI18n( 'feedback', [ @@ -94,11 +149,13 @@ export const makeFeedbackBlock = makeBlocksWithI18n( ], feedbackImage.src.toString(), ); + export const makeDuunitoriBlock = makeBlocksWithI18n( 'duunitori', [{ text: 'duunitori', url: AppExternalLinks.duunitori, isExternal: true }], duunitoriImage.src.toString(), ); + export const makeInstagramBlock = makeBlocksWithI18n( 'instagram', [ diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss index 4e62fac50..8d7c7b3d9 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss @@ -1,51 +1,50 @@ .Container { - margin: auto 0; - padding: 0 0 5px 0; - text-align: center; - height: 100%; - place-content: center; + padding: 24px; + text-align: left; + border-radius: var(--border-radius-custom); background-color: #1E3544; border: 2px solid black; box-shadow: 0.5rem 0.5rem black; - text-align: left; + display: flex; - align-items: center; + align-items: flex-start; justify-content: flex-start; - - .Content{ + .Content { flex-grow: 1; - } - + .multilineText { white-space: pre-line; - } + } - .ImageWrapper { + .ImageWrapper { width: fit-content; height: 236px; + display: flex; flex-shrink: 0; - margin: auto 10px; - padding: 10px; align-items: center; + margin: auto 10px; + padding: 10px; - img{ - width: 12em; - height: 12em; + img { + width: 9em; + height: 9em; object-fit: center; } - } + } h2 { padding: 15px 0 0 0; margin: 0; + color: var(--primary-color); font: var(--font-sw-xxl); + white-space: pre-line; } @@ -57,127 +56,134 @@ p { font: var(--font-dm-s); margin: 15px 0; + color: var(--text-color); + line-height: 1.1em; text-align: left; - max-width: 85%; + align-self: flex-start; - } a { - text-decoration: underline; font: var(--font-dm-s); - color: var(--primary-color)!important; + + color: var(--primary-color) !important; text-decoration: none; - &:hover { - color: var(--secondary-color)!important; + color: var(--secondary-color) !important; + } + + &::after { + content: ''; + display: block; + padding: 0 0 10px; } - - &::after { - content: ''; - display: block; - padding: 0 0 10px; - } } + .linkWrapper { padding: 0; margin: 0; line-height: 0.8em; } - - .linkWrapper:has(img) { - + .linkWrapper:has(img) { display: flex; align-items: center; margin: 0 10px 0 0; - a { - display:inline-flex; + + a { + display: inline-flex; flex-direction: row; - img{ + img { color: #ffa100; width: 2.7vh; + transition: transform 0.15s ease; - } - - &:hover img { - transform: scale(1.1); - } - } + &:hover img { + transform: scale(1.1); + } } + } } - - @media (max-width: breakpoint(md)) { .Container { flex-direction: column; align-items: center; justify-content: center; - text-align: center; - padding: 10px 0 0; - margin: auto; + width: 100%; + + margin: auto; + padding: 10px 0 0; + + text-align: center; + box-shadow: 0.2rem 0.2rem #121212; .linkWrapper { margin: 0; padding: 0; } + .ImageWrapper { width: 100%; height: auto; - margin: 0; - padding: 0; + display: flex; justify-content: center; align-items: center; - img{ + margin: 0; + padding: 0; + + img { width: 8em; height: 8em; object-fit: center; } } - - - p{ + p { font: var(--font-dm-xs); + margin: 10px auto; padding: 0 10px; + text-align: center; max-width: 100%; } - .linkWrapper:has(img) { + .linkWrapper:has(img) { display: flex; align-items: center; - width: 100%; - margin: 0 10px 10px ; - } + width: 100%; + margin: 0 10px 10px; + } } } + @media (min-width: breakpoint(md)) and (max-width: 900px) { .Container { .ImageWrapper { width: fit-content; height: auto; - margin: 0; - padding: 0; + display: flex; justify-content: center; align-items: center; - img{ + margin: 0; + padding: 0; + + img { width: 8em; height: 8em; object-fit: center; diff --git a/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.stories.tsx b/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.stories.tsx index 17f89e5ca..d607d9229 100644 --- a/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.stories.tsx +++ b/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.stories.tsx @@ -127,13 +127,10 @@ type Story = StoryObj; export const Default: Story = { args: { title: 'Join Us!', - discordBlock: mockDiscordBlock, - // redditBlock: mockRedditBlock, - teachersBlock: mockTeachersBlock, + getInTouchAndFollowBlock: mockConnectionBlock, + communityAndOpportunitiesBlock: mockDiscordBlock, + educationProfessionalsBlock: mockTeachersBlock, feedbackBlock: mockFeedbackBlock, - duunitoriBlock: mockDuunitoriBlock, - connectionBlock: mockConnectionBlock, - instagramBlock: mockInstagramBlock, }, parameters: { layout: 'fullscreen', diff --git a/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.tsx b/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.tsx index 299a7a258..de4f16a2f 100644 --- a/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.tsx +++ b/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.tsx @@ -5,24 +5,20 @@ import { BlockSection } from '../types'; export interface Props { title: string; - discordBlock: BlockSection; - connectionBlock: BlockSection; - instagramBlock: BlockSection; - teachersBlock: BlockSection; + getInTouchAndFollowBlock: BlockSection; + communityAndOpportunitiesBlock: BlockSection; + educationProfessionalsBlock: BlockSection; feedbackBlock: BlockSection; - duunitoriBlock: BlockSection; navHeight?: number; } export const JoinUsPage = (props: Props) => { const { title, - discordBlock, - connectionBlock, - instagramBlock, - teachersBlock, + getInTouchAndFollowBlock, + communityAndOpportunitiesBlock, + educationProfessionalsBlock, feedbackBlock, - duunitoriBlock, } = props; return ( @@ -31,13 +27,12 @@ export const JoinUsPage = (props: Props) => {

{title}

+ diff --git a/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.module.scss b/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.module.scss index 1b7a3632a..abcbae3a7 100644 --- a/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.module.scss +++ b/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.module.scss @@ -1,22 +1,15 @@ .Container { display: grid; + grid-template-columns: 1fr; + gap: 35px; + margin: 10px auto 40px; - flex-direction: row-reverse; padding-bottom: 2vh; } -@media screen and (min-width: breakpoint(sm)) { - .Container { - grid-template-columns: repeat(2, minmax(0, 1fr)); - grid-template-rows: repeat(3, minmax(0, 1fr)); - margin: 10px auto; - } -} @media screen and (max-width: breakpoint(sm)) { .Container { - grid-template-columns: 1fr; - grid-template-rows: auto; gap: 20px; margin: 0 auto; } From b1c35bd9debf57fedbd76bb5b4e26cc8eb6571a5 Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Sat, 9 May 2026 10:19:49 +0300 Subject: [PATCH 02/14] update card spacing, typography and fi locale content to match figma design --- .../src/entities/JoinUs/ui/Block.module.scss | 106 ++++++++++++------ .../src/entities/JoinUs/ui/Block.tsx | 8 +- .../JoinUsPage/ui/JoinUsPage.module.scss | 51 ++++----- .../src/shared/i18n/locales/fi/join-us.json | 26 +++-- .../ui/SectionJoinUs.module.scss | 19 ++-- 5 files changed, 125 insertions(+), 85 deletions(-) diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss index 8d7c7b3d9..653225e6c 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss @@ -1,19 +1,29 @@ .Container { + display: flex; + align-items: center; + justify-content: space-between; + + width: 100%; + min-height: 240px; + margin: auto 0; - padding: 24px; + padding: 40px 48px; + gap: 48px; + text-align: left; - border-radius: var(--border-radius-custom); + border-radius: 24px; background-color: #1E3544; - border: 2px solid black; - box-shadow: 0.5rem 0.5rem black; - display: flex; - align-items: flex-start; - justify-content: flex-start; + border: 2px solid black; + box-shadow: 8px 8px 0 black; .Content { - flex-grow: 1; + flex: 1; + + display: flex; + flex-direction: column; + justify-content: center; } .multilineText { @@ -22,28 +32,26 @@ .ImageWrapper { width: fit-content; - height: 236px; + height: auto; display: flex; flex-shrink: 0; align-items: center; - - margin: auto 10px; - padding: 10px; + justify-content: center; img { - width: 9em; - height: 9em; - object-fit: center; + width: 10em; + height: 10em; + object-fit: contain; } } h2 { - padding: 15px 0 0 0; - margin: 0; + margin: 0 0 16px; color: var(--primary-color); font: var(--font-sw-xxl); + line-height: 1.1; white-space: pre-line; } @@ -54,18 +62,23 @@ } p { + max-width: 720px; + + margin: 0 0 24px; + font: var(--font-dm-s); - margin: 15px 0; color: var(--text-color); - line-height: 1.1em; + line-height: 1.5; text-align: left; - - align-self: flex-start; } a { + display: inline-flex; + align-items: center; + gap: 8px; + font: var(--font-dm-s); color: var(--primary-color) !important; @@ -85,23 +98,35 @@ .linkWrapper { padding: 0; margin: 0; - line-height: 0.8em; + line-height: 1.4; } .linkWrapper:has(img) { display: flex; align-items: center; + margin: 0 10px 0 0; a { display: inline-flex; + align-items: center; flex-direction: row; img { - color: #ffa100; - width: 2.7vh; + width: 28px; + height: 28px; transition: transform 0.15s ease; + + filter: + brightness(0) + saturate(100%) + invert(70%) + sepia(77%) + saturate(2247%) + hue-rotate(360deg) + brightness(101%) + contrast(105%); } &:hover img { @@ -114,18 +139,23 @@ @media (max-width: breakpoint(md)) { .Container { flex-direction: column; - align-items: center; - justify-content: center; + align-items: flex-start; + justify-content: flex-start; width: 100%; margin: auto; - padding: 10px 0 0; + padding: 24px; + gap: 24px; - text-align: center; + text-align: left; box-shadow: 0.2rem 0.2rem #121212; + .Content { + width: 100%; + } + .linkWrapper { margin: 0; padding: 0; @@ -145,18 +175,22 @@ img { width: 8em; height: 8em; - object-fit: center; + object-fit: contain; } } + h2 { + margin: 0 0 12px; + } + p { - font: var(--font-dm-xs); + max-width: 100%; - margin: 10px auto; - padding: 0 10px; + margin: 0 0 20px; - text-align: center; - max-width: 100%; + font: var(--font-dm-xs); + + text-align: left; } .linkWrapper:has(img) { @@ -172,6 +206,8 @@ @media (min-width: breakpoint(md)) and (max-width: 900px) { .Container { + padding: 32px; + .ImageWrapper { width: fit-content; height: auto; @@ -186,7 +222,7 @@ img { width: 8em; height: 8em; - object-fit: center; + object-fit: contain; } } } diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx index dbbe8d212..5624a8983 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx @@ -30,9 +30,12 @@ export const Block = (props: Props) => { alt={block.imgAlt} /> +

{block.label}

+

{block.description}

+
{block.links.map((link, index) => ( diff --git a/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.module.scss b/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.module.scss index 73a426a2c..a9b2167e9 100644 --- a/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.module.scss +++ b/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.module.scss @@ -1,65 +1,54 @@ .Container { + width: 100%; + max-width: 1440px; + + margin: 0 auto; + padding: 0 48px 64px; border-radius: var(--border-radius-custom); - padding: 0 20px 20px 0; h1 { - font: var(--font-sw-5xl); - line-height: 1.5rem; - text-align: left; - color: var(--primary-color); - } + margin: 64px 0 40px; - @keyframes lineExpand { - 0% { - width: 0; - } + color: var(--primary-color); - 100% { - width: 500px; - max-width: 70vw; - } + font: var(--font-sw-5xl); + line-height: 1.1; + text-align: left; } } @media screen and (max-width: breakpoint(md)) { .Container { - padding: 10px; - margin: 0 auto; + padding: 0 16px 48px; h1 { + margin: 32px 0 24px; + font: var(--font-sw-xxl); - margin: 0 0 20px; - margin-top: 7vh; - padding: 20px 0 0 0; - text-align: center; + text-align: left; } } - } @media screen and ((min-width: breakpoint(sm)) and (max-width: breakpoint(md))) { .Container { - padding: 10px 20px; - margin: 0 auto; + padding: 0 24px 56px; h1 { - font: var(--font-sw-5xl); - margin: 40px auto; - margin-top: 10vh; + margin: 48px 0 32px; + + font: var(--font-sw-4xl); } } } @media screen and (min-width: breakpoint(md)) { .Container { - padding: 10px 20px; - margin: 0 auto; + padding: 0 48px 64px; h1 { - font: var(--font-sw-5xl); - margin: 40px auto; - margin-top: 10vh; + margin-top: 64px; } } } \ No newline at end of file diff --git a/frontend-next-migration/src/shared/i18n/locales/fi/join-us.json b/frontend-next-migration/src/shared/i18n/locales/fi/join-us.json index 70ccac9df..4fdc97970 100644 --- a/frontend-next-migration/src/shared/i18n/locales/fi/join-us.json +++ b/frontend-next-migration/src/shared/i18n/locales/fi/join-us.json @@ -1,8 +1,8 @@ { - "join-us": "Tule mukaan!", - "head-title": "Tule mukaan - ALT Zone", + "join-us": "Ota yhteyttä", + "head-title": "Ota yhteyttä - ALT Zone", "head-description": "Liity ALT Zone -projektiin! Tule testaajaksi, tutustu opetuspaketteihin, hae työharjoitteluun, liity Discord-yhteisöömme tai jaa palautteesi pelimme parantamiseksi.", - "head-keywords": "ALT Zone tule mukaan, testaaja, opetuspaketti, työharjoittelu, vapaaehtoistyö, Discord", + "head-keywords": "ALT Zone yhteystiedot, testaaja, opetuspaketti, työharjoittelu, vapaaehtoistyö, Discord", "og-title": "Liity ALT Zone -projektiin", "og-description": "Ole osa ALT Zone -matkaa — testaa peliämme, tutustu opetusvälineisiin, liity Discordiin, hae työharjoittelua tai lähetä meille palautetta.", @@ -13,13 +13,21 @@ "block-label-instagram": "Keskustele lisää \nsomessa", "block-label-discord": "Tule Testaajaksi", + "block-label-getInTouchAndFollow": "Ole yhteydessä ja seuraa", + "block-label-communityAndOpportunities": "Työyhteisö ja mahdollisuudet", + "block-label-educationProfessionals": "Opetuksen ammattilaiselle", + "block-description-discord": "Tule kertomaan ideasi liittymällä Discord- \npeliyhteisöömme", "block-description-connection": "Mikäli kiinnostuit projektistamme, ota rohkeasti yhteyttä", "block-description-teachers": "Ilmoittaudu testaamaan opetuspakettia", "block-description-duunitori": "Tarjoamme mahdollisuuksien mukaan palkatonta työkokeilua ja -harjoittelua projektimme parissa. Olet tervetullut tekemään hommia myös vapaaehtoisena. \n\nTarkastele avoimia paikkoja Duunitorista.", - "block-description-feedback": "Palautelomakkeen tavoite on kerätä palautetta \nnettisivuista ja mobiilipelistä jatkokehitystä varten. \nPalautteesi on ensisijaisen tärkeää ja käsittelemme \npalautteet yhdessä kehitystiimin kanssa. \n\nKiitos vastauksistasi jo etukäteen!", + "block-description-feedback": "Palautelomakkeen tavoite on kerätä palautetta \nnettisivuista ja mobiilipelistä jatkokehitystä varten. \nPalautteesi on ensisijaisen tärkeää ja käsittelemme \npalautteet yhdessä kehitystiimin kanssa. \n\nKiitos vastauksistasi jo etukäteen!", "block-description-instagram": "", + "block-description-getInTouchAndFollow": "Mikäli kiinnostuit projektistamme, ota rohkeasti yhteyttä. Seuraa meitä myös somessa!", + "block-description-communityAndOpportunities": "Tule kertomaan ideasi liittymällä Discord-peliyhteisöömme! Tarjoamme mahdollisuuksien mukaan palkatonta työkokeilua ja -harjoittelua projektiemme parissa. Olet tervetullut tekemään hommia myös vapaaehtoisena. Tarkastele myös avoimia paikkoja Duunitorissa.", + "block-description-educationProfessionals": "Ilmoittaudu testaamaan opetuspakettia!", + "block-link-text-discord": "discord.gg/mgjQkCR2Fg", "block-link-text-teacherPg": "Tutustu opetuspakettiin", "block-link-text-duunitori": "Avoimet paikat Duunitorissa", @@ -31,11 +39,15 @@ "block-link-text-icone": "", "block-image-alt-discord": "Discord", - "block-image-alt-connection": "Reddit", - "block-image-alt-teachers": "Teacher!", + "block-image-alt-connection": "Yhteystiedot", + "block-image-alt-teachers": "Opetus", "block-image-alt-duunitori": "Duunitori", - "block-image-alt-feedback": "Feedback", + "block-image-alt-feedback": "Palaute", "block-image-alt-instagram": "Instagram", + "block-image-alt-getInTouchAndFollow": "Ota yhteyttä", + "block-image-alt-communityAndOpportunities": "Työyhteisö ja mahdollisuudet", + "block-image-alt-educationProfessionals": "Opetuksen ammattilaiselle", + "block-website": "www.example.com" } diff --git a/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.module.scss b/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.module.scss index abcbae3a7..82f0b367e 100644 --- a/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.module.scss +++ b/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.module.scss @@ -1,16 +1,15 @@ .Container { - display: grid; - grid-template-columns: 1fr; - - gap: 35px; - - margin: 10px auto 40px; - padding-bottom: 2vh; + display: flex; + flex-direction: column; + gap: 32px; + width: 100%; + margin: 0 auto; + padding-bottom: 48px; } -@media screen and (max-width: breakpoint(sm)) { +@media screen and (max-width: breakpoint(md)) { .Container { - gap: 20px; - margin: 0 auto; + gap: 24px; + padding-bottom: 32px; } } From 7bc10a5d1dccb040781942a939100f579896537a Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Tue, 12 May 2026 19:35:19 +0300 Subject: [PATCH 03/14] improve join-us figma parity with centered card content, z-layout visuals, updated spacing and refined responsive styling --- .../entities/JoinUs/model/makeJoinUsBlocks.ts | 2 +- .../src/entities/JoinUs/ui/Block.module.scss | 61 +++++++++++-------- .../src/entities/JoinUs/ui/Block.tsx | 5 +- .../SectionJoinUs/ui/SectionJoinUs.tsx | 2 + 4 files changed, 43 insertions(+), 27 deletions(-) diff --git a/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts b/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts index acc9911de..8a5fc88fd 100644 --- a/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts +++ b/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts @@ -67,7 +67,6 @@ export const makeBlocksWithI18n = ( export const makeGetInTouchAndFollowBlock = makeBlocksWithI18n( 'getInTouchAndFollow', [ - { text: 'email', url: 'mailto:proyaleg@gmail.com', isExternal: true }, { text: 'phone', url: 'tel:+358442407396', isExternal: true }, { text: 'icone', @@ -93,6 +92,7 @@ export const makeGetInTouchAndFollowBlock = makeBlocksWithI18n( isExternal: true, iconSrc: igIcon.src, }, + { text: 'email', url: 'mailto:proyaleg@gmail.com', isExternal: true }, ], ConnectionImage.src.toString(), ); diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss index 653225e6c..d9c655e7d 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss @@ -1,29 +1,33 @@ .Container { + position: relative; + display: flex; align-items: center; - justify-content: space-between; + justify-content: center; width: 100%; min-height: 240px; margin: auto 0; padding: 40px 48px; - gap: 48px; text-align: left; - border-radius: 24px; + border-radius: 12px; background-color: #1E3544; border: 2px solid black; box-shadow: 8px 8px 0 black; .Content { - flex: 1; + width: 100%; display: flex; flex-direction: column; justify-content: center; + align-items: center; + + text-align: center; } .multilineText { @@ -31,11 +35,14 @@ } .ImageWrapper { - width: fit-content; - height: auto; + position: absolute; + + left: 48px; + top: 50%; + + transform: translateY(-50%); display: flex; - flex-shrink: 0; align-items: center; justify-content: center; @@ -54,6 +61,7 @@ line-height: 1.1; white-space: pre-line; + text-align: center; } h3 { @@ -71,7 +79,7 @@ color: var(--text-color); line-height: 1.5; - text-align: left; + text-align: center; } a { @@ -96,8 +104,15 @@ } .linkWrapper { + display: flex; + justify-content: center; + align-items: center; + flex-wrap: wrap; + gap: 24px; + padding: 0; margin: 0; + line-height: 1.4; } @@ -105,7 +120,7 @@ display: flex; align-items: center; - margin: 0 10px 0 0; + margin: 0; a { display: inline-flex; @@ -136,10 +151,15 @@ } } +.Reverse .ImageWrapper { + left: auto; + right: 48px; +} + @media (max-width: breakpoint(md)) { .Container { flex-direction: column; - align-items: flex-start; + align-items: center; justify-content: flex-start; width: 100%; @@ -148,7 +168,7 @@ padding: 24px; gap: 24px; - text-align: left; + text-align: center; box-shadow: 0.2rem 0.2rem #121212; @@ -162,6 +182,10 @@ } .ImageWrapper { + position: static; + + transform: none; + width: 100%; height: auto; @@ -190,7 +214,7 @@ font: var(--font-dm-xs); - text-align: left; + text-align: center; } .linkWrapper:has(img) { @@ -199,7 +223,7 @@ width: 100%; - margin: 0 10px 10px; + margin: 0; } } } @@ -209,20 +233,9 @@ padding: 32px; .ImageWrapper { - width: fit-content; - height: auto; - - display: flex; - justify-content: center; - align-items: center; - - margin: 0; - padding: 0; - img { width: 8em; height: 8em; - object-fit: contain; } } } diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx index 5624a8983..5c6db74eb 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx @@ -12,14 +12,15 @@ import cls from './Block.module.scss'; interface Props { block: BlockSection; + reverse?: boolean; } export const Block = (props: Props) => { - const { block } = props; + const { block, reverse = false } = props; return (
diff --git a/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.tsx b/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.tsx index b0d7272da..83dbefc45 100644 --- a/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.tsx +++ b/frontend-next-migration/src/widgets/SectionJoinUs/ui/SectionJoinUs.tsx @@ -25,6 +25,7 @@ interface Props { export const SectionJoinUs = (props: Props) => { const { blocks } = props; + return ( { ))} From 115a00664fed685f88a418157182f7442f9db19a Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Thu, 14 May 2026 11:09:14 +0300 Subject: [PATCH 04/14] Added external link icons --- .../src/entities/JoinUs/ui/Block.module.scss | 14 ++++++++++++-- .../src/entities/JoinUs/ui/Block.tsx | 10 ++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss index d9c655e7d..0e28ffee5 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss @@ -127,7 +127,7 @@ align-items: center; flex-direction: row; - img { + img:not(.ExternalIcon) { width: 28px; height: 28px; @@ -144,13 +144,23 @@ contrast(105%); } - &:hover img { + &:hover img:not(.ExternalIcon) { transform: scale(1.1); } } } } +.ExternalIcon { + width: 10px !important; + height: 10px !important; + + min-width: 10px; + + object-fit: contain; + flex-shrink: 0; +} + .Reverse .ImageWrapper { left: auto; right: 48px; diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx index 5c6db74eb..2193ab273 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx @@ -1,5 +1,6 @@ import type { BlockSection } from '../types'; import cls from './Block.module.scss'; +import externalLinkIcon from '@/shared/assets/icons/ExternalLink.svg'; /** * Block Component @@ -58,6 +59,15 @@ export const Block = (props: Props) => { )} {link.text} + + {link.isExternal && !link.iconSrc && ( + // eslint-disable-next-line @next/next/no-img-element + External link + )}
))} From 9329029b3d07c5bcc1efb73ccf7d6e48699480c9 Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Thu, 14 May 2026 15:32:09 +0300 Subject: [PATCH 05/14] Refined responsive Join Us block layouts, improved mobile typography and link styling, fixed image positioning, and corrected external link icon behavior across breakpoints --- .../src/entities/JoinUs/index.ts | 5 - .../entities/JoinUs/model/makeJoinUsBlocks.ts | 96 ++++------- .../src/entities/JoinUs/types/index.ts | 1 + .../src/entities/JoinUs/ui/Block.module.scss | 156 ++++++++++++++---- .../src/entities/JoinUs/ui/Block.tsx | 46 +++++- .../preparedPages/JoinUsPage/types/index.ts | 1 + .../src/shared/i18n/locales/fi/join-us.json | 1 + 7 files changed, 204 insertions(+), 102 deletions(-) diff --git a/frontend-next-migration/src/entities/JoinUs/index.ts b/frontend-next-migration/src/entities/JoinUs/index.ts index 264b9619b..db2e8fd4e 100644 --- a/frontend-next-migration/src/entities/JoinUs/index.ts +++ b/frontend-next-migration/src/entities/JoinUs/index.ts @@ -4,10 +4,5 @@ export { makeGetInTouchAndFollowBlock, makeCommunityAndOpportunitiesBlock, makeEducationProfessionalsBlock, - makeDiscordBlock, - makeRedditBlock, - makeTeachersBlock, - makeDuunitoriBlock, makeFeedbackBlock, - makeInstagramBlock, } from './model/makeJoinUsBlocks'; diff --git a/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts b/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts index 8a5fc88fd..bcae7ad55 100644 --- a/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts +++ b/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts @@ -3,9 +3,7 @@ import { AppExternalLinks } from '@/shared/appLinks/appExternalLinks'; import ConnectionImage from '@/shared/assets/images/heros/mirror/Mirror.png'; import teachersImage from '@/shared/assets/images/heros/sleeper/Sleeper_new.png'; import feedbackImage from '@/shared/assets/images/heros/einstein/einstein.png'; -import duunitoriImage from '@/shared/assets/images/heros/purple-girls/purpel-girls-main.png'; import discordImage from '@/shared/assets/images/heros/conman/conman.png'; -import instagramImage from '@/shared/assets/images/heros/fate-priest/Believer.png'; import igIcon from '@/shared/assets/images/Insta2.svg'; import fbdIcon from '@/shared/assets/images/Facebook2.svg'; import discordIcon from '@/shared/assets/images/Discord2.svg'; @@ -57,6 +55,7 @@ export const makeBlocksWithI18n = ( text: t(`block-link-text-${linkItem.text}`), isExternal: linkItem.isExternal ?? false, iconSrc: linkItem.iconSrc, + showExternalIcon: linkItem.showExternalIcon, })), img: img || '', imgAlt: t(`block-image-alt-${section}`), @@ -100,8 +99,24 @@ export const makeGetInTouchAndFollowBlock = makeBlocksWithI18n( export const makeCommunityAndOpportunitiesBlock = makeBlocksWithI18n( 'communityAndOpportunities', [ - { text: 'discord', url: AppExternalLinks.discord, isExternal: true }, - { text: 'duunitori', url: AppExternalLinks.duunitori, isExternal: true }, + { + text: 'discord', + url: AppExternalLinks.discord, + isExternal: true, + showExternalIcon: true, + }, + { + text: 'news', + url: '/fi/news', + isExternal: true, + showExternalIcon: true, + }, + { + text: 'duunitori', + url: AppExternalLinks.duunitori, + isExternal: true, + showExternalIcon: true, + }, ], discordImage.src.toString(), ); @@ -109,34 +124,14 @@ export const makeCommunityAndOpportunitiesBlock = makeBlocksWithI18n( export const makeEducationProfessionalsBlock = makeBlocksWithI18n( 'educationProfessionals', [ - { text: 'email', url: 'mailto:proyaleg@gmail.com', isExternal: true }, - { text: 'phone', url: 'tel:+358442407396', isExternal: true }, - { text: 'teacherPg', url: AppExternalLinks.dlpackage, isExternal: true }, - ], - teachersImage.src.toString(), -); - -export const makeDiscordBlock = makeBlocksWithI18n( - 'discord', - [{ text: 'discord', url: AppExternalLinks.discord, isExternal: true }], - discordImage.src.toString(), -); - -export const makeRedditBlock = makeBlocksWithI18n( - 'connection', - [ - { text: 'email', url: 'mailto:proyaleg@gmail.com', isExternal: true }, { text: 'phone', url: 'tel:+358442407396', isExternal: true }, - ], - ConnectionImage.src.toString(), -); - -export const makeTeachersBlock = makeBlocksWithI18n( - 'teachers', - [ + { + text: 'teacherPg', + url: AppExternalLinks.dlpackage, + isExternal: true, + showExternalIcon: true, + }, { text: 'email', url: 'mailto:proyaleg@gmail.com', isExternal: true }, - { text: 'phone', url: 'tel:+358442407396', isExternal: true }, - { text: 'teacherPg', url: AppExternalLinks.dlpackage, isExternal: true }, ], teachersImage.src.toString(), ); @@ -144,45 +139,18 @@ export const makeTeachersBlock = makeBlocksWithI18n( export const makeFeedbackBlock = makeBlocksWithI18n( 'feedback', [ - { text: 'feedbackWep', url: AppExternalLinks.googleWebFeedback, isExternal: true }, - { text: 'feedbackGame', url: AppExternalLinks.googleFeedback, isExternal: true }, - ], - feedbackImage.src.toString(), -); - -export const makeDuunitoriBlock = makeBlocksWithI18n( - 'duunitori', - [{ text: 'duunitori', url: AppExternalLinks.duunitori, isExternal: true }], - duunitoriImage.src.toString(), -); - -export const makeInstagramBlock = makeBlocksWithI18n( - 'instagram', - [ - { - text: 'icone', - url: AppExternalLinks.discord, - isExternal: true, - iconSrc: discordIcon.src, - }, - { - text: 'icone', - url: AppExternalLinks.facebook, - isExternal: true, - iconSrc: fbdIcon.src, - }, { - text: 'icone', - url: AppExternalLinks.youtube, + text: 'feedbackWep', + url: AppExternalLinks.googleWebFeedback, isExternal: true, - iconSrc: ytIcon.src, + showExternalIcon: true, }, { - text: 'icone', - url: AppExternalLinks.instagram, + text: 'feedbackGame', + url: AppExternalLinks.googleFeedback, isExternal: true, - iconSrc: igIcon.src, + showExternalIcon: true, }, ], - instagramImage.src.toString(), + feedbackImage.src.toString(), ); diff --git a/frontend-next-migration/src/entities/JoinUs/types/index.ts b/frontend-next-migration/src/entities/JoinUs/types/index.ts index 01123d85a..5323432d1 100644 --- a/frontend-next-migration/src/entities/JoinUs/types/index.ts +++ b/frontend-next-migration/src/entities/JoinUs/types/index.ts @@ -16,6 +16,7 @@ export interface BlockSection { text: string; url: string; isExternal?: boolean; + showExternalIcon?: boolean; iconSrc?: string; }[]; img: string; diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss index 0e28ffee5..83f80ee71 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss @@ -84,23 +84,22 @@ a { display: inline-flex; + flex-direction: row; align-items: center; - gap: 8px; + justify-content: center; + + gap: 4px; font: var(--font-dm-s); color: var(--primary-color) !important; text-decoration: none; + white-space: nowrap; + &:hover { color: var(--secondary-color) !important; } - - &::after { - content: ''; - display: block; - padding: 0 0 10px; - } } .linkWrapper { @@ -108,7 +107,9 @@ justify-content: center; align-items: center; flex-wrap: wrap; - gap: 24px; + + column-gap: 24px; + row-gap: 12px; padding: 0; margin: 0; @@ -116,11 +117,30 @@ line-height: 1.4; } - .linkWrapper:has(img) { + /* text link spacing */ + .linkWrapper:not(:has(.icon)) { + margin: 0 24px; + } + + /* social icon spacing */ + .linkWrapper:has(.icon) { + margin: 0 -12px; + } + + .socialLinks { display: flex; align-items: center; + justify-content: center; + flex-wrap: nowrap; + gap: 4px; + } - margin: 0; + .linkWrapper:has(.icon) { + display: flex; + align-items: center; + + margin-top: 0; + margin-bottom: 0; a { display: inline-flex; @@ -152,13 +172,16 @@ } .ExternalIcon { - width: 10px !important; - height: 10px !important; + width: 0.8em; + height: 0.8em; + + display: inline-block; - min-width: 10px; + margin-left: 0.2em; + + vertical-align: middle; object-fit: contain; - flex-shrink: 0; } .Reverse .ImageWrapper { @@ -174,9 +197,11 @@ width: 100%; + min-height: 520px; + margin: auto; - padding: 24px; - gap: 24px; + padding: 56px 24px; + gap: 40px; text-align: center; @@ -184,11 +209,38 @@ .Content { width: 100%; + + gap: 40px; + } + + .Content > .linkWrapper { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + row-gap: 20px; } .linkWrapper { margin: 0; padding: 0; + + width: auto; + } + + .socialLinks { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + + gap: 4px; + + img { + width: 32px !important; + height: 32px !important; + } } .ImageWrapper { @@ -214,45 +266,91 @@ } h2 { - margin: 0 0 12px; + margin: 0 0 36px; } p { - max-width: 100%; + max-width: 270px; - margin: 0 0 20px; + margin: 8px 0 56px; - font: var(--font-dm-xs); + font-size: 1.9rem; + font-weight: 400; + line-height: 1.65; text-align: center; } - .linkWrapper:has(img) { + a { + display: inline-flex; + flex-direction: column; + align-items: center; + justify-content: center; + + font-size: 1.9rem; + font-weight: 400; + line-height: 1.65; + + gap: 2px; + + text-align: center; + + white-space: nowrap; + } + + .ExternalIcon { + display: block; + + width: 0.8em; + height: 0.8em; + + margin-top: 2px; + margin-left: 0; + } + + .linkWrapper:has(.icon) { display: flex; align-items: center; - width: 100%; + width: auto; margin: 0; } } } -@media (min-width: breakpoint(md)) and (max-width: 900px) { +@media (min-width: breakpoint(md)) and (max-width: 1200px) { .Container { - padding: 32px; + padding: 32px 32px 32px 140px; .ImageWrapper { + top: 24px; + left: 24px; + right: auto; + + transform: none; + img { - width: 8em; - height: 8em; + width: 6em; + height: 6em; } } } -} - - + .Reverse.Container { + padding: 32px 140px 32px 32px; + .ImageWrapper { + top: 24px; + right: 24px; + left: auto; + transform: none; + img { + width: 6em; + height: 6em; + } + } + } +} \ No newline at end of file diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx index 2193ab273..ea8c82ad9 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx @@ -19,6 +19,9 @@ interface Props { export const Block = (props: Props) => { const { block, reverse = false } = props; + const socialLinks = block.links.filter((link) => link.iconSrc); + const normalLinks = block.links.filter((link) => !link.iconSrc); + return (
{

{block.description}

- {block.links.map((link, index) => ( + {normalLinks.slice(0, 1).map((link, index) => (
{ target={link.isExternal ? '_blank' : undefined} rel={link.isExternal ? 'noopener noreferrer' : undefined} > - {link.iconSrc && ( + {link.text} + + {link.showExternalIcon && ( // eslint-disable-next-line @next/next/no-img-element + External link + )} + +
+ ))} + + {socialLinks.length > 0 && ( +
+ {socialLinks.map((link, index) => ( + + {/* eslint-disable-next-line @next/next/no-img-element */} {`${link.text} - )} + + ))} +
+ )} + {normalLinks.slice(1).map((link, index) => ( +
+ {link.text} - {link.isExternal && !link.iconSrc && ( + {link.showExternalIcon && ( // eslint-disable-next-line @next/next/no-img-element Date: Sun, 17 May 2026 17:59:54 +0300 Subject: [PATCH 06/14] Fix JoinUs block rendering when links are undefined in tests --- frontend-next-migration/src/entities/JoinUs/ui/Block.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx index ea8c82ad9..30510eda7 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx @@ -19,8 +19,10 @@ interface Props { export const Block = (props: Props) => { const { block, reverse = false } = props; - const socialLinks = block.links.filter((link) => link.iconSrc); - const normalLinks = block.links.filter((link) => !link.iconSrc); + const links = block.links ?? []; + + const socialLinks = links.filter((link) => link.iconSrc); + const normalLinks = links.filter((link) => !link.iconSrc); return (
Date: Sun, 17 May 2026 18:11:24 +0300 Subject: [PATCH 07/14] Another fix to prevent block crashing if data is undefined --- frontend-next-migration/src/entities/JoinUs/ui/Block.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx index 30510eda7..a01a75535 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx @@ -19,7 +19,7 @@ interface Props { export const Block = (props: Props) => { const { block, reverse = false } = props; - const links = block.links ?? []; + const links = block?.links ?? []; const socialLinks = links.filter((link) => link.iconSrc); const normalLinks = links.filter((link) => !link.iconSrc); From bdfa8a4773ede386fc60b03c8e6838433605e56a Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Sun, 17 May 2026 18:20:50 +0300 Subject: [PATCH 08/14] And another fix to block --- frontend-next-migration/src/entities/JoinUs/ui/Block.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx index a01a75535..9719c24ec 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.tsx @@ -19,7 +19,11 @@ interface Props { export const Block = (props: Props) => { const { block, reverse = false } = props; - const links = block?.links ?? []; + if (!block) { + return null; + } + + const links = block.links ?? []; const socialLinks = links.filter((link) => link.iconSrc); const normalLinks = links.filter((link) => !link.iconSrc); From 9f210a4b816bc073d074b4bfca80b850d31ffed3 Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Sun, 17 May 2026 18:34:15 +0300 Subject: [PATCH 09/14] FIX: Updated JoinUsPage tests to match renamed block props --- .../JoinUsPage/ui/JoinUsPage.test.tsx | 29 ++----------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.test.tsx b/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.test.tsx index 15c079f8b..4732a9bc5 100644 --- a/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.test.tsx +++ b/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.test.tsx @@ -34,31 +34,15 @@ const feedbackBlock: BlockSection = { img: '', }; -const duunitoriBlock: BlockSection = { - label: 'Duunitori', - description: 'Open positions at Duunitori.', - links: [{ text: 'Duunitori link', url: 'https://example.com', isExternal: true }], - img: '', -}; - -const instagramBlock: BlockSection = { - label: 'Instagram', - description: 'Follow us on Instagram!', - links: [{ text: 'Instagram link', url: 'https://example.com', isExternal: true }], - img: '', -}; - describe('JoinUsPage', () => { const setup = () => render( , ); @@ -73,31 +57,24 @@ describe('JoinUsPage', () => { // Labels expect(screen.getByText('Discord')).toBeInTheDocument(); expect(screen.getByText('Reddit')).toBeInTheDocument(); - expect(screen.getByText('Instagram')).toBeInTheDocument(); expect(screen.getByText('Teachers!')).toBeInTheDocument(); expect(screen.getByText('Feedback')).toBeInTheDocument(); - expect(screen.getByText('Duunitori')).toBeInTheDocument(); // Descriptions expect(screen.getByText('Join our Discord server to connect!')).toBeInTheDocument(); expect(screen.getByText('Reddit community page.')).toBeInTheDocument(); - expect(screen.getByText('Follow us on Instagram!')).toBeInTheDocument(); expect(screen.getByText('Information for teachers.')).toBeInTheDocument(); expect(screen.getByText('Send us your feedback.')).toBeInTheDocument(); - expect(screen.getByText('Open positions at Duunitori.')).toBeInTheDocument(); // Link texts expect(screen.getByText('Discord link')).toBeInTheDocument(); expect(screen.getByText('Reddit link')).toBeInTheDocument(); - expect(screen.getByText('Instagram link')).toBeInTheDocument(); expect(screen.getByText('Teachers link')).toBeInTheDocument(); expect(screen.getByText('Feedback link')).toBeInTheDocument(); - expect(screen.getByText('Duunitori link')).toBeInTheDocument(); // imgs expect(screen.queryByAltText('Discord Icon')).not.toBeInTheDocument(); expect(screen.queryByAltText('Reddit Icon')).not.toBeInTheDocument(); - expect(screen.queryByAltText('Instagram Icon')).not.toBeInTheDocument(); expect(screen.queryByAltText('Teachers Icon')).not.toBeInTheDocument(); expect(screen.queryByAltText('Feedback Icon')).not.toBeInTheDocument(); }); From 9e362a3836a9b7316c71741a4c02d8449a6d794e Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Sat, 23 May 2026 12:48:11 +0300 Subject: [PATCH 10/14] Some fixes to link behavior and block naming --- .../src/app/[lng]/(helper)/join-us/_getPage.ts | 16 ++++++++-------- .../src/entities/JoinUs/index.ts | 8 ++++---- .../entities/JoinUs/model/makeJoinUsBlocks.ts | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/frontend-next-migration/src/app/[lng]/(helper)/join-us/_getPage.ts b/frontend-next-migration/src/app/[lng]/(helper)/join-us/_getPage.ts index 65cae02e5..381f5c685 100644 --- a/frontend-next-migration/src/app/[lng]/(helper)/join-us/_getPage.ts +++ b/frontend-next-migration/src/app/[lng]/(helper)/join-us/_getPage.ts @@ -2,10 +2,10 @@ import { createPage } from '@/app/_helpers'; import { JoinUsProps } from '@/preparedPages/JoinUsPage'; import { getServerTranslation } from '@/shared/i18n'; import { - makeGetInTouchAndFollowBlock, - makeCommunityAndOpportunitiesBlock, - makeEducationProfessionalsBlock, - makeFeedbackBlock, + makeGetInTouchAndFollow, + makeCommunityAndOpportunities, + makeEducationProfessionals, + makeFeedback, } from '@/entities/JoinUs'; import { getRouteJoinUsPage } from '@/shared/appLinks/RoutePaths'; import { defaultOpenGraph } from '@/shared/seoConstants'; @@ -16,10 +16,10 @@ export async function _getPage(lng: string) { return createPage({ buildPage: () => ({ title: t('join-us'), - getInTouchAndFollowBlock: makeGetInTouchAndFollowBlock(t), - communityAndOpportunitiesBlock: makeCommunityAndOpportunitiesBlock(t), - educationProfessionalsBlock: makeEducationProfessionalsBlock(t), - feedbackBlock: makeFeedbackBlock(t), + getInTouchAndFollowBlock: makeGetInTouchAndFollow(t), + communityAndOpportunitiesBlock: makeCommunityAndOpportunities(t), + educationProfessionalsBlock: makeEducationProfessionals(t), + feedbackBlock: makeFeedback(t), }), buildSeo: () => ({ diff --git a/frontend-next-migration/src/entities/JoinUs/index.ts b/frontend-next-migration/src/entities/JoinUs/index.ts index db2e8fd4e..3fbceff3b 100644 --- a/frontend-next-migration/src/entities/JoinUs/index.ts +++ b/frontend-next-migration/src/entities/JoinUs/index.ts @@ -1,8 +1,8 @@ export { Block } from './ui/Block'; export { - makeGetInTouchAndFollowBlock, - makeCommunityAndOpportunitiesBlock, - makeEducationProfessionalsBlock, - makeFeedbackBlock, + makeGetInTouchAndFollow, + makeCommunityAndOpportunities, + makeEducationProfessionals, + makeFeedback, } from './model/makeJoinUsBlocks'; diff --git a/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts b/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts index bcae7ad55..696e5d7b7 100644 --- a/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts +++ b/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts @@ -63,7 +63,7 @@ export const makeBlocksWithI18n = ( }; }; -export const makeGetInTouchAndFollowBlock = makeBlocksWithI18n( +export const makeGetInTouchAndFollow = makeBlocksWithI18n( 'getInTouchAndFollow', [ { text: 'phone', url: 'tel:+358442407396', isExternal: true }, @@ -96,7 +96,7 @@ export const makeGetInTouchAndFollowBlock = makeBlocksWithI18n( ConnectionImage.src.toString(), ); -export const makeCommunityAndOpportunitiesBlock = makeBlocksWithI18n( +export const makeCommunityAndOpportunities = makeBlocksWithI18n( 'communityAndOpportunities', [ { @@ -108,8 +108,8 @@ export const makeCommunityAndOpportunitiesBlock = makeBlocksWithI18n( { text: 'news', url: '/fi/news', - isExternal: true, - showExternalIcon: true, + isExternal: false, + showExternalIcon: false, }, { text: 'duunitori', @@ -121,7 +121,7 @@ export const makeCommunityAndOpportunitiesBlock = makeBlocksWithI18n( discordImage.src.toString(), ); -export const makeEducationProfessionalsBlock = makeBlocksWithI18n( +export const makeEducationProfessionals = makeBlocksWithI18n( 'educationProfessionals', [ { text: 'phone', url: 'tel:+358442407396', isExternal: true }, @@ -136,7 +136,7 @@ export const makeEducationProfessionalsBlock = makeBlocksWithI18n( teachersImage.src.toString(), ); -export const makeFeedbackBlock = makeBlocksWithI18n( +export const makeFeedback = makeBlocksWithI18n( 'feedback', [ { From 58001a6898e91a3a9ec21910ddde3aa66026b866 Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Wed, 3 Jun 2026 20:20:48 +0300 Subject: [PATCH 11/14] Fixed: Header going under navbar on smaller screens, font size on smaller screens, content alignment on tablets and images overlapping text on tablets --- .../src/entities/JoinUs/ui/Block.module.scss | 21 ++++++++++--------- .../JoinUsPage/ui/JoinUsPage.module.scss | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss index 83f80ee71..516b7ff12 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss @@ -274,7 +274,7 @@ margin: 8px 0 56px; - font-size: 1.9rem; + font-size: 1.6rem; font-weight: 400; line-height: 1.65; @@ -287,7 +287,7 @@ align-items: center; justify-content: center; - font-size: 1.9rem; + font-size: 1.6rem; font-weight: 400; line-height: 1.65; @@ -320,36 +320,37 @@ } @media (min-width: breakpoint(md)) and (max-width: 1200px) { + .Container { - padding: 32px 32px 32px 140px; + padding: 80px 64px 32px; .ImageWrapper { - top: 24px; + top: 12px; left: 24px; right: auto; transform: none; img { - width: 6em; - height: 6em; + width: 5em; + height: 5em; } } } .Reverse.Container { - padding: 32px 140px 32px 32px; + padding: 80px 64px 32px; .ImageWrapper { - top: 24px; + top: 12px; right: 24px; left: auto; transform: none; img { - width: 6em; - height: 6em; + width: 5em; + height: 5em; } } } diff --git a/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.module.scss b/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.module.scss index a9b2167e9..1cda279ec 100644 --- a/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.module.scss +++ b/frontend-next-migration/src/preparedPages/JoinUsPage/ui/JoinUsPage.module.scss @@ -20,7 +20,7 @@ @media screen and (max-width: breakpoint(md)) { .Container { - padding: 0 16px 48px; + padding: 96px 16px 48px; h1 { margin: 32px 0 24px; @@ -33,7 +33,7 @@ @media screen and ((min-width: breakpoint(sm)) and (max-width: breakpoint(md))) { .Container { - padding: 0 24px 56px; + padding: 96px 24px 56px; h1 { margin: 48px 0 32px; From febc21272e22a0d4ae3e7cbbffc5b4d7ca258c2b Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Tue, 9 Jun 2026 17:14:33 +0300 Subject: [PATCH 12/14] Added english translations --- .../src/shared/i18n/locales/en/join-us.json | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/frontend-next-migration/src/shared/i18n/locales/en/join-us.json b/frontend-next-migration/src/shared/i18n/locales/en/join-us.json index f8830d5b1..fc55a33e7 100644 --- a/frontend-next-migration/src/shared/i18n/locales/en/join-us.json +++ b/frontend-next-migration/src/shared/i18n/locales/en/join-us.json @@ -1,32 +1,38 @@ { - "join-us": "Join us!", - "head-title": "Join us - ALT Zone", - "head-description": "Join the ALT Zone project! Become a tester, explore teaching packages, apply for internships, join our Discord community, or share your feedback to improve our game.", - "head-keywords": "ALT Zone join us, tester, teaching package, internship, volunteer, Discord", + "join-us": "Get in touch", + + "head-title": "Get in touch - ALT Zone", + "head-description": "Join the ALT Zone project! Become a tester, explore our educational materials, apply for an internship, join our Discord community, or share feedback to help improve our game.", + "head-keywords": "ALT Zone contact, tester, educational materials, internship, volunteer work, Discord", + "og-title": "Join the ALT Zone Project", - "og-description": "Be part of the ALT Zone journey — test our game, explore teaching tools, join our Discord, apply for internships, or send us your feedback.", + "og-description": "Be a part of the ALT Zone journey — test our game, explore educational materials, join our Discord community, apply for an internship, or send us feedback.", - "block-label-discord": "Become a Tester", - "block-label-connection": "Contact Us", - "block-label-teachers": "Are You a Teacher?", - "block-label-duunitori": "Work With Us", + "block-label-getInTouchAndFollow": "Get in touch and follow us", + "block-label-communityAndOpportunities": "Community and opportunities", + "block-label-educationProfessionals": "For education professionals", "block-label-feedback": "Give feedback", - "block-label-instagram": "Chat More on \nSocial Media", - "block-description-discord": "Share your ideas by joining our Discord community", - "block-description-connection": "If you're interested in our project, feel free to get in touch", - "block-description-teachers": "Sign up to test the teaching package", - "block-description-duunitori": "We offer unpaid internship and volunteer opportunities within our project. You're also welcome to join as a volunteer. Check open positions on Duunitori.", - "block-description-feedback": "Our feedback form helps us improve our website and mobile game. Your input is valuable and will be reviewed by our development team. Thank you in advance!", - "block-description-instagram": "", + "block-description-getInTouchAndFollow": "If you're interested in our project, don't hesitate to get in touch. You can also follow us on social media!", + "block-description-communityAndOpportunities": "Share your ideas by joining our Discord gaming community! We occasionally offer unpaid work experience and internship opportunities within our projects. You're also welcome to contribute as a volunteer. Check out our open positions on Duunitori.", + "block-description-educationProfessionals": "Sign up to test our educational materials!", + "block-description-feedback": "The purpose of our feedback forms is to collect feedback on both the website and the mobile game to support future development. Your feedback is extremely valuable to us and will be reviewed together with our development team.\n\nThank you in advance for your responses!", "block-link-text-discord": "discord.gg/mgjQkCR2Fg", - "block-link-text-teacherPg": "Explore the teaching package", + "block-link-text-teacherPg": "Explore educational materials", + "block-link-text-news": "Learn more about us in the news", "block-link-text-duunitori": "Open positions on Duunitori", - "block-link-text-feedbackWep": "Website feedback", - "block-link-text-feedbackGame": "Game feedback", + "block-link-text-feedbackWep": "Website feedback form", + "block-link-text-feedbackGame": "Game feedback form", "block-link-text-instagram": "@gamingpsyche", "block-link-text-email": "proyaleg@gmail.com", "block-link-text-phone": "+358442407396", - "block-link-text-icone": "" + "block-link-text-icone": "", + + "block-image-alt-getInTouchAndFollow": "Get in touch", + "block-image-alt-communityAndOpportunities": "Community and opportunities", + "block-image-alt-educationProfessionals": "For education professionals", + "block-image-alt-feedback": "Feedback", + + "block-website": "www.example.com" } From 4b9fd4314bbde9e3dd467c45fcb26497d0ac6abe Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Thu, 11 Jun 2026 17:18:04 +0300 Subject: [PATCH 13/14] Replaced the old images with new ones from Figma --- .../entities/JoinUs/model/makeJoinUsBlocks.ts | 16 ++++++++-------- .../shared/assets/images/joinusPage/Arvot.png | Bin 0 -> 17614 bytes .../images/joinusPage/ClanLabelSomePersons.png | Bin 0 -> 26722 bytes .../images/joinusPage/KaikkienKaverit.png | Bin 0 -> 18395 bytes .../assets/images/joinusPage/Opetusmaailma.png | Bin 0 -> 20478 bytes 5 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 frontend-next-migration/src/shared/assets/images/joinusPage/Arvot.png create mode 100644 frontend-next-migration/src/shared/assets/images/joinusPage/ClanLabelSomePersons.png create mode 100644 frontend-next-migration/src/shared/assets/images/joinusPage/KaikkienKaverit.png create mode 100644 frontend-next-migration/src/shared/assets/images/joinusPage/Opetusmaailma.png diff --git a/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts b/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts index 696e5d7b7..70a2fdb38 100644 --- a/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts +++ b/frontend-next-migration/src/entities/JoinUs/model/makeJoinUsBlocks.ts @@ -1,9 +1,9 @@ import { BlockSection } from '../types'; import { AppExternalLinks } from '@/shared/appLinks/appExternalLinks'; -import ConnectionImage from '@/shared/assets/images/heros/mirror/Mirror.png'; -import teachersImage from '@/shared/assets/images/heros/sleeper/Sleeper_new.png'; -import feedbackImage from '@/shared/assets/images/heros/einstein/einstein.png'; -import discordImage from '@/shared/assets/images/heros/conman/conman.png'; +import ArvotImage from '@/shared/assets/images/joinusPage/Arvot.png'; +import KaikkienKaveritImage from '@/shared/assets/images/joinusPage/KaikkienKaverit.png'; +import OpetusmaailmaImage from '@/shared/assets/images/joinusPage/Opetusmaailma.png'; +import ClanLabelImage from '@/shared/assets/images/joinusPage/ClanLabelSomePersons.png'; import igIcon from '@/shared/assets/images/Insta2.svg'; import fbdIcon from '@/shared/assets/images/Facebook2.svg'; import discordIcon from '@/shared/assets/images/Discord2.svg'; @@ -93,7 +93,7 @@ export const makeGetInTouchAndFollow = makeBlocksWithI18n( }, { text: 'email', url: 'mailto:proyaleg@gmail.com', isExternal: true }, ], - ConnectionImage.src.toString(), + ClanLabelImage.src.toString(), ); export const makeCommunityAndOpportunities = makeBlocksWithI18n( @@ -118,7 +118,7 @@ export const makeCommunityAndOpportunities = makeBlocksWithI18n( showExternalIcon: true, }, ], - discordImage.src.toString(), + KaikkienKaveritImage.src.toString(), ); export const makeEducationProfessionals = makeBlocksWithI18n( @@ -133,7 +133,7 @@ export const makeEducationProfessionals = makeBlocksWithI18n( }, { text: 'email', url: 'mailto:proyaleg@gmail.com', isExternal: true }, ], - teachersImage.src.toString(), + OpetusmaailmaImage.src.toString(), ); export const makeFeedback = makeBlocksWithI18n( @@ -152,5 +152,5 @@ export const makeFeedback = makeBlocksWithI18n( showExternalIcon: true, }, ], - feedbackImage.src.toString(), + ArvotImage.src.toString(), ); diff --git a/frontend-next-migration/src/shared/assets/images/joinusPage/Arvot.png b/frontend-next-migration/src/shared/assets/images/joinusPage/Arvot.png new file mode 100644 index 0000000000000000000000000000000000000000..8860c1b3d0b6b9877931cdbe0297dc4d907ebdb8 GIT binary patch literal 17614 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 JtaD0e0swvDOGf|z literal 0 HcmV?d00001 diff --git a/frontend-next-migration/src/shared/assets/images/joinusPage/ClanLabelSomePersons.png b/frontend-next-migration/src/shared/assets/images/joinusPage/ClanLabelSomePersons.png new file mode 100644 index 0000000000000000000000000000000000000000..15f567fe141344bafc33971a519ce5b3df160334 GIT binary patch literal 26722 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 JPDHLkV1l`7+#CP^ literal 0 HcmV?d00001 diff --git a/frontend-next-migration/src/shared/assets/images/joinusPage/KaikkienKaverit.png b/frontend-next-migration/src/shared/assets/images/joinusPage/KaikkienKaverit.png new file mode 100644 index 0000000000000000000000000000000000000000..a056e691c3ba7284b144cb7b4bfd865f48abcad7 GIT binary patch literal 18395 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 literal 0 HcmV?d00001 diff --git a/frontend-next-migration/src/shared/assets/images/joinusPage/Opetusmaailma.png b/frontend-next-migration/src/shared/assets/images/joinusPage/Opetusmaailma.png new file mode 100644 index 0000000000000000000000000000000000000000..10e47d47f4950279b71bf8d862f1319c0a475c5f GIT binary patch literal 20478 zcmV*7Kytr{P)KePfO>I5UvMe)^)&(rSnpp~8m! zL3raRy!~mL`lrIe!aq)$G%5JpbI%bd`7|OD0cAuk1Stlc4fAu7iV1{EZyXPvglHHp zA@+Rc_0!PRP-6loskrO+sqp*(^(3PIH@S0D9W$`Gy=+qoDU&3ET(DF zxcH^F%u8o%NGj=Y0?|&0J-@xG3@#hp1j`YeTnL=2cdD>vXYkLs`ircrtjg-@YU-#4 z^@(Iyz!?E$L`F);AVX|e!rAb)qOoE7g(E4%noqxc3?5t5ZLlT@f%9w61gcJ)gJ0t6 zpS)hLzp}EDn3JYqQEMZhjL2}w1;d7Y6=KaF{+}Z-CHAa|HAz-&3)1xKl$4ZT#>K^T z*VWY#YX(-XTp4`$;fK|sRB0oijL1-m7pL2Z4QEYCo_+J&bkBvvhJBTlf2@F-isSIe zLbqu_kx1s4L~zF>!py0eP?Vnv7rHnxCiyjQUmJJ<7k`wHkkHlE z*4BaQYrn?i2`sbS}XNq zldU`p@J>Y>{NRpDVB**~xRB+yFPwxkM~+&IKYAbYf8*j~IJKvyrgk(oHg*>m7x!%6 zzMc6sVF194fHEQ^1{;n}j=t@i*Nq==-*DBlAHjsUT9`Z*U`!G~YCOOw1SK_R4$2_@ z>qPTNYX`s!A4b7-S6u=H-bA>Ng{-nyd#YK8o+t=P0_V4}Z~1OlS64f3!n=a5#fukr zKlj{o9GLx*2q?d};>GDUoJy{nGlsF@)w4#!?8!+mP+7aV62>SeATI+T0~skdhDu7phQz`>j9O0Z)IW2T}xLN39&L|6SlrV*|i@9!nLc$b7vtvzwZnw3YDLg?T1qhoe0VcyKnjMxANfY z57i(j&0Y^O09YnsFz%#%vry$XKr+K^ezNsAU-}m z(B9ro{YnbM>vIr$1eBjmDaPsQw3L_nMb1&x&uw{;ht*P z+?@%F=I8bsocDjli)?wy!j{YCF}7TQi+hnRV-b)&Nl8gPt*xzm=$F4Q^+!PY*$_6u z0(3S+r@N<^v7zXESA@9^B$*sleZLY0v}~8Em0`yTzB#sCI8;A2J3S5?dK9ktp?5Xd zURt{1plAr(A_T~FFYSYyrgp*@tZqz##^6zS8!r7;{0NU6WcH@^T6p30Ciuz?{qvO) zTV6C}9Gq&ZW(>)NQjdITlCo$=mHPXho*n{XtRDq5Fwzvh51>l~loyWhL{9|39GW8& z&PJn*H{YA+(JZB-S>KSNWnL_;gQs3-0Q!vsiW?Rcp*lv+eU$@J00v(+;V%rQaUjZF zAX7c637q4{WkNu$2CEvZm+eK8$L5;W=^k5f%I*hP2#|k#c^_PVaVJbj)qJFJ(V9vv z-)#c=PLr_eyD#sA-@Wn?{QI{rf&K^uQ>=gG6!s;}HD5nfNqpzHzZkT^(J{ebkaTi9 z8_>K@kv&S=*IGTGw10GBKl$;RdnUS01Nx?U8E&@x-L6fXU(3pR}KfQ4pYL1Nm13N-tAVAE^6;G6UOnxRKg zZK|-ZbM-rMaPJ-S*fIg@&o3W=wx%XX#HO5x&dwQ^~H3`x58V?%=bio%PGI`@59A^!Kn+?*fuo!v|=CA2c$bA zIEBDfuAYj8!@ko)*O!tQ4S5$`4DTL21XoXWI?k%St^Xhn78QqB zYW4d4aCv4Iq-H31fAqrXf<1f7Av$_ySkMrdgQ$*XqyUV@XA|AWmQDT4shI$OD?i(B zP+oi4c#8^4fd#0-PT5g~=2yR;%wEw5Na`%p#Mn}|!a6?L2q?n~2b@=!1_3xbu`#BI zj3toS;qsF(Z@dB%JPHG36jRHzV^vjwWNZ+}D;l7sJr|PWqX3k?8hI4!$-qwK6?U7h zU6Z02=}=aA8En{726tZC0cHkPP4!lNO1W@6@cr9oK(g+xDJ^e;38T7T;%EiZ;t9JTD2Bjn5re-C06Gyqdg9n_G$Us!go7mj^+wC~q45`uG zFgDr6z~|=n7wZ2J!J*C=jf({tK`1}j2J@zSzydtQ?iv8BeLuy#Dl@mKPbnU&vKZC^ z?>s0ycm~Rko`&q?7RXLjAq7F!+@V0(X*3AMra@L#COr5JkLey$@I^ufne+tBTFM_m zQ>O~iN#XmJ{(v7cQ?%gs{`yI&IK|=iSE!HwleesdH{Ywknw^0uQBhGJA}dCt(I*-K zNlZz2i(0&RF=fdMIMw@k2BlY+@aKYDoN_qe&|>Jx$sA<>&Wp=z8Wi9L;1@JlM6nW< za9j$yJH{p{kc13LfTTW&QL_>{kOI9^$cjNB;5PM`*X3&z%c;`wdKp!e*r~B31-XgvOnV9}=xKpbx_6|t3*hC71Xyuz_&z0t>cu98 zEUf*O=>A)NsjXDE5`@h6qWdrNP<^EZx*~UMY;1H_S65Ud13Oj&tQEkdPtt$?@By}}h zJvhrAI|?>6#K0BapjI6JDMmjqbo{&3vG8vTlfs;XZ?}u)QLX2e)K0@?V)qhJt;VBd ze3=yFMnMSBPUqF;|Mi2}@Xm*I@ao}O$Qlz3?Jfdj4p^Uy`8T){`-30u!RIu9^suF$ z;PLnZ8HkL@NJZn$Ia822Eqg{mUQ-8fP)6yKyRNRzrEhZ_L2@C2(hDKO2?tyX0&X@3 zoCl2x-i$bArQ{4pYNbo(|Gm&SeVRH_)!0``H!_iMN;j7o@8U32D zVzdRh|EGrbTNuZ#5{K=Ib2)0E;tKX^a36a074D=nscmZp?>}k5RrB#r#sR zFdU~DL0vWKP|aX;veMdFa8r&ySU?b~m z_eV;rGok3JfsN_R#g`>zyi3V6|6cRFO5T=_RC+r$MMp=wkR|D=XyTx>zFBlRU!e4Y z7L~$)HyFV6CR^TbfSQj#hAStM!9X*Hkj0W7$HY_xS~}|B*MI7ON4_ulsn{cvR7{(` zo|&mk2Mfz!vmYew(Scos>sWGaHf(q!2#xjiP?#ACNo(ywhCCGqbLLKm={X77MwjAH zuW((8Q-kN%WoA9g3&?mu1@-!P`5@TdC#%ZgTy`%!)4|fU*k~i)S~Ly*wqp-`eQr;m z`<1KTO@!~?I`Gjc6vVM(_bC=QAc|&@Rq4&rf_+LCx<=e+^x?n^dvzlT%3=^wO3a>= zr1|190~l{2NS3^yoA4ZXi`O7a6YUy<&)=f(*m znqY~dLh_P3AtTAf^nAC3A9^Y=Q3`x17hpS@#wK=a|k0JtJW<&99A(c0PD1uBcBdh7Q>+-q4VVewCuz8e< z&Akchstg8|MF3qncQ&lvRSgAcXCWn~0}8UVz0K|DIysHh<@Z2#POioJI}mX)_RP?_ zsATMMAuwI!vqWQ$f`AlNSlfQ(aDkG6@wz!<9{B0qlRQK5ah8EdOS_-lF*%{#;=9T8 z7!;`U;g6Xq^(id`4Nyk=yHjME9ZCy z#f)}B#vXukrfsB|k+H|u6Qxr4EA}fDvc5v7KRKdI`SAG$BNtLfJ)T7LebJax1?;=k z0G~9+!PlZJl;Hj-7bXV6*SB|1oXl8^5~ryaSTUw3&Huq@J${>K2<6+^0h3 z6ggg0U>VE0$Uyo_PtljzX8s}+jBIS5%>>e)RMmYS{P(=s4}2vDE+nBhWmo2O*z|D>x)bbar)S2j`N;9^betc7-aGAF$GTYfSMiE$I8BlD>+0`Q+F9TGpPXaYt4gsyX zJpe17J_3cywy|Y1sNLo{ZFjkC_UYg?0l^LSF9WB0k)DU$3(NvQ@mP@d38Kggirvm( z5sK{T!S~&D7b$Sb1hj-7*Ioz(3CU)h5!FE6*fu%S?2AAa~-lUJ_%W*%Iq zvgmRI-R0@91C2R5n<$1-h0&>r@a-!_l~oc&dNV6vUWah|!CbGcI@^niY^Z}SX}f$r zsSzsDc~uG)kA?MHtJzQ}N^n(FFb1q5^m7f>RDm634eZ#e`VP4F<{Vgv&(Wm5sxB~F zT=}`Vx~pH0p=L_zz1(*Nu<1q$WfY+w@2K)BAnC?1oI=K)igQtDyHH^Qde-+=Yc8T9 zFWa35`kROPm4X^ekv+6*3AY<8DA%I8de4Q%j%MLMiVE}d@rfyNOsH56>>IlbNW(%4 zHedyC?o&FQ!|7O;bPeIIO+H>&$Ej#W8f@8B1LY@LS>U+X(3{(O;8a~3Gk{DS8_#yp zwiUlW2phJZGOlJv**Vzyn<6O4rEXGC>R0LpAVmNlo9Wv1dn1CrQD~j_zQyF=` z;tXD=>#zl<2JE7ObOy?@6R5*0p^%p~FMR^P{_969MwMjwUDI&77`E)LWz+Jzrb2#h z3T$|*immTJYi2=ivd)Zp(12(F;_D_{NB|U#J|-)+TvoQ^DqsrLV~1MWG?;*^4lhe` znKV8LrjBi9uD5$G3;kX*$0?aRs@w`!VF{2pcQ-UNL?I}<=KxXZZZK zYWVo$YM7MbXTjAJb3ctIB zt>;hD`p?w}JZ`{Q{Za*s2-^Gf&9L_mH^Z{qE@EZ2?5+W7J1W+>;typo<*t9ADtn0S zD@7GHblu`y5w2C(Zm}v0#vR4U;_L#)7moaHQ|x|A(+->8c<6|95?PTl;1Oj=& zMX(zT27~UbtSkbgR zjoU7tsKEH{ldx`cB@CU&Z(N%n&6bHoh7^EdJXZ-oBIp#GvbI)Pmlc4rd%^@-H`~AY z{aU7O5^K>!7FA*~0^n0G9b@HF660XUp$0fr-^R{I>jel*)_<(;U}bh3s)zi^smPK^ zY<>CHXRzBZJKoHWS@HV=u;I;0*!uW&Q2+8*H8!np$2tOFSYO$_Y1d@{(DdTzI3`SjRH1asyP^)tnOiDI)q+?!RH%WP@1 z1ldBW2p|`a>E&E@{YtEtR7zsKf=M1WPO`M@tOhES`ySuR=Id4zA?RWlP!FAGGC;{y zQYxRFkqGl=W-yht?0Ay~M3hsEIkoFg!5@H*;pZk$lO!j_;__MJ>ejq`9F{Mc3Yv=Q z0!xs((RUXD(-pCgDE2w|GZb!L)>2K;LLl$d*7bemm2GgWriFcaFD+4pv#3mDj!uAl zZz8rQYtEygl+pA>BWN*g6O29l!d<$t$4!Qw?c28xiYf2^>D`mO{fS+req?7u9rhpb zg3+iK+e?ND+C{lluAZ#G+aK1z(2E-8%m8N96u{&h7gbIZ%gU@NGb#7~i6M_R%xL%) zL%zXP&wdPr|MUjj{?qs1n)|mxRYM13DQyrlrQaCKRL_N1WFzBgZjS1@cBAg185wLF zfsn4HVAAN&I$kFMlR#N|sGjYwA{O-Zz{HG1ww^sUkumF~-+2X9;kRMQH92eu89Tq| zk2Gl(F7tDKE;ROt(LILr6_nn4 zZWzCEX+JHkWoTi&C|yB7DiGVpfgp6{#HNAvHW+#lnMx5rD3=i@ahKTmL@+5}?kfom z(r%j$+^YI6W7~>9ltbQKufY1ZPO-Yzqbq{4v)y~!6a?J_rZ%oY)pXIkEM&$j+2zpB zpPivuLW$+(BM6(@y4lN+&O3jmHYSmdr8*0A;Fcb$WBZp}r$sW|^B-@+(x1N#_x$`F zY~bCf#?EB>pZw7kSY{HQKMS6C;BwqvfPK$J*!Sc^om}Q;0Cx8)Y`0VOMIa0N?)&c} zFlFhxu;J}m0f36-rFfvC1s+|y8?s|7VezGYxEd9?Y2y{R7@hdj#;GuUJg}*x5a8>V z`M~2p0#E#HAL~{PwUDugKK3IE8GGDrHy(Yiu7< z{fT00ARVw6I#n-aBoIoCfckAa%0Fd5Do2+N1v(dalVROY=9tTy-s(dA`Z@uNRK(RU zR-n(Y89rHm3)|kp@|^ZSc4i`LoCL@v*LvaS|8xmst0{MG)EUmjRMBK)t8$(3_&Ex& zf4BnyN9BqTklfFrIh>CJsma^28=u$GKH zzbv(G*Nr_icK8h43`O?D#l^WhJ3HMK6%}qpVQ(WNh@dZ^B$iw{kRex;L}}w5Ejx98 zC2B}N^dh2MaV(;V%V-$%qdv5@0ycj@{W$ZRl|~{YCq{wk?X8fTp_PqD&>ZyW?m_<^ zSuP($-(PZKG+W;Ei!U*MA%Sqqu3A`#t_Oa8Vmty2bLJyMu6XJItbg-3+oyp{yS|AC z7y=XlmX2ZD#%iE@Xw4qRn(N;<#(=itAi6RTh{Tk%PR*Jak@}&J+ppmQ zJ_2q(b4x6omu*~Ic4iU-2+4Z1d=||di|kbhi{@wJv9ZQ=k|mWux#};67<(V(2yt17{P>)HrK@)q)nVOEKNee02&|8M`y#0L(*k(n2L-U`a&1s?Y56%* z8Jbo-dz4u@DH?_VO8_iIfRcZZfVgGX8P+%akQrvOuwOQnsfXm2C@pI+u7UtYY9<{+ zXL#aA^B9vgp#i4k-`;?#I<2ogUr+S3X46Lq%meziOe}vTQ%j%t*DDc}m%y@;eAtLU z%+`%JykBX(XW`yWT7~G6;V&?k^deL2)py0g-Jxhk9Ez!>i>pA`p{_ zvGfLe@2ykW_AR?kBiPzaR!ssT8Evllm(6hBZ+7AQ73OnP^u|Z~AG!B(2EdKKzDZYM zar+G#AeUS}MR*35H;}YVa8($)?T(R-m#wFUu?B!QEz&YpqYH(C5VYr}l`UNMCfxVL z0a&&E6WsTaQS0h|oHVYP#o>zQLpgo63)-5{qMxj24CxZ?frsFU4bAXPTb~0Z*h-CV zvUE)bBjJoaI3x9sSzyuF!?N4ylW7=NSWu>WqLkM%kEKC*xkyHVeA{hP;_`nm3*t98cHWLe2HWX2-w zzlKxw1?@m!j2#DSp!8sk@SFgg8n5a3h|dT@$AtQRA+VBBtMGfT!9&=OrsZoM*k)Kg zms~TE%~!vC0)3tr!KO#%Y0Ow3%8EQcKUMm&vjT^!+Mv*jzSDRDmH8S>zop6lDI1AG zl9L9k>oHV9d8bY_S+{3vO<)QbZ!m)?UE{`$bBU2X;rf)GqWsii7$PBcG<#72dnx0H~K4|Hpp?gsOo{3(L*uIs$anLmTnR?5ny_y4rx%+^u@+Px)HS-+52k(~Qni23$Db2~HAP+yXa zFyN#Kn64RY%Bie=UhnFSQs~v)HL&c~Nw5gZP!PhBYqA+ANfyn`WGXGSk?izXc<@eo zX1ifaeVD@>E62L;w`o zvwiz^RyG_ci%aH@g`pM(PS#)S{VPglu{Ja-Ai?1&D`4pZ$!y7)41NBJFA(?K@?&;Vnec)k})TAGn&jdfyORO zFbq)jhf-DNgKPfzMW#ycU3Z7(c0nmUSPSMCoK00KXVyCA-=u&73RWjs@zg$8gZD^6 zngOZTzkc>Gdk*u_`n>TMS2Ivj-89nVo?qFkJW4!6f(H%W-qIA zHTE|bUX~6M(_@TFqTIb&CUgbNIfG2MEs4}#bfM1`q@)d9HbqK@TGeRXK2duwvyQ!x zIo*|zkl?DRsd0}VKb|){H7qDeKR*9r*Y^>&D~f$l3loaVW(G6^Q2?Y-kNymC9}N&* zzqOrNSr^V7&-T%%3NqSkc&pMF0!0k6xm!DhrT}pXKx%q>Ji!^pyXN;goE6`BgCF!es3`D%H24oa;%pu+lXXW*fykK(g# zgmn)VuzlDUgH9rS(?}GM`jKGs2oVrm#wp6DXM402>jS} zKP`f#kCrkpl2D`Nkuk)m70)deuEqYXZCrzCx4c0*&Tvui>zC_R(B+bYmRKK~Gq*!x zjNV`Mv58(NYc?K+U;lYOto!!`=;!=^xm4JF>TIgT#44=(mYt_r2;cI%3Rrz)LEen_ z&Es#$RYQPWg{-;iuZQ88pI!kokQtXgx{Fz*IS30Tr7*3722U@Xo34%11WKSy5l02c zj#^7D@Fo~{b3N*=@4fdi@5Fvev$NeuGl2thivX#x z?d|Ps%FD|$el$lz&)jJ#UN~=JFnMS)v@F%0;lPd!1>ngss-|*cxR|&PEOqgKZT7|& zE|-is+n%@)HvQ)U*!tv+u<@7I>V}?vitV6WCENj~nRTDaz8y(E%a*n-1ly-<8}Cb& z9;jjGZ1#0AHYGq-)%tYbsTQzKjKBBk5_s~5bB%4h?p1#+hi^Udo(69Hg~cL`aNm}l zXBZ>W0Bb5uK@}uq^dX^74X|s_*^{yl7UhqIXa4OHc03t+>i>Q%EWcxtalYhu7nIc} zgFh&=4RIoMR_*0k>9YAy6x?-fE{vcUv7>s{bk_Jh9uHJhQ~UG}a!4hU$-D?aK$@SdE=&U4cIN{ES5%V7AZ1 zxLKS1WJs!l!llonU-LZ#<$k#Ip63lF3I=T--{O4pMN(W z_C9qTJaOM_cFhatX28PBGqexfg6L(?x^vi zHjo9wAt&mr`fIb+G<;D}QO1vlOldUqtgI~H83-Kvl%B-l`@TnbQEXNPkeZeOoZJ`2 zHbnxk(>4oZIkZ0ERcZKm;T2##(2bnhmg&v?3SG;S*YIpSvm-7wU;#kjzCy;TnC)a zmK2yyK2uUfMgQt@b`3$MDQLsJ>R6vTo5kQZp?~%Rmfwf0s@2GZEV&jQvh}fI{XVor zTiW+p0zzLHtgI-iqB2PJXSKL^0=id%@cyw1xZ`qFs!M!s=4W17fxgi0TvW-22aruZ zKex1+3DworzI z6jHZh^&X=PvDHJXKVYCFwRzpY7qhXIET93|?V5l2hrx0N2v3|d8hI$Fz1w8{+_K}O z76z!Vll7JQoGA%zqu)rtOo?~Hrbn+tfHtu0MFnYK0f#BSj@bX@z@udud|(eq@i?4r znmYkbHH?8BCo2IuYGD2pGjMq{53y9$xhN?AG!2Sod!cCT@M(ejkF{{0q)EzZ*mc#S zJA^G@pOS4SKqez!MnK)Yu_BJDS`fF0cUB*lxE? zJb$R(QE{=zkSZk7SC!qNeT^M4Iw1AqoXF2c2!LfL8W9W^vjZutu0?nFZ~WEuO#LKv zaaqa5aBs=QjG;;%e4P!|I#t`s)+wfzRM^#IS5bHwJ;+TF(Iu}z&iOJ zxxbYS5mN&UbW|_BAX10Vv2n2!Pgw3`hG_btAJR5LhLJMh@3tg0OY znyaQDgY2}65S$ZX3tsoBng&RYMIZ7gm3`1ham7M18dB(bXCy>J_?P40rLwLA3T)!r z%Qa9|NSoOW5+FfnEzY3y^}zWNCCqlkW?kCW8~d?hG6RAc*s|+H>Ju)wBop4+`6=8o zGxUrq8loUCH`{!9!UD^UqZ?jmlm?A)T!Y{tx5<`W+A_%o8g8Zg6ImY*fw|$0shK3DhiYL-#v}yxak%fXoh;YRgI_N|HMdLyE%qZt5SAXOV<6xgT%O~(DkZ%9oRTlJoTXgI_d}R zU3(i;BkK`h?t5$pQw8}@ECL+G#6E~%CDpU!f4+(R!*jqJ%KuAQiJ# zuR`H>USc35=3{~IxIYW~h%~h9k$;-O>Laytkp)IIlyBHZjR@QbvLa^1cokoqgT(0-%g6Ok&x~ORA z(Qj6}kzNfw$7tRJH~IdQBO6~nBMxJ=s#l-YWgwfxDN zwX^IPg6vw2fvDV$x_ZWjJcN%xMsc*{Bh*|F^~@Sd!Qd41PRvUT_~ZkZvX{erz5mCU za4uKx#P5~buoa*8rUqKnSEubVgGnr?+Fb`p(BYbFuElh2;hZBR+Yg?Dg%>N9?SI%E ztaZ7f4g`ZN;sKB?>6?|o*x1-0vZV2r;w}+Kraar+^EP!_M@A&(vjhl$RduyhElFGs zfRuvR-AY8SqQUwr-f8KN>8o#{d}!v6L+v1_a=W<>Y#d7rpsd5RL_jeL*^h z*q1Z~nCtuO{FZhiv#F(>46nSfwF(waGee40*UEE1{Ye9mpgoj8S63H33~FS-;^JcC z#=`kM_P@RV9C&Z+|F=T=FUBiWP&aIt(y}P9XRkg+0Bd-iR1UN>i`r-g4TQu#%Wj>* z7?2BPb}O2xsiBnGpY{<@v_9HcSOuUZLBVJCo`9{ zZY&0+?ff^9+0Ld;T@$bZ$BvEd7}jz)%X zh6EjypaYVYw{PEWTx?iS?mylNOJSr$HO^jvZoLR9Hk80M_r0kFTO%O3509MbBpNfK3OY&e#~rL^ z>jW$UF$t-q_dWiB#;Vxxll49zfo$2WdZ?Lhd8PVN&;c=S_9jOsx{i3-#3 z1vS;{VQvu1c`f%fvhv#(PQvm9W|pjKqL0X`)R$yI1A2dwE-(NgQ2HUHQZNY%%Cbry z(Z%q8pV|-+RI;cJ`y{p3E?P%Xm?}!CCupqR#z%_~e5FPojgnzeF4OgIon(EytxsIf zz)A^-dFp@a+s#K{aJJKeskL}e63w@#vag6yvaB-0;T{cz-`m0l`jTo(eNknfQ%PLn@G6>P)iQ~>+fRtbEdC1hH);S*TD?KA`1o!4Z+Bj3$u>K6FU#TtCSh5X)i?>X#;%~XoJ9>3&Sg?x!Mx8_ zt+lznFd%>8F9+bNtWFpcuYzZk0;6b9v!dm0%}(ipo%_onDtaaqP4|HLqQK$Y!z(NQ zbj*n*Uj-pxfK=D$=x72Zy}k?>YG+P{V{CVcE;GfVQV!5JCJ}w8L^zW&ko#n zAQFKof;VVAm+G)=k)ZkKvbzRJEq?QZS|}Xbi43U%r6Y<(a&ZYiHzj+x9^J5OODhqS zv!!|z80o&`rqX(dYpp?+G=uWK7ua)qM!J|FF(mpY36P8>^YZcn6%`etDZJObulx5` zwDdd0Bqc}sKhN!hdAXf1WjsLABrSzQjQ%Z=oPM(pvk%=*0QWTjH z!FE68XeB@{#QL7RZzlUN?b83;!@fpL!P2BQu3G;w`(B22F3Jlto`I6Apgh859a=Os z6_dvPRWK%7a$SyLh#{4>1SjeTKJvX8@WlO>z=}T{VxW8Ey9KPCy=$)5uPvxYn`DLn zU{OU?u=eYu{ianXmQkfmPHJSB<5ih8o$8gZPnC*GtZX_5NUCl~O83{o^%H{Zt88)6 zs`P8C%sx)cnHgh@g0jDc5fF-c`_1|z@Y_Y^t0d#jj!Ko(R`z`eZs0+d3=k;MKgmJq z&&tXoQ1+cEQMSK*uo3!`(T)JQ?xlV31eDqxo>K8J99f$*zRm0dqvIvbk z1VS3|u;khtHcFmUT5`Cv{vsJ|?w zq;TgPX89Sat>3$(%fynTw*KbrAh|%E(ZQ(b5j@Oc!Q;OU&A56 z?%qJz^j=vbp}tSXp3Uz!z?G9bA$zp;A(fb3YA5DQ#4hFN=q4j+Q%J=Afqvu08(!aK z(t~K^zt%_Fyt|%_WDrG5gRdHiujuQ)X&Eq z;fAPEqqi}dI2lJwb;$cvYf&{^BUgJV6WU*Wwu`-#rspJ@?}0sE8^e#OF77U|JBQP{ zbPuwItTXqG^RnROf7HR^0>7?Vg??XtU)!o;q4-KKoG;m5(F)IP`4~2S$82r=>e_&> z@*F&bfMkh{c#JCn5>?k8R9k8EGqGeh_9c4|kUYN7B)txr?2oaB3_3Hh51F2%4gBqk z&~Gstec-1Wx&%<#G;EWqBK=T$z`?@H(^(3N4QP3#T?9n3#F9mmf1`q1OG#}d)*~hi z0Z$Y14bBJtCYFsboB^F0EZFat*(j_EDIX`Fzqc~Z=OuT;vzw2C+TH}@65ZsFh1+hN z4*59=q3Z%+QXQ_VFCet2>AKk2V)PdQ^}oNgU>3YoS_UOkyG-Y6?NVXW$FcC$n`aG6 z8jrpRxj*QeG3)M@3_BZxaIgmc8(EQATR9*>Q(Lhs+0%tAi6q&{KuLYcZ+zn$s+bv_ zOJAVVXJd~Vq;YJ>kkR($7$-S{o`;kqfr-qK1H5+gJ{2q)EdlSrJ0`=5wP=CedKxys zX$Hb4e=t+~(djdCx-p0Pfn=ZwRVL0kTUc(;d_tKGoxtT}#8HFR_m3^ep${zU008OU zUN1cX(-N8>EkgzEYjd5jd)E;J<(v?MLAdMTYP)^{~6XKT-*T`T~um{`d5j)4chlMd%g2$0`;^aC{PbVG8Sc7vp{KD0%J_4|UTvcju; z5VH`yWAq~lk!fjZ-Dl694Q$)CEx3+a+%5rXNY2@dW0b$1+azqUX;FRkO zO8dd)7=DkIo#uUpDl7tBv0kT5U-ZnGMwpowgmFos?!~Uk*3hwz=jNwzdQphiuE2m* zTV1rI-IP~oD89Znc-ejc_0r$%hsSRX8kq&isPmm?1HQ64*Fy-x{o)7^(0=e9R9m}{ zB|GEe<2%~h+q)7I6MGPpenoKxNnb$OXJgMr-gKyGs%HJkz6vEVN>2BNHYhSPiijX}HZZYetQW=|NI{;c5x@y1O zu^dRi7oSHj$KbPxOH6>&xGpe;e&UXVv~)1ttK~Wb23Do*;_qZS=JO+D)Y-M`C_HnA zVlX5P$NJ%mfm-ZC{t)q38w_eMT|Qotj5@g5O@PEX0g~q3mtA&QPi1AL$uB938+w<{ zKtR3c2e;?+8g55{0BhfBg8As5bh)5UvVNZjZePH^djbOZxah!AgmqJj55;;c|8lSh zSkRXhEj#y`f1PdgFEz1IO;xGkTei#Fz@|K36zh^E;{~JIfUCE2fz2}C6tvVq-z53t z?oRe0oug-6(36@4#dC8YHb&Px9GeQ?Vb`_zd(_#Q)n^(v zUbD0>8SW^Q?sw1cgS#&E!Nf4(iNuhlr!(QpMN^n@#&S7wxSa`%d?2!v7|WD{hl5oD zai4D4i4~=NsuKYDKaowu`lRxfy4Aj`e+E&h5{p5Y`o&GXm9;aleg1{m@%cB7!GByI zWS>VT5!jLXkNZG)IC>v4fa}fry?+~1ab=_+o@-!4FCfg z1T3xFm9qttjVfxS+z`tsQhhcr0aKqG9InMqzBnM{LVd@_o;wDYk8Xlx^R$;ff$=wQ z2Yv4zSO1Qy&x4j!nU9SG-Jl}|2M`!Ll9G}-T3cI1K+0;6t@JgIC%0X43ucx>B`Q|7X6WZdZ2w}N>54A*v5@3 zFM*K}#hEP?mrc1aYO0+Y%x8v%ra*XuivvJySukilyf-H6mA&ka12cO%9crtFMudP! z!Q|`SI0Ny4R=8=37LQDs0zRq(V#W7dF4t?=Hx#qbv4}k4ja0LJ7RP4M1JeMEkeMU@umAqE8hBY}}3b$C2$XKHF{cVlBCS66vnlzvH{)1ZHH zru}WaG4Jqy&Oii{ux{BWs*K{{LSr-xAd0zq3u}a7BC(trjwKx!Pj#x_4kY@uDuVx1 zeqq=hW4mwYKu8T*PC3f9`OMoyAaEhWpPWOu(xxla)E27G?NWSEZpBw|y4~210dWtG z@YZ~v3%7k-)g~V1)2H6HQP^9X+wHCi1OnREn6w8}d!|)`0BNNhcpQwhtOL?WIHWTp z8FQG+g9O#oZt_9mdKUuHUtC-qz$v(L<;s2o5}@zuD@nhNJp&Vg@+|p!L}LyNV7qV* zF?t2S24v#80|<>pkwu*hElwZ=hkl<;S+mX!y#bHdfPg|1F$4z#XNi_}zpvTnHySVk zq4v|3ZaCXwfXJ?alhjJ|2d|joj6TX3uB&B zTJi*H^cDJaOrO_62n-wqMi90BbtnT2Hf2CaENm+rK>TL7wUU;djuQc+uk&R^s*jGR zK8%y!&-n4^1Ff{If4{>hOHnnrPu{NTU{oQLw3Y!50qIA-qrao0qdO%frMtPgIgpi= z)svi@9LUelr%4?sJBrdTP}0XshF@&@m7Gn)Z6L9W=`caf6&tnK-?UW=Wk7`)`eZp4 ztlPuBC!N41m$BbZDj}uFr(B~S9&UgMqdHjlS0_5R8ymoPs9Gi9QPQRZAf%+QY1q8c zt2zMKg^8e{6c((2s&b1Xn-gG#M$ILtAEW3E8}zRhvqZ#H7vHXn>CMCI6V9*lkTm@T zq3YLaJVXgt{AI$y2>SV0ef0S``q~v`C&xKR+f}_h2O^sz5Gg+^Q(I}CmX;QXi;MG5 zm@pwgmQ~8vN|XNCfk8`u)K{1?KK{hfbys;|#6*!6C8Lk5+A0pmLg?7)hAt>S>0{Xh z@^cdP;a)QPsuJ_bB5f0c!7W;)48Gog=q$3ua9(x*io6PxR;uv&$0}J2U&CVWg2sl% z(0l=isxTP|TXoQ>dSm3m!37eC4B+VdSiSnU7O9g(4IK0a&-bypxQ#Ce`-~^20|a7Y zW7V#%F5?(nS8!eB+x593lv9OeSR(99@Hzd(ud%!xmLY3V?7_Viz5;0c>WFxr*jAk}y6JK6+WOOHcT zw-0hskx}qHSlxu)sFV!2gHnB@i@AdA#0H3tWqR-L^+(8|y=g~1d~);*1L9qmC~&Ao z%a*pIl6^R49U3tz$cQ1Tefr@+!C1jkQh=_O5eSJfXc?>II7UUbp>JleLbwe2GT+D70n9)FG@_82Ngx67e2IyPs?Vos-{P{q4z!M-QV~?f zoF9v-r;4hld@d7MGcq#Ny1KexUS3{MPuHO?Uc8uq$et+-3x2vX6PD#w(D((vv6<2&&MI8q4O2SoqOBbBwHY7BQMv zZ@X)cYM1;hQ(*NUEp;R==bI_HAYG!qwA_@1lCz-3WKicCl|AuHR>fh5@F5u4AX@}sKnI~=B}7IEAfp7)P(fdR3ZOY(RLA6-Q>lTIpv!9+b?daO8ibwAA>vkY;xNO-{i+|5=uZE0Z*Kk8%P%7mOmee zfq(tpTxpNpZ#MK`?2CGe(|+lK!}nWq^>pJqr{RX&E<5#Ez6=2hM1nbx}5?MtVp0`p& zOfnEq!lZHWjmQ3Y)d+shz)587Ms6<({Q322m>qQtGLjW7BZ8$_X$zZc#=*BGNw@5GYYr zV!!fX>|er#E)?dq?%Cb2WM)88T|>A2)^Rt?TQJASN-)$CPCfmop0OfXPd`EHsc2#p znM`zIvmj{t9)$!%1B|Gal5Z`5eK-pDQc(r917k!kP#GvFQ;{u?Ul?rJyOdS>;P40K za1E-7@(ph~?1szd=fjM=p}iHZo^JiH4(6t}!NO@YY8|ML2*2MQBp@C@AU?0hVv@+l z4n7JYs2gjTdWr^{9^GKWL%jT{si{3^q@n1NKy`IBi@Vg5{0^(>J|e>-0|h0?4}bg5 z(|&XR?IYc{9GH+5_8;$6Lq>EPG@-fGlN<{j(H^+v%B{;3 zYH#L91ruDD(g*eQ@5qY#boEsB^^tHF24}?{-C)BRksEDf^)#rnA_F7}IHfI&$Y)0e z14=qJ_qsV__P+6}OFt88>`;oVp3e6wkP=7MQx%@t6|89LUMfNcmWJ`)LVIvWAR*W#>=S&6zN)j@i+`sZ$dB1u1o0H-5E~0w+X6)EE*j1(OZ|-#cUGFFI*i)mAr~}gQ4{}ztv!0@3zlR+A zsGj=KsUIMR{@Af&4fPZvApAneph1c16HQUrzkKucUtW6E?8*Je#C!n@S5H6u_#8{7 zB&w%tb_HvjJAhb`B~#K5aZ*otrtE<5No~V@k(89w)7sj~*bvoIins~z+@L7*)nDFM zgou1GWT<{=HyR?+M@4nNhW*Q#pH*P8JTAvt*>?vks~X|%LIu7yQ-N1LG7XKQF^Z;~ zpTb;ZMef{Z;B#>9o77W1elsA|8<8)V3>uXBTb$}4y)A7_O7v^L|6#$5lA^KjS&`n< zQ?#CPFv_fGaqjDk$lVmC30cvvv!a+(DIkqRh=B16E<>pkQQwk)NuyR*q4DSY7qan3 zR8Pmb8sVmCE;h7_j5eZrN<*WlJRflnT0fDgm!zKJ`-p>(u^w7a$%jZIGI$Obll7FG z`yj-g>MANkBqCgfvNdp{4*@e4rxnPS%OCsxG`Nubn8b>to|1FFFV<5MJqX+|+6ZjO z)l+V?;ZFUYl$4Yn3IZQDZd?FWdkP8<>LV~B>S;v6%20!ngvMfUU|y6rKK_LjU!Rn9 zJ}t9O>gk64L3r(BW5DnhoOtZ1DkO!n#GXPZibm`onphD+>M5Hj$|mAdj7VQ(IP@k3 z4Hj-RSVVg~p4g_QCZfsjBRIeN)Q|Efj8qW2n2O$_p6(3#nmd_e-$+F-)1BU&&PtjmT2pMfC$|j)4o^n7(BqDv5VF9IX{2|7SPEAdXX>4pHVCLa;$7NHK zzxw~(I&u7PF{iAa5)e0kD`5Zt-XM`HwZeU;*midL3%_yB@&e?bnBz;QMtK%$J>vFm3=*zh{S8z_5 zzFQICKCH7&JUv)PV{li5n9qi*r%WA1R_xIe?{=r9rTNdEJsU)}58&k2^VLK`-Xb!r zGBg7T9YhG44(bkawoF5iD9#f>NkE7}=8QoA#~?Tk;rd}zBe$U%NkHabgXI%Xo6qXk zKWWW?r>l)@SxTqR0Hmv?qJy7D+ORpkD7xvocqVKrmy?qdSg>FLOS*f{J@xnR;4;3 zDrrO_G6E7|yNE<2A`yv5L?RNAh(shJ5s64dA`%fv{vRJAPw^QpuvP#7002ovPDHLk FV1ki{JDC6g literal 0 HcmV?d00001 From ba20e26634ad512179167b32787ef93bebcb327d Mon Sep 17 00:00:00 2001 From: EemeliJ Date: Tue, 16 Jun 2026 19:06:35 +0300 Subject: [PATCH 14/14] Made some more fixes to overflowing on small screens --- .../src/entities/JoinUs/ui/Block.module.scss | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss index 516b7ff12..581b56170 100644 --- a/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss +++ b/frontend-next-migration/src/entities/JoinUs/ui/Block.module.scss @@ -267,17 +267,17 @@ h2 { margin: 0 0 36px; + font-size: clamp(2rem, 6vw, 3.6rem); } p { max-width: 270px; margin: 8px 0 56px; - + font-size: clamp(1.4rem, 3.5vw, 1.6rem); font-size: 1.6rem; font-weight: 400; line-height: 1.65; - text-align: center; } @@ -285,6 +285,7 @@ display: inline-flex; flex-direction: column; align-items: center; + font-size: clamp(1.4rem, 3.5vw, 1.6rem); justify-content: center; font-size: 1.6rem; @@ -295,7 +296,7 @@ text-align: center; - white-space: nowrap; + white-space: normal; } .ExternalIcon {