diff --git a/apps/wr/.gitignore b/apps/wr/.gitignore
new file mode 100644
index 000000000..5ef6a5207
--- /dev/null
+++ b/apps/wr/.gitignore
@@ -0,0 +1,41 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.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/apps/wr/app/favicon.ico b/apps/wr/app/favicon.ico
new file mode 100644
index 000000000..718d6fea4
Binary files /dev/null and b/apps/wr/app/favicon.ico differ
diff --git a/apps/wr/app/globals.css b/apps/wr/app/globals.css
new file mode 100644
index 000000000..56e5d1f86
--- /dev/null
+++ b/apps/wr/app/globals.css
@@ -0,0 +1,5 @@
+@import "../../../packages/common/components/src/base.css";
+
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
diff --git a/apps/wr/app/layout.tsx b/apps/wr/app/layout.tsx
new file mode 100644
index 000000000..f7fa87eb8
--- /dev/null
+++ b/apps/wr/app/layout.tsx
@@ -0,0 +1,34 @@
+import type { Metadata } from "next";
+import { Geist, Geist_Mono } from "next/font/google";
+import "./globals.css";
+
+const geistSans = Geist({
+ variable: "--font-geist-sans",
+ subsets: ["latin"],
+});
+
+const geistMono = Geist_Mono({
+ variable: "--font-geist-mono",
+ subsets: ["latin"],
+});
+
+export const metadata: Metadata = {
+ title: "Create Next App",
+ description: "Generated by create next app",
+};
+
+export default function RootLayout({
+ children,
+}: Readonly<{
+ children: React.ReactNode;
+}>) {
+ return (
+
+
+ {children}
+
+
+ );
+}
diff --git a/apps/wr/app/page.tsx b/apps/wr/app/page.tsx
new file mode 100644
index 000000000..823f05a86
--- /dev/null
+++ b/apps/wr/app/page.tsx
@@ -0,0 +1,104 @@
+import Image from "next/image";
+
+import { Button } from "@common/components";
+
+export default function Home() {
+ return (
+
+
+
+
+
+ -
+ Get started by editing{" "}
+
+ app/page.tsx
+
+ .
+
+ - Save and see your changes instantly.
+
+
+
+
+
+
+ );
+}
diff --git a/apps/wr/eslint.config.mjs b/apps/wr/eslint.config.mjs
new file mode 100644
index 000000000..c85fb67c4
--- /dev/null
+++ b/apps/wr/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/apps/wr/next.config.ts b/apps/wr/next.config.ts
new file mode 100644
index 000000000..e9ffa3083
--- /dev/null
+++ b/apps/wr/next.config.ts
@@ -0,0 +1,7 @@
+import type { NextConfig } from "next";
+
+const nextConfig: NextConfig = {
+ /* config options here */
+};
+
+export default nextConfig;
diff --git a/apps/wr/package.json b/apps/wr/package.json
new file mode 100644
index 000000000..c8fc4c33c
--- /dev/null
+++ b/apps/wr/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "wr",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev --turbopack",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "@common/components": "workspace:*",
+ "next": "15.1.7"
+ },
+ "devDependencies": {
+ "@eslint/eslintrc": "^3",
+ "eslint": "^9",
+ "eslint-config-next": "15.1.7",
+ "postcss": "^8",
+ "tailwindcss": "^3.4.1",
+ "typescript": "^5"
+ }
+}
diff --git a/apps/wr/postcss.config.mjs b/apps/wr/postcss.config.mjs
new file mode 100644
index 000000000..1a69fd2a4
--- /dev/null
+++ b/apps/wr/postcss.config.mjs
@@ -0,0 +1,8 @@
+/** @type {import('postcss-load-config').Config} */
+const config = {
+ plugins: {
+ tailwindcss: {},
+ },
+};
+
+export default config;
diff --git a/apps/wr/public/file.svg b/apps/wr/public/file.svg
new file mode 100644
index 000000000..004145cdd
--- /dev/null
+++ b/apps/wr/public/file.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/wr/public/globe.svg b/apps/wr/public/globe.svg
new file mode 100644
index 000000000..567f17b0d
--- /dev/null
+++ b/apps/wr/public/globe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/wr/public/next.svg b/apps/wr/public/next.svg
new file mode 100644
index 000000000..5174b28c5
--- /dev/null
+++ b/apps/wr/public/next.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/wr/public/vercel.svg b/apps/wr/public/vercel.svg
new file mode 100644
index 000000000..770539603
--- /dev/null
+++ b/apps/wr/public/vercel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/wr/public/window.svg b/apps/wr/public/window.svg
new file mode 100644
index 000000000..b2b2a44f6
--- /dev/null
+++ b/apps/wr/public/window.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/wr/tailwind.config.ts b/apps/wr/tailwind.config.ts
new file mode 100644
index 000000000..733f8d49b
--- /dev/null
+++ b/apps/wr/tailwind.config.ts
@@ -0,0 +1,11 @@
+import baseConfig from "../../packages/common/components/tailwind.config";
+
+import type { Config } from "tailwindcss";
+
+export default {
+ presets: [baseConfig],
+ content: [
+ "./app/**/*.{js,ts,jsx,tsx,mdx}",
+ "../../packages/common/components/src/ui/**/*.{js,ts,jsx,tsx,mdx}",
+ ],
+} satisfies Config;
diff --git a/apps/wr/tsconfig.json b/apps/wr/tsconfig.json
new file mode 100644
index 000000000..cca165ba7
--- /dev/null
+++ b/apps/wr/tsconfig.json
@@ -0,0 +1,46 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "baseUrl": ".",
+ "target": "ES2017",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "verbatimModuleSyntax": true,
+ "strictNullChecks": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["./*"],
+ "@common/components/*": ["../../packages/common/components/src/*"],
+ "@common/components": ["../../packages/common/components/src/index"]
+ }
+ },
+ "include": [
+ ".eslintrc.*",
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ "**/*.mts",
+ "**/*.js",
+ "**/*.cjs",
+ "**/*.mjs",
+ "**/*.jsx",
+ "**/*.json",
+ ".next/types/**/*.ts"
+ ],
+ "exclude": ["**/node_modules", "**/.*/*"]
+}