Skip to content

feat: New developer page #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 122 commits into from
Aug 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
b300c6b
feat: Add Talent profile dummy images
TamaraZoric Aug 13, 2024
f16c533
Add Proxify partner SVG logos
TamaraZoric Aug 14, 2024
6ce42a6
feat: Rename 'Partners' to 'Experts' and add 'Talent' item
TamaraZoric Aug 14, 2024
3098992
feat: Add optional contact page link for partners page
TamaraZoric Aug 14, 2024
b6bbcb0
feat: Add initial data about Proxify to partners.json
TamaraZoric Aug 14, 2024
ec44a16
feat: Add initial dummy talent profiles to talent.json
TamaraZoric Aug 14, 2024
d4cd662
feat: Add partner configuration file for Proxify integration with Tal…
TamaraZoric Aug 14, 2024
bfaa226
feat: Add CardList reusable component with shuffling and filtering su…
TamaraZoric Aug 14, 2024
38b7ddd
feat: Add PageHero reusable component
TamaraZoric Aug 14, 2024
50e969e
feat: Add reusable PageSearchableListLayout component
TamaraZoric Aug 14, 2024
7f1ff75
feat: Add reusable PageShowcaseListLayout component
TamaraZoric Aug 14, 2024
86a33b0
feat: Add reusable CallToActionSection component
TamaraZoric Aug 14, 2024
a647afe
refactor: Refactor partner components using reusable layouts
TamaraZoric Aug 14, 2024
30b0ad2
feat: Add Talent profile page section components
TamaraZoric Aug 14, 2024
1e3be27
feat: Add new Talent page hero and join sections
TamaraZoric Aug 14, 2024
223791f
feat: Add TalentPageFooter.vue component
TamaraZoric Aug 14, 2024
3d3c533
feat: Add TypeScript interfaces and utility function for talents
TamaraZoric Aug 14, 2024
36df14a
refactor: Refactor compensation and proficiency Talent components
TamaraZoric Aug 14, 2024
c775dbf
feat: Add TalentCard.vue component
TamaraZoric Aug 14, 2024
f7b83f4
feat: Add searchable Talents page
TamaraZoric Aug 14, 2024
dbd1937
faat: Add dynamic talent page with routing paths
TamaraZoric Aug 14, 2024
9bb9642
feat: Add talent loading components
TamaraZoric Aug 14, 2024
bdfefcd
feat: Add TalentPage component
TamaraZoric Aug 14, 2024
27e9692
fix: Fix title for TalentProficiencies and update TalentHero
TamaraZoric Aug 14, 2024
a85d786
feat: Add "highlighted" attribute to talent entries
TamaraZoric Aug 15, 2024
769de4e
feat: Add proficiency section to partner config for talent page
TamaraZoric Aug 15, 2024
2a4aedd
feat: Add show all/less button to Talent Proficiencies
TamaraZoric Aug 15, 2024
7699a55
feat: Refactor styles and update UI components on talent pages
TamaraZoric Aug 15, 2024
1a9f1a3
feat: Remove unused divider and update section borders in talent page
TamaraZoric Aug 15, 2024
3e33f89
feat: Add TalentTimezoneFilter component
TamaraZoric Aug 15, 2024
0b921be
feat: Make browse more link optional in page layout
TamaraZoric Aug 15, 2024
6832108
refactor: Remove PageSearchableListLayout component
TamaraZoric Aug 15, 2024
d4a7577
refactor: Remove TalentAll component and associated files
TamaraZoric Aug 15, 2024
0d0ac84
feat: Remove highlighted profile logic and update UI elements
TamaraZoric Aug 15, 2024
0113f91
feat: Update TalentPage styling and navigation link
TamaraZoric Aug 15, 2024
cbe63f2
feat: Prevent button click event propagation and refactor styling
TamaraZoric Aug 15, 2024
8b2b63f
feat: Toggle visible proficiencies in TalentProficiencies.vue
TamaraZoric Aug 16, 2024
b6693d7
feat: Refactor TalentCard links to use router navigation
TamaraZoric Aug 16, 2024
8a3bd13
feat: Refactor and enhance talent components UI and UX
TamaraZoric Aug 16, 2024
dad822d
feat: Add diagram component for talent profile
TamaraZoric Aug 16, 2024
7b31c18
refactor: Refactor TalentPage to use TalentProfileDiagram component
TamaraZoric Aug 16, 2024
c516f61
refactor: Rename getProfileImage to getTalentProfileImage in talent u…
TamaraZoric Aug 16, 2024
89f84ac
refactor: Rename image retrieval function in TalentCard.vue
TamaraZoric Aug 16, 2024
a1f3e3a
feat: Replace talent profile SVG images
TamaraZoric Aug 16, 2024
7ee8f45
refactor: Replace talent profile SVG images
TamaraZoric Aug 16, 2024
3b242ca
feat: Adjust media query breakpoints in TalentCard.vue
TamaraZoric Aug 16, 2024
371d40c
refactor: Update svg files for Talent
TamaraZoric Aug 16, 2024
499170e
refactor: Update SVG paths to enhance visual precision
TamaraZoric Aug 16, 2024
97fe377
refactor: Refactor talents directories to developers
TamaraZoric Aug 19, 2024
10afaf7
feat: Add developer SVG asset
TamaraZoric Aug 19, 2024
3477ba6
feat: Update developer profiles in developers.json
TamaraZoric Aug 19, 2024
374d972
refactor: Refactor developer's JSON descriptions into structured format
TamaraZoric Aug 19, 2024
57a8903
feat: Update Proxify partner details in JSON file
TamaraZoric Aug 19, 2024
43cb011
feat: Update developer's partner configuration and links to use UTM p…
TamaraZoric Aug 19, 2024
e24cf81
refactor: Rename developer paths to include developer slug
TamaraZoric Aug 19, 2024
1b0c703
feat: Add titles to developer and partner pages
TamaraZoric Aug 19, 2024
595b2eb
refactor: Rename "timezone" to "region" in developers module
TamaraZoric Aug 19, 2024
e7ff62b
refactor: Refactor component classes to follow BEM naming conventions
TamaraZoric Aug 19, 2024
f7cf9d5
feat: Add names to developer profiles configuration
TamaraZoric Aug 20, 2024
618caae
refactor: Refactor to improve code readability and consistency along …
TamaraZoric Aug 20, 2024
d19bc71
refactor: Update URLs and clean up UTM campaign parameters
TamaraZoric Aug 20, 2024
abef3d7
feat: Update developers.json: revise proficiencies and compensations
TamaraZoric Aug 20, 2024
186bd58
feat: Update DeveloperPage.vue score title for clarity
TamaraZoric Aug 20, 2024
e582be4
feat: Update hero section titles in developers partnerConfig.js
TamaraZoric Aug 20, 2024
011e38a
feat: Add JSDoc comments and improve utility functions for developer …
TamaraZoric Aug 20, 2024
84b23a9
feat: Truncate developer descriptions and update media queries for de…
TamaraZoric Aug 20, 2024
27748b7
refactor: Remove max-width constraint on showcase list items
TamaraZoric Aug 20, 2024
adbc683
refactor: Refactor text truncation utility function for developer pro…
TamaraZoric Aug 20, 2024
21b94e5
refactor: Refactor CSS styles in Developer Card
TamaraZoric Aug 20, 2024
1118544
refactor: Refactor DeveloperExperienceDescription interface
TamaraZoric Aug 20, 2024
016b718
refactor: Update Proxify URLs in partners.json
TamaraZoric Aug 20, 2024
3fef199
feat: Update SVGs and CSS for responsive design for developer profile…
TamaraZoric Aug 20, 2024
36253e4
feat: Enhance spotlighted profile selection logic
TamaraZoric Aug 20, 2024
2c1cc0f
feat: Add prependText to CandidateProfile component in developer profile
TamaraZoric Aug 20, 2024
f1da91e
feat: Update 'Contact us' text to 'Contact Proxify' in developer pages
TamaraZoric Aug 20, 2024
0bb7b8b
refactor: Remove DeveloperRegionFilter component from developer pages
TamaraZoric Aug 20, 2024
49ab005
feat: Make CallToActionSection props optional and add slot support
TamaraZoric Aug 20, 2024
9155451
feat: Enhance CardList component with item splitting and default props
TamaraZoric Aug 20, 2024
d450dfa
feat: Adjust layout and spacing on DeveloperPage and DeveloperExperie…
TamaraZoric Aug 21, 2024
bba9bd4
feat: Update compensation descriptions in developers.json
TamaraZoric Aug 21, 2024
85c6277
Simplify featured-actions CSS rules for page showcase layout
TamaraZoric Aug 21, 2024
d4e0466
feat: Update partner name dynamically in Developer Loading page
TamaraZoric Aug 21, 2024
2f89f74
Make titles optional and improve layout styling for developer loading…
TamaraZoric Aug 21, 2024
c1b85a8
feat: Update currency format in developers.json file
TamaraZoric Aug 21, 2024
c9bfaf0
refactor: Improve layout of featured-actions in DeveloperLoading.vue
TamaraZoric Aug 21, 2024
b0ef5b9
feat: Format compensation numbers in developers.json
TamaraZoric Aug 21, 2024
2aedf09
feat: Update labels and styling on Developer components
TamaraZoric Aug 21, 2024
f361b8a
feat: Adjust page grid layout and image sizes on Developer pages
TamaraZoric Aug 21, 2024
5b84a52
feat: Update developer ids and rename profile image files accordingly
TamaraZoric Aug 21, 2024
5a4b9f4
feat: Add page title to developer page configuration
TamaraZoric Aug 21, 2024
7f016df
feat: Update website link for Vue partner config
TamaraZoric Aug 22, 2024
fc40f37
feat: Open developer page footer website link in new tab
TamaraZoric Aug 22, 2024
59e5409
feat: Update margins and styles for developer components
TamaraZoric Aug 22, 2024
83d1111
feat: Rename CSS class in DeveloperProfileDiagram.vue
TamaraZoric Aug 22, 2024
3e7d940
feat: Add profile and score diagram sections to partnerConfig for dev…
TamaraZoric Aug 22, 2024
6287077
refactor: Remove image property and related utilities from developer …
TamaraZoric Aug 22, 2024
c50ab7c
feat: Enhance developer components conditional rendering and fix deve…
TamaraZoric Aug 22, 2024
cda9d4a
feat: Update developer profile diagrams
TamaraZoric Aug 22, 2024
1e4a3c2
feat: Adjust SVG wrapper width in DeveloperProfileDiagram
TamaraZoric Aug 22, 2024
ebdf8a5
feat: Update monthly compensation for developers
TamaraZoric Aug 22, 2024
43c3f15
feat: Remove border from DeveloperCard component
TamaraZoric Aug 23, 2024
327b14b
feat: Fix formatting issue in developers.json
TamaraZoric Aug 23, 2024
e54edd7
feat: Remove redundant dark mode hover styles for developer buttons
TamaraZoric Aug 23, 2024
934f807
refactor: Update descriptions structure for developer experience
TamaraZoric Aug 23, 2024
536aea2
refactor: Remove unnecessary semicolons for consistent code style
TamaraZoric Aug 23, 2024
81f65e4
feat: Update key for description list in PartnerPage.vue
TamaraZoric Aug 23, 2024
743be73
feat: Replace developer 5328 profile image
TamaraZoric Aug 23, 2024
7dbb38c
feat: Replace proxify hero image
TamaraZoric Aug 23, 2024
5a0cadf
feat: Clean list of skills of developers
jarnheimer Aug 26, 2024
e8ef470
get dev images optimized from cloudinary
29avet1 Aug 26, 2024
372bdf2
Merge pull request #2 from proxify-ab/feat/dev-img-optimizations
29avet1 Aug 26, 2024
97cb682
update svg scores
29avet1 Aug 26, 2024
10aa7fb
update dev experience periods
29avet1 Aug 26, 2024
4fee836
add website hostname to hire form query params
29avet1 Aug 26, 2024
8413a66
remove hostname form hire form url
29avet1 Aug 26, 2024
c109222
Merge branch 'main' into feat/add-new-talent-page
29avet1 Aug 26, 2024
2b5edf3
fix cloudinary default props
29avet1 Aug 26, 2024
95ef911
add developer titles
29avet1 Aug 26, 2024
a7dd0ff
update devs to be taken by slug, remove unnecessary computed variables
29avet1 Aug 27, 2024
d0ef8cc
move cloudinary URL to partnerConfig
29avet1 Aug 27, 2024
29e5c85
Merge pull request #3 from proxify-ab/feat/dev-titles
29avet1 Aug 27, 2024
b3e3777
comment to keep semicolon
29avet1 Aug 27, 2024
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
.DS_Store
.AppleDouble
.LSOverride
.idea

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To remove

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to keep it, as this is a folder made by JetBrains IDE and it is better to always ignore it


