@@ -365,6 +365,23 @@ defmodule AlgoraWeb.Org.DashboardLive do
365365 subtitle = "Top 1% Algora developers in your tech stack available to hire now "
366366 >
367367 < div class = "relative w-full flex flex-col gap-4 " >
368+ < div class = "lg:pb-2 lg:pt-4 flex flex-col lg:flex-row gap-4 lg:gap-8 " >
369+ < h3 class = "text-xl font-semibold whitespace-nowrap " > How it works</ h3 >
370+ < ul class = "lg:mx-auto grid grid-cols-1 lg:grid-cols-3 gap-4 text-sm font-medium " >
371+ < li class = "flex items-start " >
372+ < . icon name = "tabler-circle-number-1 mr-2 " class = "size-6 text-success-400 shrink-0 " />
373+ Authorize payment to offer contract
374+ </ li >
375+ < li class = "flex items-start " >
376+ < . icon name = "tabler-circle-number-2 mr-2 " class = "size-6 text-success-400 shrink-0 " />
377+ Escrowed when developer accepts
378+ </ li >
379+ < li class = "flex items-start " >
380+ < . icon name = "tabler-circle-number-3 mr-2 " class = "size-6 text-success-400 shrink-0 " />
381+ Release or withhold escrow end of week
382+ </ li >
383+ </ ul >
384+ </ div >
368385 <%= for match <- @ matches do %>
369386 < . match_card
370387 match = { match }
@@ -1295,8 +1312,8 @@ defmodule AlgoraWeb.Org.DashboardLive do
12951312
12961313 defp match_card ( assigns ) do
12971314 ~H"""
1298- < div class = "relative flex flex-col xl:flex-row xl:items-center xl:justify-between gap-4 sm:gap-8 xl:gap-4 2xl:gap-8 border bg-card rounded-xl text-card-foreground shadow p-6 " >
1299- < div class = "xl:basis-[45 %] w-full truncate " >
1315+ < div class = "relative flex flex-col xl:flex-row xl:items-center xl:justify-between gap-4 sm:gap-8 xl:gap-4 2xl:gap-6 border bg-card rounded-xl text-card-foreground shadow p-6 " >
1316+ < div class = "xl:basis-[51 %] w-full truncate " >
13001317 < div class = "flex items-center justify-between gap-4 " >
13011318 < div class = "flex items-center gap-4 " >
13021319 < . link navigate = { User . url ( @ match . user ) } >
@@ -1361,45 +1378,10 @@ defmodule AlgoraWeb.Org.DashboardLive do
13611378 </div> --%>
13621379 </ div >
13631380 </ div >
1364- < . button
1365- phx-click = "share_opportunity "
1366- phx-value-user_id = { @ match . user . id }
1367- phx-value-type = "contract "
1368- phx-value-marketplace = "true "
1369- variant = "none "
1370- class = "group bg-emerald-900/10 text-emerald-300 transition-colors duration-75 hover:bg-emerald-800/10 hover:text-emerald-300 hover:drop-shadow-[0_1px_5px_#34d39980] focus:bg-emerald-800/10 focus:text-emerald-300 focus:outline-none focus:drop-shadow-[0_1px_5px_#34d39980] border border-emerald-400/40 hover:border-emerald-400/50 focus:border-emerald-400/50 "
1371- >
1372- < . icon name = "tabler-contract " class = "size-4 text-current mr-2 -ml-1 " /> Contract
1373- </ . button >
13741381 </ div >
1375- < dl :if = { @ match [ :hourly_rate ] } class = "pt-4 " >
1376- < div class = "flex justify-between " >
1377- < dt class = "text-foreground " >
1378- Total payment for < span class = "font-semibold " > { @ match . user . hours_per_week || 30 } </ span >
1379- hours
1380- < span class = "text-xs text-muted-foreground " >
1381- ({ @ match . user . name } 's availability)
1382- </ span >
1383- < div class = "text-xs text-muted-foreground " >
1384- (includes all platform and payment processing fees)
1385- </ div >
1386- </ dt >
1387- < dd class = "font-display font-semibold tabular-nums text-lg text-emerald-400 " >
1388- { Money . to_string! (
1389- Money . mult! (
1390- @ match [ :hourly_rate ] |> Money . mult! ( @ match . user . hours_per_week || 30 ) ,
1391- Decimal . new ( "1.13" )
1392- )
1393- ) }
1394- </ dd >
1395- </ div >
1396- </ dl >
1397- </ div >
1398-
1399- < div class = "pt-2 xl:pt-0 xl:pl-4 2xl:pl-8 xl:basis-[55%] xl:border-l xl:border-border " >
1400- < div class = "text-sm sm:text-base text-foreground font-medium " >
1382+ < div class = "pt-4 text-sm sm:text-base text-muted-foreground font-medium " >
14011383 Completed
1402- < span class = "font-semibold font-display text-emerald-400 " >
1384+ < span class = "font-semibold font-display text-foreground/80 " >
14031385 { @ match . user . transactions_count }
14041386 { ngettext (
14051387 "bounty" ,
@@ -1408,7 +1390,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
14081390 ) }
14091391 </ span >
14101392 across
1411- < span class = "font-semibold font-display text-emerald-400 " >
1393+ < span class = "font-semibold font-display text-foreground/80 " >
14121394 { ngettext (
14131395 "%{count} project" ,
14141396 "%{count} projects" ,
@@ -1429,7 +1411,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
14291411 </ . avatar_fallback >
14301412 </ . avatar >
14311413 < div class = "flex flex-col " >
1432- < div class = "text-base font-medium text-muted- foreground " >
1414+ < div class = "text-base font-medium text-foreground/80 " >
14331415 { project . name }
14341416 </ div >
14351417
@@ -1440,7 +1422,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
14401422 ) }
14411423 </ div >
14421424 < div class = "text-sm text-muted-foreground " >
1443- < span class = "text-foreground font-display font-semibold " >
1425+ < span class = "text-foreground/80 font-display font-semibold " >
14441426 { total_earned }
14451427 </ span >
14461428 awarded
@@ -1451,6 +1433,44 @@ defmodule AlgoraWeb.Org.DashboardLive do
14511433 <% end %>
14521434 </ div >
14531435 </ div >
1436+
1437+ < div class = "pt-2 xl:pt-0 xl:pl-4 2xl:pl-6 xl:basis-[49%] w-full xl:border-l xl:border-border " >
1438+ < dl :if = { @ match [ :hourly_rate ] } class = "pt-4 " >
1439+ < div class = "flex flex-col-reverse 3xl:flex-row justify-between items-center gap-2 " >
1440+ < dt class = "text-foreground text-center " >
1441+ Total payment for < span class = "font-semibold " > { @ match . user . hours_per_week || 30 } </ span >
1442+ hours
1443+ < div class = "text-[12px] text-muted-foreground " >
1444+ (includes all platform and payment processing fees)
1445+ </ div >
1446+ </ dt >
1447+ < div class = "flex flex-col items-center gap-2 " >
1448+ < . button
1449+ phx-click = "share_opportunity "
1450+ phx-value-user_id = { @ match . user . id }
1451+ phx-value-type = "contract "
1452+ phx-value-marketplace = "true "
1453+ variant = "none "
1454+ class = "group bg-emerald-900/10 text-emerald-300 transition-colors duration-75 hover:bg-emerald-800/10 hover:text-emerald-300 hover:drop-shadow-[0_1px_5px_#34d39980] focus:bg-emerald-800/10 focus:text-emerald-300 focus:outline-none focus:drop-shadow-[0_1px_5px_#34d39980] border border-emerald-400/40 hover:border-emerald-400/50 focus:border-emerald-400/50 h-full py-4 "
1455+ size = "xl "
1456+ >
1457+ < div class = "flex flex-col items-center gap-1 font-semibold " >
1458+ < span > Offer contract</ span >
1459+ < dd class = "font-display font-semibold tabular-nums text-lg text-emerald-400 " >
1460+ { Money . to_string! (
1461+ Money . mult! (
1462+ @ match [ :hourly_rate ] |> Money . mult! ( @ match . user . hours_per_week || 30 ) ,
1463+ Decimal . new ( "1.13" )
1464+ ) ,
1465+ no_fraction_if_integer: false
1466+ ) } / week
1467+ </ dd >
1468+ </ div >
1469+ </ . button >
1470+ </ div >
1471+ </ div >
1472+ </ dl >
1473+ </ div >
14541474 </ div >
14551475 """
14561476 end
0 commit comments