A web app to help you design things, local, offline, on device. In your browser.

TypeScript 53.1% JSON 45.6% CSS 0.9% Markdown 0.3% JavaScript 0.1%
page.tsx 71 lines (2 KB)
'use client';

import dynamic from 'next/dynamic';
import { Toolbar } from '@/components/toolbar/Toolbar';
import { SelectionToolbar } from '@/components/toolbar/SelectionToolbar';
import { Sidebar } from '@/components/sidebar/Sidebar';
import { PropertiesPanel } from '@/components/toolbar/PropertiesPanel';
import { useKeyboardShortcuts } from '@/lib/hooks/useKeyboardShortcuts';

// Dynamic import Canvas to avoid SSR issues with Konva
const Canvas = dynamic(() => import('@/components/canvas/Canvas').then((mod) => mod.Canvas), {
  ssr: false,
  loading: () => (
    <div className="flex-1 flex items-center justify-center bg-neutral-900">
      <div className="flex flex-col items-center gap-4">
        <div className="w-12 h-12 border-4 border-indigo-500/30 border-t-indigo-500 rounded-full animate-spin" />
        <p className="text-neutral-400 text-sm">Loading editor...</p>
      </div>
    </div>
  ),
});

export default function Home() {
  // Initialize keyboard shortcuts
  useKeyboardShortcuts();

  return (
    <main className="h-screen flex flex-col bg-neutral-950 text-white overflow-hidden">
      {/* Header */}
      <header className="h-14 bg-neutral-900 border-b border-neutral-800 flex items-center justify-between px-4">
        <div className="flex items-center gap-3">
          <div className="w-8 h-8 bg-gradient-to-br from-indigo-500 to-purple-600 rounded-lg flex items-center justify-center">
            <span className="text-white font-bold text-sm">V</span>
          </div>
          <div>
            <h1 className="text-sm font-semibold text-white">VIT Design</h1>
            <p className="text-xs text-neutral-500">App Screenshot Studio</p>
          </div>
        </div>

        <div className="flex items-center gap-4">
          <button className="px-4 py-1.5 rounded-lg text-sm text-neutral-400 hover:text-white hover:bg-neutral-800 transition-colors">
            Help
          </button>
          <button className="px-4 py-1.5 rounded-lg text-sm bg-indigo-500 hover:bg-indigo-600 text-white transition-colors">
            Export
          </button>
        </div>
      </header>

      {/* Toolbar */}
      <Toolbar />

      {/* Selection-specific toolbar (shows when text is selected) */}
      <SelectionToolbar />

      {/* Main content */}
      <div className="flex-1 flex overflow-hidden">
        {/* Left sidebar */}
        <Sidebar />

        {/* Canvas area */}
        <Canvas />

        {/* Right properties panel */}
        <PropertiesPanel />
      </div>
    </main>
  );
}

About

A web app to help you design things, local, offline, on device. In your browser.

0 stars
0 forks