multica/packages/ui
Naiyuan Qing 62267aaf19 refactor(ui): split Chat into focused components with skeleton loading
- Extract ConnectPrompt: self-contained connection code input
- Extract MessageList: pure display of messages with streaming support
- Add ChatSkeleton: skeleton placeholder shown during reconnection
- Chat component: three-state rendering (skeleton → connect → messages),
  keeps <main ref> always mounted so useScrollFade works correctly
- Remove hub-sidebar.tsx (dead code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:12:51 +08:00
..
src refactor(ui): split Chat into focused components with skeleton loading 2026-02-04 10:12:51 +08:00
components.json refactor(ui): reorganize components into ui/ subdirectory and share layout 2026-01-30 11:34:09 +08:00
package.json fix(web): suppress deviceId hydration mismatch warning 2026-01-30 22:04:57 +08:00
postcss.config.mjs feat(ui): create @multica/ui package skeleton 2026-01-30 11:34:05 +08:00
README.md feat(desktop): initialize electron app with routing and cleanup 2026-02-03 14:17:31 +08:00
tsconfig.json feat(ui): create @multica/ui package skeleton 2026-01-30 11:34:05 +08:00

@multica/ui

Shared UI component library. Shadcn + Tailwind CSS v4.

Usage

// UI components — subpath imports, no barrel
import { Button } from '@multica/ui/components/ui/button'
import { Card, CardContent } from '@multica/ui/components/ui/card'

// Feature components
import { ThemeProvider } from '@multica/ui/components/theme-provider'
import { Chat } from '@multica/ui/components/chat'
import { Markdown } from '@multica/ui/components/markdown'

// Hooks
import { useIsMobile } from '@multica/ui/hooks/use-mobile'
import { useAutoScroll } from '@multica/ui/hooks/use-auto-scroll'

// Utilities
import { cn } from '@multica/ui/lib/utils'

// Styles (app entry point)
import '@multica/ui/globals.css'

Adding Components

pnpm --filter @multica/ui dlx shadcn@latest add <component>