# Thumbnails
._*
Expand Down
10 changes: 7 additions & 3 deletions .vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ const nav: ThemeConfig['nav'] = [
text: 'Resources',
items: [
{ text: 'Partners', link: '/partners/' },
{ text: 'Developers', link: '/developers/' },
{ text: 'Themes', link: '/ecosystem/themes' },
{ text: 'UI Components', link: 'https://ui-libs.vercel.app/' },
{
Expand Down Expand Up @@ -125,9 +126,12 @@ const nav: ThemeConfig['nav'] = [
link: '/sponsor/'
},
{
text: 'Partners',
link: '/partners/',
activeMatch: `^/partners/`
text: 'Experts',
activeMatch: `^/(partners|developers)/`,
items: [
{ text: 'Partners', link: '/partners/' },
{ text: 'Developers', link: '/developers/' }
]
}
]

Expand Down
73 changes: 73 additions & 0 deletions .vitepress/theme/components/CallToActionSection.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<script setup lang="ts">
withDefaults(defineProps<{
title?: string
description?: string
link?: string
linkText?: string
showDivider?: boolean
}>(), {
showDivider: true
})
</script>

<template>
<section class="cta-section">
<div v-if="showDivider" class="cta-divider"></div>
<div class="cta-content">
<h2 v-if="title" class="cta-title">{{ title }}</h2>
<p v-if="description" class="cta-description">{{ description }}</p>
<a v-if="link" :href="link" target="_blank" class="cta-link">{{ linkText }}</a>
<slot></slot>
</div>
</section>
</template>

<style scoped>
.cta-section {
text-align: center;
max-width: 688px;
margin: 0 auto;
}

.cta-divider {
width: 100px;
margin: 0 auto;
border-top: 1px solid var(--vt-c-divider-light);
}

.cta-content {
padding: 28px 28px 96px;
}

.cta-title {
font-size: 34px;
font-weight: 600;
letter-spacing: -0.5px;
line-height: 1.2;
margin: 0.5em 0 1em;
}

.cta-description {
color: var(--vt-c-text-2);
}

.cta-link {
margin-top: 2em;
display: inline-block;
padding: 12px 24px;
background-color: var(--vt-c-bg-mute);
color: var(--vt-c-text-code);
font-weight: 600;
border-radius: 6px;
text-decoration: none;
transition: background-color 0.5s, color 0.5s;
}

.cta-link:hover {
background-color: var(--vt-c-gray-light-4);
}

.dark .cta-link:hover {
background-color: var(--vt-c-gray-dark-3);
}
</style>
105 changes: 105 additions & 0 deletions .vitepress/theme/components/CardList.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<script setup lang="ts">
import { computed, onMounted, ref, shallowRef } from 'vue'

const props = withDefaults(
defineProps<{
items: Array<any>
filter?: (item: any) => boolean
cardComponent: any
showLinkToAll?: boolean
shuffleItems?: boolean
browseLinkText?: string
browseLinkUrl?: string
splitBy?: string
}>(),
{
showLinkToAll: false,
shuffleItems: false,
splitBy: 'platinum'
}
)

const isMounted = ref(false)
const items = shallowRef([...props.items])

const filteredItems = computed(() =>
props.filter ? items.value.filter(props.filter) : items.value
)

onMounted(() => {
isMounted.value = true
items.value = processItems([...items.value], props.splitBy, props.shuffleItems)
})

function processItems(items: Array<any>, splitBy: string, shouldShuffle: boolean) {
const splitItems = items.filter(item => item[splitBy])
const otherItems = items.filter(item => !item[splitBy])

if (shouldShuffle) {
shuffleArray(splitItems)
shuffleArray(otherItems)
}

return [...splitItems, ...otherItems]
}

function shuffleArray(array: Array<any>) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1)); // don't remove semicolon
[array[i], array[j]] = [array[j], array[i]]
}
}
</script>

