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
}) => (
)
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 }) => (
)
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 = () => (
)