From 4b222ab6bf910d393d40dfae8ecef5465d5adaab Mon Sep 17 00:00:00 2001 From: zane Date: Sun, 15 Mar 2026 17:26:48 -0400 Subject: [PATCH] use source dir --- web/lib/constants.ts | 35 ----- web/lib/diff.ts | 62 --------- web/lib/files.ts | 114 ----------------- web/lib/steps.ts | 120 ------------------ web/lib/utils.ts | 6 - web/{ => src}/app/favicon-16x16.png | Bin web/{ => src}/app/favicon-32x32.png | Bin web/{ => src}/app/favicon.ico | Bin web/{ => src}/app/globals.css | 0 web/{ => src}/app/layout.tsx | 4 +- web/{ => src}/app/not-found.tsx | 2 +- web/{ => src}/app/page.tsx | 6 +- .../app/steps/[id]/diff/[to]/page.tsx | 8 +- web/{ => src}/app/steps/[id]/page.tsx | 8 +- web/{ => src}/components/clone-command.tsx | 2 +- web/{ => src}/components/code-block.tsx | 0 .../components/diff-page-selector.tsx | 2 +- web/{ => src}/components/diff-selector.tsx | 2 +- web/{ => src}/components/diff-viewer.tsx | 4 +- .../components/file-nav-dropdown.tsx | 2 +- web/{ => src}/components/header.tsx | 0 web/{ => src}/components/readme-renderer.tsx | 2 +- web/{ => src}/components/step-card.tsx | 6 +- .../components/step-diff-selector.tsx | 2 +- web/{ => src}/components/theme-provider.tsx | 0 web/{ => src}/components/theme-toggle.tsx | 4 +- web/{ => src}/components/ui/badge.tsx | 0 web/{ => src}/components/ui/breadcrumb.tsx | 0 web/{ => src}/components/ui/button.tsx | 0 web/{ => src}/components/ui/card.tsx | 0 web/{ => src}/components/ui/collapsible.tsx | 0 web/{ => src}/components/ui/dropdown-menu.tsx | 0 web/{ => src}/components/ui/scroll-area.tsx | 0 web/{ => src}/components/ui/select.tsx | 0 web/{ => src}/components/ui/separator.tsx | 0 web/{ => src}/components/ui/tabs.tsx | 0 web/{ => src}/components/ui/typography.tsx | 0 web/tsconfig.json | 2 +- 38 files changed, 28 insertions(+), 365 deletions(-) delete mode 100644 web/lib/constants.ts delete mode 100644 web/lib/diff.ts delete mode 100644 web/lib/files.ts delete mode 100644 web/lib/steps.ts delete mode 100644 web/lib/utils.ts rename web/{ => src}/app/favicon-16x16.png (100%) rename web/{ => src}/app/favicon-32x32.png (100%) rename web/{ => src}/app/favicon.ico (100%) rename web/{ => src}/app/globals.css (100%) rename web/{ => src}/app/layout.tsx (90%) rename web/{ => src}/app/not-found.tsx (91%) rename web/{ => src}/app/page.tsx (94%) rename web/{ => src}/app/steps/[id]/diff/[to]/page.tsx (95%) rename web/{ => src}/app/steps/[id]/page.tsx (94%) rename web/{ => src}/components/clone-command.tsx (95%) rename web/{ => src}/components/code-block.tsx (100%) rename web/{ => src}/components/diff-page-selector.tsx (94%) rename web/{ => src}/components/diff-selector.tsx (97%) rename web/{ => src}/components/diff-viewer.tsx (99%) rename web/{ => src}/components/file-nav-dropdown.tsx (98%) rename web/{ => src}/components/header.tsx (100%) rename web/{ => src}/components/readme-renderer.tsx (99%) rename web/{ => src}/components/step-card.tsx (79%) rename web/{ => src}/components/step-diff-selector.tsx (88%) rename web/{ => src}/components/theme-provider.tsx (100%) rename web/{ => src}/components/theme-toggle.tsx (93%) rename web/{ => src}/components/ui/badge.tsx (100%) rename web/{ => src}/components/ui/breadcrumb.tsx (100%) rename web/{ => src}/components/ui/button.tsx (100%) rename web/{ => src}/components/ui/card.tsx (100%) rename web/{ => src}/components/ui/collapsible.tsx (100%) rename web/{ => src}/components/ui/dropdown-menu.tsx (100%) rename web/{ => src}/components/ui/scroll-area.tsx (100%) rename web/{ => src}/components/ui/select.tsx (100%) rename web/{ => src}/components/ui/separator.tsx (100%) rename web/{ => src}/components/ui/tabs.tsx (100%) rename web/{ => src}/components/ui/typography.tsx (100%) diff --git a/web/lib/constants.ts b/web/lib/constants.ts deleted file mode 100644 index 60f2554..0000000 --- a/web/lib/constants.ts +++ /dev/null @@ -1,35 +0,0 @@ -export const PHASES = { - 1: { - name: 'Capable Single Agent', - steps: ['00', '01', '02', '03', '04', '05', '06'], - description: 'Build a fully-functional agent that can chat, use tools, learn skills, remember conversations, and access the internet.', - }, - 2: { - name: 'Event-Driven Architecture', - steps: ['07', '08', '09', '10'], - description: 'Refactor to event-driven architecture for scalability and multi-platform support.', - }, - 3: { - name: 'Autonomous & Multi-Agent', - steps: ['11', '12', '13', '14', '15'], - description: 'Add scheduled tasks, agent collaboration, and intelligent routing.', - }, - 4: { - name: 'Production & Scale', - steps: ['16', '17'], - description: 'Production features for reliability and long-term memory.', - }, -} as const - -export const SKIP_PATTERNS = [ - '**/.venv/**', - '**/__pycache__/**', - '**/node_modules/**', - '**/*.lock', - '**/*.svg', - '**/*.png', - '**/*.jpg', - '**/*.pyc', -] - -export const STEPS_DIR = '../' // Relative to web/ directory diff --git a/web/lib/diff.ts b/web/lib/diff.ts deleted file mode 100644 index f3299e0..0000000 --- a/web/lib/diff.ts +++ /dev/null @@ -1,62 +0,0 @@ -import * as Diff from 'diff' - -export interface DiffLine { - type: 'added' | 'removed' | 'unchanged' - content: string - oldLineNumber?: number - newLineNumber?: number -} - -export interface DiffResult { - lines: DiffLine[] - addedCount: number - removedCount: number -} - -/** - * Compute line-by-line diff between two strings - */ -export function computeDiff(fromContent: string, toContent: string): DiffResult { - const changes = Diff.diffLines(fromContent, toContent) - const lines: DiffLine[] = [] - let addedCount = 0 - let removedCount = 0 - - let oldLine = 1 - let newLine = 1 - - for (const change of changes) { - const changeLines = change.value.split('\n') - // Remove last empty string if content ends with newline - if (changeLines[changeLines.length - 1] === '') { - changeLines.pop() - } - - for (const line of changeLines) { - if (change.added) { - lines.push({ - type: 'added', - content: line, - newLineNumber: newLine++, - }) - addedCount++ - } else if (change.removed) { - lines.push({ - type: 'removed', - content: line, - oldLineNumber: oldLine++, - }) - removedCount++ - } else { - lines.push({ - type: 'unchanged', - content: line, - oldLineNumber: oldLine++, - newLineNumber: newLine++, - }) - } - } - } - - return { lines, addedCount, removedCount } -} diff --git a/web/lib/files.ts b/web/lib/files.ts deleted file mode 100644 index 7a2a5eb..0000000 --- a/web/lib/files.ts +++ /dev/null @@ -1,114 +0,0 @@ -import fs from 'fs' -import path from 'path' -import { glob } from 'glob' -import { SKIP_PATTERNS, STEPS_DIR } from './constants' - -export interface FileDiff { - path: string - status: 'added' | 'removed' | 'modified' | 'unchanged' - fromContent?: string - toContent?: string -} - -/** - * Get all Python files in a step directory - */ -function getPythonFiles(stepFolder: string): string[] { - const stepPath = path.join(process.cwd(), STEPS_DIR, stepFolder, 'src', 'mybot') - - if (!fs.existsSync(stepPath)) { - return [] - } - - const files = glob.sync('**/*.py', { - cwd: stepPath, - ignore: SKIP_PATTERNS, - nodir: true, - }) - - return files -} - -/** - * Read file content from a step directory - */ -function readFileContent(stepFolder: string, relativePath: string): string | null { - const filePath = path.join(process.cwd(), STEPS_DIR, stepFolder, 'src', 'mybot', relativePath) - - if (!fs.existsSync(filePath)) { - return null - } - - return fs.readFileSync(filePath, 'utf-8') -} - -/** - * Discover and compare files between two steps - */ -export function discoverFiles(fromFolder: string, toFolder: string): FileDiff[] { - const fromFiles = new Set(getPythonFiles(fromFolder)) - const toFiles = new Set(getPythonFiles(toFolder)) - - const allFiles = new Set([...fromFiles, ...toFiles]) - const results: FileDiff[] = [] - - for (const file of allFiles) { - const inFrom = fromFiles.has(file) - const inTo = toFiles.has(file) - - const fromContent = inFrom ? (readFileContent(fromFolder, file) ?? undefined) : undefined - const toContent = inTo ? (readFileContent(toFolder, file) ?? undefined) : undefined - - let status: FileDiff['status'] - if (!inFrom && inTo) { - status = 'added' - } else if (inFrom && !inTo) { - status = 'removed' - } else if (fromContent !== toContent) { - status = 'modified' - } else { - status = 'unchanged' - } - - results.push({ - path: file, - status, - fromContent, - toContent, - }) - } - - // Sort: modified first, then added, then removed, then unchanged - const statusOrder: Record = { - modified: 0, - added: 1, - removed: 2, - unchanged: 3, - } - - results.sort((a, b) => { - const orderDiff = statusOrder[a.status] - statusOrder[b.status] - if (orderDiff !== 0) return orderDiff - return a.path.localeCompare(b.path) - }) - - return results -} - -/** - * Get only changed files (exclude unchanged) - */ -export function getChangedFiles(fromFolder: string, toFolder: string): FileDiff[] { - return discoverFiles(fromFolder, toFolder).filter( - (f) => f.status !== 'unchanged' - ) -} - -/** - * Get only unchanged files - */ -export function getUnchangedFiles(fromFolder: string, toFolder: string): FileDiff[] { - return discoverFiles(fromFolder, toFolder).filter( - (f) => f.status === 'unchanged' - ) -} diff --git a/web/lib/steps.ts b/web/lib/steps.ts deleted file mode 100644 index 2a0815a..0000000 --- a/web/lib/steps.ts +++ /dev/null @@ -1,120 +0,0 @@ -import fs from 'fs' -import path from 'path' -import { PHASES, STEPS_DIR } from './constants' - -export interface Step { - id: string - title: string - description: string - phase: number - folderName: string - readmePath: string -} - -/** - * Get the folder name for a step ID (e.g., "00" -> "00-chat-loop") - */ -function getFolderName(stepId: string): string | null { - const stepsDir = path.join(process.cwd(), STEPS_DIR) - const entries = fs.readdirSync(stepsDir, { withFileTypes: true }) - const folder = entries.find( - (e) => e.isDirectory() && e.name.startsWith(`${stepId}-`) - ) - return folder?.name ?? null -} - -/** - * Parse title from README H1 - * Format: "# Step XX: Title Here" -> "Title Here" - */ -function parseTitle(readmeContent: string): string { - const h1Match = readmeContent.match(/^# .+/m) - if (!h1Match) return 'Unknown' - const fullTitle = h1Match[0].replace('# ', '') - return fullTitle.split(': ')[1] ?? fullTitle -} - -/** - * Parse the first blockquote from README - * Format: "> Description text here" -> "Description text here" - */ -function parseDescription(readmeContent: string): string { - const blockquoteMatch = readmeContent.match(/^>\s*(.+)$/m) - return blockquoteMatch?.[1]?.trim() ?? '' -} - -/** - * Get phase number for a step ID - */ -function getPhase(stepId: string): number { - const phaseEntries = Object.entries(PHASES) as [string, typeof PHASES[1]][] - for (const [phase, data] of phaseEntries) { - if (data.steps.includes(stepId as any)) { - return parseInt(phase, 10) - } - } - return 0 -} - -/** - * Load all steps from the parent directory - */ -export function loadSteps(): Step[] { - const steps: Step[] = [] - const phaseEntries = Object.entries(PHASES) as [string, typeof PHASES[1]][] - for (const [phaseStr, phaseData] of phaseEntries) { - for (const stepId of phaseData.steps) { - const folderName = getFolderName(stepId) - if (!folderName) continue - - const readmePath = path.join(process.cwd(), STEPS_DIR, folderName, 'README.md') - let title = `Step ${stepId}` - let description = '' - - if (fs.existsSync(readmePath)) { - const content = fs.readFileSync(readmePath, 'utf-8') - title = parseTitle(content) - description = parseDescription(content) - } - - steps.push({ - id: stepId, - title, - description, - phase: parseInt(phaseStr, 10), - folderName, - readmePath, - }) - } - } - - return steps -} - -// Cache steps at module level for build -let _steps: Step[] | null = null - -export function getSteps(): Step[] { - if (!_steps) { - _steps = loadSteps() - } - return _steps -} - -export function getStep(id: string): Step | undefined { - return getSteps().find((s) => s.id === id) -} - -export function getStepsByPhase(): Record { - const steps = getSteps() - const result: Record = {} - - for (const step of steps) { - if (!result[step.phase]) { - result[step.phase] = [] - } - result[step.phase].push(step) - } - - return result -} diff --git a/web/lib/utils.ts b/web/lib/utils.ts deleted file mode 100644 index bd0c391..0000000 --- a/web/lib/utils.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { clsx, type ClassValue } from "clsx" -import { twMerge } from "tailwind-merge" - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)) -} diff --git a/web/app/favicon-16x16.png b/web/src/app/favicon-16x16.png similarity index 100% rename from web/app/favicon-16x16.png rename to web/src/app/favicon-16x16.png diff --git a/web/app/favicon-32x32.png b/web/src/app/favicon-32x32.png similarity index 100% rename from web/app/favicon-32x32.png rename to web/src/app/favicon-32x32.png diff --git a/web/app/favicon.ico b/web/src/app/favicon.ico similarity index 100% rename from web/app/favicon.ico rename to web/src/app/favicon.ico diff --git a/web/app/globals.css b/web/src/app/globals.css similarity index 100% rename from web/app/globals.css rename to web/src/app/globals.css diff --git a/web/app/layout.tsx b/web/src/app/layout.tsx similarity index 90% rename from web/app/layout.tsx rename to web/src/app/layout.tsx index b8b33bd..ed026a1 100644 --- a/web/app/layout.tsx +++ b/web/src/app/layout.tsx @@ -1,8 +1,8 @@ import type { Metadata } from 'next' import { Geist, Red_Hat_Mono } from 'next/font/google' import './globals.css' -import { ThemeProvider } from '@/components/theme-provider' -import { Header } from '@/components/header' +import { ThemeProvider } from '@//components/theme-provider' +import { Header } from '@//components/header' const geist = Geist({ subsets: ['latin'], diff --git a/web/app/not-found.tsx b/web/src/app/not-found.tsx similarity index 91% rename from web/app/not-found.tsx rename to web/src/app/not-found.tsx index c9a74e3..e7526f4 100644 --- a/web/app/not-found.tsx +++ b/web/src/app/not-found.tsx @@ -1,4 +1,4 @@ -import { H1, P } from '@/components/ui/typography' +import { H1, P } from '@//components/ui/typography' import Link from 'next/link' export default function NotFound() { diff --git a/web/app/page.tsx b/web/src/app/page.tsx similarity index 94% rename from web/app/page.tsx rename to web/src/app/page.tsx index 23dca1c..d7b9fb8 100644 --- a/web/app/page.tsx +++ b/web/src/app/page.tsx @@ -1,9 +1,9 @@ import Link from 'next/link' import { getStepsByPhase } from '@/lib/steps' import { PHASES } from '@/lib/constants' -import { H1, H2, Lead, Muted } from '@/components/ui/typography' -import { StepCard } from '@/components/step-card' -import { CloneCommand } from '@/components/clone-command' +import { H1, H2, Lead, Muted } from '@//components/ui/typography' +import { StepCard } from '@//components/step-card' +import { CloneCommand } from '@//components/clone-command' import { GithubIcon, StarIcon } from 'lucide-react' const GITHUB_REPO_URL = 'https://github.com/czl9707/build-your-own-openclaw' diff --git a/web/app/steps/[id]/diff/[to]/page.tsx b/web/src/app/steps/[id]/diff/[to]/page.tsx similarity index 95% rename from web/app/steps/[id]/diff/[to]/page.tsx rename to web/src/app/steps/[id]/diff/[to]/page.tsx index 9f9c58f..79ab368 100644 --- a/web/app/steps/[id]/diff/[to]/page.tsx +++ b/web/src/app/steps/[id]/diff/[to]/page.tsx @@ -2,9 +2,9 @@ import { notFound } from 'next/navigation' import Link from 'next/link' import { getStep, getSteps } from '@/lib/steps' import { getChangedFiles, getUnchangedFiles } from '@/lib/files' -import { DiffViewer } from '@/components/diff-viewer' -import { FileNavDropdown } from '@/components/file-nav-dropdown' -import { DiffPageSelector } from '@/components/diff-page-selector' +import { DiffViewer } from '@//components/diff-viewer' +import { FileNavDropdown } from '@//components/file-nav-dropdown' +import { DiffPageSelector } from '@//components/diff-page-selector' import { Breadcrumb, BreadcrumbList, @@ -12,7 +12,7 @@ import { BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, -} from '@/components/ui/breadcrumb' +} from '@//components/ui/breadcrumb' interface DiffPageProps { params: Promise<{ diff --git a/web/app/steps/[id]/page.tsx b/web/src/app/steps/[id]/page.tsx similarity index 94% rename from web/app/steps/[id]/page.tsx rename to web/src/app/steps/[id]/page.tsx index b20cc75..656174a 100644 --- a/web/app/steps/[id]/page.tsx +++ b/web/src/app/steps/[id]/page.tsx @@ -4,8 +4,8 @@ import { notFound } from 'next/navigation' import { ChevronLeft, ChevronRight } from 'lucide-react' import { getStep, getSteps } from '@/lib/steps' -import { ReadmeRenderer } from '@/components/readme-renderer' -import { StepDiffSelector } from '@/components/step-diff-selector' +import { ReadmeRenderer } from '@//components/readme-renderer' +import { StepDiffSelector } from '@//components/step-diff-selector' import { Breadcrumb, BreadcrumbItem, @@ -13,8 +13,8 @@ import { BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, -} from '@/components/ui/breadcrumb' -import { H1 } from '@/components/ui/typography' +} from '@//components/ui/breadcrumb' +import { H1 } from '@//components/ui/typography' // Button-like link styles for Server Components (matches buttonVariants outline) const buttonOutlineStyles = diff --git a/web/components/clone-command.tsx b/web/src/components/clone-command.tsx similarity index 95% rename from web/components/clone-command.tsx rename to web/src/components/clone-command.tsx index b792048..aee17d5 100644 --- a/web/components/clone-command.tsx +++ b/web/src/components/clone-command.tsx @@ -1,7 +1,7 @@ 'use client' import { useState } from 'react' -import { Card } from '@/components/ui/card' +import { Card } from '@//components/ui/card' import { CheckIcon, CopyIcon } from 'lucide-react' const CLONE_COMMAND = 'git clone https://github.com/czl9707/build-your-own-openclaw.git' diff --git a/web/components/code-block.tsx b/web/src/components/code-block.tsx similarity index 100% rename from web/components/code-block.tsx rename to web/src/components/code-block.tsx diff --git a/web/components/diff-page-selector.tsx b/web/src/components/diff-page-selector.tsx similarity index 94% rename from web/components/diff-page-selector.tsx rename to web/src/components/diff-page-selector.tsx index f1b6a6b..55eb51f 100644 --- a/web/components/diff-page-selector.tsx +++ b/web/src/components/diff-page-selector.tsx @@ -1,7 +1,7 @@ 'use client' import { useRouter } from 'next/navigation' -import { DiffSelector } from '@/components/diff-selector' +import { DiffSelector } from '@//components/diff-selector' import type { Step } from '@/lib/steps' interface DiffPageSelectorProps { diff --git a/web/components/diff-selector.tsx b/web/src/components/diff-selector.tsx similarity index 97% rename from web/components/diff-selector.tsx rename to web/src/components/diff-selector.tsx index 29ae959..e92378f 100644 --- a/web/components/diff-selector.tsx +++ b/web/src/components/diff-selector.tsx @@ -6,7 +6,7 @@ import { SelectItem, SelectTrigger, SelectValue, -} from '@/components/ui/select' +} from '@//components/ui/select' import type { Step } from '@/lib/steps' interface DiffSelectorProps { diff --git a/web/components/diff-viewer.tsx b/web/src/components/diff-viewer.tsx similarity index 99% rename from web/components/diff-viewer.tsx rename to web/src/components/diff-viewer.tsx index 641903e..61e96b8 100644 --- a/web/components/diff-viewer.tsx +++ b/web/src/components/diff-viewer.tsx @@ -2,12 +2,12 @@ import * as React from 'react' import { codeToHtml } from 'shiki' -import { ScrollArea } from '@/components/ui/scroll-area' +import { ScrollArea } from '@//components/ui/scroll-area' import { Collapsible, CollapsibleContent, CollapsibleTrigger, -} from '@/components/ui/collapsible' +} from '@//components/ui/collapsible' import { cn } from '@/lib/utils' import { computeDiff, type DiffLine } from '@/lib/diff' import { useIsMobile } from '@/lib/hooks' diff --git a/web/components/file-nav-dropdown.tsx b/web/src/components/file-nav-dropdown.tsx similarity index 98% rename from web/components/file-nav-dropdown.tsx rename to web/src/components/file-nav-dropdown.tsx index dfa69f3..9e0a228 100644 --- a/web/components/file-nav-dropdown.tsx +++ b/web/src/components/file-nav-dropdown.tsx @@ -7,7 +7,7 @@ import { SelectItem, SelectTrigger, SelectValue, -} from '@/components/ui/select' +} from '@//components/ui/select' import { PlusIcon, MinusIcon } from 'lucide-react' interface FileItem { diff --git a/web/components/header.tsx b/web/src/components/header.tsx similarity index 100% rename from web/components/header.tsx rename to web/src/components/header.tsx diff --git a/web/components/readme-renderer.tsx b/web/src/components/readme-renderer.tsx similarity index 99% rename from web/components/readme-renderer.tsx rename to web/src/components/readme-renderer.tsx index 7f3f513..c07980d 100644 --- a/web/components/readme-renderer.tsx +++ b/web/src/components/readme-renderer.tsx @@ -2,7 +2,7 @@ import ReactMarkdown from 'react-markdown' import remarkGfm from 'remark-gfm' import rehypeSlug from 'rehype-slug' import rehypeRaw from 'rehype-raw' -import { H1, H2, H3, H4, P } from '@/components/ui/typography' +import { H1, H2, H3, H4, P } from '@//components/ui/typography' import { CodeBlock } from './code-block' import type { Components } from 'react-markdown' diff --git a/web/components/step-card.tsx b/web/src/components/step-card.tsx similarity index 79% rename from web/components/step-card.tsx rename to web/src/components/step-card.tsx index 4ce8663..f3bd1a7 100644 --- a/web/components/step-card.tsx +++ b/web/src/components/step-card.tsx @@ -1,7 +1,7 @@ import Link from 'next/link' -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' -import { Badge } from '@/components/ui/badge' -import { Muted } from '@/components/ui/typography' +import { Card, CardContent, CardHeader, CardTitle } from '@//components/ui/card' +import { Badge } from '@//components/ui/badge' +import { Muted } from '@//components/ui/typography' import type { Step } from '@/lib/steps' interface StepCardProps { diff --git a/web/components/step-diff-selector.tsx b/web/src/components/step-diff-selector.tsx similarity index 88% rename from web/components/step-diff-selector.tsx rename to web/src/components/step-diff-selector.tsx index d8c7ccf..6083367 100644 --- a/web/components/step-diff-selector.tsx +++ b/web/src/components/step-diff-selector.tsx @@ -1,7 +1,7 @@ 'use client' import { useRouter } from 'next/navigation' -import { DiffSelector } from '@/components/diff-selector' +import { DiffSelector } from '@//components/diff-selector' import type { Step } from '@/lib/steps' interface StepDiffSelectorProps { diff --git a/web/components/theme-provider.tsx b/web/src/components/theme-provider.tsx similarity index 100% rename from web/components/theme-provider.tsx rename to web/src/components/theme-provider.tsx diff --git a/web/components/theme-toggle.tsx b/web/src/components/theme-toggle.tsx similarity index 93% rename from web/components/theme-toggle.tsx rename to web/src/components/theme-toggle.tsx index 077390c..24082c1 100644 --- a/web/components/theme-toggle.tsx +++ b/web/src/components/theme-toggle.tsx @@ -4,13 +4,13 @@ import * as React from 'react' import { Moon, Sun } from 'lucide-react' import { useTheme } from 'next-themes' -import { Button } from '@/components/ui/button' +import { Button } from '@//components/ui/button' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, -} from '@/components/ui/dropdown-menu' +} from '@//components/ui/dropdown-menu' export function ThemeToggle() { const { setTheme } = useTheme() diff --git a/web/components/ui/badge.tsx b/web/src/components/ui/badge.tsx similarity index 100% rename from web/components/ui/badge.tsx rename to web/src/components/ui/badge.tsx diff --git a/web/components/ui/breadcrumb.tsx b/web/src/components/ui/breadcrumb.tsx similarity index 100% rename from web/components/ui/breadcrumb.tsx rename to web/src/components/ui/breadcrumb.tsx diff --git a/web/components/ui/button.tsx b/web/src/components/ui/button.tsx similarity index 100% rename from web/components/ui/button.tsx rename to web/src/components/ui/button.tsx diff --git a/web/components/ui/card.tsx b/web/src/components/ui/card.tsx similarity index 100% rename from web/components/ui/card.tsx rename to web/src/components/ui/card.tsx diff --git a/web/components/ui/collapsible.tsx b/web/src/components/ui/collapsible.tsx similarity index 100% rename from web/components/ui/collapsible.tsx rename to web/src/components/ui/collapsible.tsx diff --git a/web/components/ui/dropdown-menu.tsx b/web/src/components/ui/dropdown-menu.tsx similarity index 100% rename from web/components/ui/dropdown-menu.tsx rename to web/src/components/ui/dropdown-menu.tsx diff --git a/web/components/ui/scroll-area.tsx b/web/src/components/ui/scroll-area.tsx similarity index 100% rename from web/components/ui/scroll-area.tsx rename to web/src/components/ui/scroll-area.tsx diff --git a/web/components/ui/select.tsx b/web/src/components/ui/select.tsx similarity index 100% rename from web/components/ui/select.tsx rename to web/src/components/ui/select.tsx diff --git a/web/components/ui/separator.tsx b/web/src/components/ui/separator.tsx similarity index 100% rename from web/components/ui/separator.tsx rename to web/src/components/ui/separator.tsx diff --git a/web/components/ui/tabs.tsx b/web/src/components/ui/tabs.tsx similarity index 100% rename from web/components/ui/tabs.tsx rename to web/src/components/ui/tabs.tsx diff --git a/web/components/ui/typography.tsx b/web/src/components/ui/typography.tsx similarity index 100% rename from web/components/ui/typography.tsx rename to web/src/components/ui/typography.tsx diff --git a/web/tsconfig.json b/web/tsconfig.json index 3a13f90..cf9c65d 100644 --- a/web/tsconfig.json +++ b/web/tsconfig.json @@ -19,7 +19,7 @@ } ], "paths": { - "@/*": ["./*"] + "@/*": ["./src/*"] } }, "include": [