import { ArrowUp, ChevronLeft, ChevronRight, Home, MessageSquare, NotebookText, Play, Plus, SquareCode, type LucideIcon, } from 'lucide-react' import type { ReactNode } from 'react' import { cn } from 'ui' type Section = 'home' | 'query' | 'notebook' | 'chat' const Line = ({ className }: { className?: string }) => (
) const Icon = ({ icon: IconComponent, className }: { icon: LucideIcon; className?: string }) => ( ) const SidebarRow = ({ icon, isActive = false, trailing, lineClassName = 'w-10', }: { icon: LucideIcon isActive?: boolean trailing?: ReactNode lineClassName?: string }) => (
{trailing}
) const Count = () =>
const SidebarHome = ({ section }: { section: Section }) => ( <>
} lineClassName="w-9" /> } lineClassName="w-12" /> } lineClassName="w-8" />
) const SidebarNotebooks = () => ( <>
) const Sidebar = ({ section }: { section: Section }) => (
{section === 'notebook' && }
{section === 'notebook' ? : }
) const TAB_ICONS: Record, LucideIcon> = { query: SquareCode, notebook: NotebookText, chat: MessageSquare, } const Tab = ({ icon, isActive = false }: { icon: LucideIcon; isActive?: boolean }) => (
) const TabBar = ({ section }: { section: Section }) => (
{section !== 'home' && }
) const ExplorerFrame = ({ section, children }: { section: Section; children: ReactNode }) => ( ) const SqlLines = ({ rows = 3 }: { rows?: number }) => { const widths = [ ['w-6', 'w-14'], ['w-5', 'w-10'], ['w-6', 'w-16'], ['w-4', 'w-8'], ] return (
{widths.slice(0, rows).map(([keyword, rest], index) => (
{index + 1}
))}
) } const ResultsGrid = ({ rows = 3, className }: { rows?: number; className?: string }) => (
{Array.from({ length: rows + 1 }).map((_, row) => (
{Array.from({ length: 4 }).map((_, col) => ( ))}
))}
) const BarChart = ({ className }: { className?: string }) => (
{[35, 55, 45, 70, 60, 85, 75, 95].map((height, index) => (
))}
) const RunButton = () => (
) const HomeContent = () => (
{[SquareCode, NotebookText].map((icon, index) => (
))}
{Array.from({ length: 3 }).map((_, index) => (
))}
) const QueryContent = () => (
) const MarkdownCell = ({ lines }: { lines: string[] }) => (
{lines.map((width, index) => ( ))}
) const NotebookContent = () => (
) const ChatContent = () => (
Ask a follow up question...
) export const WelcomeWireframe = () => ( ) export const RunSqlWireframe = () => ( ) export const NotebooksWireframe = () => ( ) export const ChatWireframe = () => ( )