Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
4e0e7d0
Fix app workflows
kqito Mar 22, 2025
7a390ed
Fix version of kqito/manage-heroku-review-app temporary
kqito Mar 22, 2025
92f579b
Pin version of kqito/manage-heroku-review-app to specific commit hash
kqito Mar 22, 2025
0c4a294
[chore] webpack設定変更
ouchikai Mar 22, 2025
6910924
material-symbols削除(ErrorOutline)
ouchikai Mar 22, 2025
7e7cf69
import順変更
ouchikai Mar 22, 2025
8ebcfd4
warning-outline-rounded
ouchikai Mar 22, 2025
1de3f4b
fluentjson削除
ouchikai Mar 22, 2025
91133b8
line-mdのimport削除
ouchikai Mar 22, 2025
f83e073
jpegoptimで圧縮
ouchikai Mar 22, 2025
8b9423b
load lazy
ouchikai Mar 22, 2025
57e65a8
[オーバーフェッチ] エピソード詳細のオーバーフェッチ解消
ouchikai Mar 22, 2025
8d54afb
wasm.arraybuffer削除
ouchikai Mar 22, 2025
0f95e84
webpack設定変更
ouchikai Mar 23, 2025
441884f
example文言削除
ouchikai Mar 23, 2025
4b37512
サイズ圧縮
ouchikai Mar 23, 2025
07ce789
lodashimport修正
ouchikai Mar 23, 2025
6c2c070
fastify圧縮追加設定
ouchikai Mar 23, 2025
69c185c
Revert "fastify圧縮追加設定"
ouchikai Mar 23, 2025
77a0d94
Revert "サイズ圧縮"
ouchikai Mar 23, 2025
9470182
SSR廃止
ouchikai Mar 23, 2025
69cf9b9
descriptionの最大文字数1行に減らす
ouchikai Mar 23, 2025
09a7912
presetアイコン削除
ouchikai Mar 23, 2025
4f5ea94
画像をwebpに変更
ouchikai Mar 23, 2025
36a3649
fmt
ouchikai Mar 23, 2025
d1d31cd
NODE_ENV production
ouchikai Mar 23, 2025
0a3368b
imgのレイアウトシフト対策
ouchikai Mar 23, 2025
4063d23
terser導入
ouchikai Mar 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/create_heroku_review_app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
create-review-app:
runs-on: ubuntu-latest
steps:
- uses: fastruby/manage-heroku-review-app@9fa49f0320460f278c3687bc348dd0cbb18555dc # v1.3
- uses: kqito/manage-heroku-review-app@55e434ad5ac86f21cf2f7654de1566973fbc7046
with:
action: create
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/destroy_heroku_review_app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
destroy-review-app:
runs-on: ubuntu-latest
steps:
- uses: fastruby/manage-heroku-review-app@9fa49f0320460f278c3687bc348dd0cbb18555dc # v1.3
- uses: kqito/manage-heroku-review-app@55e434ad5ac86f21cf2f7654de1566973fbc7046
with:
action: destroy
env:
Expand Down
27 changes: 22 additions & 5 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file removed public/images/001.jpeg
Binary file not shown.
Binary file added public/images/001.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/002.jpeg
Binary file not shown.
Binary file added public/images/002.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/003.jpeg
Binary file not shown.
Binary file added public/images/003.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/004.jpeg
Binary file not shown.
Binary file added public/images/004.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/005.jpeg
Binary file not shown.
Binary file added public/images/005.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/006.jpeg
Binary file not shown.
Binary file added public/images/006.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/007.jpeg
Binary file not shown.
Binary file added public/images/007.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/008.jpeg
Binary file not shown.
Binary file added public/images/008.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/009.jpeg
Binary file not shown.
Binary file added public/images/009.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/010.jpeg
Binary file not shown.
Binary file added public/images/010.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/011.jpeg
Binary file not shown.
Binary file added public/images/011.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/012.jpeg
Binary file not shown.
Binary file added public/images/012.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/013.jpeg
Binary file not shown.
Binary file added public/images/013.webp
Binary file removed public/images/014.jpeg
Diff not rendered.
Binary file added public/images/014.webp
Binary file removed public/images/015.jpeg
Diff not rendered.
Binary file added public/images/015.webp
Binary file removed public/images/016.jpeg
Diff not rendered.
Binary file added public/images/016.webp
Binary file removed public/images/017.jpeg
Diff not rendered.
Binary file added public/images/017.webp
Binary file removed public/images/018.jpeg
Diff not rendered.
Binary file added public/images/018.webp
Binary file removed public/images/019.jpeg
Diff not rendered.
Binary file added public/images/019.webp
Binary file removed public/images/020.jpeg
Diff not rendered.
Binary file added public/images/020.webp
Binary file removed public/images/021.jpeg
Diff not rendered.
Binary file added public/images/021.webp
Binary file removed public/images/022.jpeg
Diff not rendered.
Binary file added public/images/022.webp
Binary file removed public/images/023.jpeg
Diff not rendered.
Binary file added public/images/023.webp
Binary file removed public/images/024.jpeg
Diff not rendered.
Binary file added public/images/024.webp
Binary file removed public/images/025.jpeg
Diff not rendered.
Binary file added public/images/025.webp
Binary file removed public/images/026.jpeg
Diff not rendered.
Binary file added public/images/026.webp
Binary file removed public/images/027.jpeg
Diff not rendered.
Binary file added public/images/027.webp
Binary file removed public/images/028.jpeg
Diff not rendered.
Binary file added public/images/028.webp
Binary file removed public/images/029.jpeg
Diff not rendered.
Binary file added public/images/029.webp
Binary file removed public/images/030.jpeg
Diff not rendered.
Binary file added public/images/030.webp
Binary file removed public/images/031.jpeg
Diff not rendered.
Binary file added public/images/031.webp
Binary file removed public/images/032.jpeg
Diff not rendered.
Binary file added public/images/032.webp
Binary file removed public/images/033.jpeg
Diff not rendered.
Binary file added public/images/033.webp
Binary file removed public/images/034.jpeg
Diff not rendered.
Binary file added public/images/034.webp
Binary file removed public/images/035.jpeg
Diff not rendered.
Binary file added public/images/035.webp
Binary file removed public/images/036.jpeg
Diff not rendered.
Binary file added public/images/036.webp
Binary file removed public/images/037.jpeg
Diff not rendered.
Binary file added public/images/037.webp
1 change: 1 addition & 0 deletions workspaces/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
"react-router-dom": "7.0.2",
"react-use": "17.6.0",
"setimmediate": "1.0.5",
"terser-webpack-plugin": "5.3.14",
"tiny-invariant": "1.3.3",
"type-fest": "4.29.1",
"use-callback-ref": "1.3.3",
Expand Down
4 changes: 2 additions & 2 deletions workspaces/client/src/app/createStore.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { withLenses } from '@dhmk/zustand-lens';
import _ from 'lodash';
import merge from 'lodash/merge';
import { createStore as createZustandStore } from 'zustand/vanilla';

