Files
IdeA/frontend/src/shared/index.ts
Blomios ec941d1af6 fix(frontend): restaure le suivi automatique du scroll des fils de messages — hook partagé useThreadScrollController — #356 (QA verte)
Cause: la logique de suivi du bas de fil était dupliquée et ad-hoc dans chaque surface (scrollRef, followsLatestRef, showLatestButton dans CustomAgentChatView), et dérivait dans certains cas — le fil ne suivait plus les nouveaux messages.

Fix: nouveau hook partagé shared/lib/useThreadScrollController (resté collé au bas quand l'utilisateur est déjà en bas, position préservée pendant la consultation de l'historique, notice latest sinon) câblé dans CustomAgentChatView, ConversationViewer et TicketAssistantPanel.

QA verte: npm run typecheck exit 0; tests ciblés useThreadScrollController, CustomAgentChatView, ConversationViewer/useConversationThread et tickets verts; npm test 1400/1400 verts (137 fichiers); git diff --check.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-14 11:15:10 +02:00

61 lines
1.9 KiB
TypeScript

/**
* IdeA design system (LD) — public surface of the shared UI kit.
*
* Features import components and the `cn` helper from `@/shared`; the global
* theme (`styles/theme.css`) is imported once at the app entry point.
*/
export { cn } from "./lib/cn";
export type { ClassValue } from "./lib/cn";
export { useThreadScrollController } from "./lib/useThreadScrollController";
export type {
ThreadScrollController,
ThreadScrollNotice,
} from "./lib/useThreadScrollController";
export { Button } from "./ui/Button";
export type { ButtonProps, ButtonVariant, ButtonSize } from "./ui/Button";
export { IconButton } from "./ui/IconButton";
export type { IconButtonProps, IconButtonSize } from "./ui/IconButton";
export { Input } from "./ui/Input";
export type { InputProps } from "./ui/Input";
export { Field } from "./ui/Field";
export type { FieldProps } from "./ui/Field";
export { Panel } from "./ui/Panel";
export type { PanelProps } from "./ui/Panel";
export { Tabs } from "./ui/Tabs";
export type { TabsProps, TabItem } from "./ui/Tabs";
export { Toolbar } from "./ui/Toolbar";
export type { ToolbarProps } from "./ui/Toolbar";
export { Spinner } from "./ui/Spinner";
export type { SpinnerProps } from "./ui/Spinner";
export {
EntryTimestamp,
formatFullLocalTime,
formatShortLocalTime,
normalizeTimestamp,
} from "./ui/EntryTimestamp";
export { zIndex } from "./ui/zIndex";
export type { ZIndexLevel } from "./ui/zIndex";
export { FloatingWindow } from "./ui/FloatingWindow";
export type { FloatingWindowProps, FloatingWindowSize } from "./ui/FloatingWindow";
export { MenuBar } from "./ui/MenuBar";
export type { MenuBarProps, MenuBarMenu, MenuBarItem } from "./ui/MenuBar";
export { DockRegion } from "./ui/DockRegion";
export type { DockRegionProps, DockSide } from "./ui/DockRegion";
export { SmallDropdown } from "./ui/SmallDropdown";
export type { SmallDropdownProps, SmallDropdownOption } from "./ui/SmallDropdown";