@@ -32,6 +32,53 @@ const rankNameMap = {
3232 silver: " シルバー" ,
3333 bronze: " ブロンズ" ,
3434};
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+ };
3582---
3683
3784<Heading >企業スポンサー</Heading >
@@ -44,13 +91,7 @@ const rankNameMap = {
4491 { rankNameMap [rank ]}
4592 </h4 >
4693 <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 (" " )}
5495 >
5596 { sponsorsByRank [rank ].sort ().map ((sponsor ) => (
5697 <Company { sponsor } />
0 commit comments