commit 61669a11793ac3de33d2dc5a4efc4f79fba7bd5c Author: Last2014 Date: Mon Jul 28 15:45:37 2025 +0900 Initial Commit サインイン部分などのメイン要素を除いたコードを作成 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c942d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/package-lock.json +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..dc11dcc --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ +Copyright 2025 Last2014 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +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/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..c85fb67 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,16 @@ +import { dirname } from "path"; +import { fileURLToPath } from "url"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const eslintConfig = [ + ...compat.extends("next/core-web-vitals", "next/typescript"), +]; + +export default eslintConfig; diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000..28b905f --- /dev/null +++ b/next.config.ts @@ -0,0 +1,20 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + images: { + remotePatterns: [ + { + protocol: "https", + hostname: "**", + pathname: "**", + }, + { + protocol: "http", + hostname: "**", + pathname: "**", + }, + ], + }, +}; + +export default nextConfig; diff --git a/package.json b/package.json new file mode 100644 index 0000000..11177bb --- /dev/null +++ b/package.json @@ -0,0 +1,43 @@ +{ + "name": "uwuzu_light_client", + "version": "1.0", + "type": "module", + "license": "Apache-2.0", + "author": { + "name": "Last2014", + "email": "info@last2014.com", + "url": "https://last2014.com/" + }, + "contributors": [ + { + "name": "K.Yuzen", + "url": "https://x.com/K_Yuzen_67854/" + } + ], + "scripts": { + "dev": "next dev --turbopack", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@eslint/eslintrc": "^3", + "@iconify/react": "^6.0.0", + "@tailwindcss/postcss": "^4", + "@types/eslint": "^9.6.1", + "@types/js-cookie": "^3.0.6", + "@types/next": "^8.0.7", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "@types/tailwindcss": "^3.0.11", + "eslint": "^9", + "eslint-config-next": "15.3.4", + "js-cookie": "^3.0.5", + "next": "15.3.4", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwindcss": "^4", + "typescript": "^5" + } +} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..c7bcb4b --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,5 @@ +const config = { + plugins: ["@tailwindcss/postcss"], +}; + +export default config; diff --git a/public/uwuzu.svg b/public/uwuzu.svg new file mode 100644 index 0000000..2abb114 --- /dev/null +++ b/public/uwuzu.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/uwuzuMini.png b/public/uwuzuMini.png new file mode 100644 index 0000000..75777f7 Binary files /dev/null and b/public/uwuzuMini.png differ diff --git a/src/app/developers/card.tsx b/src/app/developers/card.tsx new file mode 100644 index 0000000..c2cfe25 --- /dev/null +++ b/src/app/developers/card.tsx @@ -0,0 +1,79 @@ +"use client"; +import Image from "next/image"; +import Link from "next/link"; + +interface DeveloperCardProps { + name: string; + icon: string; + link: string; + tags: Array; +}; + +interface Tags { + name: string; +}; + +function Tag({ name }: Tags) { + return ( + + {name} + + ); +}; + +export default function DeveloperCard({ + name, + icon, + link, + tags +}: DeveloperCardProps) { + return ( +
+ {`${name} +
+
+ {name} +
+
+
+ {tags.map((tag, index) => ( + + ))} +
+
+ ); +}; diff --git a/src/app/developers/page.tsx b/src/app/developers/page.tsx new file mode 100644 index 0000000..5ddb2ae --- /dev/null +++ b/src/app/developers/page.tsx @@ -0,0 +1,45 @@ +"use client"; +import DeveloperCard from "./card"; + +export default function Developers() { + return ( +
+

+ 開発者 +

+ + + + + +
+ ); +} diff --git a/src/app/favicon.ico b/src/app/favicon.ico new file mode 100644 index 0000000..9d03613 Binary files /dev/null and b/src/app/favicon.ico differ diff --git a/src/app/globals.css b/src/app/globals.css new file mode 100644 index 0000000..a2dc41e --- /dev/null +++ b/src/app/globals.css @@ -0,0 +1,26 @@ +@import "tailwindcss"; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +body { + background: var(--background); + color: var(--foreground); + font-family: Arial, Helvetica, sans-serif; +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..a2695ba --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,45 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; + +import Footer from "@/components/footer/main"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "uwuzu軽量クライアント", + description: "(自称)超軽量uwuzuクライアントです。", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + +
+ {children} +
+