@@ -364,6 +364,23 @@ defmodule AlgoraWeb.Org.DashboardLive do
364364 subtitle = "Top 1% Algora developers in your tech stack available to hire now "
365365 >
366366 < div class = "relative w-full flex flex-col gap-4 " >
367+ < div class = "lg:pb-2 lg:pt-4 flex flex-col lg:flex-row gap-4 lg:gap-8 " >
368+ < h3 class = "text-xl font-semibold whitespace-nowrap " > How it works</ h3 >
369+ < ul class = "lg:mx-auto grid grid-cols-1 lg:grid-cols-3 gap-4 text-sm font-medium " >
370+ < li class = "flex items-start " >
371+ < . icon name = "tabler-circle-number-1 mr-2 " class = "size-6 text-success-400 shrink-0 " />
372+ Authorize payment to offer contract
373+ </ li >
374+ < li class = "flex items-start " >
375+ < . icon name = "tabler-circle-number-2 mr-2 " class = "size-6 text-success-400 shrink-0 " />
376+ Escrowed when developer accepts
377+ </ li >
378+ < li class = "flex items-start " >
379+ < . icon name = "tabler-circle-number-3 mr-2 " class = "size-6 text-success-400 shrink-0 " />
380+ Release or withhold escrow end of week
381+ </ li >
382+ </ ul >
383+ </ div >
367384 <%= for match <- @ matches do %>
368385 < . match_card
369386 match = { match }
@@ -1290,8 +1307,8 @@ defmodule AlgoraWeb.Org.DashboardLive do
12901307
12911308 defp match_card ( assigns ) do
12921309 ~H"""
1293- < 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 " >
1294- < div class = "xl:basis-[45 %] w-full truncate " >
1310+ < 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 " >
1311+ < div class = "xl:basis-[51 %] w-full truncate " >
12951312 < div class = "flex items-center justify-between gap-4 " >
12961313 < div class = "flex items-center gap-4 " >
12971314 < . link navigate = { User . url ( @ match . user ) } >
@@ -1356,45 +1373,10 @@ defmodule AlgoraWeb.Org.DashboardLive do
13561373 </div> --%>
13571374 </ div >
13581375 </ div >
1359- < . button
1360- phx-click = "share_opportunity "
1361- phx-value-user_id = { @ match . user . id }
1362- phx-value-type = "contract "
1363- phx-value-marketplace = "true "
1364- variant = "none "
1365- 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 "
1366- >
1367- < . icon name = "tabler-contract " class = "size-4 text-current mr-2 -ml-1 " /> Contract
1368- </ . button >
13691376 </ div >
1370- < dl :if = { @ match [ :hourly_rate ] } class = "pt-4 " >
1371- < div class = "flex justify-between " >
1372- < dt class = "text-foreground " >
1373- Total payment for < span class = "font-semibold " > { @ match . user . hours_per_week || 30 } </ span >
1374- hours
1375- < span class = "text-xs text-muted-foreground " >
1376- ({ @ match . user . name } 's availability)
1377- </ span >
1378- < div class = "text-xs text-muted-foreground " >
1379- (includes all platform and payment processing fees)
1380- </ div >
1381- </ dt >
1382- < dd class = "font-display font-semibold tabular-nums text-lg text-emerald-400 " >
1383- { Money . to_string! (
1384- Money . mult! (
1385- @ match [ :hourly_rate ] |> Money . mult! ( @ match . user . hours_per_week || 30 ) ,
1386- Decimal . new ( "1.13" )
1387- )
1388- ) }
1389- </ dd >
1390- </ div >
1391- </ dl >
1392- </ div >
1393-
1394- < div class = "pt-2 xl:pt-0 xl:pl-4 2xl:pl-8 xl:basis-[55%] xl:border-l xl:border-border " >
1395- < div class = "text-sm sm:text-base text-foreground font-medium " >
1377+ < div class = "pt-4 text-sm sm:text-base text-muted-foreground font-medium " >
13961378 Completed
1397- < span class = "font-semibold font-display text-emerald-400 " >
1379+ < span class = "font-semibold font-display text-foreground/80 " >
13981380 { @ match . user . transactions_count }
13991381 { ngettext (
14001382 "bounty" ,
@@ -1403,7 +1385,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
14031385 ) }
14041386 </ span >
14051387 across
1406- < span class = "font-semibold font-display text-emerald-400 " >
1388+ < span class = "font-semibold font-display text-foreground/80 " >
14071389 { ngettext (
14081390 "%{count} project" ,
14091391 "%{count} projects" ,
@@ -1424,7 +1406,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
14241406 </ . avatar_fallback >
14251407 </ . avatar >
14261408 < div class = "flex flex-col " >
1427- < div class = "text-base font-medium text-muted- foreground " >
1409+ < div class = "text-base font-medium text-foreground/80 " >
14281410 { project . name }
14291411 </ div >
14301412
@@ -1435,7 +1417,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
14351417 ) }
14361418 </ div >
14371419 < div class = "text-sm text-muted-foreground " >
1438- < span class = "text-foreground font-display font-semibold " >
1420+ < span class = "text-foreground/80 font-display font-semibold " >
14391421 { total_earned }
14401422 </ span >
14411423 awarded
@@ -1446,6 +1428,44 @@ defmodule AlgoraWeb.Org.DashboardLive do
14461428 <% end %>
14471429 </ div >
14481430 </ div >
1431+
1432+ < div class = "pt-2 xl:pt-0 xl:pl-4 2xl:pl-6 xl:basis-[49%] w-full xl:border-l xl:border-border " >
1433+ < dl :if = { @ match [ :hourly_rate ] } class = "pt-4 " >
1434+ < div class = "flex flex-col-reverse 3xl:flex-row justify-between items-center gap-2 " >
1435+ < dt class = "text-foreground text-center " >
1436+ Total payment for < span class = "font-semibold " > { @ match . user . hours_per_week || 30 } </ span >
1437+ hours
1438+ < div class = "text-[12px] text-muted-foreground " >
1439+ (includes all platform and payment processing fees)
1440+ </ div >
1441+ </ dt >
1442+ < div class = "flex flex-col items-center gap-2 " >
1443+ < . button
1444+ phx-click = "share_opportunity "
1445+ phx-value-user_id = { @ match . user . id }
1446+ phx-value-type = "contract "
1447+ phx-value-marketplace = "true "
1448+ variant = "none "
1449+ 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 "
1450+ size = "xl "
1451+ >
1452+ < div class = "flex flex-col items-center gap-1 font-semibold " >
1453+ < span > Offer contract</ span >
1454+ < dd class = "font-display font-semibold tabular-nums text-lg text-emerald-400 " >
1455+ { Money . to_string! (
1456+ Money . mult! (
1457+ @ match [ :hourly_rate ] |> Money . mult! ( @ match . user . hours_per_week || 30 ) ,
1458+ Decimal . new ( "1.13" )
1459+ ) ,
1460+ no_fraction_if_integer: false
1461+ ) } / week
1462+ </ dd >
1463+ </ div >
1464+ </ . button >
1465+ </ div >
1466+ </ div >
1467+ </ dl >
1468+ </ div >
14491469 </ div >
14501470 """
14511471 end
0 commit comments