import { createAuthStoreSlice } from '@wsh-2025/client/src/features/auth/stores/createAuthStoreSlice';
Expand Down Expand Up @@ -39,7 +39,7 @@ export const createStore = ({ hydrationData }: Props) => {
})),
);

store.setState((s) => _.merge(s, hydrationData));
store.setState((s) => merge(s, hydrationData));

return store;
};
15 changes: 13 additions & 2 deletions workspaces/client/src/features/auth/components/SignInDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,17 @@ interface SignInFormValues {
password: string;
}

export const ErrorOutlineIcon = () => {
return (
<svg height={24} viewBox="0 0 24 24" width={24} xmlns="http://www.w3.org/2000/svg">
<path
d="M11 15h2v2h-2zm0-8h2v6h-2zm1-5C6.47 2 2 6.5 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18a8 8 0 0 1-8-8a8 8 0 0 1 8-8a8 8 0 0 1 8 8a8 8 0 0 1-8 8"
fill="currentColor"
></path>
</svg>
);
};

interface Props {
isOpen: boolean;
onClose: () => void;
Expand Down Expand Up @@ -47,7 +58,7 @@ export const SignInDialog = ({ isOpen, onClose, onOpenSignUp }: Props) => {
<Dialog isOpen={isOpen} onClose={onClose}>
<div className="size-full">
<div className="mb-[16px] flex w-full flex-row justify-center">
<img className="object-contain" height={36} src="/public/arema.svg" width={98} />
<img className="object-contain" height={36} loading="lazy" src="/public/arema.svg" width={98} />
</div>

<h2 className="mb-[24px] text-center text-[24px] font-bold">ログイン</h2>
Expand Down Expand Up @@ -121,7 +132,7 @@ export const SignInDialog = ({ isOpen, onClose, onOpenSignUp }: Props) => {

{submitError ? (
<div className="mb-[8px] flex w-full flex-row items-center justify-start rounded-[4px] border-[2px] border-solid border-[#F0163A] bg-[#ffeeee] p-[8px] text-[14px] font-bold text-[#F0163A]">
<div className="i-material-symbols:error-outline m-[4px] size-[20px]" />
<ErrorOutlineIcon />
<span>{submitError}</span>
</div>
) : null}
Expand Down
18 changes: 14 additions & 4 deletions workspaces/client/src/features/auth/components/SignOutDialog.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { FORM_ERROR } from 'final-form';
import { Form } from 'react-final-form';

import { ErrorOutlineIcon } from '@wsh-2025/client/src/features/auth/components/SignInDialog';
import { useAuthActions } from '@wsh-2025/client/src/features/auth/hooks/useAuthActions';
import { Dialog } from '@wsh-2025/client/src/features/dialog/components/Dialog';

Expand Down Expand Up @@ -28,22 +29,31 @@ export const SignOutDialog = ({ isOpen, onClose }: Props) => {
<Dialog isOpen={isOpen} onClose={onClose}>
<div className="size-full">
<div className="mb-[16px] flex w-full flex-row justify-center">
<img className="object-contain" height={36} src="/public/arema.svg" width={98} />
<img className="object-contain" height={36} loading="lazy" src="/public/arema.svg" width={98} />
</div>

<h2 className="mb-[24px] text-center text-[24px] font-bold">ログアウト</h2>

<Form onSubmit={onSubmit}>
{({ handleSubmit, submitError }) => (
<form className="mb-[16px]" onSubmit={(ev) => void handleSubmit(ev)}>
<div className="mb-[24px] flex w-full flex-row items-center justify-start rounded-[4px] border-[2px] border-solid border-[#DDAA00] bg-[#fffcee] p-[8px] text-[14px] font-bold text-[#DDAA00]">
<div className="i-material-symbols:warning-outline-rounded m-[4px] size-[20px]" />
<div className="mb-[24px] flex w-full items-center rounded-[4px] border-[2px] border-solid border-[#DDAA00] bg-[#fffcee] p-[8px] text-[14px] font-bold text-[#DDAA00]">
<svg
className="mr-[4px]"
fill="currentColor"
height="20"
viewBox="0 0 24 24"
width="20"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M2.725 21q-.275 0-.5-.137t-.35-.363t-.137-.488t.137-.512l9.25-16q.15-.25.388-.375T12 3t.488.125t.387.375l9.25 16q.15.25.138.513t-.138.487t-.35.363t-.5.137zm1.725-2h15.1L12 6zM12 18q.425 0 .713-.288T13 17t-.288-.712T12 16t-.712.288T11 17t.288.713T12 18m0-3q.425 0 .713-.288T13 14v-3q0-.425-.288-.712T12 10t-.712.288T11 11v3q0 .425.288.713T12 15m0-2.5" />
</svg>
<span>プレミアムエピソードが視聴できなくなります。</span>
</div>

{submitError ? (
<div className="mb-[8px] flex w-full flex-row items-center justify-start rounded-[4px] border-[2px] border-solid border-[#F0163A] bg-[#ffeeee] p-[8px] text-[14px] font-bold text-[#F0163A]">
<div className="i-material-symbols:error-outline m-[4px] size-[20px]" />
<ErrorOutlineIcon />
<span>{submitError}</span>
</div>
) : null}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { useId } from 'react';
import { Field, Form } from 'react-final-form';
import { z } from 'zod';

import { ErrorOutlineIcon } from '@wsh-2025/client/src/features/auth/components/SignInDialog';
import { useAuthActions } from '@wsh-2025/client/src/features/auth/hooks/useAuthActions';
import { isValidEmail } from '@wsh-2025/client/src/features/auth/logics/isValidEmail';
import { isValidPassword } from '@wsh-2025/client/src/features/auth/logics/isValidPassword';
Expand Down Expand Up @@ -47,7 +48,7 @@ export const SignUpDialog = ({ isOpen, onClose, onOpenSignIn }: Props) => {
<Dialog isOpen={isOpen} onClose={onClose}>
<div className="size-full">
<div className="mb-[16px] flex w-full flex-row justify-center">
<img className="object-contain" height={36} src="/public/arema.svg" width={98} />
<img className="object-contain" height={36} loading="lazy" src="/public/arema.svg" width={98} />
</div>

<h2 className="mb-[24px] text-center text-[24px] font-bold">会員登録</h2>
Expand Down Expand Up @@ -121,7 +122,7 @@ export const SignUpDialog = ({ isOpen, onClose, onOpenSignIn }: Props) => {

{submitError ? (
<div className="mb-[8px] flex w-full flex-row items-center justify-start rounded-[4px] border-[2px] border-solid border-[#F0163A] bg-[#ffeeee] p-[8px] text-[14px] font-bold text-[#F0163A]">
<div className="i-material-symbols:error-outline m-[4px] size-[20px]" />
<ErrorOutlineIcon />
<span>{submitError}</span>
</div>
) : null}
Expand Down
54 changes: 48 additions & 6 deletions workspaces/client/src/features/layout/components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export const Layout = ({ children }: Props) => {
)}
>
<Link className="block flex w-[188px] items-center justify-center px-[8px]" to="/">
<img alt="AREMA" className="object-contain" height={36} src="/public/arema.svg" width={98} />
<img alt="AREMA" className="object-contain" height={36} loading="lazy" src="/public/arema.svg" width={98} />
</Link>
</header>

Expand All @@ -75,27 +75,69 @@ export const Layout = ({ children }: Props) => {
type="button"
onClick={isSignedIn ? authActions.openSignOutDialog : authActions.openSignInDialog}
>
<div
className={`i-fa-solid:${isSignedIn ? 'sign-out-alt' : 'user'} m-[4px] size-[20px] shrink-0 grow-0`}
/>
<div className="m-[4px] size-[20px] shrink-0 grow-0">
{isSignedIn ? (
<svg
fill="currentColor"
height="20"
viewBox="0 0 512 512"
width="20"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34M192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12" />
</svg>
) : (
<svg
fill="currentColor"
height="20"
viewBox="0 0 512 512"
width="20"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M312 48c0-26.5-21.5-48-48-48-26.5 0-48 21.5-48 48 0 17.5 9.5 32.7 23.7 41.7l-112.3 112.3c-11.6-1.9-24.3-3.7-36.1-3.7-70.7 0-128 57.3-128 128 0 70.7 57.3 128 128 128s128-57.3 128-128c0-11.8-2.7-23.1-7.2-33.4l112.2-112.2c9.5 14.2 23.2 24.4 39.2 29.7-4.7 7.6-8.7 15.8-12.4 24.3-8.1 16.3-13.6 34.1-17.2 52.6-6.7 31.6-1.7 64.8 14.7 93.6 16.1 28.3 41.3 49.5 71.1 61.5 9.1 4.4 18.9 6.9 28.8 7.5-7.2 10.6-13.9 22-22.4 31.7-30.9 33.1-77.6 53.2-124.4 53.2-47.1 0-92.6-19.1-126.9-53.5-18.3-17.2-33.7-37.1-46.4-59.1 17.2 15.9 35.3 26.6 56.7 30.4 32.4 5.6 66.5 0.9 96.5-15.4 13.9-7.6 25.7-18.6 34.9-31.5 15.9-18.7 24.8-42.5 24.8-67.5z" />
</svg>
)}
</div>

<span className="grow-1 shrink-1 ml-[16px] text-left text-[14px] font-bold">
{isSignedIn ? 'ログアウト' : 'ログイン'}
</span>
</button>

<Link
className="block flex h-[56px] w-[188px] items-center justify-center pb-[8px] pl-[20px] pr-[8px] pt-[8px]"
rel="preload"
to="/"
>
<div className="i-bi:house-fill m-[4px] size-[20px] shrink-0 grow-0" />
<div className="i-bi:house-fill m-[4px] size-[20px] shrink-0 grow-0">
<svg fill="currentColor" height="20" viewBox="0 0 16 16" width="20" xmlns="http://www.w3.org/2000/svg">
<g>
<path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z"></path>
<path d="m8 3.293l6 6V13.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5V9.293z"></path>
</g>
</svg>
</div>

<span className="grow-1 shrink-1 ml-[16px] text-left text-[14px] font-bold">ホーム</span>
</Link>

<Link
className="block flex h-[56px] w-[188px] items-center justify-center pb-[8px] pl-[20px] pr-[8px] pt-[8px]"
rel="preload"
to="/timetable"
>
<div className="i-fa-solid:calendar m-[4px] size-[20px] shrink-0 grow-0" />
<div className="m-[4px] size-[20px] shrink-0 grow-0">
<svg
fill="currentColor"
height="20"
viewBox="0 0 448 512"
width="20"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12m436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12"></path>
</svg>
</div>

<span className="grow-1 shrink-1 ml-[16px] text-left text-[14px] font-bold">番組表</span>
</Link>
</nav>
Expand Down
39 changes: 38 additions & 1 deletion workspaces/client/src/features/layout/components/Loading.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,44 @@
import { FC } from 'react';

interface SpinnerProps {
className?: string;
color?: string;
size?: number;
}

export const Spinner: FC<SpinnerProps> = ({ className = '', color = 'currentColor', size = 48 }) => {
return (
<svg className={className} height={size} viewBox="0 0 24 24" width={size} xmlns="http://www.w3.org/2000/svg">
<g fill="none" stroke={color} strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}>
<path d="M12 3c4.97 0 9 4.03 9 9" strokeDasharray={16} strokeDashoffset={16}>
<animate attributeName="stroke-dashoffset" dur="0.3s" fill="freeze" values="16;0" />
<animateTransform
attributeName="transform"
dur="1.5s"
repeatCount="indefinite"
type="rotate"
values="0 12 12;360 12 12"
/>
</path>
<path
d="M12 3c4.97 0 9 4.03 9 9c0 4.97 -4.03 9 -9 9c-4.97 0 -9 -4.03 -9 -9c0 -4.97 4.03 -9 9 -9Z"
strokeDasharray={64}
strokeDashoffset={64}
strokeOpacity={0.3}
>
<animate attributeName="stroke-dashoffset" dur="1.2s" fill="freeze" values="64;0" />
</path>
</g>
</svg>
);
};

export const Loading = () => {
return (
<div className="absolute left-0 top-0 flex h-full w-full animate-[fade-in_0.5s_ease-in_0.5s_both] items-center justify-center bg-[#000000CC]">
<div className="i-line-md:loading-twotone-loop size-[48px]" />
<div className="absolute left-0 top-0 flex h-full w-full animate-[fade-in_0.5s_ease-in_0.5s_both] items-center justify-center bg-[#000000CC]">
<Spinner color="#FFFFFF" size={48} />
</div>
</div>
);
};
3 changes: 2 additions & 1 deletion workspaces/client/src/features/player/components/Player.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Ref, useEffect, useRef } from 'react';
import invariant from 'tiny-invariant';
import { assignRef } from 'use-callback-ref';

import { Spinner } from '@wsh-2025/client/src/features/layout/components/Loading';
import { PlayerType } from '@wsh-2025/client/src/features/player/constants/player_type';
import { PlayerWrapper } from '@wsh-2025/client/src/features/player/interfaces/player_wrapper';

Expand Down Expand Up @@ -49,7 +50,7 @@ export const Player = ({ className, loop, playerRef, playerType, playlistUrl }:
<div ref={mountRef} className="size-full" />

<div className="absolute inset-0 z-[-10] grid place-content-center">
<div className="i-line-md:loading-twotone-loop size-[48px] text-[#ffffff]" />
<Spinner color="#FFFFFF" size={48} />
</div>
</div>
</div>
Expand Down
Loading