Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
8869a7e
PM-4621 - general statistics
vas3a Aug 6, 2026
2f90a61
Merge branch 'dev' of github.com:topcoder-platform/platform-ui into P…
vas3a Aug 6, 2026
ae7de5a
lint
vas3a Aug 6, 2026
a724a0d
show all ranks
vas3a Aug 6, 2026
73f78e2
PM-5658 Update showcase preview
himaniraghav3 Aug 6, 2026
30c3678
PM-5126 Add member handle input box in bulk reports lookup
himaniraghav3 Aug 6, 2026
c179c74
Initial support app
jmgasper Aug 7, 2026
966f0a1
Deploy branch
jmgasper Aug 7, 2026
b82cc17
Updates for issues found while testing
jmgasper Aug 7, 2026
2289c1f
Merge pull request #2110 from topcoder-platform/PM-5126
himaniraghav3 Aug 7, 2026
b0ac9c3
Merge pull request #2109 from topcoder-platform/PM-5658
himaniraghav3 Aug 7, 2026
ac2accd
Merge pull request #2108 from topcoder-platform/PM-4621_general-stati…
vas3a Aug 7, 2026
b1b6e1b
AI usage metrics
kkartunov Aug 7, 2026
acf7392
PM-5126 Fix bulk member lookup for TMs
himaniraghav3 Aug 7, 2026
c45e202
Merge pull request #2111 from topcoder-platform/PM-5126
himaniraghav3 Aug 7, 2026
cd231fc
PM-5658 fix table borders in showcase preview
himaniraghav3 Aug 7, 2026
35a3b16
PM-5772: Track progress for the current review phase
jmgasper Aug 9, 2026
4d12938
PM-5758: restore design submission limit settings
jmgasper Aug 9, 2026
e2acdb6
PM-5787: Allow deferred screener assignment
jmgasper Aug 9, 2026
8ac23c7
PM-5789: Add submission placement rating guidelines
jmgasper Aug 9, 2026
da86e86
PM-5825: set track-specific submission download defaults
jmgasper Aug 9, 2026
0ee5541
PM-5827: Align Copilot pill with member stats
jmgasper Aug 9, 2026
89deb1b
Merge pull request #2117 from topcoder-platform/PM-5827
jmgasper Aug 10, 2026
f96fea8
Merge pull request #2116 from topcoder-platform/PM-5825
jmgasper Aug 10, 2026
04dcefc
Merge pull request #2115 from topcoder-platform/PM-5789
jmgasper Aug 10, 2026
9a66dd5
Merge pull request #2114 from topcoder-platform/PM-5787
jmgasper Aug 10, 2026
2d04cd5
Merge pull request #2113 from topcoder-platform/PM-5758
jmgasper Aug 10, 2026
8de834a
Merge pull request #2112 from topcoder-platform/PM-5772
jmgasper Aug 10, 2026
48974d7
CI/CD
jmgasper Aug 10, 2026
3c8f2f8
Merge branch 'dev' into PM-5126
himaniraghav3 Aug 10, 2026
1797437
Merge pull request #2118 from topcoder-platform/PM-5126
himaniraghav3 Aug 10, 2026
08700ee
Lint
jmgasper Aug 10, 2026
53b5da1
git push origin devMerge branch 'dev' of github.com:topcoder-platform…
jmgasper Aug 10, 2026
2ee6806
Better fix for PM-5758
jmgasper Aug 10, 2026
b8b0fe8
PM-4621 - general statistics
vas3a Aug 10, 2026
3f1b4e8
Merge pull request #2119 from topcoder-platform/support-app
jmgasper Aug 11, 2026
ae43d68
PM-4620 - general statistics
vas3a Aug 11, 2026
709d1e0
Hide "auto-finalize" option in ai review config
vas3a Aug 11, 2026
36b2866
PM-4621 - minor ui updates
vas3a Aug 11, 2026
be15fd5
lint
vas3a Aug 11, 2026
f72ca7e
Merge pull request #2120 from topcoder-platform/PM-4621_general-stati…
vas3a Aug 11, 2026
a42cd70
PM-4621 - Interactive table
vas3a Aug 11, 2026
128219d
PM-5787: Preserve reviewer assignments without screener
jmgasper Aug 11, 2026
b935337
Merge pull request #2121 from topcoder-platform/PM-5787-1
jmgasper Aug 11, 2026
f1b1ce1
Tweak to wording
jmgasper Aug 11, 2026
cf2718b
Use i18n-iso-countries package for country codes
vas3a Aug 11, 2026
46f918e
lint
vas3a Aug 11, 2026
fb84cf7
Merge pull request #2122 from topcoder-platform/PM-4621_general-stati…
vas3a Aug 11, 2026
08d3943
PM-5460 Add preferred roles to profile completeness
himaniraghav3 Aug 11, 2026
bf1945c
Merge pull request #2123 from topcoder-platform/PM-5460
himaniraghav3 Aug 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,8 @@ workflows:
only:
- dev
- copilot_reviewer
- support-app
- PM-5460
tags:
only: /^dev-.*/

Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -557,6 +557,7 @@ The following summarizes the various [apps](#adding-a-new-platform-ui-applicatio
- [Learn](#learn)
- [Self Service](#self-service)
- [Status](#status)
- [Support](#support)

## Platform App

Expand Down Expand Up @@ -610,3 +611,11 @@ diagnostic section.

[Status README](./src/apps/status/README.md)
[Status Routes](./src/apps/status/src/status-app.routes.tsx)

## Support

The application where Topcoder members can open support tickets, track their
status, and communicate with the Topcoder Support Team.

[Support README](./src/apps/support/README.md)
[Support Routes](./src/apps/support/src/support-app.routes.tsx)
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"@datadog/browser-logs": "^4.50.1",
"@hello-pangea/dnd": "^18.0.1",
"@heroicons/react": "^1.0.6",
"@highcharts/map-collection": "^2.3.3",
"@hookform/resolvers": "^4.1.3",
"@popperjs/core": "^2.11.8",
"@sprig-technologies/sprig-browser": "^2.39.0",
Expand Down Expand Up @@ -125,7 +126,9 @@
"typescript": "^4.9.5",
"universal-navigation": "https://github.com/topcoder-platform/universal-navigation#master",
"uuid": "^11.1.0",
"yup": "^1.7.1"
"yup": "^1.7.1",
"flag-icons": "^6.7.0",
"i18n-iso-countries": "^3.7.1"
},
"devDependencies": {
"@babel/core": "^7.29.6",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@
}

.selectUserHandlesCustomMultiValue {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 13px;
padding: 0 8px;
line-height: 1.4;
padding: 2px 8px;
margin-right: 6px;
color: $black-60;
background-color: $black-10;
Expand All @@ -28,6 +32,24 @@
}
}

// Sized here so the control works outside admin-app (which provides svg.icon globals).
.removeIcon {
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
line-height: 1;

:global(svg) {
display: block;
width: 12px;
height: 12px;
max-width: 12px;
max-height: 12px;
stroke: currentColor;
}
}

.selectUserHandlesDropdownContainer {
z-index: 9999 !important;
}
18 changes: 15 additions & 3 deletions src/apps/admin/src/lib/services/user.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,23 @@ export const getMemberSuggestionsByHandle = async (
maxRating?: unknown
}

const response = await xhrGetAsync<MemberAutocompleteResponse[]>(
`${EnvironmentConfig.API.V6}/members/autocomplete/${sanitizedHandle}`,
type MemberAutocompletePagedResponse = {
result?: MemberAutocompleteResponse[]
}

// Prefer the query-param autocomplete endpoint: any authenticated member can
// call it. The path-param variant historically required copilot/admin only.
const response = await xhrGetAsync<
MemberAutocompleteResponse[] | MemberAutocompletePagedResponse
>(
`${EnvironmentConfig.API.V6}/members/autocomplete?term=${sanitizedHandle}`,
)

return response.map(member => ({
const members = Array.isArray(response)
? response
: (response?.result ?? [])

return members.map(member => ({
firstName: member.firstName ?? undefined,
handle: member.handle,
lastName: member.lastName ?? undefined,
Expand Down
1 change: 1 addition & 0 deletions src/apps/customer-portal/src/config/routes.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ export const rootRoute: string
export const talentSearchRouteId = 'talent-search'
export const showcaseSearchRouteId = 'showcase'
export const flexiTalentRouteId = 'flexi-talent'
export const statisticsRouteId = 'statistics'
2 changes: 2 additions & 0 deletions src/apps/customer-portal/src/customer-portal.routes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
import { customerPortalFlexiTalentRoutes } from './pages/flexi-talent/flexi-talent.routes'
import { customerPortalTalentSearchRoutes } from './pages/talent-search/talent-search.routes'
import { customerPortalProjectShowcaseRoutes } from './pages/project-showcase/project-showcase.routes'
import { customerPortalStatisticsRoutes } from './pages/statistics/statistics.routes'

const CustomerPortalApp: LazyLoadedComponent = lazyLoad(() => import('./CustomerPortalApp'))

Expand All @@ -32,6 +33,7 @@ export const customerPortalRoutes: ReadonlyArray<PlatformRoute> = [
element: <Rewrite to={talentSearchRouteId} />,
route: '',
},
...customerPortalStatisticsRoutes,
...customerPortalTalentSearchRoutes,
...customerPortalProjectShowcaseRoutes,
...customerPortalFlexiTalentRoutes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@ import { TabsNavItem } from '~/libs/ui'
import {
flexiTalentRouteId,
showcaseSearchRouteId,
statisticsRouteId,
talentSearchRouteId,
} from '~/apps/customer-portal/src/config/routes.config'

export function getTabsConfig(userRoles: string[], isAnonymous: boolean, isUnprivilegedUser: boolean): TabsNavItem[] {

const tabs: TabsNavItem[] = [
...(!isUnprivilegedUser ? [{
id: statisticsRouteId,
title: 'General Statistics',
}, {
id: talentSearchRouteId,
title: 'Talent Search',
}, {
Expand Down
1 change: 1 addition & 0 deletions src/apps/customer-portal/src/lib/services/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export * from './talentSearch.service'
export * from './flexiTalent.service'
export * from './showcasePost.service'
export * from './statistics.service'
Loading
Loading