Update codebase.ts so that all files are read (#684)
This commit is contained in:
@@ -335,7 +335,15 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="index.html">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="file1.txt">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="index.html">
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@@ -417,6 +425,18 @@ createRoot(document.getElementById("root")!).render(<App />);
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -148,7 +148,15 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="index.html">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="file1.txt">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="index.html">
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@@ -185,6 +193,18 @@ createRoot(document.getElementById("root")!).render(<App />);
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -335,7 +335,15 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="index.html">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="file1.txt">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="index.html">
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@@ -372,6 +380,18 @@ createRoot(document.getElementById("root")!).render(<App />);
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -320,7 +320,7 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="src/components/ui/helper.ts">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/foo.ts">
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
},
|
||||
"dyad_options": {
|
||||
"files": [
|
||||
{
|
||||
"path": ".env.foobar",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "a.ts",
|
||||
"content": "// a.ts\n",
|
||||
@@ -41,6 +46,11 @@
|
||||
"content": "// exclude.tsx: this file is not in any of the globs\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "manual/baz.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": true
|
||||
},
|
||||
{
|
||||
"path": "manual/file.ts",
|
||||
"content": "",
|
||||
@@ -53,12 +63,12 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/button.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/helper.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
|
||||
@@ -15,6 +15,6 @@
|
||||
- text: /a\.ts 1 files, ~\d+ tokens/
|
||||
- button:
|
||||
- img
|
||||
- text: /manual\/\*\* 2 files, ~\d+ tokens/
|
||||
- text: /manual\/\*\* 3 files, ~\d+ tokens/
|
||||
- button:
|
||||
- img
|
||||
@@ -26,6 +26,11 @@
|
||||
"content": "// a.ts\n",
|
||||
"force": true
|
||||
},
|
||||
{
|
||||
"path": "manual/baz.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": true
|
||||
},
|
||||
{
|
||||
"path": "manual/file.ts",
|
||||
"content": "",
|
||||
@@ -38,7 +43,7 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/helper.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
|
||||
@@ -20,6 +20,6 @@
|
||||
- text: /a\.ts 1 files, ~\d+ tokens/
|
||||
- button:
|
||||
- img
|
||||
- text: /manual\/\*\* 2 files, ~\d+ tokens/
|
||||
- text: /manual\/\*\* 3 files, ~\d+ tokens/
|
||||
- button:
|
||||
- img
|
||||
@@ -31,7 +31,7 @@
|
||||
"files": [
|
||||
{
|
||||
"path": "src/components/ui/helper.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
|
||||
@@ -37,6 +37,11 @@
|
||||
},
|
||||
"dyad_options": {
|
||||
"files": [
|
||||
{
|
||||
"path": ".env.foobar",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "a.ts",
|
||||
"content": "// a.ts\n",
|
||||
@@ -57,6 +62,11 @@
|
||||
"content": "// exclude.tsx: this file is not in any of the globs\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "manual/baz.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "manual/file.ts",
|
||||
"content": "",
|
||||
@@ -69,12 +79,12 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/button.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/helper.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
|
||||
@@ -337,7 +337,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
# Tech Stack
|
||||
|
||||
- You are building a React application.
|
||||
@@ -360,8 +364,12 @@ Available packages and libraries:
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="components.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="eslint.config.js">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="index.html">
|
||||
@@ -391,6 +399,18 @@ export default {
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/favicon.ico">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/placeholder.svg">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/robots.txt">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="README.md">
|
||||
# Welcome to your Dyad app
|
||||
|
||||
@@ -492,199 +512,199 @@ export const MadeWithDyad = () => {
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/accordion.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/alert-dialog.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/alert.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/aspect-ratio.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/avatar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/badge.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/breadcrumb.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/button.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/calendar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/card.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/carousel.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/chart.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/checkbox.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/collapsible.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/command.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/context-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/dialog.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/drawer.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/dropdown-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/form.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/hover-card.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/input-otp.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/input.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/label.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/menubar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/navigation-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/pagination.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/popover.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/progress.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/radio-group.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/resizable.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/scroll-area.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/select.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/separator.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sheet.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sidebar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/skeleton.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/slider.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sonner.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/switch.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/table.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/tabs.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/textarea.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toast.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toaster.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toggle-group.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toggle.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/tooltip.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/use-toast.ts">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/globals.css">
|
||||
@@ -1208,6 +1228,18 @@ export default {
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import dyadComponentTagger from "@dyad-sh/react-vite-component-tagger";
|
||||
|
||||
@@ -337,7 +337,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
# Tech Stack
|
||||
|
||||
- You are building a React application.
|
||||
@@ -360,8 +364,12 @@ Available packages and libraries:
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="components.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="eslint.config.js">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="index.html">
|
||||
@@ -391,6 +399,18 @@ export default {
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/favicon.ico">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/placeholder.svg">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/robots.txt">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="README.md">
|
||||
# Welcome to your Dyad app
|
||||
|
||||
@@ -492,199 +512,199 @@ export const MadeWithDyad = () => {
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/accordion.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/alert-dialog.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/alert.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/aspect-ratio.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/avatar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/badge.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/breadcrumb.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/button.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/calendar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/card.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/carousel.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/chart.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/checkbox.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/collapsible.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/command.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/context-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/dialog.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/drawer.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/dropdown-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/form.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/hover-card.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/input-otp.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/input.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/label.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/menubar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/navigation-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/pagination.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/popover.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/progress.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/radio-group.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/resizable.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/scroll-area.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/select.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/separator.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sheet.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sidebar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/skeleton.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/slider.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sonner.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/switch.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/table.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/tabs.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/textarea.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toast.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toaster.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toggle-group.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toggle.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/tooltip.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/use-toast.ts">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/globals.css">
|
||||
@@ -1208,6 +1228,18 @@ export default {
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import dyadComponentTagger from "@dyad-sh/react-vite-component-tagger";
|
||||
|
||||
@@ -337,7 +337,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
# Tech Stack
|
||||
|
||||
- You are building a React application.
|
||||
@@ -360,8 +364,12 @@ Available packages and libraries:
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="components.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="eslint.config.js">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="index.html">
|
||||
@@ -391,6 +399,18 @@ export default {
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/favicon.ico">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/placeholder.svg">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/robots.txt">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="README.md">
|
||||
# Welcome to your Dyad app
|
||||
|
||||
@@ -492,199 +512,199 @@ export const MadeWithDyad = () => {
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/accordion.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/alert-dialog.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/alert.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/aspect-ratio.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/avatar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/badge.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/breadcrumb.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/button.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/calendar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/card.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/carousel.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/chart.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/checkbox.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/collapsible.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/command.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/context-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/dialog.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/drawer.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/dropdown-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/form.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/hover-card.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/input-otp.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/input.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/label.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/menubar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/navigation-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/pagination.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/popover.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/progress.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/radio-group.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/resizable.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/scroll-area.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/select.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/separator.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sheet.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sidebar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/skeleton.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/slider.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sonner.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/switch.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/table.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/tabs.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/textarea.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toast.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toaster.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toggle-group.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toggle.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/tooltip.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/use-toast.ts">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/globals.css">
|
||||
@@ -1208,6 +1228,18 @@ export default {
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import dyadComponentTagger from "@dyad-sh/react-vite-component-tagger";
|
||||
|
||||
@@ -337,7 +337,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
# Tech Stack
|
||||
|
||||
- You are building a React application.
|
||||
@@ -360,8 +364,12 @@ Available packages and libraries:
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="components.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="eslint.config.js">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="index.html">
|
||||
@@ -391,6 +399,18 @@ export default {
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/favicon.ico">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/placeholder.svg">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/robots.txt">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="README.md">
|
||||
# Welcome to your Dyad app
|
||||
|
||||
@@ -492,199 +512,199 @@ export const MadeWithDyad = () => {
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/accordion.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/alert-dialog.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/alert.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/aspect-ratio.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/avatar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/badge.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/breadcrumb.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/button.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/calendar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/card.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/carousel.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/chart.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/checkbox.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/collapsible.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/command.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/context-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/dialog.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/drawer.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/dropdown-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/form.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/hover-card.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/input-otp.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/input.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/label.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/menubar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/navigation-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/pagination.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/popover.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/progress.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/radio-group.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/resizable.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/scroll-area.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/select.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/separator.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sheet.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sidebar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/skeleton.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/slider.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sonner.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/switch.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/table.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/tabs.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/textarea.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toast.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toaster.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toggle-group.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toggle.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/tooltip.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/use-toast.ts">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/globals.css">
|
||||
@@ -1208,6 +1228,18 @@ export default {
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import dyadComponentTagger from "@dyad-sh/react-vite-component-tagger";
|
||||
|
||||
@@ -337,7 +337,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
# Tech Stack
|
||||
|
||||
- You are building a React application.
|
||||
@@ -360,8 +364,12 @@ Available packages and libraries:
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="components.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="eslint.config.js">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="index.html">
|
||||
@@ -391,6 +399,18 @@ export default {
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/favicon.ico">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/placeholder.svg">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="public/robots.txt">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="README.md">
|
||||
# Welcome to your Dyad app
|
||||
|
||||
@@ -492,199 +512,199 @@ export const MadeWithDyad = () => {
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/accordion.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/alert-dialog.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/alert.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/aspect-ratio.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/avatar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/badge.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/breadcrumb.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/button.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/calendar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/card.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/carousel.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/chart.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/checkbox.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/collapsible.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/command.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/context-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/dialog.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/drawer.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/dropdown-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/form.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/hover-card.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/input-otp.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/input.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/label.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/menubar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/navigation-menu.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/pagination.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/popover.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/progress.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/radio-group.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/resizable.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/scroll-area.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/select.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/separator.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sheet.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sidebar.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/skeleton.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/slider.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/sonner.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/switch.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/table.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/tabs.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/textarea.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toast.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toaster.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toggle-group.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/toggle.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/tooltip.tsx">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/components/ui/use-toast.ts">
|
||||
// Contents omitted for brevity
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="src/globals.css">
|
||||
@@ -1208,6 +1228,18 @@ export default {
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import dyadComponentTagger from "@dyad-sh/react-vite-component-tagger";
|
||||
|
||||
@@ -21,14 +21,24 @@
|
||||
},
|
||||
"dyad_options": {
|
||||
"files": [
|
||||
{
|
||||
"path": ".gitignore",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "AI_RULES.md",
|
||||
"content": "# Tech Stack\n\n- You are building a React application.\n- Use TypeScript.\n- Use React Router. KEEP the routes in src/App.tsx\n- Always put source code in the src folder.\n- Put pages into src/pages/\n- Put components into src/components/\n- The main page (default page) is src/pages/Index.tsx\n- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components!\n- ALWAYS try to use the shadcn/ui library.\n- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects.\n\nAvailable packages and libraries:\n\n- The lucide-react package is installed for icons.\n- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again.\n- You have ALL the necessary Radix UI components installed.\n- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them.\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "components.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "eslint.config.js",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -46,6 +56,21 @@
|
||||
"content": "export default {\n plugins: {\n tailwindcss: {},\n autoprefixer: {},\n },\n};\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/favicon.ico",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/placeholder.svg",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/robots.txt",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"content": "# Welcome to your Dyad app\n",
|
||||
@@ -68,247 +93,247 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/accordion.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert-dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/aspect-ratio.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/avatar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/badge.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/breadcrumb.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/button.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/calendar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/carousel.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/chart.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/checkbox.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/collapsible.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/command.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/context-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/drawer.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dropdown-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/form.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/hover-card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input-otp.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/label.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/menubar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/navigation-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/pagination.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/popover.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/progress.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/radio-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/resizable.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/scroll-area.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/select.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/separator.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sheet.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sidebar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/skeleton.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/slider.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sonner.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/switch.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/table.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tabs.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/textarea.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toast.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toaster.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tooltip.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/use-toast.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -361,6 +386,21 @@
|
||||
"content": "import type { Config } from \"tailwindcss\";\n\nexport default {\n darkMode: [\"class\"],\n content: [\n \"./pages/**/*.{ts,tsx}\",\n \"./components/**/*.{ts,tsx}\",\n \"./app/**/*.{ts,tsx}\",\n \"./src/**/*.{ts,tsx}\",\n ],\n prefix: \"\",\n theme: {\n container: {\n center: true,\n padding: \"2rem\",\n screens: {\n \"2xl\": \"1400px\",\n },\n },\n extend: {\n colors: {\n border: \"hsl(var(--border))\",\n input: \"hsl(var(--input))\",\n ring: \"hsl(var(--ring))\",\n background: \"hsl(var(--background))\",\n foreground: \"hsl(var(--foreground))\",\n primary: {\n DEFAULT: \"hsl(var(--primary))\",\n foreground: \"hsl(var(--primary-foreground))\",\n },\n secondary: {\n DEFAULT: \"hsl(var(--secondary))\",\n foreground: \"hsl(var(--secondary-foreground))\",\n },\n destructive: {\n DEFAULT: \"hsl(var(--destructive))\",\n foreground: \"hsl(var(--destructive-foreground))\",\n },\n muted: {\n DEFAULT: \"hsl(var(--muted))\",\n foreground: \"hsl(var(--muted-foreground))\",\n },\n accent: {\n DEFAULT: \"hsl(var(--accent))\",\n foreground: \"hsl(var(--accent-foreground))\",\n },\n popover: {\n DEFAULT: \"hsl(var(--popover))\",\n foreground: \"hsl(var(--popover-foreground))\",\n },\n card: {\n DEFAULT: \"hsl(var(--card))\",\n foreground: \"hsl(var(--card-foreground))\",\n },\n sidebar: {\n DEFAULT: \"hsl(var(--sidebar-background))\",\n foreground: \"hsl(var(--sidebar-foreground))\",\n primary: \"hsl(var(--sidebar-primary))\",\n \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n accent: \"hsl(var(--sidebar-accent))\",\n \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n border: \"hsl(var(--sidebar-border))\",\n ring: \"hsl(var(--sidebar-ring))\",\n },\n },\n borderRadius: {\n lg: \"var(--radius)\",\n md: \"calc(var(--radius) - 2px)\",\n sm: \"calc(var(--radius) - 4px)\",\n },\n keyframes: {\n \"accordion-down\": {\n from: {\n height: \"0\",\n },\n to: {\n height: \"var(--radix-accordion-content-height)\",\n },\n },\n \"accordion-up\": {\n from: {\n height: \"var(--radix-accordion-content-height)\",\n },\n to: {\n height: \"0\",\n },\n },\n },\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n },\n },\n },\n plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config;\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.app.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.node.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "vite.config.ts",
|
||||
"content": "import { defineConfig } from \"vite\";\nimport dyadComponentTagger from \"@dyad-sh/react-vite-component-tagger\";\nimport react from \"@vitejs/plugin-react-swc\";\nimport path from \"path\";\n\nexport default defineConfig(() => ({\n server: {\n host: \"::\",\n port: 8080,\n },\n plugins: [dyadComponentTagger(), react()],\n resolve: {\n alias: {\n \"@\": path.resolve(__dirname, \"./src\"),\n },\n },\n}));\n",
|
||||
|
||||
@@ -16,14 +16,24 @@
|
||||
"stream": true,
|
||||
"dyad_options": {
|
||||
"files": [
|
||||
{
|
||||
"path": ".gitignore",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "AI_RULES.md",
|
||||
"content": "# Tech Stack\n\n- You are building a React application.\n- Use TypeScript.\n- Use React Router. KEEP the routes in src/App.tsx\n- Always put source code in the src folder.\n- Put pages into src/pages/\n- Put components into src/components/\n- The main page (default page) is src/pages/Index.tsx\n- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components!\n- ALWAYS try to use the shadcn/ui library.\n- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects.\n\nAvailable packages and libraries:\n\n- The lucide-react package is installed for icons.\n- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again.\n- You have ALL the necessary Radix UI components installed.\n- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them.\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "components.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "eslint.config.js",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -41,6 +51,21 @@
|
||||
"content": "export default {\n plugins: {\n tailwindcss: {},\n autoprefixer: {},\n },\n};\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/favicon.ico",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/placeholder.svg",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/robots.txt",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"content": "# Welcome to your Dyad app\n",
|
||||
@@ -63,247 +88,247 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/accordion.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert-dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/aspect-ratio.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/avatar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/badge.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/breadcrumb.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/button.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/calendar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/carousel.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/chart.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/checkbox.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/collapsible.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/command.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/context-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/drawer.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dropdown-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/form.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/hover-card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input-otp.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/label.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/menubar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/navigation-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/pagination.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/popover.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/progress.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/radio-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/resizable.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/scroll-area.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/select.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/separator.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sheet.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sidebar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/skeleton.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/slider.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sonner.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/switch.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/table.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tabs.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/textarea.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toast.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toaster.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tooltip.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/use-toast.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -356,6 +381,21 @@
|
||||
"content": "import type { Config } from \"tailwindcss\";\n\nexport default {\n darkMode: [\"class\"],\n content: [\n \"./pages/**/*.{ts,tsx}\",\n \"./components/**/*.{ts,tsx}\",\n \"./app/**/*.{ts,tsx}\",\n \"./src/**/*.{ts,tsx}\",\n ],\n prefix: \"\",\n theme: {\n container: {\n center: true,\n padding: \"2rem\",\n screens: {\n \"2xl\": \"1400px\",\n },\n },\n extend: {\n colors: {\n border: \"hsl(var(--border))\",\n input: \"hsl(var(--input))\",\n ring: \"hsl(var(--ring))\",\n background: \"hsl(var(--background))\",\n foreground: \"hsl(var(--foreground))\",\n primary: {\n DEFAULT: \"hsl(var(--primary))\",\n foreground: \"hsl(var(--primary-foreground))\",\n },\n secondary: {\n DEFAULT: \"hsl(var(--secondary))\",\n foreground: \"hsl(var(--secondary-foreground))\",\n },\n destructive: {\n DEFAULT: \"hsl(var(--destructive))\",\n foreground: \"hsl(var(--destructive-foreground))\",\n },\n muted: {\n DEFAULT: \"hsl(var(--muted))\",\n foreground: \"hsl(var(--muted-foreground))\",\n },\n accent: {\n DEFAULT: \"hsl(var(--accent))\",\n foreground: \"hsl(var(--accent-foreground))\",\n },\n popover: {\n DEFAULT: \"hsl(var(--popover))\",\n foreground: \"hsl(var(--popover-foreground))\",\n },\n card: {\n DEFAULT: \"hsl(var(--card))\",\n foreground: \"hsl(var(--card-foreground))\",\n },\n sidebar: {\n DEFAULT: \"hsl(var(--sidebar-background))\",\n foreground: \"hsl(var(--sidebar-foreground))\",\n primary: \"hsl(var(--sidebar-primary))\",\n \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n accent: \"hsl(var(--sidebar-accent))\",\n \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n border: \"hsl(var(--sidebar-border))\",\n ring: \"hsl(var(--sidebar-ring))\",\n },\n },\n borderRadius: {\n lg: \"var(--radius)\",\n md: \"calc(var(--radius) - 2px)\",\n sm: \"calc(var(--radius) - 4px)\",\n },\n keyframes: {\n \"accordion-down\": {\n from: {\n height: \"0\",\n },\n to: {\n height: \"var(--radix-accordion-content-height)\",\n },\n },\n \"accordion-up\": {\n from: {\n height: \"var(--radix-accordion-content-height)\",\n },\n to: {\n height: \"0\",\n },\n },\n },\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n },\n },\n },\n plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config;\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.app.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.node.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "vite.config.ts",
|
||||
"content": "import { defineConfig } from \"vite\";\nimport dyadComponentTagger from \"@dyad-sh/react-vite-component-tagger\";\nimport react from \"@vitejs/plugin-react-swc\";\nimport path from \"path\";\n\nexport default defineConfig(() => ({\n server: {\n host: \"::\",\n port: 8080,\n },\n plugins: [dyadComponentTagger(), react()],\n resolve: {\n alias: {\n \"@\": path.resolve(__dirname, \"./src\"),\n },\n },\n}));\n",
|
||||
|
||||
@@ -16,14 +16,24 @@
|
||||
"stream": true,
|
||||
"dyad_options": {
|
||||
"files": [
|
||||
{
|
||||
"path": ".gitignore",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "AI_RULES.md",
|
||||
"content": "# Tech Stack\n\n- You are building a React application.\n- Use TypeScript.\n- Use React Router. KEEP the routes in src/App.tsx\n- Always put source code in the src folder.\n- Put pages into src/pages/\n- Put components into src/components/\n- The main page (default page) is src/pages/Index.tsx\n- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components!\n- ALWAYS try to use the shadcn/ui library.\n- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects.\n\nAvailable packages and libraries:\n\n- The lucide-react package is installed for icons.\n- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again.\n- You have ALL the necessary Radix UI components installed.\n- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them.\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "components.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "eslint.config.js",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -41,6 +51,21 @@
|
||||
"content": "export default {\n plugins: {\n tailwindcss: {},\n autoprefixer: {},\n },\n};\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/favicon.ico",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/placeholder.svg",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/robots.txt",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"content": "# Welcome to your Dyad app\n",
|
||||
@@ -63,247 +88,247 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/accordion.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert-dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/aspect-ratio.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/avatar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/badge.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/breadcrumb.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/button.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/calendar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/carousel.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/chart.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/checkbox.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/collapsible.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/command.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/context-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/drawer.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dropdown-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/form.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/hover-card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input-otp.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/label.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/menubar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/navigation-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/pagination.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/popover.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/progress.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/radio-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/resizable.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/scroll-area.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/select.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/separator.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sheet.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sidebar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/skeleton.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/slider.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sonner.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/switch.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/table.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tabs.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/textarea.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toast.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toaster.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tooltip.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/use-toast.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -356,6 +381,21 @@
|
||||
"content": "import type { Config } from \"tailwindcss\";\n\nexport default {\n darkMode: [\"class\"],\n content: [\n \"./pages/**/*.{ts,tsx}\",\n \"./components/**/*.{ts,tsx}\",\n \"./app/**/*.{ts,tsx}\",\n \"./src/**/*.{ts,tsx}\",\n ],\n prefix: \"\",\n theme: {\n container: {\n center: true,\n padding: \"2rem\",\n screens: {\n \"2xl\": \"1400px\",\n },\n },\n extend: {\n colors: {\n border: \"hsl(var(--border))\",\n input: \"hsl(var(--input))\",\n ring: \"hsl(var(--ring))\",\n background: \"hsl(var(--background))\",\n foreground: \"hsl(var(--foreground))\",\n primary: {\n DEFAULT: \"hsl(var(--primary))\",\n foreground: \"hsl(var(--primary-foreground))\",\n },\n secondary: {\n DEFAULT: \"hsl(var(--secondary))\",\n foreground: \"hsl(var(--secondary-foreground))\",\n },\n destructive: {\n DEFAULT: \"hsl(var(--destructive))\",\n foreground: \"hsl(var(--destructive-foreground))\",\n },\n muted: {\n DEFAULT: \"hsl(var(--muted))\",\n foreground: \"hsl(var(--muted-foreground))\",\n },\n accent: {\n DEFAULT: \"hsl(var(--accent))\",\n foreground: \"hsl(var(--accent-foreground))\",\n },\n popover: {\n DEFAULT: \"hsl(var(--popover))\",\n foreground: \"hsl(var(--popover-foreground))\",\n },\n card: {\n DEFAULT: \"hsl(var(--card))\",\n foreground: \"hsl(var(--card-foreground))\",\n },\n sidebar: {\n DEFAULT: \"hsl(var(--sidebar-background))\",\n foreground: \"hsl(var(--sidebar-foreground))\",\n primary: \"hsl(var(--sidebar-primary))\",\n \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n accent: \"hsl(var(--sidebar-accent))\",\n \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n border: \"hsl(var(--sidebar-border))\",\n ring: \"hsl(var(--sidebar-ring))\",\n },\n },\n borderRadius: {\n lg: \"var(--radius)\",\n md: \"calc(var(--radius) - 2px)\",\n sm: \"calc(var(--radius) - 4px)\",\n },\n keyframes: {\n \"accordion-down\": {\n from: {\n height: \"0\",\n },\n to: {\n height: \"var(--radix-accordion-content-height)\",\n },\n },\n \"accordion-up\": {\n from: {\n height: \"var(--radix-accordion-content-height)\",\n },\n to: {\n height: \"0\",\n },\n },\n },\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n },\n },\n },\n plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config;\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.app.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.node.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "vite.config.ts",
|
||||
"content": "import { defineConfig } from \"vite\";\nimport dyadComponentTagger from \"@dyad-sh/react-vite-component-tagger\";\nimport react from \"@vitejs/plugin-react-swc\";\nimport path from \"path\";\n\nexport default defineConfig(() => ({\n server: {\n host: \"::\",\n port: 8080,\n },\n plugins: [dyadComponentTagger(), react()],\n resolve: {\n alias: {\n \"@\": path.resolve(__dirname, \"./src\"),\n },\n },\n}));\n",
|
||||
|
||||
@@ -21,14 +21,24 @@
|
||||
},
|
||||
"dyad_options": {
|
||||
"files": [
|
||||
{
|
||||
"path": ".gitignore",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "AI_RULES.md",
|
||||
"content": "# Tech Stack\n\n- You are building a React application.\n- Use TypeScript.\n- Use React Router. KEEP the routes in src/App.tsx\n- Always put source code in the src folder.\n- Put pages into src/pages/\n- Put components into src/components/\n- The main page (default page) is src/pages/Index.tsx\n- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components!\n- ALWAYS try to use the shadcn/ui library.\n- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects.\n\nAvailable packages and libraries:\n\n- The lucide-react package is installed for icons.\n- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again.\n- You have ALL the necessary Radix UI components installed.\n- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them.\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "components.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "eslint.config.js",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -46,6 +56,21 @@
|
||||
"content": "export default {\n plugins: {\n tailwindcss: {},\n autoprefixer: {},\n },\n};\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/favicon.ico",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/placeholder.svg",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/robots.txt",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"content": "# Welcome to your Dyad app\n",
|
||||
@@ -68,247 +93,247 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/accordion.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert-dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/aspect-ratio.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/avatar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/badge.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/breadcrumb.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/button.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/calendar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/carousel.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/chart.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/checkbox.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/collapsible.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/command.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/context-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/drawer.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dropdown-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/form.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/hover-card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input-otp.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/label.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/menubar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/navigation-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/pagination.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/popover.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/progress.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/radio-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/resizable.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/scroll-area.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/select.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/separator.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sheet.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sidebar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/skeleton.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/slider.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sonner.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/switch.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/table.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tabs.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/textarea.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toast.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toaster.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tooltip.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/use-toast.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -361,6 +386,21 @@
|
||||
"content": "import type { Config } from \"tailwindcss\";\n\nexport default {\n darkMode: [\"class\"],\n content: [\n \"./pages/**/*.{ts,tsx}\",\n \"./components/**/*.{ts,tsx}\",\n \"./app/**/*.{ts,tsx}\",\n \"./src/**/*.{ts,tsx}\",\n ],\n prefix: \"\",\n theme: {\n container: {\n center: true,\n padding: \"2rem\",\n screens: {\n \"2xl\": \"1400px\",\n },\n },\n extend: {\n colors: {\n border: \"hsl(var(--border))\",\n input: \"hsl(var(--input))\",\n ring: \"hsl(var(--ring))\",\n background: \"hsl(var(--background))\",\n foreground: \"hsl(var(--foreground))\",\n primary: {\n DEFAULT: \"hsl(var(--primary))\",\n foreground: \"hsl(var(--primary-foreground))\",\n },\n secondary: {\n DEFAULT: \"hsl(var(--secondary))\",\n foreground: \"hsl(var(--secondary-foreground))\",\n },\n destructive: {\n DEFAULT: \"hsl(var(--destructive))\",\n foreground: \"hsl(var(--destructive-foreground))\",\n },\n muted: {\n DEFAULT: \"hsl(var(--muted))\",\n foreground: \"hsl(var(--muted-foreground))\",\n },\n accent: {\n DEFAULT: \"hsl(var(--accent))\",\n foreground: \"hsl(var(--accent-foreground))\",\n },\n popover: {\n DEFAULT: \"hsl(var(--popover))\",\n foreground: \"hsl(var(--popover-foreground))\",\n },\n card: {\n DEFAULT: \"hsl(var(--card))\",\n foreground: \"hsl(var(--card-foreground))\",\n },\n sidebar: {\n DEFAULT: \"hsl(var(--sidebar-background))\",\n foreground: \"hsl(var(--sidebar-foreground))\",\n primary: \"hsl(var(--sidebar-primary))\",\n \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n accent: \"hsl(var(--sidebar-accent))\",\n \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n border: \"hsl(var(--sidebar-border))\",\n ring: \"hsl(var(--sidebar-ring))\",\n },\n },\n borderRadius: {\n lg: \"var(--radius)\",\n md: \"calc(var(--radius) - 2px)\",\n sm: \"calc(var(--radius) - 4px)\",\n },\n keyframes: {\n \"accordion-down\": {\n from: {\n height: \"0\",\n },\n to: {\n height: \"var(--radix-accordion-content-height)\",\n },\n },\n \"accordion-up\": {\n from: {\n height: \"var(--radix-accordion-content-height)\",\n },\n to: {\n height: \"0\",\n },\n },\n },\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n },\n },\n },\n plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config;\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.app.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.node.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "vite.config.ts",
|
||||
"content": "import { defineConfig } from \"vite\";\nimport dyadComponentTagger from \"@dyad-sh/react-vite-component-tagger\";\nimport react from \"@vitejs/plugin-react-swc\";\nimport path from \"path\";\n\nexport default defineConfig(() => ({\n server: {\n host: \"::\",\n port: 8080,\n },\n plugins: [dyadComponentTagger(), react()],\n resolve: {\n alias: {\n \"@\": path.resolve(__dirname, \"./src\"),\n },\n },\n}));\n",
|
||||
|
||||
@@ -21,14 +21,24 @@
|
||||
},
|
||||
"dyad_options": {
|
||||
"files": [
|
||||
{
|
||||
"path": ".gitignore",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "AI_RULES.md",
|
||||
"content": "# Tech Stack\n\n- You are building a React application.\n- Use TypeScript.\n- Use React Router. KEEP the routes in src/App.tsx\n- Always put source code in the src folder.\n- Put pages into src/pages/\n- Put components into src/components/\n- The main page (default page) is src/pages/Index.tsx\n- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components!\n- ALWAYS try to use the shadcn/ui library.\n- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects.\n\nAvailable packages and libraries:\n\n- The lucide-react package is installed for icons.\n- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again.\n- You have ALL the necessary Radix UI components installed.\n- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them.\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "components.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "eslint.config.js",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -46,6 +56,21 @@
|
||||
"content": "export default {\n plugins: {\n tailwindcss: {},\n autoprefixer: {},\n },\n};\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/favicon.ico",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/placeholder.svg",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/robots.txt",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"content": "# Welcome to your Dyad app\n",
|
||||
@@ -68,247 +93,247 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/accordion.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert-dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/aspect-ratio.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/avatar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/badge.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/breadcrumb.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/button.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/calendar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/carousel.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/chart.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/checkbox.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/collapsible.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/command.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/context-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/drawer.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dropdown-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/form.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/hover-card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input-otp.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/label.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/menubar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/navigation-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/pagination.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/popover.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/progress.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/radio-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/resizable.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/scroll-area.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/select.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/separator.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sheet.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sidebar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/skeleton.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/slider.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sonner.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/switch.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/table.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tabs.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/textarea.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toast.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toaster.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tooltip.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/use-toast.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -361,6 +386,21 @@
|
||||
"content": "import type { Config } from \"tailwindcss\";\n\nexport default {\n darkMode: [\"class\"],\n content: [\n \"./pages/**/*.{ts,tsx}\",\n \"./components/**/*.{ts,tsx}\",\n \"./app/**/*.{ts,tsx}\",\n \"./src/**/*.{ts,tsx}\",\n ],\n prefix: \"\",\n theme: {\n container: {\n center: true,\n padding: \"2rem\",\n screens: {\n \"2xl\": \"1400px\",\n },\n },\n extend: {\n colors: {\n border: \"hsl(var(--border))\",\n input: \"hsl(var(--input))\",\n ring: \"hsl(var(--ring))\",\n background: \"hsl(var(--background))\",\n foreground: \"hsl(var(--foreground))\",\n primary: {\n DEFAULT: \"hsl(var(--primary))\",\n foreground: \"hsl(var(--primary-foreground))\",\n },\n secondary: {\n DEFAULT: \"hsl(var(--secondary))\",\n foreground: \"hsl(var(--secondary-foreground))\",\n },\n destructive: {\n DEFAULT: \"hsl(var(--destructive))\",\n foreground: \"hsl(var(--destructive-foreground))\",\n },\n muted: {\n DEFAULT: \"hsl(var(--muted))\",\n foreground: \"hsl(var(--muted-foreground))\",\n },\n accent: {\n DEFAULT: \"hsl(var(--accent))\",\n foreground: \"hsl(var(--accent-foreground))\",\n },\n popover: {\n DEFAULT: \"hsl(var(--popover))\",\n foreground: \"hsl(var(--popover-foreground))\",\n },\n card: {\n DEFAULT: \"hsl(var(--card))\",\n foreground: \"hsl(var(--card-foreground))\",\n },\n sidebar: {\n DEFAULT: \"hsl(var(--sidebar-background))\",\n foreground: \"hsl(var(--sidebar-foreground))\",\n primary: \"hsl(var(--sidebar-primary))\",\n \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n accent: \"hsl(var(--sidebar-accent))\",\n \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n border: \"hsl(var(--sidebar-border))\",\n ring: \"hsl(var(--sidebar-ring))\",\n },\n },\n borderRadius: {\n lg: \"var(--radius)\",\n md: \"calc(var(--radius) - 2px)\",\n sm: \"calc(var(--radius) - 4px)\",\n },\n keyframes: {\n \"accordion-down\": {\n from: {\n height: \"0\",\n },\n to: {\n height: \"var(--radix-accordion-content-height)\",\n },\n },\n \"accordion-up\": {\n from: {\n height: \"var(--radix-accordion-content-height)\",\n },\n to: {\n height: \"0\",\n },\n },\n },\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n },\n },\n },\n plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config;\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.app.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.node.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "vite.config.ts",
|
||||
"content": "import { defineConfig } from \"vite\";\nimport dyadComponentTagger from \"@dyad-sh/react-vite-component-tagger\";\nimport react from \"@vitejs/plugin-react-swc\";\nimport path from \"path\";\n\nexport default defineConfig(() => ({\n server: {\n host: \"::\",\n port: 8080,\n },\n plugins: [dyadComponentTagger(), react()],\n resolve: {\n alias: {\n \"@\": path.resolve(__dirname, \"./src\"),\n },\n },\n}));\n",
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -321,7 +321,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
[[beginning of AI_RULES.md]]
|
||||
There's already AI rules...
|
||||
[[end of AI_RULES.md]]
|
||||
@@ -365,6 +369,18 @@ createRoot(document.getElementById("root")!).render(<App />);
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -335,7 +335,15 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="index.html">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="file1.txt">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="index.html">
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@@ -372,6 +380,18 @@ createRoot(document.getElementById("root")!).render(<App />);
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -321,7 +321,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
[[beginning of AI_RULES.md]]
|
||||
There's already AI rules...
|
||||
[[end of AI_RULES.md]]
|
||||
@@ -354,6 +358,18 @@ finalMainTsxFileWithError();
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -321,7 +321,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
[[beginning of AI_RULES.md]]
|
||||
There's already AI rules...
|
||||
[[end of AI_RULES.md]]
|
||||
@@ -363,6 +367,18 @@ finalMainTsxFileWithError();
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -321,7 +321,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
[[beginning of AI_RULES.md]]
|
||||
There's already AI rules...
|
||||
[[end of AI_RULES.md]]
|
||||
@@ -372,6 +376,18 @@ createRoot(document.getElementById("root")!).render(<App />);
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -321,7 +321,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
[[beginning of AI_RULES.md]]
|
||||
There's already AI rules...
|
||||
[[end of AI_RULES.md]]
|
||||
@@ -374,6 +378,18 @@ createRoot(document.getElementById("root")!).render(<App />);
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -321,7 +321,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
[[beginning of AI_RULES.md]]
|
||||
There's already AI rules...
|
||||
[[end of AI_RULES.md]]
|
||||
@@ -373,6 +377,18 @@ createRoot(document.getElementById("root")!).render(<App />);
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -321,7 +321,11 @@ You need to first add Supabase to your app and then we can add auth.
|
||||
|
||||
===
|
||||
role: user
|
||||
message: This is my codebase. <dyad-file path="AI_RULES.md">
|
||||
message: This is my codebase. <dyad-file path=".gitignore">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="AI_RULES.md">
|
||||
[[beginning of AI_RULES.md]]
|
||||
There's already AI rules...
|
||||
[[end of AI_RULES.md]]
|
||||
@@ -329,7 +333,7 @@ There's already AI rules...
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="file1.txt">
|
||||
A file (2)
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="index.html">
|
||||
@@ -377,6 +381,18 @@ createRoot(document.getElementById("root")!).render(<App />);
|
||||
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.app.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="tsconfig.node.json">
|
||||
// File contents excluded from context
|
||||
</dyad-file>
|
||||
|
||||
<dyad-file path="vite.config.ts">
|
||||
import { defineConfig } from "vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
|
||||
@@ -29,14 +29,24 @@
|
||||
},
|
||||
"dyad_options": {
|
||||
"files": [
|
||||
{
|
||||
"path": ".gitignore",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "AI_RULES.md",
|
||||
"content": "# Tech Stack\n\n- You are building a React application.\n- Use TypeScript.\n- Use React Router. KEEP the routes in src/App.tsx\n- Always put source code in the src folder.\n- Put pages into src/pages/\n- Put components into src/components/\n- The main page (default page) is src/pages/Index.tsx\n- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components!\n- ALWAYS try to use the shadcn/ui library.\n- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects.\n\nAvailable packages and libraries:\n\n- The lucide-react package is installed for icons.\n- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again.\n- You have ALL the necessary Radix UI components installed.\n- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them.\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "components.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "eslint.config.js",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -54,6 +64,21 @@
|
||||
"content": "export default {\n plugins: {\n tailwindcss: {},\n autoprefixer: {},\n },\n};\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/favicon.ico",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/placeholder.svg",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/robots.txt",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"content": "# Welcome to your Dyad app\n",
|
||||
@@ -76,247 +101,247 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/accordion.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert-dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/aspect-ratio.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/avatar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/badge.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/breadcrumb.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/button.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/calendar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/carousel.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/chart.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/checkbox.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/collapsible.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/command.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/context-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/drawer.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dropdown-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/form.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/hover-card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input-otp.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/label.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/menubar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/navigation-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/pagination.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/popover.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/progress.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/radio-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/resizable.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/scroll-area.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/select.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/separator.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sheet.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sidebar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/skeleton.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/slider.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sonner.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/switch.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/table.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tabs.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/textarea.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toast.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toaster.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tooltip.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/use-toast.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -369,6 +394,21 @@
|
||||
"content": "import type { Config } from \"tailwindcss\";\n\nexport default {\n darkMode: [\"class\"],\n content: [\n \"./pages/**/*.{ts,tsx}\",\n \"./components/**/*.{ts,tsx}\",\n \"./app/**/*.{ts,tsx}\",\n \"./src/**/*.{ts,tsx}\",\n ],\n prefix: \"\",\n theme: {\n container: {\n center: true,\n padding: \"2rem\",\n screens: {\n \"2xl\": \"1400px\",\n },\n },\n extend: {\n colors: {\n border: \"hsl(var(--border))\",\n input: \"hsl(var(--input))\",\n ring: \"hsl(var(--ring))\",\n background: \"hsl(var(--background))\",\n foreground: \"hsl(var(--foreground))\",\n primary: {\n DEFAULT: \"hsl(var(--primary))\",\n foreground: \"hsl(var(--primary-foreground))\",\n },\n secondary: {\n DEFAULT: \"hsl(var(--secondary))\",\n foreground: \"hsl(var(--secondary-foreground))\",\n },\n destructive: {\n DEFAULT: \"hsl(var(--destructive))\",\n foreground: \"hsl(var(--destructive-foreground))\",\n },\n muted: {\n DEFAULT: \"hsl(var(--muted))\",\n foreground: \"hsl(var(--muted-foreground))\",\n },\n accent: {\n DEFAULT: \"hsl(var(--accent))\",\n foreground: \"hsl(var(--accent-foreground))\",\n },\n popover: {\n DEFAULT: \"hsl(var(--popover))\",\n foreground: \"hsl(var(--popover-foreground))\",\n },\n card: {\n DEFAULT: \"hsl(var(--card))\",\n foreground: \"hsl(var(--card-foreground))\",\n },\n sidebar: {\n DEFAULT: \"hsl(var(--sidebar-background))\",\n foreground: \"hsl(var(--sidebar-foreground))\",\n primary: \"hsl(var(--sidebar-primary))\",\n \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n accent: \"hsl(var(--sidebar-accent))\",\n \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n border: \"hsl(var(--sidebar-border))\",\n ring: \"hsl(var(--sidebar-ring))\",\n },\n },\n borderRadius: {\n lg: \"var(--radius)\",\n md: \"calc(var(--radius) - 2px)\",\n sm: \"calc(var(--radius) - 4px)\",\n },\n keyframes: {\n \"accordion-down\": {\n from: {\n height: \"0\",\n },\n to: {\n height: \"var(--radix-accordion-content-height)\",\n },\n },\n \"accordion-up\": {\n from: {\n height: \"var(--radix-accordion-content-height)\",\n },\n to: {\n height: \"0\",\n },\n },\n },\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n },\n },\n },\n plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config;\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.app.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.node.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "vite.config.ts",
|
||||
"content": "import { defineConfig } from \"vite\";\nimport dyadComponentTagger from \"@dyad-sh/react-vite-component-tagger\";\nimport react from \"@vitejs/plugin-react-swc\";\nimport path from \"path\";\n\nexport default defineConfig(() => ({\n server: {\n host: \"::\",\n port: 8080,\n },\n plugins: [dyadComponentTagger(), react()],\n resolve: {\n alias: {\n \"@\": path.resolve(__dirname, \"./src\"),\n },\n },\n}));\n",
|
||||
|
||||
@@ -37,14 +37,24 @@
|
||||
},
|
||||
"dyad_options": {
|
||||
"files": [
|
||||
{
|
||||
"path": ".gitignore",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "AI_RULES.md",
|
||||
"content": "# Tech Stack\n\n- You are building a React application.\n- Use TypeScript.\n- Use React Router. KEEP the routes in src/App.tsx\n- Always put source code in the src folder.\n- Put pages into src/pages/\n- Put components into src/components/\n- The main page (default page) is src/pages/Index.tsx\n- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components!\n- ALWAYS try to use the shadcn/ui library.\n- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects.\n\nAvailable packages and libraries:\n\n- The lucide-react package is installed for icons.\n- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again.\n- You have ALL the necessary Radix UI components installed.\n- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them.\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "components.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "eslint.config.js",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -62,6 +72,21 @@
|
||||
"content": "export default {\n plugins: {\n tailwindcss: {},\n autoprefixer: {},\n },\n};\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/favicon.ico",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/placeholder.svg",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/robots.txt",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"content": "# Welcome to your Dyad app\n",
|
||||
@@ -84,247 +109,247 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/accordion.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert-dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/aspect-ratio.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/avatar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/badge.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/breadcrumb.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/button.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/calendar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/carousel.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/chart.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/checkbox.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/collapsible.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/command.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/context-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/drawer.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dropdown-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/form.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/hover-card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input-otp.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/label.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/menubar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/navigation-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/pagination.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/popover.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/progress.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/radio-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/resizable.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/scroll-area.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/select.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/separator.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sheet.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sidebar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/skeleton.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/slider.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sonner.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/switch.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/table.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tabs.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/textarea.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toast.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toaster.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tooltip.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/use-toast.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -377,6 +402,21 @@
|
||||
"content": "import type { Config } from \"tailwindcss\";\n\nexport default {\n darkMode: [\"class\"],\n content: [\n \"./pages/**/*.{ts,tsx}\",\n \"./components/**/*.{ts,tsx}\",\n \"./app/**/*.{ts,tsx}\",\n \"./src/**/*.{ts,tsx}\",\n ],\n prefix: \"\",\n theme: {\n container: {\n center: true,\n padding: \"2rem\",\n screens: {\n \"2xl\": \"1400px\",\n },\n },\n extend: {\n colors: {\n border: \"hsl(var(--border))\",\n input: \"hsl(var(--input))\",\n ring: \"hsl(var(--ring))\",\n background: \"hsl(var(--background))\",\n foreground: \"hsl(var(--foreground))\",\n primary: {\n DEFAULT: \"hsl(var(--primary))\",\n foreground: \"hsl(var(--primary-foreground))\",\n },\n secondary: {\n DEFAULT: \"hsl(var(--secondary))\",\n foreground: \"hsl(var(--secondary-foreground))\",\n },\n destructive: {\n DEFAULT: \"hsl(var(--destructive))\",\n foreground: \"hsl(var(--destructive-foreground))\",\n },\n muted: {\n DEFAULT: \"hsl(var(--muted))\",\n foreground: \"hsl(var(--muted-foreground))\",\n },\n accent: {\n DEFAULT: \"hsl(var(--accent))\",\n foreground: \"hsl(var(--accent-foreground))\",\n },\n popover: {\n DEFAULT: \"hsl(var(--popover))\",\n foreground: \"hsl(var(--popover-foreground))\",\n },\n card: {\n DEFAULT: \"hsl(var(--card))\",\n foreground: \"hsl(var(--card-foreground))\",\n },\n sidebar: {\n DEFAULT: \"hsl(var(--sidebar-background))\",\n foreground: \"hsl(var(--sidebar-foreground))\",\n primary: \"hsl(var(--sidebar-primary))\",\n \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n accent: \"hsl(var(--sidebar-accent))\",\n \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n border: \"hsl(var(--sidebar-border))\",\n ring: \"hsl(var(--sidebar-ring))\",\n },\n },\n borderRadius: {\n lg: \"var(--radius)\",\n md: \"calc(var(--radius) - 2px)\",\n sm: \"calc(var(--radius) - 4px)\",\n },\n keyframes: {\n \"accordion-down\": {\n from: {\n height: \"0\",\n },\n to: {\n height: \"var(--radix-accordion-content-height)\",\n },\n },\n \"accordion-up\": {\n from: {\n height: \"var(--radix-accordion-content-height)\",\n },\n to: {\n height: \"0\",\n },\n },\n },\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n },\n },\n },\n plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config;\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.app.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.node.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "vite.config.ts",
|
||||
"content": "import { defineConfig } from \"vite\";\nimport dyadComponentTagger from \"@dyad-sh/react-vite-component-tagger\";\nimport react from \"@vitejs/plugin-react-swc\";\nimport path from \"path\";\n\nexport default defineConfig(() => ({\n server: {\n host: \"::\",\n port: 8080,\n },\n plugins: [dyadComponentTagger(), react()],\n resolve: {\n alias: {\n \"@\": path.resolve(__dirname, \"./src\"),\n },\n },\n}));\n",
|
||||
|
||||
@@ -45,14 +45,24 @@
|
||||
},
|
||||
"dyad_options": {
|
||||
"files": [
|
||||
{
|
||||
"path": ".gitignore",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "AI_RULES.md",
|
||||
"content": "# Tech Stack\n\n- You are building a React application.\n- Use TypeScript.\n- Use React Router. KEEP the routes in src/App.tsx\n- Always put source code in the src folder.\n- Put pages into src/pages/\n- Put components into src/components/\n- The main page (default page) is src/pages/Index.tsx\n- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components!\n- ALWAYS try to use the shadcn/ui library.\n- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects.\n\nAvailable packages and libraries:\n\n- The lucide-react package is installed for icons.\n- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again.\n- You have ALL the necessary Radix UI components installed.\n- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them.\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "components.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "eslint.config.js",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -70,6 +80,21 @@
|
||||
"content": "export default {\n plugins: {\n tailwindcss: {},\n autoprefixer: {},\n },\n};\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/favicon.ico",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/placeholder.svg",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "public/robots.txt",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"content": "# Welcome to your Dyad app\n",
|
||||
@@ -92,247 +117,247 @@
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/accordion.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert-dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/alert.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/aspect-ratio.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/avatar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/badge.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/breadcrumb.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/button.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/calendar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/carousel.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/chart.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/checkbox.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/collapsible.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/command.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/context-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dialog.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/drawer.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/dropdown-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/form.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/hover-card.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input-otp.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/input.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/label.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/menubar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/navigation-menu.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/pagination.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/popover.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/progress.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/radio-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/resizable.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/scroll-area.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/select.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/separator.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sheet.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sidebar.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/skeleton.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/slider.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/sonner.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/switch.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/table.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tabs.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/textarea.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toast.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toaster.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle-group.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/toggle.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/tooltip.tsx",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "src/components/ui/use-toast.ts",
|
||||
"content": "// Contents omitted for brevity",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
@@ -385,6 +410,21 @@
|
||||
"content": "import type { Config } from \"tailwindcss\";\n\nexport default {\n darkMode: [\"class\"],\n content: [\n \"./pages/**/*.{ts,tsx}\",\n \"./components/**/*.{ts,tsx}\",\n \"./app/**/*.{ts,tsx}\",\n \"./src/**/*.{ts,tsx}\",\n ],\n prefix: \"\",\n theme: {\n container: {\n center: true,\n padding: \"2rem\",\n screens: {\n \"2xl\": \"1400px\",\n },\n },\n extend: {\n colors: {\n border: \"hsl(var(--border))\",\n input: \"hsl(var(--input))\",\n ring: \"hsl(var(--ring))\",\n background: \"hsl(var(--background))\",\n foreground: \"hsl(var(--foreground))\",\n primary: {\n DEFAULT: \"hsl(var(--primary))\",\n foreground: \"hsl(var(--primary-foreground))\",\n },\n secondary: {\n DEFAULT: \"hsl(var(--secondary))\",\n foreground: \"hsl(var(--secondary-foreground))\",\n },\n destructive: {\n DEFAULT: \"hsl(var(--destructive))\",\n foreground: \"hsl(var(--destructive-foreground))\",\n },\n muted: {\n DEFAULT: \"hsl(var(--muted))\",\n foreground: \"hsl(var(--muted-foreground))\",\n },\n accent: {\n DEFAULT: \"hsl(var(--accent))\",\n foreground: \"hsl(var(--accent-foreground))\",\n },\n popover: {\n DEFAULT: \"hsl(var(--popover))\",\n foreground: \"hsl(var(--popover-foreground))\",\n },\n card: {\n DEFAULT: \"hsl(var(--card))\",\n foreground: \"hsl(var(--card-foreground))\",\n },\n sidebar: {\n DEFAULT: \"hsl(var(--sidebar-background))\",\n foreground: \"hsl(var(--sidebar-foreground))\",\n primary: \"hsl(var(--sidebar-primary))\",\n \"primary-foreground\": \"hsl(var(--sidebar-primary-foreground))\",\n accent: \"hsl(var(--sidebar-accent))\",\n \"accent-foreground\": \"hsl(var(--sidebar-accent-foreground))\",\n border: \"hsl(var(--sidebar-border))\",\n ring: \"hsl(var(--sidebar-ring))\",\n },\n },\n borderRadius: {\n lg: \"var(--radius)\",\n md: \"calc(var(--radius) - 2px)\",\n sm: \"calc(var(--radius) - 4px)\",\n },\n keyframes: {\n \"accordion-down\": {\n from: {\n height: \"0\",\n },\n to: {\n height: \"var(--radix-accordion-content-height)\",\n },\n },\n \"accordion-up\": {\n from: {\n height: \"var(--radix-accordion-content-height)\",\n },\n to: {\n height: \"0\",\n },\n },\n },\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n },\n },\n },\n plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config;\n",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.app.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "tsconfig.node.json",
|
||||
"content": "// File contents excluded from context",
|
||||
"force": false
|
||||
},
|
||||
{
|
||||
"path": "vite.config.ts",
|
||||
"content": "import { defineConfig } from \"vite\";\nimport dyadComponentTagger from \"@dyad-sh/react-vite-component-tagger\";\nimport react from \"@vitejs/plugin-react-swc\";\nimport path from \"path\";\n\nexport default defineConfig(() => ({\n server: {\n host: \"::\",\n port: 8080,\n },\n plugins: [dyadComponentTagger(), react()],\n resolve: {\n alias: {\n \"@\": path.resolve(__dirname, \"./src\"),\n },\n },\n}));\n",
|
||||
|
||||
@@ -277,10 +277,6 @@ async function collectFiles(dir: string, baseDir: string): Promise<string[]> {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check file extension and filename
|
||||
const ext = path.extname(entry.name).toLowerCase();
|
||||
const shouldAlwaysInclude = ALWAYS_INCLUDE_FILES.includes(entry.name);
|
||||
|
||||
// Skip files that are too large
|
||||
try {
|
||||
const stats = await fsAsync.stat(fullPath);
|
||||
@@ -292,9 +288,8 @@ async function collectFiles(dir: string, baseDir: string): Promise<string[]> {
|
||||
return;
|
||||
}
|
||||
|
||||
if (ALLOWED_EXTENSIONS.includes(ext) || shouldAlwaysInclude) {
|
||||
files.push(fullPath);
|
||||
}
|
||||
// Include all files in the list
|
||||
files.push(fullPath);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -311,25 +306,48 @@ function isOmittedFile(relativePath: string): boolean {
|
||||
return OMITTED_FILES.some((pattern) => relativePath.includes(pattern));
|
||||
}
|
||||
|
||||
const OMITTED_FILE_CONTENT = "// Contents omitted for brevity";
|
||||
const OMITTED_FILE_CONTENT = "// File contents excluded from context";
|
||||
|
||||
/**
|
||||
* Check if file contents should be read based on extension and inclusion rules
|
||||
*/
|
||||
function shouldReadFileContents({
|
||||
filePath,
|
||||
normalizedRelativePath,
|
||||
}: {
|
||||
filePath: string;
|
||||
normalizedRelativePath: string;
|
||||
}): boolean {
|
||||
const ext = path.extname(filePath).toLowerCase();
|
||||
const fileName = path.basename(filePath);
|
||||
|
||||
// OMITTED_FILES takes precedence - never read if omitted
|
||||
if (isOmittedFile(normalizedRelativePath)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if file should be included based on extension or filename
|
||||
return (
|
||||
ALLOWED_EXTENSIONS.includes(ext) || ALWAYS_INCLUDE_FILES.includes(fileName)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format a file for inclusion in the codebase extract
|
||||
*/
|
||||
async function formatFile(
|
||||
filePath: string,
|
||||
baseDir: string,
|
||||
virtualFileSystem?: AsyncVirtualFileSystem,
|
||||
): Promise<string> {
|
||||
async function formatFile({
|
||||
filePath,
|
||||
normalizedRelativePath,
|
||||
virtualFileSystem,
|
||||
}: {
|
||||
filePath: string;
|
||||
normalizedRelativePath: string;
|
||||
virtualFileSystem?: AsyncVirtualFileSystem;
|
||||
}): Promise<string> {
|
||||
try {
|
||||
const relativePath = path
|
||||
.relative(baseDir, filePath)
|
||||
// Why? Normalize Windows-style paths which causes lots of weird issues (e.g. Git commit)
|
||||
.split(path.sep)
|
||||
.join("/");
|
||||
|
||||
if (isOmittedFile(relativePath)) {
|
||||
return `<dyad-file path="${relativePath}">
|
||||
// Check if we should read file contents
|
||||
if (!shouldReadFileContents({ filePath, normalizedRelativePath })) {
|
||||
return `<dyad-file path="${normalizedRelativePath}">
|
||||
${OMITTED_FILE_CONTENT}
|
||||
</dyad-file>
|
||||
|
||||
@@ -339,21 +357,21 @@ ${OMITTED_FILE_CONTENT}
|
||||
const content = await readFileWithCache(filePath, virtualFileSystem);
|
||||
|
||||
if (content == null) {
|
||||
return `<dyad-file path="${relativePath}">
|
||||
return `<dyad-file path="${normalizedRelativePath}">
|
||||
// Error reading file
|
||||
</dyad-file>
|
||||
|
||||
`;
|
||||
}
|
||||
|
||||
return `<dyad-file path="${relativePath}">
|
||||
return `<dyad-file path="${normalizedRelativePath}">
|
||||
${content}
|
||||
</dyad-file>
|
||||
|
||||
`;
|
||||
} catch (error) {
|
||||
logger.error(`Error reading file: ${filePath}`, error);
|
||||
return `<dyad-file path="${path.relative(baseDir, filePath)}">
|
||||
return `<dyad-file path="${normalizedRelativePath}">
|
||||
// Error reading file: ${error}
|
||||
</dyad-file>
|
||||
|
||||
@@ -482,28 +500,35 @@ export async function extractCodebase({
|
||||
// Format files and collect individual file contents
|
||||
const filesArray: CodebaseFile[] = [];
|
||||
const formatPromises = sortedFiles.map(async (file) => {
|
||||
const formattedContent = await formatFile(file, appPath, virtualFileSystem);
|
||||
|
||||
// Get raw content for the files array
|
||||
const relativePath = path
|
||||
const normalizedRelativePath = path
|
||||
.relative(appPath, file)
|
||||
// Why? Normalize Windows-style paths which causes lots of weird issues (e.g. Git commit)
|
||||
.split(path.sep)
|
||||
.join("/");
|
||||
const formattedContent = await formatFile({
|
||||
filePath: file,
|
||||
normalizedRelativePath,
|
||||
virtualFileSystem,
|
||||
});
|
||||
|
||||
const isForced = autoIncludedFiles.has(path.normalize(file));
|
||||
|
||||
const fileContent = isOmittedFile(relativePath)
|
||||
? OMITTED_FILE_CONTENT
|
||||
: await readFileWithCache(file, virtualFileSystem);
|
||||
if (fileContent != null) {
|
||||
filesArray.push({
|
||||
path: relativePath,
|
||||
content: fileContent,
|
||||
force: isForced,
|
||||
});
|
||||
// Determine file content based on whether we should read it
|
||||
let fileContent: string;
|
||||
if (!shouldReadFileContents({ filePath: file, normalizedRelativePath })) {
|
||||
fileContent = OMITTED_FILE_CONTENT;
|
||||
} else {
|
||||
const readContent = await readFileWithCache(file, virtualFileSystem);
|
||||
fileContent = readContent ?? "// Error reading file";
|
||||
}
|
||||
|
||||
filesArray.push({
|
||||
path: normalizedRelativePath,
|
||||
content: fileContent,
|
||||
force: isForced,
|
||||
});
|
||||
|
||||
return formattedContent;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user