Skip to content

Commit 17ea244

Browse files
authored
chore: format 2025 codebase (#638)
* chore: add prettier * style: format
1 parent 87d5e60 commit 17ea244

9 files changed

Lines changed: 129 additions & 110 deletions

File tree

2025/package-lock.json

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

2025/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"eslint-config-next": "15.3.3",
3939
"eslint-plugin-import": "^2.31.0",
4040
"eslint-plugin-n": "^17.19.0",
41+
"prettier": "^3.6.2",
4142
"tailwindcss": "^4",
4243
"tsx": "^4.20.5",
4344
"typescript": "^5",

2025/src/app/[locale]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default async function Page({ params }: Props) {
4242
<Hero />
4343
</div>
4444

45-
<div className="max-w-screen-md mx-auto mt-8 md:mt-32 flex flex-col gap-4">
45+
<div className="max-w-screen-md mx-auto mt-8 md:mt-32 flex flex-col gap-4">
4646
<h2 className="text-3xl font-bold text-center">
4747
{t("navigation.floorMap")}
4848
</h2>

2025/src/components/AnimatedLogo.tsx

Lines changed: 84 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -6,125 +6,118 @@ import staticLogoSrc from "@/../public/logo/buggie_bugchan_logo.png";
66
import spriteSrc from "@/../public/logo/jsconf_bugchan_v5_minified.png";
77

88
type Props = {
9-
width: number;
10-
height: number;
11-
alt: string;
12-
fetchPriority?: "high" | "low" | "auto";
9+
width: number;
10+
height: number;
11+
alt: string;
12+
fetchPriority?: "high" | "low" | "auto";
1313
};
1414

1515
const FRAME_COUNT = 29;
1616
const SPRITE_WIDTH = 400;
1717
const SPRITE_HEIGHT = 11600;
1818
const ANIMATION_DURATION = 1500;
1919

20-
export function AnimatedLogo({
21-
width,
22-
height,
23-
alt,
24-
fetchPriority,
25-
}: Props) {
26-
const [isAnimating, setIsAnimating] = useState(false);
27-
const [isSpriteLoaded, setIsSpriteLoaded] = useState(false);
28-
const [clickCount, setClickCount] = useState(0);
20+
export function AnimatedLogo({ width, height, alt, fetchPriority }: Props) {
21+
const [isAnimating, setIsAnimating] = useState(false);
22+
const [isSpriteLoaded, setIsSpriteLoaded] = useState(false);
23+
const [clickCount, setClickCount] = useState(0);
2924

30-
// detect when sprite sheet has fully loaded
31-
useEffect(() => {
32-
const img = new window.Image();
33-
img.onload = () => {
34-
setIsSpriteLoaded(true);
35-
};
36-
img.src = spriteSrc.src;
37-
}, []);
25+
// detect when sprite sheet has fully loaded
26+
useEffect(() => {
27+
const img = new window.Image();
28+
img.onload = () => {
29+
setIsSpriteLoaded(true);
30+
};
31+
img.src = spriteSrc.src;
32+
}, []);
3833

39-
const handleClick = () => {
40-
if (isAnimating || !isSpriteLoaded) return;
34+
const handleClick = () => {
35+
if (isAnimating || !isSpriteLoaded) return;
4136

42-
setClickCount(clickCount + 1);
43-
setIsAnimating(true);
44-
setTimeout(() => {
45-
setIsAnimating(false);
46-
}, ANIMATION_DURATION);
47-
};
37+
setClickCount(clickCount + 1);
38+
setIsAnimating(true);
39+
setTimeout(() => {
40+
setIsAnimating(false);
41+
}, ANIMATION_DURATION);
42+
};
4843

49-
const handleKeyDown = (e: React.KeyboardEvent) => {
50-
// when focused, allow to animate the logo by pressing Enter or Space key
51-
if (e.key === "Enter" || e.key === " ") {
52-
e.preventDefault();
53-
handleClick();
54-
}
55-
};
44+
const handleKeyDown = (e: React.KeyboardEvent) => {
45+
// when focused, allow to animate the logo by pressing Enter or Space key
46+
if (e.key === "Enter" || e.key === " ") {
47+
e.preventDefault();
48+
handleClick();
49+
}
50+
};
5651

57-
const isReverse = clickCount % 3 === 0;
52+
const isReverse = clickCount % 3 === 0;
5853

54+
return (
55+
<div
56+
className="logo-container"
57+
onClick={handleClick}
58+
onKeyDown={handleKeyDown}
59+
role="button"
60+
tabIndex={0}
61+
aria-label={`${alt}. Click to animate.`}
62+
aria-busy={!isSpriteLoaded}
63+
style={{
64+
width: `${width}px`,
65+
height: `${height}px`,
66+
flexShrink: 0,
67+
cursor: isSpriteLoaded ? "pointer" : "default",
68+
}}
69+
>
70+
{/* show static logo only if sprite hasn't loaded yet */}
71+
{!isSpriteLoaded && (
72+
<Image
73+
src={staticLogoSrc}
74+
fetchPriority={fetchPriority}
75+
alt={alt}
76+
width={width}
77+
height={height}
78+
style={{
79+
width: `${width}px`,
80+
height: `${height}px`,
81+
objectFit: "contain",
82+
}}
83+
/>
84+
)}
5985

60-
return (
86+
{/* after sprite is loaded, show sprite at frame 0 (idle) / animating */}
87+
{isSpriteLoaded && (
6188
<div
62-
className="logo-container"
63-
onClick={handleClick}
64-
onKeyDown={handleKeyDown}
65-
role="button"
66-
tabIndex={0}
67-
aria-label={`${alt}. Click to animate.`}
68-
aria-busy={!isSpriteLoaded}
69-
style={{
70-
width: `${width}px`,
71-
height: `${height}px`,
72-
flexShrink: 0,
73-
cursor: isSpriteLoaded ? "pointer" : "default",
74-
}}
75-
>
76-
{/* show static logo only if sprite hasn't loaded yet */}
77-
{!isSpriteLoaded && (
78-
<Image
79-
src={staticLogoSrc}
80-
fetchPriority={fetchPriority}
81-
alt={alt}
82-
width={width}
83-
height={height}
84-
style={{
85-
width: `${width}px`,
86-
height: `${height}px`,
87-
objectFit: "contain",
88-
}}
89-
/>
90-
)}
89+
role="img"
90+
aria-label={alt}
91+
style={{
92+
width: `${width}px`,
93+
height: `${height}px`,
94+
backgroundImage: `url(${spriteSrc.src})`,
95+
backgroundSize: `${width}px ${(SPRITE_HEIGHT / SPRITE_WIDTH) * width}px`,
96+
animation: isAnimating
97+
? `sprite-animate ${ANIMATION_DURATION}ms steps(${FRAME_COUNT - 1}) 1 ${isReverse ? "reverse" : "normal"}`
98+
: "none",
99+
}}
100+
/>
101+
)}
91102

92-
{/* after sprite is loaded, show sprite at frame 0 (idle) / animating */}
93-
{isSpriteLoaded && (
94-
<div
95-
role="img"
96-
aria-label={alt}
97-
style={{
98-
width: `${width}px`,
99-
height: `${height}px`,
100-
backgroundImage: `url(${spriteSrc.src})`,
101-
backgroundSize: `${width}px ${(SPRITE_HEIGHT / SPRITE_WIDTH) * width}px`,
102-
animation: isAnimating
103-
? `sprite-animate ${ANIMATION_DURATION}ms steps(${FRAME_COUNT - 1}) 1 ${isReverse ? "reverse" : "normal"}`
104-
: "none",
105-
}}
106-
/>
107-
)}
108-
109-
<style jsx>{`
103+
<style jsx>{`
110104
.logo-container {
111105
transition: transform 0.2s ease-out;
112106
}
113-
107+
114108
.logo-container:hover {
115109
transform: scale(1.05);
116110
}
117-
111+
118112
@keyframes sprite-animate {
119113
from {
120114
background-position: 0 0;
121115
}
122116
to {
123-
background-position: 0 -${((FRAME_COUNT - 1) * height)}px;
117+
background-position: 0 -${(FRAME_COUNT - 1) * height}px;
124118
}
125119
}
126120
`}</style>
127-
</div>
128-
);
121+
</div>
122+
);
129123
}
130-

2025/src/components/Markdown.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ export function Markdown({ children }: { children: string }) {
44
return (
55
<ReactMarkdown
66
components={{
7-
ul: ({ children }) => <ul className="list-disc pl-4 ml-4 mb-4">{children}</ul>,
7+
ul: ({ children }) => (
8+
<ul className="list-disc pl-4 ml-4 mb-4">{children}</ul>
9+
),
810
ol: ({ children }) => <ol className="list-decimal pl-4">{children}</ol>,
911
pre: ({ children }) => (
1012
<pre className="bg-gray-100 py-0.5 px-1.5 rounded-sm">{children}</pre>

2025/src/components/og/Logo.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@ type Props = {
77
size: number;
88
};
99

10-
const LOGO_URL = join(process.cwd(), "public", "logo", "buggie_bugchan_logo.png");
10+
const LOGO_URL = join(
11+
process.cwd(),
12+
"public",
13+
"logo",
14+
"buggie_bugchan_logo.png",
15+
);
1116

1217
export function Logo({ size }: Props) {
1318
return <img alt="" src={makeDataUrl(LOGO_URL)} width={size} height={size} />;

2025/src/constants/schedule.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,24 @@ export type ScheduledSession = {
2222
startTime: string;
2323
endTime: string;
2424
} & (
25-
| {
25+
| {
2626
kind: "talk";
2727
talk: Talk;
2828
}
29-
| {
29+
| {
3030
kind: "streaming";
3131
talk: Talk;
3232
}
33-
| {
33+
| {
3434
kind:
35-
| "reception"
36-
| "opening"
37-
| "closed"
38-
| "break"
39-
| "closing"
40-
| "networking";
35+
| "reception"
36+
| "opening"
37+
| "closed"
38+
| "break"
39+
| "closing"
40+
| "networking";
4141
}
42-
);
42+
);
4343

4444
export type TalkSession = Extract<ScheduledSession, { kind: "talk" }>;
4545

@@ -662,8 +662,7 @@ const notSortedSchedule: ScheduledSession[] = [
662662
startTime: "20:05",
663663
endTime: "22:00",
664664
},
665-
]
666-
665+
];
667666

668667
export const SCHEDULE: ScheduledSession[] = notSortedSchedule
669668
// 時間順、トラック順でソート

2025/src/constants/sponsors.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,15 +305,17 @@ kickflowは企業の生産性向上で高く評価されており、大手企業
305305
name: "株式会社TAIAN",
306306
url: "https://taian-inc.com",
307307
logoUrl: taianIncLogo,
308-
prText: `TAIANは「アツさとあたたかさで溢れる社会を実現する」をビジョンに、お祝い×テクノロジーで複数事業を展開する新領域スタートアップです。現在は、ブライダル・バンケット業界向けバーティカルSaaS「Oiwaii」、Web招待状・席次表サービス「Concept Marry」、AIイベントプランナー「Canjii」を展開。業界V字回復を目指し、新規事業開発にも力を入れています。今後は、既存事業で蓄積した顧客データを活用し、独自のお祝い経済圏を構築することで、ビジョン実現を目指します。`.trim(),
308+
prText:
309+
`TAIANは「アツさとあたたかさで溢れる社会を実現する」をビジョンに、お祝い×テクノロジーで複数事業を展開する新領域スタートアップです。現在は、ブライダル・バンケット業界向けバーティカルSaaS「Oiwaii」、Web招待状・席次表サービス「Concept Marry」、AIイベントプランナー「Canjii」を展開。業界V字回復を目指し、新規事業開発にも力を入れています。今後は、既存事業で蓄積した顧客データを活用し、独自のお祝い経済圏を構築することで、ビジョン実現を目指します。`.trim(),
309310
},
310311
{
311312
type: "sponsor",
312313
plan: "sponsor",
313314
name: "株式会社TimeTree",
314315
url: "https://timetreeapp.com/intl/ja",
315316
logoUrl: TimeTreeLogo,
316-
prText: `株式会社TimeTreeは「世の中の時間をつなげて、 世界中の人々がよりよい 明日を選択できるようにする」をミッションにかかげ、世の中の人々のよりスムーズな予定管理を可能にするためにカレンダーシェアアプリ「TimeTree」を開発運営しています。「TimeTree」は共有とコミュニケーションを前提にしたカレンダーサービスです。家族、パートナー、サークル、職場など複数人数の予定共有が簡単にできます。`.trim(),
317+
prText:
318+
`株式会社TimeTreeは「世の中の時間をつなげて、 世界中の人々がよりよい 明日を選択できるようにする」をミッションにかかげ、世の中の人々のよりスムーズな予定管理を可能にするためにカレンダーシェアアプリ「TimeTree」を開発運営しています。「TimeTree」は共有とコミュニケーションを前提にしたカレンダーサービスです。家族、パートナー、サークル、職場など複数人数の予定共有が簡単にできます。`.trim(),
317319
},
318320
] as const satisfies Sponsor[]
319321
).filter((s) => !!s.name && !!s.logoUrl && !!s.url);

2025/src/constants/team.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ export const VOLUNTEER_TEAM: TeamMember[] = [
8989
{
9090
name: "wh1tecat",
9191
url: "https://github.com/wh1tecat-nya",
92-
avatarUrl: "https://avatars.githubusercontent.com/u/6924358?v=4"
93-
}
92+
avatarUrl: "https://avatars.githubusercontent.com/u/6924358?v=4",
93+
},
9494
];
9595

9696
export const ORGANIZING_TEAM: TeamMember[] = [

0 commit comments

Comments
 (0)