<template>
<div v-show="isMounted" class="card-list">
<!-- to skip SSG since the partners are shuffled -->
<ClientOnly>
<component
:is="cardComponent"
v-for="item in filteredItems"
:key="item.id || item.name"
:data="item"
/>
</ClientOnly>

<a
v-if="showLinkToAll && filteredItems.length % 2"
:href="browseLinkUrl"
class="browse-all-link"
>
{{ browseLinkText }}
</a>
</div>
</template>

<style scoped>
.card-list {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}

.browse-all-link {
display: block;
width: 48.5%;
margin-bottom: 36px;
padding-top: 240px;
font-size: 1.2em;
text-align: center;
color: var(--vt-c-text-2);
border: 1px solid var(--vt-c-divider-light);
border-radius: 4px;
transition: color 0.5s ease;
}

.browse-all-link:hover {
color: var(--vt-c-text-1);
}

@media (max-width: 768px) {
.browse-all-link {
display: none;
}
}
</style>
63 changes: 63 additions & 0 deletions .vitepress/theme/components/PageHero.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<template>
<div class="page-hero">
<h1 class="page-hero__title">
<slot name="title" />
</h1>
<p class="page-hero__lead">
<slot name="lead" />
</p>
</div>
</template>

<style scoped>
.page-hero {
padding: 48px 24px;
text-align: center;
margin: 0 auto;
max-width: 688px;
}

