@@ -32,6 +32,53 @@ const rankNameMap = {
32
32
silver: " シルバー" ,
33
33
bronze: " ブロンズ" ,
34
34
};
35
+
36
+ const getGridClasses = (rank : string , count : number ) => {
37
+ const baseClasses = [
38
+ " mb-8" ,
39
+ " grid" ,
40
+ " place-items-center" ,
41
+ " gap-4" ,
42
+ ];
43
+
44
+ if (rank === " platinum" ) {
45
+ return [... baseClasses , " grid-cols-1" ];
46
+ }
47
+
48
+ if (count === 1 ) {
49
+ return [... baseClasses , " grid-cols-1" ];
50
+ }
51
+
52
+ const gridConfig: Record <string , Record <number , string >> = {
53
+ gold: {
54
+ 2 : " grid-cols-2 md:grid-cols-2" ,
55
+ },
56
+ silver: {
57
+ 2 : " grid-cols-2 md:grid-cols-2" ,
58
+ 3 : " grid-cols-2 md:grid-cols-3" ,
59
+ },
60
+ bronze: {
61
+ 2 : " grid-cols-2 md:grid-cols-2" ,
62
+ 3 : " grid-cols-2 md:grid-cols-3" ,
63
+ 4 : " grid-cols-2 md:grid-cols-4" ,
64
+ },
65
+ };
66
+
67
+ const config = gridConfig [rank ];
68
+ if (config ) {
69
+ const counts = Object .keys (config )
70
+ .map (Number )
71
+ .sort ((a , b ) => b - a );
72
+
73
+ for (const minCount of counts ) {
74
+ if (count >= minCount ) {
75
+ return [... baseClasses , config [minCount ]];
76
+ }
77
+ }
78
+ }
79
+
80
+ return baseClasses ;
81
+ };
35
82
---
36
83
37
84
<Heading >企業スポンサー</Heading >
@@ -44,13 +91,7 @@ const rankNameMap = {
44
91
{ rankNameMap [rank ]}
45
92
</h4 >
46
93
<div
47
- class :list = { [
48
- " mb-8 grid place-items-center gap-4" ,
49
- { " grid-cols-1" : rank === " platinum" },
50
- { " grid-cols-2 md:grid-cols-2" : rank === " gold" },
51
- { " grid-cols-2 md:grid-cols-3" : rank === " silver" },
52
- { " grid-cols-2 md:grid-cols-4" : rank === " bronze" },
53
- ]}
94
+ class = { getGridClasses (rank , sponsorsByRank [rank ].length ).join (" " )}
54
95
>
55
96
{ sponsorsByRank [rank ].sort ().map ((sponsor ) => (
56
97
<Company { sponsor } />
0 commit comments