From cebe08114a6c944bf9f5476c425f9ee36920ba7f Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 10 Mar 2025 17:12:27 +0200 Subject: [PATCH 1/6] PM-908 - update uninav community --- public/assets/ic-chevron-down.svg | 3 + public/assets/tools/ai-hub.svg | 27 +++ public/assets/tools/mm-tournament.svg | 22 ++ public/assets/tools/sprite.svg | 189 +++++++++++------- src/lib/components/LinksMenu.module.scss | 9 + src/lib/components/LinksMenu.svelte | 7 +- src/lib/components/SubMenu.module.scss | 18 +- .../config/nav-menu/all-nav-items.config.ts | 21 +- .../config/nav-menu/main-navigation.config.ts | 10 + .../config/nav-menu/marketing-nav-items.ts | 1 - .../nav-menu/tool-selector-nav-items.ts | 3 +- src/lib/utils/routes.ts | 7 +- 12 files changed, 233 insertions(+), 84 deletions(-) create mode 100644 public/assets/ic-chevron-down.svg create mode 100644 public/assets/tools/ai-hub.svg create mode 100644 public/assets/tools/mm-tournament.svg diff --git a/public/assets/ic-chevron-down.svg b/public/assets/ic-chevron-down.svg new file mode 100644 index 00000000..39b20af4 --- /dev/null +++ b/public/assets/ic-chevron-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/tools/ai-hub.svg b/public/assets/tools/ai-hub.svg new file mode 100644 index 00000000..d6b65143 --- /dev/null +++ b/public/assets/tools/ai-hub.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/tools/mm-tournament.svg b/public/assets/tools/mm-tournament.svg new file mode 100644 index 00000000..7eb48396 --- /dev/null +++ b/public/assets/tools/mm-tournament.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/tools/sprite.svg b/public/assets/tools/sprite.svg index 8a91f09a..96526f5d 100644 --- a/public/assets/tools/sprite.svg +++ b/public/assets/tools/sprite.svg @@ -1,74 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -105,6 +35,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -309,6 +261,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -345,4 +324,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/lib/components/LinksMenu.module.scss b/src/lib/components/LinksMenu.module.scss index c746fe6c..928328e1 100644 --- a/src/lib/components/LinksMenu.module.scss +++ b/src/lib/components/LinksMenu.module.scss @@ -70,6 +70,10 @@ color: #0D664E; } } + + &:global(.has-menu) { + cursor: pointer; + } } :global(.navButton) { @@ -108,3 +112,8 @@ .menuItemWrap { position: relative; } + +.ddIcon { + width: 11px; + margin-left: 3px; +} diff --git a/src/lib/components/LinksMenu.svelte b/src/lib/components/LinksMenu.svelte index 0f9857f4..dd4f642a 100644 --- a/src/lib/components/LinksMenu.svelte +++ b/src/lib/components/LinksMenu.svelte @@ -2,7 +2,9 @@ import type { NavMenuItem } from "lib/functions/nav-menu-item.model"; import styles from "./LinksMenu.module.scss"; import { classnames } from "lib/utils/classnames"; + import { getPublicPath } from 'lib/utils/paths'; import SubMenu from "./SubMenu.svelte"; + const chevronDownIconUrl = getPublicPath(`/assets/ic-chevron-down.svg`); export let ref: Element | undefined = undefined; @@ -16,7 +18,7 @@ let isPopupMenuActive: boolean = false; function isActiveMenu(menuItem: NavMenuItem) { - return menuItem.url === activeRoute?.url + return activeRoute?.url !== undefined && menuItem.url === activeRoute?.url } function itemHasHoverMenu(menuItem: NavMenuItem) { @@ -57,6 +59,9 @@ on:focus={handleMouseover(menuItem)} > {menuItem.label} + {#if itemHasHoverMenu(menuItem)} + + {/if} {#if hoveredMenuItem === menuItem && hoveredMenuItem?.children} a.menuItem { - font-family: $roboto; - font-size: 16px; - font-weight: 400; - line-height: 24px; + font-family: $nunito; + font-size: 14px; + font-weight: 700; + line-height: 20px; text-align: left; white-space: nowrap; @@ -58,7 +58,7 @@ $transitionInDelay: 15ms; color: #202020; &:hover, &:global(.active) { - color: color(hoverMenuLink, hover); + color: #0d61bf; font-weight: 700; } diff --git a/src/lib/config/nav-menu/all-nav-items.config.ts b/src/lib/config/nav-menu/all-nav-items.config.ts index b976fa5c..f3d78762 100644 --- a/src/lib/config/nav-menu/all-nav-items.config.ts +++ b/src/lib/config/nav-menu/all-nav-items.config.ts @@ -25,6 +25,25 @@ export const allNavItems: {[key: string]: NavMenuItem} = { label: 'I\'m a Freelancer', url: getWordpressUrl('/freelancer'), }, + community: { + label: 'Community', + }, + opportunities: { + label: 'Opportunities', + url: getWordpressUrl('/challenges'), + }, + mmTournament: { + label: 'Marathon Match Tournament', + icon: 'mm-tournament', + description: 'Join the Excitement', + url: getWordpressUrl('/marathon-match-tournament/overview'), + }, + aiHub: { + label: 'AI Hub', + icon: 'ai-hub', + description: 'Collaborate, Compete, Create', + url: getWordpressUrl('/ai-hub'), + }, howItWorks: { label: 'How it works', url: getWordpressUrl('/how-it-works'), @@ -61,7 +80,7 @@ export const allNavItems: {[key: string]: NavMenuItem} = { label: 'Articles', icon: 'articles', description: 'Get insights and tips about Topcoder', - url: `${THRIVE_HOST}/thrive`, + url: getWordpressUrl('/thrive'), }, bookADemo: { label: 'Book a Demo', diff --git a/src/lib/config/nav-menu/main-navigation.config.ts b/src/lib/config/nav-menu/main-navigation.config.ts index 2a030893..fbbf93a6 100644 --- a/src/lib/config/nav-menu/main-navigation.config.ts +++ b/src/lib/config/nav-menu/main-navigation.config.ts @@ -6,4 +6,14 @@ export const mainNavigationItems: NavMenuItem[] = [ allNavItems.howItWorks, allNavItems.talent, allNavItems.customerStories, + allNavItems.freelancer, + { + ...allNavItems.community, + children: [ + allNavItems.opportunities, + allNavItems.mmTournament, + allNavItems.aiHub, + allNavItems.articles, + ] + }, ] diff --git a/src/lib/config/nav-menu/marketing-nav-items.ts b/src/lib/config/nav-menu/marketing-nav-items.ts index fc51912e..0ad90fa2 100644 --- a/src/lib/config/nav-menu/marketing-nav-items.ts +++ b/src/lib/config/nav-menu/marketing-nav-items.ts @@ -10,6 +10,5 @@ export const marketingNavItems: NavMenuItem = { } export const marketingRightItems: NavMenuItem[] = [ - allNavItems.freelancer, allNavItems.login, ] diff --git a/src/lib/config/nav-menu/tool-selector-nav-items.ts b/src/lib/config/nav-menu/tool-selector-nav-items.ts index 8f246b90..cb2be414 100644 --- a/src/lib/config/nav-menu/tool-selector-nav-items.ts +++ b/src/lib/config/nav-menu/tool-selector-nav-items.ts @@ -49,7 +49,7 @@ export const toolSelectorNavItems: NavMenuItem = { label: "AI", groupOrder: 3, children: [ - allNavItems.ai360Platform, + allNavItems.aiHub, ] }, { @@ -57,6 +57,7 @@ export const toolSelectorNavItems: NavMenuItem = { groupOrder: 3, children: [ allNavItems.marathonMatchesApp, + allNavItems.mmTournament, ] }, { diff --git a/src/lib/utils/routes.ts b/src/lib/utils/routes.ts index f795a946..def9e8c1 100644 --- a/src/lib/utils/routes.ts +++ b/src/lib/utils/routes.ts @@ -2,6 +2,10 @@ import type { NavMenuItem } from '../functions/nav-menu-item.model'; import { escapeRegExp } from "./regex"; export const routeMatchesUrl = (url: string, route: NavMenuItem): boolean => { + if (route.url === undefined || route.url === null) { + return false; + } + const urlObj = new URL(route.url); const routeUrl = `${urlObj.origin}${urlObj.pathname}`; @@ -96,6 +100,7 @@ export const matchRoutes = (navMenu: NavMenuItem, path: string): NavMenuItem[] = */ export function getActiveRoute(navMenuItems: NavMenuItem[], trailLevel?: number): NavMenuItem[] { const locationHref = `${location.origin}${location.pathname}` - const activeRouteTrail = [].concat(matchRoutes({ children: navMenuItems } as NavMenuItem, locationHref)) + const activeRouteTrail = [].concat(matchRoutes({ children: navMenuItems } as NavMenuItem, locationHref)).filter(Boolean) + return typeof trailLevel === 'number' ? activeRouteTrail?.slice(trailLevel, 1) : activeRouteTrail } From c347b76968521d0c14344c07ccad9923cc74405a Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Tue, 11 Mar 2025 14:36:30 +0200 Subject: [PATCH 2/6] PM-908 - add statistics link --- src/lib/config/nav-menu/all-nav-items.config.ts | 4 ++++ src/lib/config/nav-menu/footer-nav-items.ts | 5 +++++ src/lib/config/nav-menu/main-navigation.config.ts | 1 + 3 files changed, 10 insertions(+) diff --git a/src/lib/config/nav-menu/all-nav-items.config.ts b/src/lib/config/nav-menu/all-nav-items.config.ts index f3d78762..6c2de39a 100644 --- a/src/lib/config/nav-menu/all-nav-items.config.ts +++ b/src/lib/config/nav-menu/all-nav-items.config.ts @@ -48,6 +48,10 @@ export const allNavItems: {[key: string]: NavMenuItem} = { label: 'How it works', url: getWordpressUrl('/how-it-works'), }, + statistics: { + label: 'Statistics', + url: getWordpressUrl('/community/statistics'), + }, demo: { label: 'Demo', url: getWordpressUrl('/customer/demo'), diff --git a/src/lib/config/nav-menu/footer-nav-items.ts b/src/lib/config/nav-menu/footer-nav-items.ts index 13cdb743..f17f1733 100644 --- a/src/lib/config/nav-menu/footer-nav-items.ts +++ b/src/lib/config/nav-menu/footer-nav-items.ts @@ -29,6 +29,11 @@ export const footerNavItems: NavMenuItem = { label: 'I\'m a Freelancer', url: getWordpressUrl('/freelancer'), }, + allNavItems.opportunities, + allNavItems.mmTournament, + allNavItems.aiHub, + allNavItems.articles, + allNavItems.statistics, ] }, { diff --git a/src/lib/config/nav-menu/main-navigation.config.ts b/src/lib/config/nav-menu/main-navigation.config.ts index fbbf93a6..001b6f15 100644 --- a/src/lib/config/nav-menu/main-navigation.config.ts +++ b/src/lib/config/nav-menu/main-navigation.config.ts @@ -14,6 +14,7 @@ export const mainNavigationItems: NavMenuItem[] = [ allNavItems.mmTournament, allNavItems.aiHub, allNavItems.articles, + allNavItems.statistics, ] }, ] From 5b374535726445e03e5cb41f1e6ed490b5ad5064 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Tue, 11 Mar 2025 19:43:11 +0200 Subject: [PATCH 3/6] update url --- src/lib/config/nav-menu/all-nav-items.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/config/nav-menu/all-nav-items.config.ts b/src/lib/config/nav-menu/all-nav-items.config.ts index 6c2de39a..dda51619 100644 --- a/src/lib/config/nav-menu/all-nav-items.config.ts +++ b/src/lib/config/nav-menu/all-nav-items.config.ts @@ -36,7 +36,7 @@ export const allNavItems: {[key: string]: NavMenuItem} = { label: 'Marathon Match Tournament', icon: 'mm-tournament', description: 'Join the Excitement', - url: getWordpressUrl('/marathon-match-tournament/overview'), + url: getWordpressUrl('/marathon-matches'), }, aiHub: { label: 'AI Hub', From bd8532d5c983fccb61bd0c8b78aa6f39988075ee Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 12 Mar 2025 09:23:18 +0200 Subject: [PATCH 4/6] update mm tournament link --- src/lib/config/nav-menu/all-nav-items.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/config/nav-menu/all-nav-items.config.ts b/src/lib/config/nav-menu/all-nav-items.config.ts index dda51619..f40e4355 100644 --- a/src/lib/config/nav-menu/all-nav-items.config.ts +++ b/src/lib/config/nav-menu/all-nav-items.config.ts @@ -36,7 +36,7 @@ export const allNavItems: {[key: string]: NavMenuItem} = { label: 'Marathon Match Tournament', icon: 'mm-tournament', description: 'Join the Excitement', - url: getWordpressUrl('/marathon-matches'), + url: getWordpressUrl('/marathon-match-tournament'), }, aiHub: { label: 'AI Hub', From 036508c2437b2699f9b82d7329a34bc6f6a7115e Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 12 Mar 2025 19:09:18 +0200 Subject: [PATCH 5/6] comment out aihub --- src/lib/config/nav-menu/main-navigation.config.ts | 2 +- src/lib/config/nav-menu/tool-selector-nav-items.ts | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib/config/nav-menu/main-navigation.config.ts b/src/lib/config/nav-menu/main-navigation.config.ts index 001b6f15..55953fab 100644 --- a/src/lib/config/nav-menu/main-navigation.config.ts +++ b/src/lib/config/nav-menu/main-navigation.config.ts @@ -12,7 +12,7 @@ export const mainNavigationItems: NavMenuItem[] = [ children: [ allNavItems.opportunities, allNavItems.mmTournament, - allNavItems.aiHub, + // allNavItems.aiHub, allNavItems.articles, allNavItems.statistics, ] diff --git a/src/lib/config/nav-menu/tool-selector-nav-items.ts b/src/lib/config/nav-menu/tool-selector-nav-items.ts index cb2be414..0a02999b 100644 --- a/src/lib/config/nav-menu/tool-selector-nav-items.ts +++ b/src/lib/config/nav-menu/tool-selector-nav-items.ts @@ -45,13 +45,13 @@ export const toolSelectorNavItems: NavMenuItem = { allNavItems.payments ] }, - { - label: "AI", - groupOrder: 3, - children: [ - allNavItems.aiHub, - ] - }, + // { + // label: "AI", + // groupOrder: 3, + // children: [ + // allNavItems.aiHub, + // ] + // }, { label: "Compete", groupOrder: 3, From 3cdb1bf8ffca4d5541ef6c5c230a16e2c0622f76 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 12 Mar 2025 19:10:32 +0200 Subject: [PATCH 6/6] remove ai-hub from footer --- src/lib/config/nav-menu/footer-nav-items.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/config/nav-menu/footer-nav-items.ts b/src/lib/config/nav-menu/footer-nav-items.ts index f17f1733..369a9a2c 100644 --- a/src/lib/config/nav-menu/footer-nav-items.ts +++ b/src/lib/config/nav-menu/footer-nav-items.ts @@ -31,7 +31,7 @@ export const footerNavItems: NavMenuItem = { }, allNavItems.opportunities, allNavItems.mmTournament, - allNavItems.aiHub, + // allNavItems.aiHub, allNavItems.articles, allNavItems.statistics, ]