.page-hero__title,
.page-hero__lead,
.page-hero :deep(.link) {
transition: color 0.25s;
}

.page-hero__title {
line-height: 32px;
font-size: 32px;
font-weight: 500;
margin-bottom: 0.3em;
}

.page-hero__lead {
padding-top: 8px;
font-size: 16px;
font-weight: 500;
color: var(--vt-c-text-2);
}

.page-hero__lead a {
color: var(--vt-c-brand);
}

.page-hero :deep(.link) {
color: var(--vt-c-brand);
}

.page-hero :deep(.link:hover) {
color: var(--vt-c-brand-dark);
}

/* Media Queries */
@media (min-width: 768px) {
.page-hero {
padding: 64px 32px;
}

.page-hero__title {
line-height: 40px;
font-size: 40px;
}
}
</style>
112 changes: 112 additions & 0 deletions .vitepress/theme/components/PageShowcaseListLayout.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
<script setup lang="ts">
const props = defineProps<{
spotlightTitle?: string
featuredTitle?: string
browseLinkText?: string
browseLinkUrl?: string
}>()
</script>

<template>
<div class="showcase-layout">
<!-- Hero Section -->
<slot name="hero"></slot>

<!-- Spotlight Section -->
<div class="showcase-layout__spotlight">
<div class="spotlight-content">
<h2 v-if="props.spotlightTitle" class="section-title">{{ props.spotlightTitle }}</h2>
<slot name="spotlight"></slot>
</div>
</div>

