@@ -364,6 +364,23 @@ defmodule AlgoraWeb.Org.DashboardLive do
364
364
subtitle = "Top 1% Algora developers in your tech stack available to hire now "
365
365
>
366
366
< 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 >
367
384
<%= for match <- @ matches do %>
368
385
< . match_card
369
386
match = { match }
@@ -1290,8 +1307,8 @@ defmodule AlgoraWeb.Org.DashboardLive do
1290
1307
1291
1308
defp match_card ( assigns ) do
1292
1309
~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 " >
1295
1312
< div class = "flex items-center justify-between gap-4 " >
1296
1313
< div class = "flex items-center gap-4 " >
1297
1314
< . link navigate = { User . url ( @ match . user ) } >
@@ -1356,45 +1373,10 @@ defmodule AlgoraWeb.Org.DashboardLive do
1356
1373
</div> --%>
1357
1374
</ div >
1358
1375
</ 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 >
1369
1376
</ 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 " >
1396
1378
Completed
1397
- < span class = "font-semibold font-display text-emerald-400 " >
1379
+ < span class = "font-semibold font-display text-foreground/80 " >
1398
1380
{ @ match . user . transactions_count }
1399
1381
{ ngettext (
1400
1382
"bounty" ,
@@ -1403,7 +1385,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
1403
1385
) }
1404
1386
</ span >
1405
1387
across
1406
- < span class = "font-semibold font-display text-emerald-400 " >
1388
+ < span class = "font-semibold font-display text-foreground/80 " >
1407
1389
{ ngettext (
1408
1390
"%{count} project" ,
1409
1391
"%{count} projects" ,
@@ -1424,7 +1406,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
1424
1406
</ . avatar_fallback >
1425
1407
</ . avatar >
1426
1408
< 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 " >
1428
1410
{ project . name }
1429
1411
</ div >
1430
1412
@@ -1435,7 +1417,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
1435
1417
) }
1436
1418
</ div >
1437
1419
< 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 " >
1439
1421
{ total_earned }
1440
1422
</ span >
1441
1423
awarded
@@ -1446,6 +1428,44 @@ defmodule AlgoraWeb.Org.DashboardLive do
1446
1428
<% end %>
1447
1429
</ div >
1448
1430
</ 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 >
1449
1469
</ div >
1450
1470
"""
1451
1471
end
0 commit comments