diff --git a/.npmrc b/.npmrc
index e69de29..ef38df8 100644
--- a/.npmrc
+++ b/.npmrc
@@ -0,0 +1,3 @@
+auto-install-peers=true
+legacy-peer-deps=true
+node-linker=hoisted
diff --git a/apps/docs/.eslintrc.js b/apps/docs/.eslintrc.js
deleted file mode 100644
index 7d644a4..0000000
--- a/apps/docs/.eslintrc.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/** @type {import("eslint").Linter.Config} */
-module.exports = {
- root: true,
- extends: ["@repo/eslint-config/next.js"],
- parser: "@typescript-eslint/parser",
- parserOptions: {
- project: true,
- },
-};
diff --git a/apps/docs/README.md b/apps/docs/README.md
deleted file mode 100644
index d364535..0000000
--- a/apps/docs/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-## Getting Started
-
-First, run the development server:
-
-```bash
-yarn dev
-```
-
-Open [http://localhost:3001](http://localhost:3001) 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.
-
-To create [API routes](https://nextjs.org/docs/app/building-your-application/routing/router-handlers) add an `api/` directory to the `app/` directory with a `route.ts` file. For individual endpoints, create a subfolder in the `api` directory, like `api/hello/route.ts` would map to [http://localhost:3001/api/hello](http://localhost:3001/api/hello).
-
-## 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/foundations/about-nextjs) - 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_source=github.com&utm_medium=referral&utm_campaign=turborepo-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/apps/docs/app/favicon.ico b/apps/docs/app/favicon.ico
deleted file mode 100644
index 3f804c0..0000000
Binary files a/apps/docs/app/favicon.ico and /dev/null differ
diff --git a/apps/docs/app/globals.css b/apps/docs/app/globals.css
deleted file mode 100644
index 8eee6cb..0000000
--- a/apps/docs/app/globals.css
+++ /dev/null
@@ -1,50 +0,0 @@
-:root {
- --max-width: 1100px;
- --border-radius: 12px;
- --font-mono: ui-monospace, Menlo, Monaco, "Cascadia Mono", "Segoe UI Mono",
- "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Source Code Pro",
- "Fira Mono", "Droid Sans Mono", "Courier New", monospace;
-
- --foreground-rgb: 255, 255, 255;
- --background-start-rgb: 0, 0, 0;
- --background-end-rgb: 0, 0, 0;
-
- --callout-rgb: 20, 20, 20;
- --callout-border-rgb: 108, 108, 108;
- --card-rgb: 100, 100, 100;
- --card-border-rgb: 200, 200, 200;
-
- --glow-conic: conic-gradient(
- from 180deg at 50% 50%,
- #2a8af6 0deg,
- #a853ba 180deg,
- #e92a67 360deg
- );
-}
-
-* {
- box-sizing: border-box;
- padding: 0;
- margin: 0;
-}
-
-html,
-body {
- max-width: 100vw;
- overflow-x: hidden;
-}
-
-body {
- color: rgb(var(--foreground-rgb));
- background: linear-gradient(
- to bottom,
- transparent,
- rgb(var(--background-end-rgb))
- )
- rgb(var(--background-start-rgb));
-}
-
-a {
- color: inherit;
- text-decoration: none;
-}
diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx
deleted file mode 100644
index 5f90d11..0000000
--- a/apps/docs/app/layout.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import "./globals.css";
-import type { Metadata } from "next";
-import { Inter } from "next/font/google";
-
-const inter = Inter({ subsets: ["latin"] });
-
-export const metadata: Metadata = {
- title: "Create Turborepo",
- description: "Generated by create turbo",
-};
-
-export default function RootLayout({
- children,
-}: {
- children: React.ReactNode;
-}): JSX.Element {
- return (
-
-
{children}
-
- );
-}
diff --git a/apps/docs/app/page.module.css b/apps/docs/app/page.module.css
deleted file mode 100644
index 98481c6..0000000
--- a/apps/docs/app/page.module.css
+++ /dev/null
@@ -1,335 +0,0 @@
-.main {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-items: center;
- padding: 6rem;
- min-height: 100vh;
-}
-
-.vercelLogo {
- filter: invert(1);
-}
-
-.description {
- display: inherit;
- justify-content: inherit;
- align-items: inherit;
- font-size: 0.85rem;
- max-width: var(--max-width);
- width: 100%;
- z-index: 2;
- font-family: var(--font-mono);
-}
-
-.description a {
- display: flex;
- justify-content: center;
- align-items: center;
- gap: 0.5rem;
-}
-
-.description p {
- position: relative;
- margin: 0;
- padding: 1rem;
- background-color: rgba(var(--callout-rgb), 0.5);
- border: 1px solid rgba(var(--callout-border-rgb), 0.3);
- border-radius: var(--border-radius);
-}
-
-.code {
- font-weight: 700;
- font-family: var(--font-mono);
-}
-
-.hero {
- display: flex;
- position: relative;
- place-items: center;
-}
-
-.heroContent {
- display: flex;
- position: relative;
- z-index: 0;
- padding-bottom: 4rem;
- flex-direction: column;
- gap: 2rem;
- justify-content: space-between;
- align-items: center;
- width: auto;
- font-family: system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial,
- "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
- "Segoe UI Symbol", "Noto Color Emoji";
- padding-top: 48px;
-
- @media (min-width: 768px) {
- padding-top: 4rem;
- padding-bottom: 6rem;
- }
- @media (min-width: 1024px) {
- padding-top: 5rem;
- padding-bottom: 8rem;
- }
-}
-
-.logos {
- display: flex;
- z-index: 50;
- justify-content: center;
- align-items: center;
- width: 100%;
-}
-
-.grid {
- display: grid;
- grid-template-columns: repeat(4, minmax(25%, auto));
- max-width: 100%;
- width: var(--max-width);
-}
-
-.card {
- padding: 1rem 1.2rem;
- border-radius: var(--border-radius);
- background: rgba(var(--card-rgb), 0);
- border: 1px solid rgba(var(--card-border-rgb), 0);
- transition: background 200ms, border 200ms;
-}
-
-.card span {
- display: inline-block;
- transition: transform 200ms;
-}
-
-.card h2 {
- font-weight: 600;
- margin-bottom: 0.7rem;
-}
-
-.card p {
- margin: 0;
- opacity: 0.6;
- font-size: 0.9rem;
- line-height: 1.5;
- max-width: 30ch;
-}
-
-@media (prefers-reduced-motion) {
- .card:hover span {
- transform: none;
- }
-}
-
-/* Mobile */
-@media (max-width: 700px) {
- .content {
- padding: 4rem;
- }
-
- .grid {
- grid-template-columns: 1fr;
- margin-bottom: 120px;
- max-width: 320px;
- text-align: center;
- }
-
- .card {
- padding: 1rem 2.5rem;
- }
-
- .card h2 {
- margin-bottom: 0.5rem;
- }
-
- .center {
- padding: 8rem 0 6rem;
- }
-
- .center::before {
- transform: none;
- height: 300px;
- }
-
- .description {
- font-size: 0.8rem;
- }
-
- .description a {
- padding: 1rem;
- }
-
- .description p,
- .description div {
- display: flex;
- justify-content: center;
- position: fixed;
- width: 100%;
- }
-
- .description p {
- align-items: center;
- inset: 0 0 auto;
- padding: 2rem 1rem 1.4rem;
- border-radius: 0;
- border: none;
- border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25);
- background: linear-gradient(
- to bottom,
- rgba(var(--background-start-rgb), 1),
- rgba(var(--callout-rgb), 0.5)
- );
- background-clip: padding-box;
- backdrop-filter: blur(24px);
- }
-
- .description div {
- align-items: flex-end;
- pointer-events: none;
- inset: auto 0 0;
- padding: 2rem;
- height: 200px;
- background: linear-gradient(
- to bottom,
- transparent 0%,
- rgb(var(--background-end-rgb)) 40%
- );
- z-index: 1;
- }
-}
-
-/* Enable hover only on non-touch devices */
-@media (hover: hover) and (pointer: fine) {
- .card:hover {
- background: rgba(var(--card-rgb), 0.1);
- border: 1px solid rgba(var(--card-border-rgb), 0.15);
- }
-
- .card:hover span {
- transform: translateX(4px);
- }
-}
-
-.circles {
- position: absolute;
- min-width: 614px;
- min-height: 614px;
- pointer-events: none;
-}
-
-.logo {
- z-index: 50;
- width: 120px;
- height: 120px;
-}
-
-.logoGradientContainer {
- display: flex;
- position: absolute;
- z-index: 50;
- justify-content: center;
- align-items: center;
- width: 16rem;
- height: 16rem;
-}
-
-.turborepoWordmarkContainer {
- display: flex;
- z-index: 50;
- padding-left: 1.5rem;
- padding-right: 1.5rem;
- flex-direction: column;
- gap: 1.25rem;
- justify-content: center;
- align-items: center;
- text-align: center;
-
- @media (min-width: 1024px) {
- gap: 1.5rem;
- }
-}
-
-.turborepoWordmark {
- width: 160px;
- fill: white;
-
- @media (min-width: 768px) {
- width: 200px;
- }
-}
-
-.code {
- font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
- monospace;
- font-weight: 700;
-}
-
-/* Tablet and Smaller Desktop */
-@media (min-width: 701px) and (max-width: 1120px) {
- .grid {
- grid-template-columns: repeat(2, 50%);
- }
-}
-
-/* Gradients */
-.gradient {
- position: absolute;
- mix-blend-mode: normal;
- will-change: filter;
- pointer-events: none;
-}
-
-.gradientSmall {
- filter: blur(32px);
-}
-
-.gradientLarge {
- filter: blur(75px);
-}
-
-.glowConic {
- background-image: var(--glow-conic);
-}
-
-.logoGradient {
- opacity: 0.9;
- width: 120px;
- height: 120px;
-}
-
-.backgroundGradient {
- top: -500px;
- width: 1000px;
- height: 1000px;
- opacity: 0.15;
-}
-
-.button {
- background-color: #ffffff;
- border-radius: 8px;
- border-style: none;
- box-sizing: border-box;
- color: #000000;
- cursor: pointer;
- display: inline-block;
- font-size: 16px;
- height: 40px;
- line-height: 20px;
- list-style: none;
- margin: 0;
- outline: none;
- padding: 10px 16px;
- position: relative;
- text-align: center;
- text-decoration: none;
- transition: color 100ms;
- vertical-align: baseline;
- user-select: none;
- -webkit-user-select: none;
- touch-action: manipulation;
-}
-
-.button:hover,
-.button:focus {
- background-color: #e5e4e2;
-}
diff --git a/apps/docs/app/page.tsx b/apps/docs/app/page.tsx
deleted file mode 100644
index 1ac152f..0000000
--- a/apps/docs/app/page.tsx
+++ /dev/null
@@ -1,144 +0,0 @@
-import Image from "next/image";
-import { Card } from "@repo/ui/card";
-import { Code } from "@repo/ui/code";
-import styles from "./page.module.css";
-import { Button } from "@repo/ui/button";
-
-function Gradient({
- conic,
- className,
- small,
-}: {
- small?: boolean;
- conic?: boolean;
- className?: string;
-}): JSX.Element {
- return (
-
- );
-}
-
-const LINKS = [
- {
- title: "Docs",
- href: "https://turbo.build/repo/docs",
- description: "Find in-depth information about Turborepo features and API.",
- },
- {
- title: "Learn",
- href: "https://turbo.build/repo/docs/handbook",
- description: "Learn more about monorepos with our handbook.",
- },
- {
- title: "Templates",
- href: "https://turbo.build/repo/docs/getting-started/from-example",
- description: "Choose from over 15 examples and deploy with a single click.",
- },
- {
- title: "Deploy",
- href: "https://vercel.com/new",
- description:
- " Instantly deploy your Turborepo to a shareable URL with Vercel.",
- },
-];
-
-export default function Page(): JSX.Element {
- return (
-
-
-
- examples/basic
- docs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {LINKS.map(({ title, href, description }) => (
-
- {description}
-
- ))}
-
-
- );
-}
diff --git a/apps/docs/next-env.d.ts b/apps/docs/next-env.d.ts
deleted file mode 100644
index 4f11a03..0000000
--- a/apps/docs/next-env.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-///
-///
-
-// NOTE: This file should not be edited
-// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/apps/docs/next.config.js b/apps/docs/next.config.js
deleted file mode 100644
index a5b0aec..0000000
--- a/apps/docs/next.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('next').NextConfig} */
-module.exports = {
- transpilePackages: ["@repo/ui"],
-};
diff --git a/apps/docs/package.json b/apps/docs/package.json
deleted file mode 100644
index 37fb11e..0000000
--- a/apps/docs/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "docs",
- "version": "1.0.0",
- "private": true,
- "scripts": {
- "dev": "next dev --port 3001",
- "build": "next build",
- "start": "next start",
- "lint": "eslint . --max-warnings 0"
- },
- "dependencies": {
- "@repo/ui": "workspace:*",
- "next": "^14.0.4",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@next/eslint-plugin-next": "^14.0.4",
- "@repo/eslint-config": "workspace:*",
- "@repo/typescript-config": "workspace:*",
- "@types/eslint": "^8.56.1",
- "@types/node": "^20.10.6",
- "@types/react": "^18.2.46",
- "@types/react-dom": "^18.2.18",
- "eslint": "^8.56.0",
- "typescript": "^5.3.3"
- }
-}
diff --git a/apps/docs/public/circles.svg b/apps/docs/public/circles.svg
deleted file mode 100644
index 6533be5..0000000
--- a/apps/docs/public/circles.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
\ No newline at end of file
diff --git a/apps/docs/public/next.svg b/apps/docs/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/apps/docs/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/docs/public/turborepo.svg b/apps/docs/public/turborepo.svg
deleted file mode 100644
index 2f9aa1f..0000000
--- a/apps/docs/public/turborepo.svg
+++ /dev/null
@@ -1,32 +0,0 @@
-
diff --git a/apps/docs/public/vercel.svg b/apps/docs/public/vercel.svg
deleted file mode 100644
index d2f8422..0000000
--- a/apps/docs/public/vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json
deleted file mode 100644
index 24e7548..0000000
--- a/apps/docs/tsconfig.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "extends": "@repo/typescript-config/nextjs.json",
- "compilerOptions": {
- "plugins": [
- {
- "name": "next"
- }
- ]
- },
- "include": [
- "next-env.d.ts",
- "next.config.js",
- "**/*.ts",
- "**/*.tsx",
- ".next/types/**/*.ts"
- ],
- "exclude": ["node_modules"]
-}
diff --git a/apps/web/.eslintrc.js b/apps/web/.eslintrc.js
deleted file mode 100644
index 7d644a4..0000000
--- a/apps/web/.eslintrc.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/** @type {import("eslint").Linter.Config} */
-module.exports = {
- root: true,
- extends: ["@repo/eslint-config/next.js"],
- parser: "@typescript-eslint/parser",
- parserOptions: {
- project: true,
- },
-};
diff --git a/apps/web/README.md b/apps/web/README.md
deleted file mode 100644
index 3d7b63a..0000000
--- a/apps/web/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-## Getting Started
-
-First, run the development server:
-
-```bash
-yarn 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.
-
-To create [API routes](https://nextjs.org/docs/app/building-your-application/routing/router-handlers) add an `api/` directory to the `app/` directory with a `route.ts` file. For individual endpoints, create a subfolder in the `api` directory, like `api/hello/route.ts` would map to [http://localhost:3000/api/hello](http://localhost:3000/api/hello).
-
-## 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/foundations/about-nextjs) - 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_source=github.com&utm_medium=referral&utm_campaign=turborepo-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/apps/web/app/favicon.ico b/apps/web/app/favicon.ico
deleted file mode 100644
index 3f804c0..0000000
Binary files a/apps/web/app/favicon.ico and /dev/null differ
diff --git a/apps/web/app/globals.css b/apps/web/app/globals.css
deleted file mode 100644
index 8eee6cb..0000000
--- a/apps/web/app/globals.css
+++ /dev/null
@@ -1,50 +0,0 @@
-:root {
- --max-width: 1100px;
- --border-radius: 12px;
- --font-mono: ui-monospace, Menlo, Monaco, "Cascadia Mono", "Segoe UI Mono",
- "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Source Code Pro",
- "Fira Mono", "Droid Sans Mono", "Courier New", monospace;
-
- --foreground-rgb: 255, 255, 255;
- --background-start-rgb: 0, 0, 0;
- --background-end-rgb: 0, 0, 0;
-
- --callout-rgb: 20, 20, 20;
- --callout-border-rgb: 108, 108, 108;
- --card-rgb: 100, 100, 100;
- --card-border-rgb: 200, 200, 200;
-
- --glow-conic: conic-gradient(
- from 180deg at 50% 50%,
- #2a8af6 0deg,
- #a853ba 180deg,
- #e92a67 360deg
- );
-}
-
-* {
- box-sizing: border-box;
- padding: 0;
- margin: 0;
-}
-
-html,
-body {
- max-width: 100vw;
- overflow-x: hidden;
-}
-
-body {
- color: rgb(var(--foreground-rgb));
- background: linear-gradient(
- to bottom,
- transparent,
- rgb(var(--background-end-rgb))
- )
- rgb(var(--background-start-rgb));
-}
-
-a {
- color: inherit;
- text-decoration: none;
-}
diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx
deleted file mode 100644
index 5f90d11..0000000
--- a/apps/web/app/layout.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import "./globals.css";
-import type { Metadata } from "next";
-import { Inter } from "next/font/google";
-
-const inter = Inter({ subsets: ["latin"] });
-
-export const metadata: Metadata = {
- title: "Create Turborepo",
- description: "Generated by create turbo",
-};
-
-export default function RootLayout({
- children,
-}: {
- children: React.ReactNode;
-}): JSX.Element {
- return (
-
- {children}
-
- );
-}
diff --git a/apps/web/app/page.module.css b/apps/web/app/page.module.css
deleted file mode 100644
index 98481c6..0000000
--- a/apps/web/app/page.module.css
+++ /dev/null
@@ -1,335 +0,0 @@
-.main {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-items: center;
- padding: 6rem;
- min-height: 100vh;
-}
-
-.vercelLogo {
- filter: invert(1);
-}
-
-.description {
- display: inherit;
- justify-content: inherit;
- align-items: inherit;
- font-size: 0.85rem;
- max-width: var(--max-width);
- width: 100%;
- z-index: 2;
- font-family: var(--font-mono);
-}
-
-.description a {
- display: flex;
- justify-content: center;
- align-items: center;
- gap: 0.5rem;
-}
-
-.description p {
- position: relative;
- margin: 0;
- padding: 1rem;
- background-color: rgba(var(--callout-rgb), 0.5);
- border: 1px solid rgba(var(--callout-border-rgb), 0.3);
- border-radius: var(--border-radius);
-}
-
-.code {
- font-weight: 700;
- font-family: var(--font-mono);
-}
-
-.hero {
- display: flex;
- position: relative;
- place-items: center;
-}
-
-.heroContent {
- display: flex;
- position: relative;
- z-index: 0;
- padding-bottom: 4rem;
- flex-direction: column;
- gap: 2rem;
- justify-content: space-between;
- align-items: center;
- width: auto;
- font-family: system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial,
- "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
- "Segoe UI Symbol", "Noto Color Emoji";
- padding-top: 48px;
-
- @media (min-width: 768px) {
- padding-top: 4rem;
- padding-bottom: 6rem;
- }
- @media (min-width: 1024px) {
- padding-top: 5rem;
- padding-bottom: 8rem;
- }
-}
-
-.logos {
- display: flex;
- z-index: 50;
- justify-content: center;
- align-items: center;
- width: 100%;
-}
-
-.grid {
- display: grid;
- grid-template-columns: repeat(4, minmax(25%, auto));
- max-width: 100%;
- width: var(--max-width);
-}
-
-.card {
- padding: 1rem 1.2rem;
- border-radius: var(--border-radius);
- background: rgba(var(--card-rgb), 0);
- border: 1px solid rgba(var(--card-border-rgb), 0);
- transition: background 200ms, border 200ms;
-}
-
-.card span {
- display: inline-block;
- transition: transform 200ms;
-}
-
-.card h2 {
- font-weight: 600;
- margin-bottom: 0.7rem;
-}
-
-.card p {
- margin: 0;
- opacity: 0.6;
- font-size: 0.9rem;
- line-height: 1.5;
- max-width: 30ch;
-}
-
-@media (prefers-reduced-motion) {
- .card:hover span {
- transform: none;
- }
-}
-
-/* Mobile */
-@media (max-width: 700px) {
- .content {
- padding: 4rem;
- }
-
- .grid {
- grid-template-columns: 1fr;
- margin-bottom: 120px;
- max-width: 320px;
- text-align: center;
- }
-
- .card {
- padding: 1rem 2.5rem;
- }
-
- .card h2 {
- margin-bottom: 0.5rem;
- }
-
- .center {
- padding: 8rem 0 6rem;
- }
-
- .center::before {
- transform: none;
- height: 300px;
- }
-
- .description {
- font-size: 0.8rem;
- }
-
- .description a {
- padding: 1rem;
- }
-
- .description p,
- .description div {
- display: flex;
- justify-content: center;
- position: fixed;
- width: 100%;
- }
-
- .description p {
- align-items: center;
- inset: 0 0 auto;
- padding: 2rem 1rem 1.4rem;
- border-radius: 0;
- border: none;
- border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25);
- background: linear-gradient(
- to bottom,
- rgba(var(--background-start-rgb), 1),
- rgba(var(--callout-rgb), 0.5)
- );
- background-clip: padding-box;
- backdrop-filter: blur(24px);
- }
-
- .description div {
- align-items: flex-end;
- pointer-events: none;
- inset: auto 0 0;
- padding: 2rem;
- height: 200px;
- background: linear-gradient(
- to bottom,
- transparent 0%,
- rgb(var(--background-end-rgb)) 40%
- );
- z-index: 1;
- }
-}
-
-/* Enable hover only on non-touch devices */
-@media (hover: hover) and (pointer: fine) {
- .card:hover {
- background: rgba(var(--card-rgb), 0.1);
- border: 1px solid rgba(var(--card-border-rgb), 0.15);
- }
-
- .card:hover span {
- transform: translateX(4px);
- }
-}
-
-.circles {
- position: absolute;
- min-width: 614px;
- min-height: 614px;
- pointer-events: none;
-}
-
-.logo {
- z-index: 50;
- width: 120px;
- height: 120px;
-}
-
-.logoGradientContainer {
- display: flex;
- position: absolute;
- z-index: 50;
- justify-content: center;
- align-items: center;
- width: 16rem;
- height: 16rem;
-}
-
-.turborepoWordmarkContainer {
- display: flex;
- z-index: 50;
- padding-left: 1.5rem;
- padding-right: 1.5rem;
- flex-direction: column;
- gap: 1.25rem;
- justify-content: center;
- align-items: center;
- text-align: center;
-
- @media (min-width: 1024px) {
- gap: 1.5rem;
- }
-}
-
-.turborepoWordmark {
- width: 160px;
- fill: white;
-
- @media (min-width: 768px) {
- width: 200px;
- }
-}
-
-.code {
- font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
- monospace;
- font-weight: 700;
-}
-
-/* Tablet and Smaller Desktop */
-@media (min-width: 701px) and (max-width: 1120px) {
- .grid {
- grid-template-columns: repeat(2, 50%);
- }
-}
-
-/* Gradients */
-.gradient {
- position: absolute;
- mix-blend-mode: normal;
- will-change: filter;
- pointer-events: none;
-}
-
-.gradientSmall {
- filter: blur(32px);
-}
-
-.gradientLarge {
- filter: blur(75px);
-}
-
-.glowConic {
- background-image: var(--glow-conic);
-}
-
-.logoGradient {
- opacity: 0.9;
- width: 120px;
- height: 120px;
-}
-
-.backgroundGradient {
- top: -500px;
- width: 1000px;
- height: 1000px;
- opacity: 0.15;
-}
-
-.button {
- background-color: #ffffff;
- border-radius: 8px;
- border-style: none;
- box-sizing: border-box;
- color: #000000;
- cursor: pointer;
- display: inline-block;
- font-size: 16px;
- height: 40px;
- line-height: 20px;
- list-style: none;
- margin: 0;
- outline: none;
- padding: 10px 16px;
- position: relative;
- text-align: center;
- text-decoration: none;
- transition: color 100ms;
- vertical-align: baseline;
- user-select: none;
- -webkit-user-select: none;
- touch-action: manipulation;
-}
-
-.button:hover,
-.button:focus {
- background-color: #e5e4e2;
-}
diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx
deleted file mode 100644
index e26bf72..0000000
--- a/apps/web/app/page.tsx
+++ /dev/null
@@ -1,144 +0,0 @@
-import Image from "next/image";
-import { Card } from "@repo/ui/card";
-import { Code } from "@repo/ui/code";
-import styles from "./page.module.css";
-import { Button } from "@repo/ui/button";
-
-function Gradient({
- conic,
- className,
- small,
-}: {
- small?: boolean;
- conic?: boolean;
- className?: string;
-}): JSX.Element {
- return (
-
- );
-}
-
-const LINKS = [
- {
- title: "Docs",
- href: "https://turbo.build/repo/docs",
- description: "Find in-depth information about Turborepo features and API.",
- },
- {
- title: "Learn",
- href: "https://turbo.build/repo/docs/handbook",
- description: "Learn more about monorepos with our handbook.",
- },
- {
- title: "Templates",
- href: "https://turbo.build/repo/docs/getting-started/from-example",
- description: "Choose from over 15 examples and deploy with a single click.",
- },
- {
- title: "Deploy",
- href: "https://vercel.com/new",
- description:
- " Instantly deploy your Turborepo to a shareable URL with Vercel.",
- },
-];
-
-export default function Page(): JSX.Element {
- return (
-
-
-
- examples/basic
- web
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {LINKS.map(({ title, href, description }) => (
-
- {description}
-
- ))}
-
-
- );
-}
diff --git a/apps/web/next-env.d.ts b/apps/web/next-env.d.ts
deleted file mode 100644
index 4f11a03..0000000
--- a/apps/web/next-env.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-///
-///
-
-// NOTE: This file should not be edited
-// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/apps/web/next.config.js b/apps/web/next.config.js
deleted file mode 100644
index a5b0aec..0000000
--- a/apps/web/next.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('next').NextConfig} */
-module.exports = {
- transpilePackages: ["@repo/ui"],
-};
diff --git a/apps/web/package.json b/apps/web/package.json
deleted file mode 100644
index 9ca6a86..0000000
--- a/apps/web/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "web",
- "version": "1.0.0",
- "private": true,
- "scripts": {
- "dev": "next dev",
- "build": "next build",
- "start": "next start",
- "lint": "eslint . --max-warnings 0"
- },
- "dependencies": {
- "@repo/ui": "workspace:*",
- "next": "^14.0.4",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@next/eslint-plugin-next": "^14.0.4",
- "@repo/eslint-config": "workspace:*",
- "@repo/typescript-config": "workspace:*",
- "@types/eslint": "^8.56.1",
- "@types/node": "^20.10.6",
- "@types/react": "^18.2.46",
- "@types/react-dom": "^18.2.18",
- "eslint": "^8.56.0",
- "typescript": "^5.3.3"
- }
-}
diff --git a/apps/web/public/circles.svg b/apps/web/public/circles.svg
deleted file mode 100644
index 6533be5..0000000
--- a/apps/web/public/circles.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
\ No newline at end of file
diff --git a/apps/web/public/next.svg b/apps/web/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/apps/web/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/web/public/turborepo.svg b/apps/web/public/turborepo.svg
deleted file mode 100644
index 2f9aa1f..0000000
--- a/apps/web/public/turborepo.svg
+++ /dev/null
@@ -1,32 +0,0 @@
-
diff --git a/apps/web/public/vercel.svg b/apps/web/public/vercel.svg
deleted file mode 100644
index d2f8422..0000000
--- a/apps/web/public/vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json
deleted file mode 100644
index 24e7548..0000000
--- a/apps/web/tsconfig.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "extends": "@repo/typescript-config/nextjs.json",
- "compilerOptions": {
- "plugins": [
- {
- "name": "next"
- }
- ]
- },
- "include": [
- "next-env.d.ts",
- "next.config.js",
- "**/*.ts",
- "**/*.tsx",
- ".next/types/**/*.ts"
- ],
- "exclude": ["node_modules"]
-}
diff --git a/package.json b/package.json
index af4e8e7..33101ef 100644
--- a/package.json
+++ b/package.json
@@ -5,11 +5,9 @@
"build": "turbo build",
"dev": "turbo dev",
"lint": "turbo lint",
- "format": "prettier --write \"**/*.{ts,tsx,md}\""
+ "format": "prettier --write \"**/*.{ts,tsx,md,js,jsx,vue}\""
},
"devDependencies": {
- "@repo/eslint-config": "workspace:*",
- "@repo/typescript-config": "workspace:*",
"prettier": "^3.1.1",
"turbo": "latest"
},
diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md
deleted file mode 100644
index 8b42d90..0000000
--- a/packages/eslint-config/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# `@turbo/eslint-config`
-
-Collection of internal eslint configurations.
diff --git a/packages/eslint-config/library.js b/packages/eslint-config/library.js
deleted file mode 100644
index c667cd1..0000000
--- a/packages/eslint-config/library.js
+++ /dev/null
@@ -1,34 +0,0 @@
-const { resolve } = require("node:path");
-
-const project = resolve(process.cwd(), "tsconfig.json");
-
-/** @type {import("eslint").Linter.Config} */
-module.exports = {
- extends: ["eslint:recommended", "prettier", "eslint-config-turbo"],
- plugins: ["only-warn"],
- globals: {
- React: true,
- JSX: true,
- },
- env: {
- node: true,
- },
- settings: {
- "import/resolver": {
- typescript: {
- project,
- },
- },
- },
- ignorePatterns: [
- // Ignore dotfiles
- ".*.js",
- "node_modules/",
- "dist/",
- ],
- overrides: [
- {
- files: ["*.js?(x)", "*.ts?(x)"],
- },
- ],
-};
diff --git a/packages/eslint-config/next.js b/packages/eslint-config/next.js
deleted file mode 100644
index 6000e54..0000000
--- a/packages/eslint-config/next.js
+++ /dev/null
@@ -1,35 +0,0 @@
-const { resolve } = require("node:path");
-
-const project = resolve(process.cwd(), "tsconfig.json");
-
-/** @type {import("eslint").Linter.Config} */
-module.exports = {
- extends: [
- "eslint:recommended",
- "prettier",
- require.resolve("@vercel/style-guide/eslint/next"),
- "eslint-config-turbo",
- ],
- globals: {
- React: true,
- JSX: true,
- },
- env: {
- node: true,
- browser: true,
- },
- plugins: ["only-warn"],
- settings: {
- "import/resolver": {
- typescript: {
- project,
- },
- },
- },
- ignorePatterns: [
- // Ignore dotfiles
- ".*.js",
- "node_modules/",
- ],
- overrides: [{ files: ["*.js?(x)", "*.ts?(x)"] }],
-};
diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json
deleted file mode 100644
index 575d83a..0000000
--- a/packages/eslint-config/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "@repo/eslint-config",
- "version": "0.0.0",
- "private": true,
- "files": [
- "library.js",
- "next.js",
- "react-internal.js"
- ],
- "devDependencies": {
- "@vercel/style-guide": "^5.1.0",
- "eslint-config-turbo": "^1.11.3",
- "eslint-config-prettier": "^9.1.0",
- "eslint-plugin-only-warn": "^1.1.0",
- "@typescript-eslint/parser": "^6.17.0",
- "@typescript-eslint/eslint-plugin": "^6.17.0",
- "typescript": "^5.3.3"
- }
-}
diff --git a/packages/eslint-config/react-internal.js b/packages/eslint-config/react-internal.js
deleted file mode 100644
index f56c924..0000000
--- a/packages/eslint-config/react-internal.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const { resolve } = require("node:path");
-
-const project = resolve(process.cwd(), "tsconfig.json");
-
-/*
- * This is a custom ESLint configuration for use with
- * internal (bundled by their consumer) libraries
- * that utilize React.
- *
- * This config extends the Vercel Engineering Style Guide.
- * For more information, see https://github.com/vercel/style-guide
- *
- */
-
-/** @type {import("eslint").Linter.Config} */
-module.exports = {
- extends: ["eslint:recommended", "prettier", "eslint-config-turbo"],
- plugins: ["only-warn"],
- globals: {
- React: true,
- JSX: true,
- },
- env: {
- browser: true,
- },
- settings: {
- "import/resolver": {
- typescript: {
- project,
- },
- },
- },
- ignorePatterns: [
- // Ignore dotfiles
- ".*.js",
- "node_modules/",
- "dist/",
- ],
- overrides: [
- // Force ESLint to detect .tsx files
- { files: ["*.js?(x)", "*.ts?(x)"] },
- ],
-};
diff --git a/packages/typescript-config/base.json b/packages/typescript-config/base.json
deleted file mode 100644
index 0f80cfd..0000000
--- a/packages/typescript-config/base.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "display": "Default",
- "compilerOptions": {
- "declaration": true,
- "declarationMap": true,
- "esModuleInterop": true,
- "incremental": false,
- "isolatedModules": true,
- "lib": ["es2022", "DOM", "DOM.Iterable"],
- "module": "NodeNext",
- "moduleDetection": "force",
- "moduleResolution": "NodeNext",
- "noUncheckedIndexedAccess": true,
- "resolveJsonModule": true,
- "skipLibCheck": true,
- "strict": true,
- "target": "ES2022"
- }
-}
diff --git a/packages/typescript-config/nextjs.json b/packages/typescript-config/nextjs.json
deleted file mode 100644
index 44f4289..0000000
--- a/packages/typescript-config/nextjs.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "display": "Next.js",
- "extends": "./base.json",
- "compilerOptions": {
- "plugins": [{ "name": "next" }],
- "module": "ESNext",
- "moduleResolution": "Bundler",
- "allowJs": true,
- "jsx": "preserve",
- "noEmit": true
- }
-}
diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json
deleted file mode 100644
index 27c0e60..0000000
--- a/packages/typescript-config/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@repo/typescript-config",
- "version": "0.0.0",
- "private": true,
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- }
-}
diff --git a/packages/typescript-config/react-library.json b/packages/typescript-config/react-library.json
deleted file mode 100644
index a755ffe..0000000
--- a/packages/typescript-config/react-library.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "display": "React Library",
- "extends": "./base.json",
- "compilerOptions": {
- "jsx": "react-jsx",
- }
-}
diff --git a/packages/ui/.eslintrc.js b/packages/ui/.eslintrc.js
deleted file mode 100644
index 9117326..0000000
--- a/packages/ui/.eslintrc.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/** @type {import("eslint").Linter.Config} */
-module.exports = {
- root: true,
- extends: ["@repo/eslint-config/react-internal.js"],
- parser: "@typescript-eslint/parser",
- parserOptions: {
- project: "./tsconfig.lint.json",
- },
-};
diff --git a/packages/ui/.gitignore b/packages/ui/.gitignore
new file mode 100644
index 0000000..a547bf3
--- /dev/null
+++ b/packages/ui/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/packages/ui/.storybook/main.ts b/packages/ui/.storybook/main.ts
new file mode 100644
index 0000000..20759c5
--- /dev/null
+++ b/packages/ui/.storybook/main.ts
@@ -0,0 +1,27 @@
+import type { StorybookConfig } from "@storybook/vue3-vite";
+
+import { join, dirname } from "path";
+
+/**
+ * This function is used to resolve the absolute path of a package.
+ * It is needed in projects that use Yarn PnP or are set up within a monorepo.
+ */
+function getAbsolutePath(value: string): any {
+ return dirname(require.resolve(join(value, "package.json")));
+}
+const config: StorybookConfig = {
+ stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
+ addons: [
+ getAbsolutePath("@storybook/addon-links"),
+ getAbsolutePath("@storybook/addon-essentials"),
+ getAbsolutePath("@storybook/addon-interactions"),
+ ],
+ framework: {
+ name: getAbsolutePath("@storybook/vue3-vite"),
+ options: {},
+ },
+ docs: {
+ autodocs: "tag",
+ },
+};
+export default config;
diff --git a/packages/ui/.storybook/preview.ts b/packages/ui/.storybook/preview.ts
new file mode 100644
index 0000000..f4b46e7
--- /dev/null
+++ b/packages/ui/.storybook/preview.ts
@@ -0,0 +1,15 @@
+import type { Preview } from "@storybook/vue3";
+
+const preview: Preview = {
+ parameters: {
+ actions: { argTypesRegex: "^on[A-Z].*" },
+ controls: {
+ matchers: {
+ color: /(background|color)$/i,
+ date: /Date$/i,
+ },
+ },
+ },
+};
+
+export default preview;
diff --git a/packages/ui/.vscode/extensions.json b/packages/ui/.vscode/extensions.json
new file mode 100644
index 0000000..c0a6e5a
--- /dev/null
+++ b/packages/ui/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
+}
diff --git a/packages/ui/README.md b/packages/ui/README.md
new file mode 100644
index 0000000..ef72fd5
--- /dev/null
+++ b/packages/ui/README.md
@@ -0,0 +1,18 @@
+# Vue 3 + TypeScript + Vite
+
+This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `
+