<!-- Featured Section -->
<div class="showcase-layout__featured">
<!-- Optional Actions Section -->
<div v-if="$slots.actions" class="featured-actions">
<slot name="actions"></slot>
</div>
<h2 v-if="props.featuredTitle" class="section-title">{{ props.featuredTitle }}</h2>
<slot name="featured-list"></slot>
<slot name="featured-cta">
<div v-if="browseLinkUrl" class="browse-more">
<a class="accent-button" :href="props.browseLinkUrl">{{ props.browseLinkText }}</a>
</div>
</slot>
</div>

<!-- Join Section -->
<slot name="join"></slot>
</div>
</template>

<style scoped>
.showcase-layout {
padding-bottom: 16px;
}

.showcase-layout__spotlight {
background-color: var(--vt-c-bg-soft);
}

.spotlight-content {
padding: 36px 48px;
max-width: 1280px;
margin: 0 auto;
}

.section-title {
font-size: 1.1em;
font-weight: 600;
margin-bottom: 1.5em;
color: var(--vt-c-text-2);
}

.showcase-layout__featured {
padding: 36px 48px;
max-width: 960px;
width: 100%;
margin: 0 auto;
}

.featured-actions {
width: 100%;
margin-bottom: 1.5em;
}

.browse-more {
margin: 1.5rem auto;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}

.accent-button,
:deep(.accent-button) {
display: block;
width: fit-content;
min-width: 240px;
text-align: center;
background-color: var(--vt-c-brand);
color: var(--vt-c-bg);
padding: 12px 24px;
font-weight: 600;
border-radius: 6px;
transition: background-color 0.5s, color 0.5s;
text-decoration: none;
}

.accent-button:hover,
:deep(.accent-button):hover {
background-color: var(--vt-c-brand-dark);
}

/* Media Queries */
@media (max-width: 768px) {
.spotlight-content,
.showcase-layout__featured {
padding: 36px 28px;
}
}
</style>
Loading