@@ -365,6 +365,23 @@ defmodule AlgoraWeb.Org.DashboardLive do
365
365
subtitle = "Top 1% Algora developers in your tech stack available to hire now "
366
366
>
367
367
< 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 >
368
385
<%= for match <- @ matches do %>
369
386
< . match_card
370
387
match = { match }
@@ -1297,8 +1314,8 @@ defmodule AlgoraWeb.Org.DashboardLive do
1297
1314
1298
1315
defp match_card ( assigns ) do
1299
1316
~H"""
1300
- < 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 " >
1301
- < div class = "xl:basis-[45 %] w-full truncate " >
1317
+ < 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 " >
1318
+ < div class = "xl:basis-[51 %] w-full truncate " >
1302
1319
< div class = "flex items-center justify-between gap-4 " >
1303
1320
< div class = "flex items-center gap-4 " >
1304
1321
< . link navigate = { User . url ( @ match . user ) } >
@@ -1363,45 +1380,10 @@ defmodule AlgoraWeb.Org.DashboardLive do
1363
1380
</div> --%>
1364
1381
</ div >
1365
1382
</ div >
1366
- < . button
1367
- phx-click = "share_opportunity "
1368
- phx-value-user_id = { @ match . user . id }
1369
- phx-value-type = "contract "
1370
- phx-value-marketplace = "true "
1371
- variant = "none "
1372
- 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 "
1373
- >
1374
- < . icon name = "tabler-contract " class = "size-4 text-current mr-2 -ml-1 " /> Contract
1375
- </ . button >
1376
1383
</ div >
1377
- < dl :if = { @ match [ :hourly_rate ] } class = "pt-4 " >
1378
- < div class = "flex justify-between " >
1379
- < dt class = "text-foreground " >
1380
- Total payment for < span class = "font-semibold " > { @ match . user . hours_per_week || 30 } </ span >
1381
- hours
1382
- < span class = "text-xs text-muted-foreground " >
1383
- ({ @ match . user . name } 's availability)
1384
- </ span >
1385
- < div class = "text-xs text-muted-foreground " >
1386
- (includes all platform and payment processing fees)
1387
- </ div >
1388
- </ dt >
1389
- < dd class = "font-display font-semibold tabular-nums text-lg text-emerald-400 " >
1390
- { Money . to_string! (
1391
- Money . mult! (
1392
- @ match [ :hourly_rate ] |> Money . mult! ( @ match . user . hours_per_week || 30 ) ,
1393
- Decimal . new ( "1.13" )
1394
- )
1395
- ) }
1396
- </ dd >
1397
- </ div >
1398
- </ dl >
1399
- </ div >
1400
-
1401
- < div class = "pt-2 xl:pt-0 xl:pl-4 2xl:pl-8 xl:basis-[55%] xl:border-l xl:border-border " >
1402
- < div class = "text-sm sm:text-base text-foreground font-medium " >
1384
+ < div class = "pt-4 text-sm sm:text-base text-muted-foreground font-medium " >
1403
1385
Completed
1404
- < span class = "font-semibold font-display text-emerald-400 " >
1386
+ < span class = "font-semibold font-display text-foreground/80 " >
1405
1387
{ @ match . user . transactions_count }
1406
1388
{ ngettext (
1407
1389
"bounty" ,
@@ -1410,7 +1392,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
1410
1392
) }
1411
1393
</ span >
1412
1394
across
1413
- < span class = "font-semibold font-display text-emerald-400 " >
1395
+ < span class = "font-semibold font-display text-foreground/80 " >
1414
1396
{ ngettext (
1415
1397
"%{count} project" ,
1416
1398
"%{count} projects" ,
@@ -1431,7 +1413,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
1431
1413
</ . avatar_fallback >
1432
1414
</ . avatar >
1433
1415
< div class = "flex flex-col " >
1434
- < div class = "text-base font-medium text-muted- foreground " >
1416
+ < div class = "text-base font-medium text-foreground/80 " >
1435
1417
{ project . name }
1436
1418
</ div >
1437
1419
@@ -1442,7 +1424,7 @@ defmodule AlgoraWeb.Org.DashboardLive do
1442
1424
) }
1443
1425
</ div >
1444
1426
< div class = "text-sm text-muted-foreground " >
1445
- < span class = "text-foreground font-display font-semibold " >
1427
+ < span class = "text-foreground/80 font-display font-semibold " >
1446
1428
{ total_earned }
1447
1429
</ span >
1448
1430
awarded
@@ -1453,6 +1435,44 @@ defmodule AlgoraWeb.Org.DashboardLive do
1453
1435
<% end %>
1454
1436
</ div >
1455
1437
</ div >
1438
+
1439
+ < div class = "pt-2 xl:pt-0 xl:pl-4 2xl:pl-6 xl:basis-[49%] w-full xl:border-l xl:border-border " >
1440
+ < dl :if = { @ match [ :hourly_rate ] } class = "pt-4 " >
1441
+ < div class = "flex flex-col-reverse 3xl:flex-row justify-between items-center gap-2 " >
1442
+ < dt class = "text-foreground text-center " >
1443
+ Total payment for < span class = "font-semibold " > { @ match . user . hours_per_week || 30 } </ span >
1444
+ hours
1445
+ < div class = "text-[12px] text-muted-foreground " >
1446
+ (includes all platform and payment processing fees)
1447
+ </ div >
1448
+ </ dt >
1449
+ < div class = "flex flex-col items-center gap-2 " >
1450
+ < . button
1451
+ phx-click = "share_opportunity "
1452
+ phx-value-user_id = { @ match . user . id }
1453
+ phx-value-type = "contract "
1454
+ phx-value-marketplace = "true "
1455
+ variant = "none "
1456
+ 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 "
1457
+ size = "xl "
1458
+ >
1459
+ < div class = "flex flex-col items-center gap-1 font-semibold " >
1460
+ < span > Offer contract</ span >
1461
+ < dd class = "font-display font-semibold tabular-nums text-lg text-emerald-400 " >
1462
+ { Money . to_string! (
1463
+ Money . mult! (
1464
+ @ match [ :hourly_rate ] |> Money . mult! ( @ match . user . hours_per_week || 30 ) ,
1465
+ Decimal . new ( "1.13" )
1466
+ ) ,
1467
+ no_fraction_if_integer: false
1468
+ ) } / week
1469
+ </ dd >
1470
+ </ div >
1471
+ </ . button >
1472
+ </ div >
1473
+ </ div >
1474
+ </ dl >
1475
+ </ div >
1456
1476
</ div >
1457
1477
"""
1458
1478
end
0 commit comments