diff --git a/typing-app/.eslintrc.json b/typing-app/.eslintrc.json index 9b08370c..f64128d4 100644 --- a/typing-app/.eslintrc.json +++ b/typing-app/.eslintrc.json @@ -1,7 +1,6 @@ { "extends": [ "next/core-web-vitals", - "prettier", - "next/babel" + "prettier" ] } diff --git a/typing-app/README.md b/typing-app/README.md index c4033664..08f571f4 100644 --- a/typing-app/README.md +++ b/typing-app/README.md @@ -18,8 +18,6 @@ Open [http://localhost:3000](http://localhost:3000) with your browser to see the You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. - ## Learn More To learn more about Next.js, take a look at the following resources: diff --git a/typing-app/package.json b/typing-app/package.json index 3cc7ad15..62557a82 100644 --- a/typing-app/package.json +++ b/typing-app/package.json @@ -27,6 +27,7 @@ "prettier": "^3.2.5", "react": "^18", "react-dom": "^18", + "sharp": "^0.33.3", "tailwind-merge": "^2.2.1", "tailwindcss-animate": "^1.0.7" }, diff --git a/typing-app/public/img/gauge_time.png b/typing-app/public/img/gauge_time.png index 0458530a..0cc4f1f0 100644 Binary files a/typing-app/public/img/gauge_time.png and b/typing-app/public/img/gauge_time.png differ diff --git a/typing-app/src/app/favicon.ico b/typing-app/src/app/favicon.ico index 718d6fea..1c234515 100644 Binary files a/typing-app/src/app/favicon.ico and b/typing-app/src/app/favicon.ico differ diff --git a/typing-app/src/app/globals.css b/typing-app/src/app/globals.css index 1340b323..a75cdd73 100644 --- a/typing-app/src/app/globals.css +++ b/typing-app/src/app/globals.css @@ -1,20 +1,15 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - :root { --foreground-rgb: 0, 0, 0; --background-start-rgb: 0, 0, 0; --background-end-rgb: 0, 0, 0; } +* { + font-family: "メイリオ", "Meiryo", "Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ Pro W3", "MS Pゴシック", sans-serif; +} + body { color: rgb(var(--foreground-rgb)); background: rgb(var(--background-start-rgb)); -} - -@layer utilities { - .text-balance { - text-wrap: balance; - } + overflow-y: hidden; } diff --git a/typing-app/src/app/layout.tsx b/typing-app/src/app/layout.tsx index 433a1775..e374430f 100644 --- a/typing-app/src/app/layout.tsx +++ b/typing-app/src/app/layout.tsx @@ -1,11 +1,9 @@ import type { Metadata } from "next"; -import { Inter } from "next/font/google"; import Header from "../components/organism/Header"; import Footer from "../components/organism/Footer"; import "./globals.css"; import { Box, ChakraProvider } from "@chakra-ui/react"; - -const inter = Inter({ subsets: ["latin"] }); +import background from "@/assets/images/background.png"; export const metadata: Metadata = { title: "TYPE MASTER", @@ -18,9 +16,9 @@ export default async function RootLayout({ }>) { return ( - + - +
{children} diff --git a/typing-app/src/assets/images/background.png b/typing-app/src/assets/images/background.png new file mode 100644 index 00000000..38dbf7b9 Binary files /dev/null and b/typing-app/src/assets/images/background.png differ diff --git a/typing-app/src/assets/images/home/game.png b/typing-app/src/assets/images/home/game.png new file mode 100644 index 00000000..ebef756b Binary files /dev/null and b/typing-app/src/assets/images/home/game.png differ diff --git a/typing-app/src/assets/images/home/logout.png b/typing-app/src/assets/images/home/logout.png new file mode 100644 index 00000000..0392dc7a Binary files /dev/null and b/typing-app/src/assets/images/home/logout.png differ diff --git a/typing-app/src/assets/images/home/ranking.png b/typing-app/src/assets/images/home/ranking.png new file mode 100644 index 00000000..be510bd6 Binary files /dev/null and b/typing-app/src/assets/images/home/ranking.png differ diff --git a/typing-app/src/components/atoms/Banner.tsx b/typing-app/src/components/atoms/Banner.tsx index f960bc4c..d67a13ba 100644 --- a/typing-app/src/components/atoms/Banner.tsx +++ b/typing-app/src/components/atoms/Banner.tsx @@ -1,11 +1,13 @@ import React from "react"; -import { Box, Image } from "@chakra-ui/react"; +import { Box, Image, Link } from "@chakra-ui/react"; import bannerImage from "@/assets/images/banner.png"; const Banner: React.FC = () => { return ( - Logo + + Logo + ); }; diff --git a/typing-app/src/components/molecules/GameStartButton.tsx b/typing-app/src/components/molecules/GameStartButton.tsx index 756d9e39..a63af56d 100644 --- a/typing-app/src/components/molecules/GameStartButton.tsx +++ b/typing-app/src/components/molecules/GameStartButton.tsx @@ -1,18 +1,16 @@ "use client"; import React from "react"; -import { Button, useDisclosure } from "@chakra-ui/react"; +import { Image, useDisclosure } from "@chakra-ui/react"; import LoginModal from "./LoginModal"; +import gameButton from "@/assets/images/home/game.png"; const GameStartButton = () => { const { isOpen, onOpen, onClose } = useDisclosure(); return ( <> - - + ); diff --git a/typing-app/src/components/molecules/LogoutButton.tsx b/typing-app/src/components/molecules/LogoutButton.tsx index 730b9dae..5071d5ac 100644 --- a/typing-app/src/components/molecules/LogoutButton.tsx +++ b/typing-app/src/components/molecules/LogoutButton.tsx @@ -2,9 +2,10 @@ import React from "react"; import { useRouter } from "next/navigation"; -import { Button, useDisclosure } from "@chakra-ui/react"; +import { Image, useDisclosure } from "@chakra-ui/react"; import LogoutModal from "./LogoutModal"; import { logout } from "@/app/actions"; +import logoutButton from "@/assets/images/home/logout.png"; const LogoutButton: React.FC = () => { const { isOpen, onOpen, onClose } = useDisclosure(); @@ -23,10 +24,7 @@ const LogoutButton: React.FC = () => { return ( <> - - + ); diff --git a/typing-app/src/components/molecules/RankingButton.tsx b/typing-app/src/components/molecules/RankingButton.tsx index 7345d147..0227cc94 100644 --- a/typing-app/src/components/molecules/RankingButton.tsx +++ b/typing-app/src/components/molecules/RankingButton.tsx @@ -1,7 +1,8 @@ "use client"; import { useRouter } from "next/navigation"; -import { Button } from "@chakra-ui/react"; +import { Image } from "@chakra-ui/react"; +import rankingButton from "@/assets/images/home/ranking.png"; const RankingButton = () => { const router = useRouter(); @@ -11,11 +12,7 @@ const RankingButton = () => { router.push("/ranking"); }; - return ( - - ); + return ; }; export default RankingButton; diff --git a/typing-app/src/components/organism/Header.tsx b/typing-app/src/components/organism/Header.tsx index e97f03bc..8dec894a 100644 --- a/typing-app/src/components/organism/Header.tsx +++ b/typing-app/src/components/organism/Header.tsx @@ -8,7 +8,7 @@ import Separator from "@/components/atoms/Separater"; const Header: React.FC = () => { return ( <> - + diff --git a/typing-app/src/components/organism/HomeMenuContainer.tsx b/typing-app/src/components/organism/HomeMenuContainer.tsx index 1b044fe5..dfc09dbf 100644 --- a/typing-app/src/components/organism/HomeMenuContainer.tsx +++ b/typing-app/src/components/organism/HomeMenuContainer.tsx @@ -5,8 +5,8 @@ import LogoutButton from "../molecules/LogoutButton"; const HomeMenuContainer = () => { return ( - - + + {/* TODO: ログイン状況に応じて表示を切り替え */} diff --git a/typing-app/src/components/organism/RankingTabs.tsx b/typing-app/src/components/organism/RankingTabs.tsx index 6585f7e3..c979320d 100644 --- a/typing-app/src/components/organism/RankingTabs.tsx +++ b/typing-app/src/components/organism/RankingTabs.tsx @@ -54,7 +54,7 @@ const RankingTabs = () => { }; return ( - + {/* 幅を揃えるためだけの要素,視覚的な意味はなし */} diff --git a/typing-app/src/components/templates/GamePre.module.css b/typing-app/src/components/templates/GamePre.module.css index 2b95443c..c089b2df 100644 --- a/typing-app/src/components/templates/GamePre.module.css +++ b/typing-app/src/components/templates/GamePre.module.css @@ -4,7 +4,7 @@ margin: 50px auto 0 auto; position: absolute; left: 15%; - top: 100px; + top: 120px; background-color: #263238; border: 4px, #fff; } diff --git a/typing-app/src/components/templates/GamePre.tsx b/typing-app/src/components/templates/GamePre.tsx index 7d7bdba5..d724203a 100644 --- a/typing-app/src/components/templates/GamePre.tsx +++ b/typing-app/src/components/templates/GamePre.tsx @@ -29,7 +29,7 @@ const GamePre: React.FC = ({ nextPage }) => { templateAreas={`"header header" "main nav" "footer footer"`} - gridTemplateRows={"80px 1fr 50px"} + gridTemplateRows={"80px 1fr 80px"} gridTemplateColumns={"1fr 1fr"} h="100%" gap={0} @@ -38,9 +38,9 @@ const GamePre: React.FC = ({ nextPage }) => { alignItems="center" overflow="auto" > - + - ゲーム説明 + 操作説明 @@ -49,8 +49,8 @@ const GamePre: React.FC = ({ nextPage }) => { 制限時間は1分間! 英文を速く・正確に入力して高スコアを目指そう! 【ランキング掲載条件】 - WPM(Words per Minutes): 120字以上 - 正打率: 95%以上 + WPM (Words Per Minutes) : 120字以上 + 正打率 : 95%以上 【入力しても反応しなくなった場合】 テキストが表示されているボックスをクリックすると元に戻れます。 @@ -70,7 +70,7 @@ const GamePre: React.FC = ({ nextPage }) => { - [Space]キーを押して開始 + [Space] キーを押して開始 diff --git a/typing-app/src/components/templates/GameResult.module.css b/typing-app/src/components/templates/GameResult.module.css index bdd0c0b3..7036bb4d 100644 --- a/typing-app/src/components/templates/GameResult.module.css +++ b/typing-app/src/components/templates/GameResult.module.css @@ -4,7 +4,7 @@ margin: 50px auto 0 auto; position: absolute; left: 15%; - top: 100px; + top: 120px; background-color: #263238; border: solid 4px #fff; } diff --git a/typing-app/src/components/templates/GameResult.tsx b/typing-app/src/components/templates/GameResult.tsx index 395eaca9..b2ddfd72 100644 --- a/typing-app/src/components/templates/GameResult.tsx +++ b/typing-app/src/components/templates/GameResult.tsx @@ -70,28 +70,28 @@ const GameResult: React.FC = ({ nextPage, resultScore }) => { - {resultScore.keystrokes}回 + {resultScore.keystrokes} 回 - {resultScore.miss}回 + {resultScore.miss} 回 - {String(resultScore.time.getMinutes() * 60 + resultScore.time.getSeconds()).padStart(2, "0")}秒 - {String(Math.floor(resultScore.time.getMilliseconds() / 100))} + {String(resultScore.time.getMinutes() * 60 + resultScore.time.getSeconds()).padStart(2, "0")}. + {String(Math.floor(resultScore.time.getMilliseconds() / 100))} 秒 - {Math.floor(resultScore.wpm)}字/分 + {Math.floor(resultScore.wpm)} 字/分 - {resultScore.accuracy.toFixed(1)}% + {resultScore.accuracy.toFixed(1)} % diff --git a/typing-app/src/components/templates/GameTyping.module.css b/typing-app/src/components/templates/GameTyping.module.css index dceb1109..7ba92c91 100644 --- a/typing-app/src/components/templates/GameTyping.module.css +++ b/typing-app/src/components/templates/GameTyping.module.css @@ -4,7 +4,7 @@ margin: 50px auto 0 auto; position: absolute; left: 15%; - top: 100px; + top: 120px; background-color: #263238; border: solid 4px #fff; } diff --git a/typing-app/src/components/templates/GameTyping.tsx b/typing-app/src/components/templates/GameTyping.tsx index e454ea93..bac05bf2 100644 --- a/typing-app/src/components/templates/GameTyping.tsx +++ b/typing-app/src/components/templates/GameTyping.tsx @@ -180,8 +180,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul
- - +
{""} = ({ nextPage, subjectText, setResul height={24} /> {""} - {/* TODO: Lpre, Ipusumって消すんじゃなかったっけ */} -
Lorem Ipsum
+
-
{subjectText.slice(0, typeIndex)} @@ -206,7 +204,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul 残り {count.toFixed(1)}
- {correctType} 語 / {subjectText.length} 字 + {correctType} 字 / {subjectText.length} 字
diff --git a/typing-app/yarn.lock b/typing-app/yarn.lock index 4a0989b3..d097bdf3 100644 --- a/typing-app/yarn.lock +++ b/typing-app/yarn.lock @@ -1640,6 +1640,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/runtime@npm:^1.1.0": + version: 1.1.1 + resolution: "@emnapi/runtime@npm:1.1.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/c11ee57abf0ec643e64ccdace4b4fcc0b0c7b1117a191f969e84ae3669841aa90d2c17fa35b73f5a66fc0c843c8caca7bf11187faaeaa526bcfb7dbfb9b85de9 + languageName: node + linkType: hard + "@emotion/babel-plugin@npm:^11.11.0": version: 11.11.0 resolution: "@emotion/babel-plugin@npm:11.11.0" @@ -1860,6 +1869,181 @@ __metadata: languageName: node linkType: hard +"@img/sharp-darwin-arm64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-darwin-arm64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-darwin-arm64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-darwin-arm64": + optional: true + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@img/sharp-darwin-x64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-darwin-x64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-darwin-x64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-darwin-x64": + optional: true + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@img/sharp-libvips-darwin-arm64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@img/sharp-libvips-darwin-x64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-arm64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-arm@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linux-arm@npm:1.0.2" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-s390x@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.2" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-x64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linux-x64@npm:1.0.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-libvips-linuxmusl-x64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-linux-arm64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linux-arm64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linux-arm64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linux-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-arm@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linux-arm@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linux-arm": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linux-arm": + optional: true + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-s390x@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linux-s390x@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linux-s390x": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linux-s390x": + optional: true + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-x64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linux-x64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linux-x64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linux-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linuxmusl-arm64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-linuxmusl-x64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linuxmusl-x64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-wasm32@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-wasm32@npm:0.33.3" + dependencies: + "@emnapi/runtime": "npm:^1.1.0" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@img/sharp-win32-ia32@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-win32-ia32@npm:0.33.3" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@img/sharp-win32-x64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-win32-x64@npm:0.33.3" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -3803,13 +3987,23 @@ __metadata: languageName: node linkType: hard -"color-name@npm:~1.1.4": +"color-name@npm:^1.0.0, color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 languageName: node linkType: hard +"color-string@npm:^1.9.0": + version: 1.9.1 + resolution: "color-string@npm:1.9.1" + dependencies: + color-name: "npm:^1.0.0" + simple-swizzle: "npm:^0.2.2" + checksum: 10c0/b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404 + languageName: node + linkType: hard + "color2k@npm:^2.0.2": version: 2.0.3 resolution: "color2k@npm:2.0.3" @@ -3817,6 +4011,16 @@ __metadata: languageName: node linkType: hard +"color@npm:^4.2.3": + version: 4.2.3 + resolution: "color@npm:4.2.3" + dependencies: + color-convert: "npm:^2.0.1" + color-string: "npm:^1.9.0" + checksum: 10c0/7fbe7cfb811054c808349de19fb380252e5e34e61d7d168ec3353e9e9aacb1802674bddc657682e4e9730c2786592a4de6f8283e7e0d3870b829bb0b7b2f6118 + languageName: node + linkType: hard + "combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" @@ -4133,6 +4337,13 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^2.0.3": + version: 2.0.3 + resolution: "detect-libc@npm:2.0.3" + checksum: 10c0/88095bda8f90220c95f162bf92cad70bd0e424913e655c20578600e35b91edc261af27531cf160a331e185c0ced93944bc7e09939143225f56312d7fd800fdb7 + languageName: node + linkType: hard + "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -5529,6 +5740,13 @@ __metadata: languageName: node linkType: hard +"is-arrayish@npm:^0.3.1": + version: 0.3.2 + resolution: "is-arrayish@npm:0.3.2" + checksum: 10c0/f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54 + languageName: node + linkType: hard + "is-async-function@npm:^2.0.0": version: 2.0.0 resolution: "is-async-function@npm:2.0.0" @@ -7993,7 +8211,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": version: 7.6.0 resolution: "semver@npm:7.6.0" dependencies: @@ -8030,6 +8248,75 @@ __metadata: languageName: node linkType: hard +"sharp@npm:^0.33.3": + version: 0.33.3 + resolution: "sharp@npm:0.33.3" + dependencies: + "@img/sharp-darwin-arm64": "npm:0.33.3" + "@img/sharp-darwin-x64": "npm:0.33.3" + "@img/sharp-libvips-darwin-arm64": "npm:1.0.2" + "@img/sharp-libvips-darwin-x64": "npm:1.0.2" + "@img/sharp-libvips-linux-arm": "npm:1.0.2" + "@img/sharp-libvips-linux-arm64": "npm:1.0.2" + "@img/sharp-libvips-linux-s390x": "npm:1.0.2" + "@img/sharp-libvips-linux-x64": "npm:1.0.2" + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.2" + "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.2" + "@img/sharp-linux-arm": "npm:0.33.3" + "@img/sharp-linux-arm64": "npm:0.33.3" + "@img/sharp-linux-s390x": "npm:0.33.3" + "@img/sharp-linux-x64": "npm:0.33.3" + "@img/sharp-linuxmusl-arm64": "npm:0.33.3" + "@img/sharp-linuxmusl-x64": "npm:0.33.3" + "@img/sharp-wasm32": "npm:0.33.3" + "@img/sharp-win32-ia32": "npm:0.33.3" + "@img/sharp-win32-x64": "npm:0.33.3" + color: "npm:^4.2.3" + detect-libc: "npm:^2.0.3" + semver: "npm:^7.6.0" + dependenciesMeta: + "@img/sharp-darwin-arm64": + optional: true + "@img/sharp-darwin-x64": + optional: true + "@img/sharp-libvips-darwin-arm64": + optional: true + "@img/sharp-libvips-darwin-x64": + optional: true + "@img/sharp-libvips-linux-arm": + optional: true + "@img/sharp-libvips-linux-arm64": + optional: true + "@img/sharp-libvips-linux-s390x": + optional: true + "@img/sharp-libvips-linux-x64": + optional: true + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + "@img/sharp-libvips-linuxmusl-x64": + optional: true + "@img/sharp-linux-arm": + optional: true + "@img/sharp-linux-arm64": + optional: true + "@img/sharp-linux-s390x": + optional: true + "@img/sharp-linux-x64": + optional: true + "@img/sharp-linuxmusl-arm64": + optional: true + "@img/sharp-linuxmusl-x64": + optional: true + "@img/sharp-wasm32": + optional: true + "@img/sharp-win32-ia32": + optional: true + "@img/sharp-win32-x64": + optional: true + checksum: 10c0/12f5203426595b4e64c807162a6d52358b591d25fbb414a51fe38861584759fba38485be951ed98d15be3dfe21f2def5336f78ca35bf8bbd22d88cc78ca03f2a + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -8072,6 +8359,15 @@ __metadata: languageName: node linkType: hard +"simple-swizzle@npm:^0.2.2": + version: 0.2.2 + resolution: "simple-swizzle@npm:0.2.2" + dependencies: + is-arrayish: "npm:^0.3.1" + checksum: 10c0/df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308 + languageName: node + linkType: hard + "sisteransi@npm:^1.0.5": version: 1.0.5 resolution: "sisteransi@npm:1.0.5" @@ -8765,6 +9061,7 @@ __metadata: prettier: "npm:^3.2.5" react: "npm:^18" react-dom: "npm:^18" + sharp: "npm:^0.33.3" tailwind-merge: "npm:^2.2.1" tailwindcss: "npm:^3.3.0" tailwindcss-animate: "npm:^1.0.7"