11<template >
2- <main class =" w-full py-8" >
3- <Title >Home</Title >
4-
5- <h2 class =" text-center text-5xl pb-3 font-semibold" >Member</h2 >
6-
7- <div class =" py-3" >
8- <h3 class =" text-center text-4xl pb-3 text-(--text-live)" >
9- <span class =" material-symbols-outlined" >circle</span > Currently Live
10- </h3 >
11- <MembersSection v-if =" status !== 'pending'" >
12- <template v-for =" id in members .filter (a => (live ?? []).includes (a .id )).map (a => a .id )" :key =" id " >
13- <MemberCard :id =" id" :isLive =" true" ></MemberCard >
14- </template >
15- </MembersSection >
16- </div >
17- <div class =" py-3" >
18- <h3 class =" text-center text-4xl pb-3" >
19- <span class =" material-symbols-outlined" >bedtime</span > Currently Offline
20- </h3 >
21- <MembersSection v-if =" status !== 'pending'" >
22- <template v-for =" id in members .filter (a => ! (live ?? []).includes (a .id )).map (a => a .id )" :key =" id " >
23- <MemberCard :id =" id" ></MemberCard >
24- </template >
25- </MembersSection >
26- </div >
27- </main >
2+ <main class =" w-full py-8" >
3+ <Title >Home</Title >
4+
5+ <h2 class =" text-center text-5xl pb-3 font-semibold" >Member</h2 >
6+
7+ <div class =" py-3" >
8+ <h3 class =" text-center text-4xl pb-3 text-(--text-live)" >
9+ <span class =" material-symbols-outlined" >circle</span > Currently Live
10+ </h3 >
11+
12+ <MembersSection v-if =" status !== 'pending'" >
13+ <template v-for =" factions in members .reduce (sortGroup , [[], [], []])" :key =" factions " >
14+ <template v-for =" id in factions .filter (a => (live ?? []).includes (a .id )).map (a => a .id )" :key =" id " >
15+ <MemberCard :id =" id" :isLive =" true" ></MemberCard >
16+ </template >
17+ </template >
18+ </MembersSection >
19+ </div >
20+
21+ <div class =" py-3" >
22+ <h3 class =" text-center text-4xl pb-3" >
23+ <span class =" material-symbols-outlined" >bedtime</span > Currently Offline
24+ </h3 >
25+
26+ <MembersSection v-if =" status !== 'pending'" >
27+ <template v-for =" factions in members .reduce (sortGroup , [[], [], []])" :key =" factions " >
28+ <template v-for =" id in factions .filter (a => ! (live ?? []).includes (a .id )).map (a => a .id ).sort (alphabeticalSort )" :key =" id " >
29+ <MemberCard :id =" id" ></MemberCard >
30+ </template >
31+ </template >
32+ </MembersSection >
33+ </div >
34+ </main >
2835</template >
2936
3037<script setup lang="ts">
3138import MemberCard from " ~/components/members/MemberCard.vue" ;
39+ import alphabeticalSort from " ~/utils/alphabeticalSort" ;
3240
3341import membersData from ' ~/assets/members.json' ;
3442
@@ -43,4 +51,19 @@ const live = ref(check_live)
4351watch (check_live , (newLive ) => {
4452 live .value = newLive
4553})
54+
55+ function sortGroup(group , member ) {
56+ switch (member .faction ) {
57+ case " emberhold" :
58+ group [0 ].push (member );
59+ break ;
60+ case " suncrest" :
61+ group [1 ].push (member );
62+ break ;
63+ case " fernfall" :
64+ group [2 ].push (member );
65+ break ;
66+ }
67+ return group ;
68+ }
4669 </script >
0 commit comments