harebear-ui 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/admin/app-nav.d.ts +11 -1
- package/dist/components/admin/app-nav.js +26 -9
- package/dist/components/admin/checklist-editor.d.ts +20 -0
- package/dist/components/admin/checklist-editor.js +69 -0
- package/dist/components/admin/comment-thread.d.ts +26 -0
- package/dist/components/admin/comment-thread.js +68 -0
- package/dist/components/admin/copy-field.d.ts +3 -1
- package/dist/components/admin/copy-field.js +10 -5
- package/dist/components/admin/date-time-picker.js +1 -1
- package/dist/components/admin/markdown-editor.d.ts +2 -5
- package/dist/components/admin/markdown-editor.js +13 -9
- package/dist/components/admin/page-header.d.ts +3 -1
- package/dist/components/admin/page-header.js +17 -9
- package/dist/components/admin/page.d.ts +16 -0
- package/dist/components/admin/page.js +42 -0
- package/dist/components/admin/prompt-dialog.d.ts +19 -0
- package/dist/components/admin/prompt-dialog.js +83 -0
- package/dist/components/admin/settings.d.ts +4 -2
- package/dist/components/admin/settings.js +37 -30
- package/dist/components/admin/time-zone-picker.d.ts +12 -0
- package/dist/components/admin/time-zone-picker.js +31 -0
- package/dist/components/admin/user-menu.d.ts +3 -1
- package/dist/components/admin/user-menu.js +21 -10
- package/dist/components/ai/assistant.js +1 -1
- package/dist/components/ai/code-block.js +3 -3
- package/dist/components/ai/markdown.d.ts +13 -0
- package/dist/components/ai/markdown.js +41 -0
- package/dist/components/auth/auth.d.ts +41 -5
- package/dist/components/auth/auth.js +165 -155
- package/dist/components/data/day-strip.d.ts +6 -1
- package/dist/components/data/day-strip.js +15 -5
- package/dist/components/layout/collapse.js +1 -1
- package/dist/components/layout/text.d.ts +3 -3
- package/dist/components/layout/text.js +6 -1
- package/dist/components/ui/button.js +1 -1
- package/dist/components/ui/check-circle.js +1 -1
- package/dist/components/ui/code-block.js +2 -2
- package/dist/components/ui/combobox.js +1 -0
- package/dist/components/ui/input-group.js +1 -1
- package/dist/components/ui/input.js +1 -1
- package/dist/components/ui/sonner.d.ts +2 -2
- package/dist/components/ui/sonner.js +1 -1
- package/dist/components/ui/toggle.js +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.js +9 -3
- package/dist/lib/{date.js → internal/date.js} +1 -1
- package/dist/lib/{toast-clearance.js → internal/toast-clearance.js} +1 -1
- package/dist/styles.css +6 -1
- package/docs/COMPONENTS.md +150 -26
- package/docs/ROADMAP.md +1 -0
- package/llms.txt +7 -6
- package/package.json +3 -1
- package/skills/harebear-ui/SKILL.md +5 -4
package/dist/index.d.ts
CHANGED
|
@@ -55,7 +55,7 @@ import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHe
|
|
|
55
55
|
import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, useSidebarOptional } from "./components/ui/sidebar.js";
|
|
56
56
|
import { Skeleton } from "./components/ui/skeleton.js";
|
|
57
57
|
import { Slider } from "./components/ui/slider.js";
|
|
58
|
-
import { ToastUndoOptions, Toaster, toastUndo } from "./components/ui/sonner.js";
|
|
58
|
+
import { ToastUndoOptions, Toaster, toast, toastUndo } from "./components/ui/sonner.js";
|
|
59
59
|
import { Spinner } from "./components/ui/spinner.js";
|
|
60
60
|
import { Switch } from "./components/ui/switch.js";
|
|
61
61
|
import { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from "./components/ui/table.js";
|
|
@@ -72,7 +72,9 @@ import { AvatarUpload, AvatarUploadProps, cropImageToSquare } from "./components
|
|
|
72
72
|
import { Callout } from "./components/admin/callout.js";
|
|
73
73
|
import { CategoryColor, CategoryDot, CategoryDotProps, categoryBg } from "./components/admin/category.js";
|
|
74
74
|
import { Celebration, CelebrationProps, celebrate } from "./components/admin/celebration.js";
|
|
75
|
+
import { ChecklistEditor, ChecklistEditorProps, ChecklistItem } from "./components/admin/checklist-editor.js";
|
|
75
76
|
import { ColorSwatchPicker, ColorSwatchPickerProps } from "./components/admin/color-swatch-picker.js";
|
|
77
|
+
import { CommentThread, CommentThreadComment, CommentThreadProps } from "./components/admin/comment-thread.js";
|
|
76
78
|
import { ConfirmDialog, ConfirmDialogProps } from "./components/admin/confirm-dialog.js";
|
|
77
79
|
import { CopyField, CopyFieldProps } from "./components/admin/copy-field.js";
|
|
78
80
|
import { DateTimePicker, DateTimePickerProps, DateTimeValue } from "./components/admin/date-time-picker.js";
|
|
@@ -82,11 +84,14 @@ import { KeyValueGrid, KeyValueItem } from "./components/admin/key-value-grid.js
|
|
|
82
84
|
import { LinkTile, LinkTileProps } from "./components/admin/link-tile.js";
|
|
83
85
|
import { MarkdownEditor, MarkdownEditorProps } from "./components/admin/markdown-editor.js";
|
|
84
86
|
import { PageHeader, PageHeaderProps } from "./components/admin/page-header.js";
|
|
87
|
+
import { Page, PageProps, PageSection, PageSectionProps } from "./components/admin/page.js";
|
|
88
|
+
import { PromptDialog, PromptDialogProps } from "./components/admin/prompt-dialog.js";
|
|
85
89
|
import { SearchInput, SearchInputProps } from "./components/admin/search-input.js";
|
|
86
90
|
import { SettingsRow, SettingsRowProps, SettingsSection, SettingsSectionProps } from "./components/admin/settings.js";
|
|
87
91
|
import { SidebarCollapseButton, SidebarLayout, SidebarLayoutProps } from "./components/admin/sidebar-layout.js";
|
|
88
92
|
import { StatCard, StatCardProps } from "./components/admin/stat-card.js";
|
|
89
93
|
import { StatusBadge, StatusBadgeProps, StatusDot, StatusDotProps, StatusTone } from "./components/admin/status.js";
|
|
94
|
+
import { TimeZonePicker, TimeZonePickerProps } from "./components/admin/time-zone-picker.js";
|
|
90
95
|
import { Timeline, TimelineItem } from "./components/admin/timeline.js";
|
|
91
96
|
import { UsageMeter, UsageMeterProps } from "./components/admin/usage-meter.js";
|
|
92
97
|
import { AvatarStack, AvatarStackProps, MemberAvatar, MemberAvatarProps, UserChip, UserChipProps, VisibilityBadge, VisibilityBadgeProps, initials } from "./components/admin/user-chip.js";
|
|
@@ -115,14 +120,15 @@ import { AssistantAvatar, ChatMessage, ChatMessageProps, ChatThread, ChatThreadP
|
|
|
115
120
|
import { CodeSnippet, CodeSnippetProps, InlineCode, InlineCodeProps, Prose, ProseBlockquote } from "./components/ai/code-block.js";
|
|
116
121
|
import { Conversation, ConversationGroup, ConversationList, ConversationListProps, GroupByDateOptions, NewConversationButton, NewConversationButtonProps, formatWhen, groupByDate } from "./components/ai/conversation-list.js";
|
|
117
122
|
import { DictationButton, DictationButtonProps, SpeechSource, SpeechSourceHandlers, UseDictationOptions, browserSpeechSource, useDictation } from "./components/ai/dictation.js";
|
|
123
|
+
import { Markdown, MarkdownProps } from "./components/ai/markdown.js";
|
|
118
124
|
import { ModelOption, ModelPicker, ModelPickerProps } from "./components/ai/model-picker.js";
|
|
119
125
|
import { PromptInput, PromptInputChip, PromptInputChipProps, PromptInputProps, PromptInputSelect, PromptInputSelectOption, PromptInputSelectProps } from "./components/ai/prompt-input.js";
|
|
120
126
|
import { ToolGroup, ToolGroupProps, ToolStatus, ToolStatusIcon, ToolStep, ToolStepProps } from "./components/ai/tool-steps.js";
|
|
121
|
-
import { AppleIcon, AuthLayout, AuthLayoutProps, AuthProvider, GitHubIcon, GoogleIcon, LoginForm, LoginFormProps, LoginValues, SignupForm, SignupFormProps, SignupValues } from "./components/auth/auth.js";
|
|
127
|
+
import { AppleIcon, AuthForm, AuthFormProps, AuthLayout, AuthLayoutProps, AuthProvider, GitHubIcon, GoogleIcon, LoginForm, LoginFormProps, LoginValues, NewPasswordForm, NewPasswordFormProps, SignupForm, SignupFormProps, SignupValues } from "./components/auth/auth.js";
|
|
122
128
|
import { useCopyToClipboard } from "./hooks/use-copy-to-clipboard.js";
|
|
123
129
|
import { useHighlightedCode } from "./hooks/use-highlighted-code.js";
|
|
124
130
|
import { useMediaQuery } from "./hooks/use-media-query.js";
|
|
125
131
|
import { useIsMobile } from "./hooks/use-mobile.js";
|
|
126
132
|
import { highlightCode, loadHighlighter } from "./lib/highlighter.js";
|
|
127
133
|
import { cn } from "./lib/utils.js";
|
|
128
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionReceipt, type ActionReceiptProps, ActivityFeed, type ActivityItem, AgendaRow, type AgendaRowProps, type AgendaRowWho, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppBrand, type AppBrandProps, AppNav, type AppNavAction, type AppNavGroup, type AppNavItem, type AppNavPlace, type AppNavProps, type AppNavSection, AppShell, type AppShellProps, AppleIcon, ApprovalCard, type ApprovalCardProps, ApprovalResult, type ApprovalResultProps, AskBox, type AskBoxProps, AspectRatio, AssistantAvatar, type AssistantContextValue, AssistantDock, type AssistantDockProps, type AssistantMessage, type AssistantPage, AssistantProvider, type AssistantProviderProps, type AssistantSendContext, type AssistantSendOptions, Attachment, AttachmentAction, AttachmentActions, AttachmentContent, AttachmentDescription, AttachmentGroup, AttachmentMedia, AttachmentTitle, AttachmentTrigger, AuthLayout, type AuthLayoutProps, type AuthProvider, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AvatarStack, type AvatarStackProps, AvatarUpload, type AvatarUploadProps, Badge, BarList, type BarListItem, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Bubble, BubbleContent, BubbleGroup, BubbleReactions, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Callout, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type CategoryColor, CategoryDot, type CategoryDotProps, Celebration, type CelebrationProps, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatMessage, type ChatMessageProps, ChatPanel, type ChatPanelProps, ChatShell, type ChatShellProps, ChatThread, type ChatThreadProps, CheckCircle, type CheckCircleProps, Checkbox, CodeBlock, CodeBlockActions, CodeBlockContent, CodeBlockCopyButton, CodeBlockFooter, CodeBlockHeader, CodeBlockLine, CodeBlockTitle, CodeSnippet, type CodeSnippetProps, Collapse, type CollapseProps, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorSwatchPicker, type ColorSwatchPickerProps, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type Conversation, type ConversationGroup, ConversationList, type ConversationListProps, CopyField, type CopyFieldProps, DataTable, type DataTableColumnDef, type DataTableFeatures, type DataTableProps, DateTimePicker, type DateTimePickerProps, type DateTimeValue, DayStrip, type DayStripDay, type DayStripProps, DetailSheet, type DetailSheetProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DictationButton, type DictationButtonProps, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FocusLayout, type FocusLayoutProps, GitHubIcon, GoogleIcon, Grid, type GridCols, type GridProps, type GroupByDateOptions, Heading, type HeadingProps, HoverCard, HoverCardContent, HoverCardTrigger, InlineCode, type InlineCodeProps, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, KeyValueGrid, type KeyValueItem, Label, LinkTile, type LinkTileProps, LoginForm, type LoginFormProps, type LoginValues, MarkdownEditor, type MarkdownEditorProps, Marker, MarkerContent, MarkerIcon, MediaItem, type MediaItemProps, MemberAvatar, type MemberAvatarProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Message, MessageActions, type MessageActionsProps, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader, MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport, Metric, MetricGroup, type MetricProps, type ModelOption, ModelPicker, type ModelPickerProps, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NewConversationButton, type NewConversationButtonProps, PageHeader, type PageHeaderProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, type PasswordInputProps, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, PromptInput, PromptInputChip, type PromptInputChipProps, type PromptInputProps, PromptInputSelect, type PromptInputSelectOption, type PromptInputSelectProps, Prose, ProseBlockquote, Questionnaire, QuestionnaireActions, QuestionnaireChoice, QuestionnaireChoiceDescription, QuestionnaireChoices, QuestionnaireDescription, QuestionnaireError, QuestionnaireInput, QuestionnaireItem, QuestionnaireNext, QuestionnairePrevious, QuestionnaireProgress, QuestionnaireSkip, QuestionnaireSubmit, QuestionnaireTitle, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, type ResolvedThemeMode, type ResponsiveGridCols, Row, type RowProps, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, SectionedList, type SectionedListItem, type SectionedListProps, type SectionedListSection, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsRow, type SettingsRowProps, SettingsSection, type SettingsSectionProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, ShowMore, type ShowMoreProps, Sidebar, SidebarCollapseButton, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, type SidebarLayoutProps, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignupForm, type SignupFormProps, type SignupValues, Skeleton, Slider, Sparkline, type SparklineProps, type SpeechSource, type SpeechSourceHandlers, Spinner, Stack, type StackAlign, type StackJustify, type StackProps, type StackSpace, StatCard, type StatCardProps, StatusBadge, type StatusBadgeProps, type StatusBarDatum, StatusBars, type StatusBarsProps, StatusDot, type StatusDotProps, type StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TaskRow, type TaskRowAssignee, type TaskRowProps, Text, type TextProps, type TextTone, Textarea, type ThemeContextValue, type ThemeMode, ThemeProvider, type ThemeProviderProps, ThemeScript, ThemeToggle, Timeline, type TimelineItem, type ToastUndoOptions, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToolCall, type ToolCallProps, ToolGroup, type ToolGroupProps, type ToolStatus, ToolStatusIcon, ToolStep, type ToolStepProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Trace, TraceCollapsible, TraceCollapsibleContent, TraceCollapsibleTrigger, TraceDescription, TraceIcon, TraceLine, TraceTitle, TrendChart, type TrendChartProps, TrendLegend, type TrendSeries, TypingIndicator, type TypingIndicatorProps, UsageMeter, type UsageMeterProps, type UseDictationOptions, UserChip, type UserChipProps, UserMenu, type UserMenuProps, VisibilityBadge, type VisibilityBadgeProps, badgeVariants, browserSpeechSource, buttonGroupVariants, buttonVariants, categoryBg, celebrate, cn, createDataTableColumnHelper, cropImageToSquare, dataTableFeatures, formatWhen, groupByDate, highlightCode, initials, loadHighlighter, markerVariants, navigationMenuTriggerStyle, smoothPath, tabsListVariants, toastUndo, toggleVariants, useAssistant, useAssistantPage, useCarousel, useComboboxAnchor, useCopyToClipboard, useDictation, useDirection, useHighlightedCode, useIsMobile, useMediaQuery, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility, useSidebar, useSidebarOptional, useTheme };
|
|
134
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionReceipt, type ActionReceiptProps, ActivityFeed, type ActivityItem, AgendaRow, type AgendaRowProps, type AgendaRowWho, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppBrand, type AppBrandProps, AppNav, type AppNavAction, type AppNavGroup, type AppNavItem, type AppNavPlace, type AppNavProps, type AppNavSection, AppShell, type AppShellProps, AppleIcon, ApprovalCard, type ApprovalCardProps, ApprovalResult, type ApprovalResultProps, AskBox, type AskBoxProps, AspectRatio, AssistantAvatar, type AssistantContextValue, AssistantDock, type AssistantDockProps, type AssistantMessage, type AssistantPage, AssistantProvider, type AssistantProviderProps, type AssistantSendContext, type AssistantSendOptions, Attachment, AttachmentAction, AttachmentActions, AttachmentContent, AttachmentDescription, AttachmentGroup, AttachmentMedia, AttachmentTitle, AttachmentTrigger, AuthForm, type AuthFormProps, AuthLayout, type AuthLayoutProps, type AuthProvider, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AvatarStack, type AvatarStackProps, AvatarUpload, type AvatarUploadProps, Badge, BarList, type BarListItem, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Bubble, BubbleContent, BubbleGroup, BubbleReactions, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Callout, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type CategoryColor, CategoryDot, type CategoryDotProps, Celebration, type CelebrationProps, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatMessage, type ChatMessageProps, ChatPanel, type ChatPanelProps, ChatShell, type ChatShellProps, ChatThread, type ChatThreadProps, CheckCircle, type CheckCircleProps, Checkbox, ChecklistEditor, type ChecklistEditorProps, type ChecklistItem, CodeBlock, CodeBlockActions, CodeBlockContent, CodeBlockCopyButton, CodeBlockFooter, CodeBlockHeader, CodeBlockLine, CodeBlockTitle, CodeSnippet, type CodeSnippetProps, Collapse, type CollapseProps, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorSwatchPicker, type ColorSwatchPickerProps, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CommentThread, type CommentThreadComment, type CommentThreadProps, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type Conversation, type ConversationGroup, ConversationList, type ConversationListProps, CopyField, type CopyFieldProps, DataTable, type DataTableColumnDef, type DataTableFeatures, type DataTableProps, DateTimePicker, type DateTimePickerProps, type DateTimeValue, DayStrip, type DayStripDay, type DayStripProps, DetailSheet, type DetailSheetProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DictationButton, type DictationButtonProps, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FocusLayout, type FocusLayoutProps, GitHubIcon, GoogleIcon, Grid, type GridCols, type GridProps, type GroupByDateOptions, Heading, type HeadingProps, HoverCard, HoverCardContent, HoverCardTrigger, InlineCode, type InlineCodeProps, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, KeyValueGrid, type KeyValueItem, Label, LinkTile, type LinkTileProps, LoginForm, type LoginFormProps, type LoginValues, Markdown, MarkdownEditor, type MarkdownEditorProps, type MarkdownProps, Marker, MarkerContent, MarkerIcon, MediaItem, type MediaItemProps, MemberAvatar, type MemberAvatarProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Message, MessageActions, type MessageActionsProps, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader, MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport, Metric, MetricGroup, type MetricProps, type ModelOption, ModelPicker, type ModelPickerProps, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NewConversationButton, type NewConversationButtonProps, NewPasswordForm, type NewPasswordFormProps, Page, PageHeader, type PageHeaderProps, type PageProps, PageSection, type PageSectionProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, type PasswordInputProps, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, PromptDialog, type PromptDialogProps, PromptInput, PromptInputChip, type PromptInputChipProps, type PromptInputProps, PromptInputSelect, type PromptInputSelectOption, type PromptInputSelectProps, Prose, ProseBlockquote, Questionnaire, QuestionnaireActions, QuestionnaireChoice, QuestionnaireChoiceDescription, QuestionnaireChoices, QuestionnaireDescription, QuestionnaireError, QuestionnaireInput, QuestionnaireItem, QuestionnaireNext, QuestionnairePrevious, QuestionnaireProgress, QuestionnaireSkip, QuestionnaireSubmit, QuestionnaireTitle, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, type ResolvedThemeMode, type ResponsiveGridCols, Row, type RowProps, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, SectionedList, type SectionedListItem, type SectionedListProps, type SectionedListSection, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsRow, type SettingsRowProps, SettingsSection, type SettingsSectionProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, ShowMore, type ShowMoreProps, Sidebar, SidebarCollapseButton, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, type SidebarLayoutProps, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignupForm, type SignupFormProps, type SignupValues, Skeleton, Slider, Sparkline, type SparklineProps, type SpeechSource, type SpeechSourceHandlers, Spinner, Stack, type StackAlign, type StackJustify, type StackProps, type StackSpace, StatCard, type StatCardProps, StatusBadge, type StatusBadgeProps, type StatusBarDatum, StatusBars, type StatusBarsProps, StatusDot, type StatusDotProps, type StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TaskRow, type TaskRowAssignee, type TaskRowProps, Text, type TextProps, type TextTone, Textarea, type ThemeContextValue, type ThemeMode, ThemeProvider, type ThemeProviderProps, ThemeScript, ThemeToggle, TimeZonePicker, type TimeZonePickerProps, Timeline, type TimelineItem, type ToastUndoOptions, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToolCall, type ToolCallProps, ToolGroup, type ToolGroupProps, type ToolStatus, ToolStatusIcon, ToolStep, type ToolStepProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Trace, TraceCollapsible, TraceCollapsibleContent, TraceCollapsibleTrigger, TraceDescription, TraceIcon, TraceLine, TraceTitle, TrendChart, type TrendChartProps, TrendLegend, type TrendSeries, TypingIndicator, type TypingIndicatorProps, UsageMeter, type UsageMeterProps, type UseDictationOptions, UserChip, type UserChipProps, UserMenu, type UserMenuProps, VisibilityBadge, type VisibilityBadgeProps, badgeVariants, browserSpeechSource, buttonGroupVariants, buttonVariants, categoryBg, celebrate, cn, createDataTableColumnHelper, cropImageToSquare, dataTableFeatures, formatWhen, groupByDate, highlightCode, initials, loadHighlighter, markerVariants, navigationMenuTriggerStyle, smoothPath, tabsListVariants, toast, toastUndo, toggleVariants, useAssistant, useAssistantPage, useCarousel, useComboboxAnchor, useCopyToClipboard, useDictation, useDirection, useHighlightedCode, useIsMobile, useMediaQuery, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility, useSidebar, useSidebarOptional, useTheme };
|
package/dist/index.js
CHANGED
|
@@ -55,7 +55,7 @@ import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHe
|
|
|
55
55
|
import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, useSidebarOptional } from "./components/ui/sidebar.js";
|
|
56
56
|
import { Skeleton } from "./components/ui/skeleton.js";
|
|
57
57
|
import { Slider } from "./components/ui/slider.js";
|
|
58
|
-
import { Toaster, toastUndo } from "./components/ui/sonner.js";
|
|
58
|
+
import { Toaster, toast, toastUndo } from "./components/ui/sonner.js";
|
|
59
59
|
import { Spinner } from "./components/ui/spinner.js";
|
|
60
60
|
import { Switch } from "./components/ui/switch.js";
|
|
61
61
|
import { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from "./components/ui/table.js";
|
|
@@ -72,7 +72,9 @@ import { AvatarUpload, cropImageToSquare } from "./components/admin/avatar-uploa
|
|
|
72
72
|
import { Callout } from "./components/admin/callout.js";
|
|
73
73
|
import { CategoryDot, categoryBg } from "./components/admin/category.js";
|
|
74
74
|
import { Celebration, celebrate } from "./components/admin/celebration.js";
|
|
75
|
+
import { ChecklistEditor } from "./components/admin/checklist-editor.js";
|
|
75
76
|
import { ColorSwatchPicker } from "./components/admin/color-swatch-picker.js";
|
|
77
|
+
import { CommentThread } from "./components/admin/comment-thread.js";
|
|
76
78
|
import { ConfirmDialog } from "./components/admin/confirm-dialog.js";
|
|
77
79
|
import { CopyField } from "./components/admin/copy-field.js";
|
|
78
80
|
import { DateTimePicker } from "./components/admin/date-time-picker.js";
|
|
@@ -82,11 +84,14 @@ import { KeyValueGrid } from "./components/admin/key-value-grid.js";
|
|
|
82
84
|
import { LinkTile } from "./components/admin/link-tile.js";
|
|
83
85
|
import { MarkdownEditor } from "./components/admin/markdown-editor.js";
|
|
84
86
|
import { PageHeader } from "./components/admin/page-header.js";
|
|
87
|
+
import { Page, PageSection } from "./components/admin/page.js";
|
|
88
|
+
import { PromptDialog } from "./components/admin/prompt-dialog.js";
|
|
85
89
|
import { SearchInput } from "./components/admin/search-input.js";
|
|
86
90
|
import { SettingsRow, SettingsSection } from "./components/admin/settings.js";
|
|
87
91
|
import { SidebarCollapseButton, SidebarLayout } from "./components/admin/sidebar-layout.js";
|
|
88
92
|
import { StatCard } from "./components/admin/stat-card.js";
|
|
89
93
|
import { StatusBadge, StatusDot } from "./components/admin/status.js";
|
|
94
|
+
import { TimeZonePicker } from "./components/admin/time-zone-picker.js";
|
|
90
95
|
import { Timeline } from "./components/admin/timeline.js";
|
|
91
96
|
import { UsageMeter } from "./components/admin/usage-meter.js";
|
|
92
97
|
import { AvatarStack, MemberAvatar, UserChip, VisibilityBadge, initials } from "./components/admin/user-chip.js";
|
|
@@ -115,14 +120,15 @@ import { AssistantAvatar, ChatMessage, ChatThread, MessageActions, ToolCall, Typ
|
|
|
115
120
|
import { CodeSnippet, InlineCode, Prose, ProseBlockquote } from "./components/ai/code-block.js";
|
|
116
121
|
import { ConversationList, NewConversationButton, formatWhen, groupByDate } from "./components/ai/conversation-list.js";
|
|
117
122
|
import { DictationButton, browserSpeechSource, useDictation } from "./components/ai/dictation.js";
|
|
123
|
+
import { Markdown } from "./components/ai/markdown.js";
|
|
118
124
|
import { ModelPicker } from "./components/ai/model-picker.js";
|
|
119
125
|
import { PromptInput, PromptInputChip, PromptInputSelect } from "./components/ai/prompt-input.js";
|
|
120
126
|
import { ToolGroup, ToolStatusIcon, ToolStep } from "./components/ai/tool-steps.js";
|
|
121
|
-
import { AppleIcon, AuthLayout, GitHubIcon, GoogleIcon, LoginForm, SignupForm } from "./components/auth/auth.js";
|
|
127
|
+
import { AppleIcon, AuthForm, AuthLayout, GitHubIcon, GoogleIcon, LoginForm, NewPasswordForm, SignupForm } from "./components/auth/auth.js";
|
|
122
128
|
import { useCopyToClipboard } from "./hooks/use-copy-to-clipboard.js";
|
|
123
129
|
import { useHighlightedCode } from "./hooks/use-highlighted-code.js";
|
|
124
130
|
import { useMediaQuery } from "./hooks/use-media-query.js";
|
|
125
131
|
import { useIsMobile } from "./hooks/use-mobile.js";
|
|
126
132
|
import { highlightCode, loadHighlighter } from "./lib/highlighter.js";
|
|
127
133
|
import { cn } from "./lib/utils.js";
|
|
128
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionReceipt, ActivityFeed, AgendaRow, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppBrand, AppNav, AppShell, AppleIcon, ApprovalCard, ApprovalResult, AskBox, AspectRatio, AssistantAvatar, AssistantDock, AssistantProvider, Attachment, AttachmentAction, AttachmentActions, AttachmentContent, AttachmentDescription, AttachmentGroup, AttachmentMedia, AttachmentTitle, AttachmentTrigger, AuthLayout, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AvatarStack, AvatarUpload, Badge, BarList, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Bubble, BubbleContent, BubbleGroup, BubbleReactions, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Callout, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CategoryDot, Celebration, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatMessage, ChatPanel, ChatShell, ChatThread, CheckCircle, Checkbox, CodeBlock, CodeBlockActions, CodeBlockContent, CodeBlockCopyButton, CodeBlockFooter, CodeBlockHeader, CodeBlockLine, CodeBlockTitle, CodeSnippet, Collapse, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorSwatchPicker, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ConversationList, CopyField, DataTable, DateTimePicker, DayStrip, DetailSheet, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DictationButton, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FocusLayout, GitHubIcon, GoogleIcon, Grid, Heading, HoverCard, HoverCardContent, HoverCardTrigger, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, KeyValueGrid, Label, LinkTile, LoginForm, MarkdownEditor, Marker, MarkerContent, MarkerIcon, MediaItem, MemberAvatar, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Message, MessageActions, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader, MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport, Metric, MetricGroup, ModelPicker, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NewConversationButton, PageHeader, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, PromptInput, PromptInputChip, PromptInputSelect, Prose, ProseBlockquote, Questionnaire, QuestionnaireActions, QuestionnaireChoice, QuestionnaireChoiceDescription, QuestionnaireChoices, QuestionnaireDescription, QuestionnaireError, QuestionnaireInput, QuestionnaireItem, QuestionnaireNext, QuestionnairePrevious, QuestionnaireProgress, QuestionnaireSkip, QuestionnaireSubmit, QuestionnaireTitle, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, Row, ScrollArea, ScrollBar, SearchInput, SectionedList, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsRow, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, ShowMore, Sidebar, SidebarCollapseButton, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignupForm, Skeleton, Slider, Sparkline, Spinner, Stack, StatCard, StatusBadge, StatusBars, StatusDot, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TaskRow, Text, Textarea, ThemeProvider, ThemeScript, ThemeToggle, Timeline, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToolCall, ToolGroup, ToolStatusIcon, ToolStep, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Trace, TraceCollapsible, TraceCollapsibleContent, TraceCollapsibleTrigger, TraceDescription, TraceIcon, TraceLine, TraceTitle, TrendChart, TrendLegend, TypingIndicator, UsageMeter, UserChip, UserMenu, VisibilityBadge, badgeVariants, browserSpeechSource, buttonGroupVariants, buttonVariants, categoryBg, celebrate, cn, createDataTableColumnHelper, cropImageToSquare, dataTableFeatures, formatWhen, groupByDate, highlightCode, initials, loadHighlighter, markerVariants, navigationMenuTriggerStyle, smoothPath, tabsListVariants, toastUndo, toggleVariants, useAssistant, useAssistantPage, useCarousel, useComboboxAnchor, useCopyToClipboard, useDictation, useDirection, useHighlightedCode, useIsMobile, useMediaQuery, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility, useSidebar, useSidebarOptional, useTheme };
|
|
134
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionReceipt, ActivityFeed, AgendaRow, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppBrand, AppNav, AppShell, AppleIcon, ApprovalCard, ApprovalResult, AskBox, AspectRatio, AssistantAvatar, AssistantDock, AssistantProvider, Attachment, AttachmentAction, AttachmentActions, AttachmentContent, AttachmentDescription, AttachmentGroup, AttachmentMedia, AttachmentTitle, AttachmentTrigger, AuthForm, AuthLayout, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AvatarStack, AvatarUpload, Badge, BarList, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Bubble, BubbleContent, BubbleGroup, BubbleReactions, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Callout, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CategoryDot, Celebration, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatMessage, ChatPanel, ChatShell, ChatThread, CheckCircle, Checkbox, ChecklistEditor, CodeBlock, CodeBlockActions, CodeBlockContent, CodeBlockCopyButton, CodeBlockFooter, CodeBlockHeader, CodeBlockLine, CodeBlockTitle, CodeSnippet, Collapse, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorSwatchPicker, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CommentThread, ConfirmDialog, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ConversationList, CopyField, DataTable, DateTimePicker, DayStrip, DetailSheet, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DictationButton, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FocusLayout, GitHubIcon, GoogleIcon, Grid, Heading, HoverCard, HoverCardContent, HoverCardTrigger, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, KeyValueGrid, Label, LinkTile, LoginForm, Markdown, MarkdownEditor, Marker, MarkerContent, MarkerIcon, MediaItem, MemberAvatar, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Message, MessageActions, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader, MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport, Metric, MetricGroup, ModelPicker, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NewConversationButton, NewPasswordForm, Page, PageHeader, PageSection, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, PromptDialog, PromptInput, PromptInputChip, PromptInputSelect, Prose, ProseBlockquote, Questionnaire, QuestionnaireActions, QuestionnaireChoice, QuestionnaireChoiceDescription, QuestionnaireChoices, QuestionnaireDescription, QuestionnaireError, QuestionnaireInput, QuestionnaireItem, QuestionnaireNext, QuestionnairePrevious, QuestionnaireProgress, QuestionnaireSkip, QuestionnaireSubmit, QuestionnaireTitle, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, Row, ScrollArea, ScrollBar, SearchInput, SectionedList, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsRow, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, ShowMore, Sidebar, SidebarCollapseButton, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignupForm, Skeleton, Slider, Sparkline, Spinner, Stack, StatCard, StatusBadge, StatusBars, StatusDot, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TaskRow, Text, Textarea, ThemeProvider, ThemeScript, ThemeToggle, TimeZonePicker, Timeline, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToolCall, ToolGroup, ToolStatusIcon, ToolStep, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Trace, TraceCollapsible, TraceCollapsibleContent, TraceCollapsibleTrigger, TraceDescription, TraceIcon, TraceLine, TraceTitle, TrendChart, TrendLegend, TypingIndicator, UsageMeter, UserChip, UserMenu, VisibilityBadge, badgeVariants, browserSpeechSource, buttonGroupVariants, buttonVariants, categoryBg, celebrate, cn, createDataTableColumnHelper, cropImageToSquare, dataTableFeatures, formatWhen, groupByDate, highlightCode, initials, loadHighlighter, markerVariants, navigationMenuTriggerStyle, smoothPath, tabsListVariants, toast, toastUndo, toggleVariants, useAssistant, useAssistantPage, useCarousel, useComboboxAnchor, useCopyToClipboard, useDictation, useDirection, useHighlightedCode, useIsMobile, useMediaQuery, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility, useSidebar, useSidebarOptional, useTheme };
|
package/dist/styles.css
CHANGED
|
@@ -282,6 +282,11 @@
|
|
|
282
282
|
.animate-listening {
|
|
283
283
|
animation: none;
|
|
284
284
|
}
|
|
285
|
+
/* tw-animate enter/exit on dialogs, menus, popovers and sheets (any variant prefix). Unlayered, so it wins. */
|
|
286
|
+
[class*="animate-in"],
|
|
287
|
+
[class*="animate-out"] {
|
|
288
|
+
animation: none;
|
|
289
|
+
}
|
|
285
290
|
.focus-box {
|
|
286
291
|
transition: none;
|
|
287
292
|
}
|
|
@@ -312,7 +317,7 @@
|
|
|
312
317
|
}
|
|
313
318
|
|
|
314
319
|
/* Toasts clear floating controls. AppNav (tab bar, action button) and AssistantDock (launcher) set --hb-toast-* on
|
|
315
|
-
<html> while mounted (src/lib/toast-clearance.ts); this adds them to Sonner's bottom offset. Unlayered and
|
|
320
|
+
<html> while mounted (src/lib/internal/toast-clearance.ts); this adds them to Sonner's bottom offset. Unlayered and
|
|
316
321
|
!important because Sonner injects its own unlayered rule at runtime. Breakpoints: AppNav's tab bar shows under
|
|
317
322
|
768px; Sonner switches to full-width mobile toasts under 600px. */
|
|
318
323
|
[data-sonner-toaster][data-y-position="bottom"] {
|
package/docs/COMPONENTS.md
CHANGED
|
@@ -15,6 +15,7 @@ Full working screens that combine these live in the repo under `playground/scree
|
|
|
15
15
|
- **Compose, don't fork.** Every component accepts `className` (merged with `cn`, later classes win). Reach for a primitive before writing a new component.
|
|
16
16
|
- **Icons are lucide-react elements.** Pass `<SearchIcon />`, not the component. Buttons size icons automatically.
|
|
17
17
|
- **Status uses tones**, not colors: `"success" | "warning" | "danger" | "info" | "neutral"`.
|
|
18
|
+
- **Touch targets are built in.** Under `pointer: coarse`, `Button` (every size) and `Toggle`/`ToggleGroupItem` get a 44px hit area (an invisible `::after`, which an `overflow-hidden` ancestor or a later sibling clips: in such a spot, size the button itself, e.g. `pointer-coarse:size-11`, as the `CodeBlock` and `CodeSnippet` copy buttons do) and `Input`/`InputGroup` grow to 44px.
|
|
18
19
|
|
|
19
20
|
## Agent-first apps
|
|
20
21
|
|
|
@@ -27,7 +28,7 @@ A household or personal app where an assistant sits on every page and safe actio
|
|
|
27
28
|
<AppNav
|
|
28
29
|
brand={<AppBrand name="Homeclub" icon={<HouseIcon />} />}
|
|
29
30
|
places={[{ label: "Today", icon: <SunIcon />, href: "/", active: true, count: 3 }, ...]}
|
|
30
|
-
group={{ label: "Lists", items: lists, onAdd: newList, addLabel: "New list" }}
|
|
31
|
+
group={{ label: "Lists", href: "/lists", items: lists, onAdd: newList, addLabel: "New list" }}
|
|
31
32
|
action={{ label: "New to-do", icon: <PlusIcon />, onSelect: openQuickAdd }}
|
|
32
33
|
footer={<UserMenu name={user.name} onSignOut={signOut} />}
|
|
33
34
|
>
|
|
@@ -40,8 +41,10 @@ A household or personal app where an assistant sits on every page and safe actio
|
|
|
40
41
|
</ThemeProvider>
|
|
41
42
|
```
|
|
42
43
|
|
|
44
|
+
- Pages: `Page` (the column) with a `PageHeader` (h1; `UserMenu compact className="md:hidden"` in `actions`, hidden from md up, since the sidebar footer is hidden on phones) and `PageSection`s (h2 regions). A chat page sets `fill` on `AppNav`.
|
|
43
45
|
- Lists: `SectionedList` (`TaskRow` rows); when the agent or a bulk action changes data, confirm with `toastUndo` and set `lingerMs` to its window so a ticked row stays struck through for about as long as Undo shows.
|
|
44
|
-
- A week agenda: `DayStrip` above one `SectionedList` with a section per day (`empty` keeps empty days) and `AgendaRow` rows from `renderItem`.
|
|
46
|
+
- A week agenda: `DayStrip sticky` above one `SectionedList` with a section per day (`empty` keeps empty days) and `AgendaRow` rows from `renderItem`.
|
|
47
|
+
- A record's details (`DetailSheet`): `ChecklistEditor` for steps, `CommentThread` for comments, `MarkdownEditor` for notes.
|
|
45
48
|
- In the assistant thread, each action it took is an `ActionReceipt` with Undo (append it from `onSend`).
|
|
46
49
|
- A page with its own ask box (Today) answers under it: `AskBox` with `reply` and `pending` from `useAssistant()`, `onStop={stop}`, and `send(text, { open: false })`.
|
|
47
50
|
- Settings and setup flows leave the frame: `FocusLayout` around `SettingsSection`s of `SettingsRow`s.
|
|
@@ -89,9 +92,9 @@ Every component in the shadcn registry is included. (shadcn's `form` item is an
|
|
|
89
92
|
| Carousel | `Carousel`, `CarouselContent`, `CarouselItem`, `CarouselPrevious`, `CarouselNext`, `useCarousel`, type `CarouselApi` | embla. |
|
|
90
93
|
| Chart | `ChartContainer`, `ChartTooltip`, `ChartTooltipContent`, `ChartLegend`, `ChartLegendContent`, `ChartStyle` | Recharts wrappers. Prefer `TrendChart` for line/area; use these for custom charts. |
|
|
91
94
|
| Checkbox | `Checkbox` | |
|
|
92
|
-
| Check circle | `CheckCircle` | harebear. 24px round checkbox for to-do rows (44px touch target), pops when ticked. `tone="important"` tints it; pair with a word. Name it with `aria-labelledby` the row title.
|
|
95
|
+
| Check circle | `CheckCircle` | harebear. 24px round checkbox for to-do rows (44px touch target), pops when ticked (no pop or fade under reduced motion). Focus shows a solid primary outline whatever the `tone`. `tone="important"` tints it; pair with a word. Name it with `aria-labelledby` the row title. |
|
|
93
96
|
| Collapsible | `Collapsible`, `CollapsibleTrigger`, `CollapsibleContent` | |
|
|
94
|
-
| Combobox | `Combobox`, `ComboboxInput`, `ComboboxContent`, `ComboboxList`, `ComboboxItem`, `ComboboxGroup`, `ComboboxLabel`, `ComboboxCollection`, `ComboboxEmpty`, `ComboboxSeparator`, `ComboboxChips`, `ComboboxChip`, `ComboboxChipsInput`, `ComboboxTrigger`, `ComboboxValue`, `useComboboxAnchor` | Searchable select (Base UI). `<Combobox items={list}>` + `<ComboboxList>{(item) => <ComboboxItem value={item}>…}</ComboboxList>`. Chips for multi-select.
|
|
97
|
+
| Combobox | `Combobox`, `ComboboxInput`, `ComboboxContent`, `ComboboxList`, `ComboboxItem`, `ComboboxGroup`, `ComboboxLabel`, `ComboboxCollection`, `ComboboxEmpty`, `ComboboxSeparator`, `ComboboxChips`, `ComboboxChip`, `ComboboxChipsInput`, `ComboboxTrigger`, `ComboboxValue`, `useComboboxAnchor` | Searchable select (Base UI). `<Combobox items={list}>` + `<ComboboxList>{(item) => <ComboboxItem value={item}>…}</ComboboxList>`. Chips for multi-select. `ComboboxInput`'s built-in trigger is named "Show options". |
|
|
95
98
|
| Command | `Command`, `CommandDialog`, `CommandInput`, `CommandList`, `CommandEmpty`, `CommandGroup`, `CommandItem`, `CommandShortcut`, `CommandSeparator` | Use for ⌘K palettes. |
|
|
96
99
|
| Direction | `DirectionProvider`, `useDirection` | RTL/LTR context for Radix components. |
|
|
97
100
|
| Context menu | `ContextMenu`, `ContextMenuTrigger`, `ContextMenuContent`, `ContextMenuItem`, `ContextMenuCheckboxItem`, `ContextMenuRadioItem`, `ContextMenuRadioGroup`, `ContextMenuLabel`, `ContextMenuSeparator`, `ContextMenuShortcut`, `ContextMenuGroup`, `ContextMenuPortal`, `ContextMenuSub`, `ContextMenuSubContent`, `ContextMenuSubTrigger` | |
|
|
@@ -101,7 +104,7 @@ Every component in the shadcn registry is included. (shadcn's `form` item is an
|
|
|
101
104
|
| Empty state | `Empty`, `EmptyHeader`, `EmptyMedia`, `EmptyTitle`, `EmptyDescription`, `EmptyContent` | Use for zero-data screens. harebear adds `size="sm"`: compact, no flex-grow, for empties inside cards and panels. |
|
|
102
105
|
| Field | `Field`, `FieldLabel`, `FieldDescription`, `FieldError`, `FieldGroup`, `FieldLegend`, `FieldSeparator`, `FieldSet`, `FieldContent`, `FieldTitle` | Form layout. Works with react-hook-form or plain state. |
|
|
103
106
|
| Hover card | `HoverCard`, `HoverCardTrigger`, `HoverCardContent` | |
|
|
104
|
-
| Input | `Input` | 40px, filled `bg-muted`, turns `bg-card` with a primary ring on focus.
|
|
107
|
+
| Input | `Input` | 40px, filled `bg-muted`, turns `bg-card` with a primary ring on focus. 44px under `pointer: coarse` (also `InputGroup`). |
|
|
105
108
|
| Input group | `InputGroup`, `InputGroupAddon`, `InputGroupButton`, `InputGroupText`, `InputGroupInput`, `InputGroupTextarea` | Inputs with icons, prefixes, buttons. |
|
|
106
109
|
| Input OTP | `InputOTP`, `InputOTPGroup`, `InputOTPSlot`, `InputOTPSeparator` | |
|
|
107
110
|
| Item | `Item`, `ItemMedia`, `ItemContent`, `ItemTitle`, `ItemDescription`, `ItemActions`, `ItemGroup`, `ItemSeparator`, `ItemHeader`, `ItemFooter` | Generic list rows. harebear fix: `ItemTitle` clamps to one line (long words break) and shows the full text as a tooltip when clamped, `ItemContent` has `min-w-0`. harebear adds `ItemTitle mono` for commands, paths and IDs. |
|
|
@@ -131,8 +134,8 @@ Every component in the shadcn registry is included. (shadcn's `form` item is an
|
|
|
131
134
|
| Table | `Table`, `TableHeader`, `TableBody`, `TableFooter`, `TableRow`, `TableHead`, `TableCell`, `TableCaption` | Borderless rows with rounded hover; quiet 12px headers. `data-state="selected"` tints a row. |
|
|
132
135
|
| Tabs | `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent`, `tabsListVariants` | `TabsList variant`: `default` (segmented control), `pill` (rounded top-level nav), `line`. Use `Tabs` as a segmented filter too (date ranges, status filters). |
|
|
133
136
|
| Textarea | `Textarea` | Same filled style as `Input`, auto-grows. |
|
|
134
|
-
| Toast | `Toaster`
|
|
135
|
-
| Toggle | `Toggle`, `toggleVariants`, `ToggleGroup`, `ToggleGroupItem` |
|
|
137
|
+
| Toast | `Toaster`, `toast`, `toastUndo` | sonner. Mount once; call `toast("Saved")`, `toast.success(...)`, `toast.error(...)` (sonner's `toast`, re-exported by harebear-ui). Follows the theme mode. `toastUndo(message, { onUndo, undoLabel?, duration = 9000 })` shows an Undo toast for something already done. |
|
|
138
|
+
| Toggle | `Toggle`, `toggleVariants`, `ToggleGroup`, `ToggleGroupItem` | 44px hit area under `pointer: coarse`. |
|
|
136
139
|
| Tooltip | `TooltipProvider`, `Tooltip`, `TooltipTrigger`, `TooltipContent` | Mount `TooltipProvider` once near the root. |
|
|
137
140
|
| Trace | `Trace`, `TraceLine`, `TraceIcon`, `TraceTitle`, `TraceDescription`, `TraceCollapsible`, `TraceCollapsibleTrigger`, `TraceCollapsibleContent` | Agent step log (searched, read, ran). `TraceLine status`: `running` (shimmer), `error`, `pending`. |
|
|
138
141
|
|
|
@@ -198,7 +201,31 @@ Logo tile + name. Props: `name`, `subtitle?`, `icon?`, `action?` (trailing contr
|
|
|
198
201
|
|
|
199
202
|
### `PageHeader`
|
|
200
203
|
|
|
201
|
-
Title row
|
|
204
|
+
Title row with the page's `h1`. Props: `title`, `description?`, `count?` (badge after title), `eyebrow?` (small text above), `icon?` (leading mark before the title: `CategoryDot`, `MemberAvatar`, a lucide icon at 24px), `actions?` (right side, wraps on mobile).
|
|
205
|
+
|
|
206
|
+
### `Page`, `PageSection`
|
|
207
|
+
|
|
208
|
+
`Page`: the page column inside `AppNav` or `SidebarLayout`: centred, 16px gutters on phones (32px from 768px), children spaced `gap-7`. Props: `width?` (`sm | md | lg`, default `md` = 42rem, like `FocusLayout`), div props. `PageSection`: a region named by its `h2` (so headings go h1, h2 without skipping), with `title`, `action?` (right of the heading, 44px tall on touch screens) and `children`. Inside a card, use `Heading level={3}`.
|
|
209
|
+
|
|
210
|
+
```tsx
|
|
211
|
+
;<Page>
|
|
212
|
+
<PageHeader
|
|
213
|
+
title="Groceries"
|
|
214
|
+
icon={<CategoryDot color={1} />}
|
|
215
|
+
actions={<UserMenu compact name={user.name} className="md:hidden" />}
|
|
216
|
+
/>
|
|
217
|
+
<PageSection
|
|
218
|
+
title="This week"
|
|
219
|
+
action={
|
|
220
|
+
<Button variant="ghost" size="sm">
|
|
221
|
+
See all
|
|
222
|
+
</Button>
|
|
223
|
+
}
|
|
224
|
+
>
|
|
225
|
+
<SectionedList sections={sections} onToggle={setDone} />
|
|
226
|
+
</PageSection>
|
|
227
|
+
</Page>
|
|
228
|
+
```
|
|
202
229
|
|
|
203
230
|
### `StatCard`
|
|
204
231
|
|
|
@@ -248,7 +275,7 @@ Avatar + name + subtitle. Props: `name`, `subtitle?`, `avatarUrl?`, `color?` (`C
|
|
|
248
275
|
|
|
249
276
|
### `UserMenu`
|
|
250
277
|
|
|
251
|
-
The signed-in user as a menu button (sidebar footer or top bar). The menu has a header, your items (`children`, e.g. a Settings `DropdownMenuItem`), a Light / Dark / System theme choice, and Sign out.
|
|
278
|
+
The signed-in user as a menu button (sidebar footer or top bar). The menu has a header, your items (`children`, e.g. a Settings `DropdownMenuItem`), a Light / Dark / System theme choice, and Sign out. The trigger is named by its visible name and subtitle (in a sidebar icon rail, where it is just the avatar, by `name`) and the menu opens to the side there. `compact` makes the trigger just the avatar anywhere (40px, 44px on touch screens, named "Account menu for {name}") with the menu below it, for a phone page header. Upgrading from 0.9: the non-compact trigger is no longer named "Account menu for {name}"; find it by `name` instead. Props: `name`, `subtitle?`, `avatarUrl?`, `color?` (`CategoryColor` behind the initials), `children?`, `themeSwitch?` (default true, needs `ThemeProvider`), `onSignOut?`, `signOutLabel?`, `compact?`.
|
|
252
279
|
|
|
253
280
|
```tsx
|
|
254
281
|
;<UserMenu name={email} subtitle="Signed in" onSignOut={signOut}>
|
|
@@ -307,14 +334,43 @@ Profile photo: a 72px avatar, "Upload a photo" / "Change photo" and "Remove phot
|
|
|
307
334
|
|
|
308
335
|
Controlled "are you sure" dialog. Props: `open`, `onOpenChange`, `title`, `description?`, `confirmLabel?`, `cancelLabel?`, `destructive?` (red confirm), `onConfirm`.
|
|
309
336
|
|
|
337
|
+
### `PromptDialog`
|
|
338
|
+
|
|
339
|
+
Controlled dialog that asks for one line of text (New list, Rename). Props: `open`, `onOpenChange`, `title`, `description?`, `label` (field label), `defaultValue?`, `submitLabel?` (default "Save"), `cancelLabel?` (default "Cancel"), `maxLength?`, `onSubmit(value): void | Promise<void>` (trimmed; empty is blocked). It closes when `onSubmit` returns or resolves and starts fresh on every open; a thrown error's message shows under the field and the dialog stays open.
|
|
340
|
+
|
|
341
|
+
```tsx
|
|
342
|
+
;<PromptDialog
|
|
343
|
+
open={renaming}
|
|
344
|
+
onOpenChange={setRenaming}
|
|
345
|
+
title="Rename list"
|
|
346
|
+
label="Name"
|
|
347
|
+
defaultValue={list.name}
|
|
348
|
+
submitLabel="Rename"
|
|
349
|
+
maxLength={60}
|
|
350
|
+
onSubmit={(name) => api.renameList(list.id, name)}
|
|
351
|
+
/>
|
|
352
|
+
```
|
|
353
|
+
|
|
310
354
|
### `CopyField`
|
|
311
355
|
|
|
312
|
-
Read-only value with a copy button (IDs, paths, URLs). Props: `value` (copied), `display?` (shown instead, full value as tooltip), `label?` (leading addon), `aria-label?`, `mono?` (default true).
|
|
356
|
+
Read-only value with a copy button (IDs, paths, URLs). Props: `value` (copied), `display?` (shown instead, full value as tooltip), `label?` (leading addon), `aria-label?`, `mono?` (default true), `copiedLabel?` (default "Copied"; after copying, the button's name and a label beside it read this for a moment).
|
|
313
357
|
|
|
314
358
|
### `DateTimePicker`
|
|
315
359
|
|
|
316
360
|
Date field: a button that opens a `Calendar` in a `Popover`, with an optional time field and a Clear button. Value is a floating local date, no time zone: `DateTimeValue = { date: "YYYY-MM-DD", time?: "HH:MM" }`. Props: `value: DateTimeValue | null`, `onValueChange(value | null)`, `withTime?` (time field under the calendar; enabled once a date is set), `placeholder?` (default "Pick a date"). Other props (`id`, `aria-label`, `disabled`) go to the trigger button. Day cells are 44px on phones.
|
|
317
361
|
|
|
362
|
+
### `TimeZonePicker`
|
|
363
|
+
|
|
364
|
+
Searchable IANA time zone field built on `Combobox`, listing `Intl.supportedValuesOf("timeZone")` (underscores shown as spaces, so "new york" matches). A `value` not in that list (an alias such as "US/Pacific") is kept at the top so it still shows. Props: `value` (e.g. `"America/Vancouver"`), `onValueChange(zone)`, `id?` (for a `FieldLabel` or `SettingsRow` `htmlFor`), `className?`.
|
|
365
|
+
|
|
366
|
+
```tsx
|
|
367
|
+
;<SettingsRow
|
|
368
|
+
label="Time zone"
|
|
369
|
+
htmlFor="tz"
|
|
370
|
+
control={<TimeZonePicker id="tz" value={me.timeZone} onValueChange={(timeZone) => save({ timeZone })} />}
|
|
371
|
+
/>
|
|
372
|
+
```
|
|
373
|
+
|
|
318
374
|
### `DetailSheet`
|
|
319
375
|
|
|
320
376
|
A record's details, one API for both sizes: a floating side sheet from 768px up, a full-screen drawer with a close button on phones. Props: `open`, `onOpenChange`, `title` (heading and accessible name), `description?`, `footer?` (pinned under the scrolling body, e.g. Delete), `children` (the fields). `data-layout` is `"sheet"` or `"drawer"`.
|
|
@@ -351,23 +407,49 @@ Muted tile that lifts on hover, for service launchers. Props: `title`, `subtitle
|
|
|
351
407
|
|
|
352
408
|
### `MarkdownEditor`
|
|
353
409
|
|
|
354
|
-
Markdown field with Write and Preview tabs; Preview renders
|
|
410
|
+
Markdown field with Write and Preview tabs; Preview renders with `Markdown`. Props: `value`, `onValueChange(value)`, `renderPreview?(markdown)` (custom renderer, wrapped in `Prose`), `wrapperClassName?`. Other props (`id`, `placeholder`, `aria-*`, `className`) go to the `Textarea`.
|
|
411
|
+
|
|
412
|
+
```tsx
|
|
413
|
+
;<MarkdownEditor id="body" value={body} onValueChange={setBody} />
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### `ChecklistEditor`
|
|
417
|
+
|
|
418
|
+
Steps inside a record, e.g. a to-do's checklist: `CheckCircle` per item (the text is its label), a Remove button, an add field (Enter adds the trimmed text and clears), and an "x of y done" line when there are items. Props: `items: { id; text; done }[]`, `onToggle(id, done)`, `onRemove(id)`, `onAdd(text)`, `addPlaceholder?` (also the field's name, default "Add an item"), `progressLabel?(done, total)`. The root is a `role="group"`: name it with `aria-label` or `aria-labelledby`.
|
|
355
419
|
|
|
356
420
|
```tsx
|
|
357
|
-
;<
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
421
|
+
;<ChecklistEditor
|
|
422
|
+
aria-label="Checklist"
|
|
423
|
+
items={task.checklist}
|
|
424
|
+
onToggle={toggleStep}
|
|
425
|
+
onRemove={removeStep}
|
|
426
|
+
onAdd={addStep}
|
|
427
|
+
addPlaceholder="Add a step"
|
|
362
428
|
/>
|
|
363
429
|
```
|
|
364
430
|
|
|
431
|
+
### `CommentThread`
|
|
432
|
+
|
|
433
|
+
Comments on a record, oldest first, then a box and a submit button (disabled while empty; submits the trimmed text and clears). Bodies render with `Markdown`. Props: `comments: { id; author: { name; color?; avatarUrl? }; meta?; body }[]` (`meta` is muted text after the name, e.g. "via HomeBot · 2 h ago"), `onSubmit(text)`, `placeholder?` (also the box's name, default "Add a comment"), `submitLabel?` (default "Comment"). Show your own empty state if you want one.
|
|
434
|
+
|
|
435
|
+
```tsx
|
|
436
|
+
;<CommentThread comments={task.comments} onSubmit={(text) => api.comment(task.id, text)} />
|
|
437
|
+
```
|
|
438
|
+
|
|
365
439
|
### `AppNav`
|
|
366
440
|
|
|
367
441
|
One nav config, two renderings: on desktop a `SidebarLayout` sidebar (brand, action button, places, one collapsible group, footer; active place is a raised card; collapses to the icon rail), under 768px a bottom tab bar (first 5 places, 56px targets, `aria-current="page"`) plus a round floating action button. Use it instead of `AppShell` for consumer apps that need phone navigation.
|
|
368
442
|
|
|
369
|
-
Props: `places: AppNavPlace[]` (`label`, `icon?`, `href?` or `onSelect?`, `active?`, `count?`, `tab?: false` to keep out of the tab bar, `sidebar?: false` for a tab-bar-only place such as Lists when the sidebar has a Lists group), `group?: AppNavGroup` (`label`, `items`, `defaultOpen?`, `onAdd?`, `addLabel?`), `action?: { label; icon; onSelect; sidebar?: false }` (`sidebar: false` keeps only the round phone button), `brand?`, `footer?` (usually `UserMenu`), `label?` (nav name, default "Main"), `linkComponent?`, `collapsible?`, `storageKey?`, `defaultOpen?`, `width?`, `children`.
|
|
370
|
-
On phones the group and footer live in the sidebar sheet: put a `SidebarTrigger` in the page header if users need them there. Render `AssistantDock` inside `children` so it clears the tab bar. Toasts stack above the tab bar, the action button and the dock launcher on their own; no `Toaster` offset needed.
|
|
443
|
+
Props: `places: AppNavPlace[]` (`label`, `icon?`, `href?` or `onSelect?`, `active?`, `count?`, `tab?: false` to keep out of the tab bar, `sidebar?: false` for a tab-bar-only place such as Lists when the sidebar has a Lists group), `group?: AppNavGroup` (`label`, `href?` (heading becomes a link, e.g. to all lists; the chevron is a separate "Collapse Lists" button), `active?` (the heading link is the current page), `items`, `defaultOpen?`, `onAdd?`, `addLabel?`), `action?: { label; icon; onSelect; sidebar?: false }` (`sidebar: false` keeps only the round phone button), `brand?`, `footer?` (usually `UserMenu`), `label?` (nav name, default "Main"), `linkComponent?`, `collapsible?`, `storageKey?`, `defaultOpen?`, `width?`, `fill?` (main column is exactly the screen height minus the tab bar (and the round action button's space when `action` is set) and does not scroll, for a chat: the child takes it with `flex-1 min-h-0`, which `ChatPanel` already has), `children`.
|
|
444
|
+
On phones the group and footer live in the sidebar sheet: put a `SidebarTrigger` in the page header if users need them there. With `action`, the main column's bottom padding also clears the round button, so a trailing control on the last row is not under it. Render `AssistantDock` inside `children` so it clears the tab bar. Toasts stack above the tab bar, the action button and the dock launcher on their own; no `Toaster` offset needed.
|
|
445
|
+
|
|
446
|
+
```tsx
|
|
447
|
+
;<AppNav fill places={places} footer={<UserMenu name={user.name} />}>
|
|
448
|
+
<ChatPanel title="Assistant" composer={<PromptInput … />}>
|
|
449
|
+
{thread}
|
|
450
|
+
</ChatPanel>
|
|
451
|
+
</AppNav>
|
|
452
|
+
```
|
|
371
453
|
|
|
372
454
|
### `FocusLayout`
|
|
373
455
|
|
|
@@ -375,7 +457,7 @@ A page outside the app frame (settings, onboarding, setup): slim sticky top bar,
|
|
|
375
457
|
|
|
376
458
|
### `SettingsSection`, `SettingsRow`
|
|
377
459
|
|
|
378
|
-
`SettingsSection`: card with `title`, `description?` and rows divided by hairlines (a labelled `region`). `SettingsRow`: `label`, `description?`, `control?` (Switch, Select, ToggleGroup, Button), `htmlFor?` (makes the label a `<label>` for the control). Add `content` to expand inline (change password, add a connection): without a `control` the row gets a "Change"/"Cancel" button (`expandLabel?`); control it with `open`/`onOpenChange` or `defaultOpen`.
|
|
460
|
+
`SettingsSection`: card with `title`, `description?` and rows divided by hairlines (a labelled `region`). `SettingsRow`: `label`, `description?`, `control?` (Switch, Select, ToggleGroup, Button), `htmlFor?` (makes the label a `<label>` for the control), `body?` (always shown under the label, full width, no toggle: a list, a hint, a short form). Add `content` to expand inline (change password, add a connection): without a `control` the row gets a "Change"/"Cancel" button (`expandLabel?`); control it with `open`/`onOpenChange` or `defaultOpen`.
|
|
379
461
|
|
|
380
462
|
```tsx
|
|
381
463
|
;<FocusLayout
|
|
@@ -396,6 +478,7 @@ A page outside the app frame (settings, onboarding, setup): slim sticky top bar,
|
|
|
396
478
|
control={<Switch id="daily" />}
|
|
397
479
|
/>
|
|
398
480
|
<SettingsRow label="Password" content={<ChangePasswordForm />} />
|
|
481
|
+
<SettingsRow label="Connections" body={<ConnectionList />} />
|
|
399
482
|
</SettingsSection>
|
|
400
483
|
</FocusLayout>
|
|
401
484
|
```
|
|
@@ -410,7 +493,7 @@ Props instead of class names, for blocks that should look right without styling
|
|
|
410
493
|
|
|
411
494
|
### `Text`, `Heading`
|
|
412
495
|
|
|
413
|
-
`Text` takes `size` (`xs | sm | base | lg | xl | 2xl`), `tone` (`default | muted | success | warning | danger | info`), `weight`, `mono`, `truncate`, `lines` (1 to 3) and `tabular`, and renders `as` a span, p or div. `Heading` is a card section title (`level={3}
|
|
496
|
+
`Text` takes `size` (`xs | sm | base | lg | xl | 2xl`), `tone` (`default | muted | success | warning | danger | info`), `weight`, `mono`, `truncate`, `lines` (1 to 3) and `tabular`, and renders `as` a span, p or div. `Heading` is a page section title (`level={2}`, under the page `h1`; `PageSection` uses it), a card section title (`level={3}`, default) or a small uppercase group label (`level={4}`). Do not skip levels: a page with an h1 needs h2s before h3s.
|
|
414
497
|
|
|
415
498
|
### `Metric`, `MetricGroup`
|
|
416
499
|
|
|
@@ -426,7 +509,7 @@ Shows the first `initial` children (default 5) and a "Show N more" button for th
|
|
|
426
509
|
|
|
427
510
|
### `Collapse`
|
|
428
511
|
|
|
429
|
-
Animates children between full height and 0 (CSS `grid-template-rows`), so neighbours slide instead of jumping. Closed content is `inert` and `aria-hidden`. Props: `open`, `contentClassName?`. No motion under `prefers-reduced-motion`.
|
|
512
|
+
Animates children between full height and 0 (CSS `grid-template-rows`), so neighbours slide instead of jumping. Closed content is `inert` and `aria-hidden`. Clips vertically only, so focus rings and hit areas at the sides are not cut off. Props: `open`, `contentClassName?`. No motion under `prefers-reduced-motion`.
|
|
430
513
|
|
|
431
514
|
## Data display
|
|
432
515
|
|
|
@@ -500,11 +583,12 @@ One line of a day's agenda: time column, event icon (or a `CheckCircle` for a to
|
|
|
500
583
|
|
|
501
584
|
### `DayStrip`
|
|
502
585
|
|
|
503
|
-
A row of day links (short weekday, date, a dot when `hasPlans`) that smooth-scroll to the element whose id is the day's `id` (instant under reduced motion) and move focus to it; scrolls sideways when the days do not fit. Props: `days: { id; date: "YYYY-MM-DD"; hasPlans? }[]` (floating local date, like `DateTimePicker`), `value?` (selected id, `aria-current`), `onValueChange?(id)`, `aria-label?` (default "Jump to a day")
|
|
586
|
+
A row of day links (short weekday, date, a dot when `hasPlans`) that smooth-scroll to the element whose id is the day's `id` (instant under reduced motion) and move focus to it; scrolls sideways when the days do not fit. Props: `days: { id; date: "YYYY-MM-DD"; hasPlans? }[]` (floating local date, like `DateTimePicker`), `value?` (selected id, `aria-current`), `onValueChange?(id)`, `aria-label?` (default "Jump to a day"), `sticky?` (sticks at `top-0` with the page background while the page or any container scrolls, and gives the jumped-to element a `scroll-margin-top` as tall as the strip so its heading lands below it; add `className="top-14"` under a sticky header). Each link's name is the full date ("Thursday, November 12, has plans") as visually hidden text, so it contains what is shown.
|
|
504
587
|
|
|
505
588
|
```tsx
|
|
506
589
|
;<>
|
|
507
590
|
<DayStrip
|
|
591
|
+
sticky
|
|
508
592
|
days={week.map((d) => ({ id: d.key, date: d.date, hasPlans: d.items.length > 0 }))}
|
|
509
593
|
value={day}
|
|
510
594
|
onValueChange={setDay}
|
|
@@ -696,8 +780,16 @@ What the assistant did, as a compact card: round check, `title` (past tense), `m
|
|
|
696
780
|
|
|
697
781
|
`CodeSnippet`: one-prop code panel with language label, copy button and shiki syntax highlighting (each language loads on first use). Props: `code`, `language?` (`bash`, `tsx`, `ts`, `js`, `json`, `python`, `sql`, `yaml`, `css`, `html`, `markdown`, `diff`; others render plain), `highlight?` (default true), `lineNumbers?`, `hideCopy?`. Built on the `CodeBlock` primitives; drop to those for diffs or highlighted lines.
|
|
698
782
|
`InlineCode`: monospace span. `truncate?: number` cuts longer string children with an ellipsis and puts the full text in the tooltip.
|
|
699
|
-
`Prose`: typography for model output and markdown. Styles plain `p, ul, ol, li, strong, a, code, pre, h1-h4, blockquote, table` children
|
|
700
|
-
Tip boxes: a blockquote whose first word is `Tip:` (`> Tip: Turn the power off first.`) renders as a `Callout` without the word. Prose does this for plain `<blockquote>` children; with react-markdown pass `components={{ blockquote: ProseBlockquote }}`.
|
|
783
|
+
`Prose`: typography for model output and markdown. Styles plain `p, ul, ol, li, strong, a, code, pre, h1-h4, blockquote, table` children.
|
|
784
|
+
Tip boxes: a blockquote whose first word is `Tip:` (`> Tip: Turn the power off first.`) renders as a `Callout` without the word. Prose does this for plain `<blockquote>` children; with your own react-markdown pass `components={{ blockquote: ProseBlockquote }}`.
|
|
785
|
+
|
|
786
|
+
### `Markdown`
|
|
787
|
+
|
|
788
|
+
Renders a Markdown string inside `Prose`: GitHub flavoured (tables, task lists, strikethrough, autolinks), `> Tip:` blockquotes as a `Callout`. Safe for user and model text: raw HTML is dropped and `javascript:` links are removed. Props: `children: string`, `linkComponent?` (your router `Link`, gets `href`; used for links without a scheme such as `/lists/2`). Other props go to the `Prose` wrapper.
|
|
789
|
+
|
|
790
|
+
```tsx
|
|
791
|
+
;<Markdown linkComponent={Link}>{message.text}</Markdown>
|
|
792
|
+
```
|
|
701
793
|
|
|
702
794
|
### Chat primitives vs. composites
|
|
703
795
|
|
|
@@ -711,17 +803,49 @@ Parameterized versions of shadcn's login-01..05 and signup-01..05 blocks.
|
|
|
711
803
|
|
|
712
804
|
Full-page wrapper. Props: `variant` (`"centered"` card on the page, `"muted"` same on a muted background, `"split"` form left and cover image right, `"card-image"` one wide card with form and image), `brand?` (usually `AppBrand`), `image?: { src; alt }` (split and card-image), `footer?` (terms text), `children` (the form).
|
|
713
805
|
|
|
806
|
+
### `AuthForm`
|
|
807
|
+
|
|
808
|
+
The shell the auth forms share; use it for other signed-out steps (join with a code, verify an email). Props: `title`, `description?`, `children` (fields, each with a `name`), `error?`, `submitLabel`, `loading?` (spinner, disables every control), `onSubmit?(data: FormData)` (after browser validation, which `noValidate` skips; omit to submit natively), `footer?` (under the button: links, provider buttons).
|
|
809
|
+
|
|
810
|
+
```tsx
|
|
811
|
+
;<AuthForm title="Join your household" submitLabel="Join" onSubmit={(d) => join(String(d.get("code")))}>
|
|
812
|
+
<Field>
|
|
813
|
+
<FieldLabel htmlFor="code">Invite code</FieldLabel>
|
|
814
|
+
<Input id="code" name="code" required />
|
|
815
|
+
</Field>
|
|
816
|
+
</AuthForm>
|
|
817
|
+
```
|
|
818
|
+
|
|
714
819
|
### `LoginForm`
|
|
715
820
|
|
|
716
821
|
Props: `onSubmit?({ email, password? })` (omit to submit natively to an `action`), `mode?` (`"password"` or `"email-only"` for magic links), `providers?: { id; label; icon? }[]` + `onProviderClick?(id)` (3+ providers with icons collapse to an icon row), `providersFirst?`, `forgotPasswordHref?`, `signupHref?`, `title?`, `description?`, `submitLabel?`, `loading?`, `error?`.
|
|
717
822
|
|
|
718
823
|
### `PasswordInput`
|
|
719
824
|
|
|
720
|
-
Password `Input` with a Show/Hide button (`aria-label` "Show password" / "Hide password") that switches `type` between `password` and `text`. Input props go to the input; `wrapperClassName?` styles the wrapper. `LoginForm` and `
|
|
825
|
+
Password `Input` with a Show/Hide button (`aria-label` "Show password" / "Hide password") that switches `type` between `password` and `text`. Input props go to the input; `wrapperClassName?` styles the wrapper. `LoginForm`, `SignupForm` and `NewPasswordForm` use it for every password field.
|
|
721
826
|
|
|
722
827
|
### `SignupForm`
|
|
723
828
|
|
|
724
|
-
Props: `onSubmit?({ name?, email, password })`, `nameField?` (default true), `confirmPassword?` (default true; mismatches are blocked with a browser validation message), `minPasswordLength?` (default 8), `passwordHint?`, `providers?`, `onProviderClick?`, `providersFirst?`, `loginHref?`, `title?`, `description?`, `submitLabel?`, `loading?`, `error?`.
|
|
829
|
+
Props: `onSubmit?({ name?, email, password }, data: FormData)`, `children?` (extra fields before the name, e.g. a household name; read them from `data`), `nameField?` (default true), `confirmPassword?` (default true; mismatches are blocked with a browser validation message), `minPasswordLength?` (default 8), `passwordHint?`, `providers?`, `onProviderClick?`, `providersFirst?`, `loginHref?`, `title?`, `description?`, `submitLabel?`, `loading?`, `error?`.
|
|
830
|
+
|
|
831
|
+
```tsx
|
|
832
|
+
;<SignupForm onSubmit={(v, data) => create({ ...v, household: String(data.get("household")) })}>
|
|
833
|
+
<Field>
|
|
834
|
+
<FieldLabel htmlFor="household">Household name</FieldLabel>
|
|
835
|
+
<Input id="household" name="household" required />
|
|
836
|
+
</Field>
|
|
837
|
+
</SignupForm>
|
|
838
|
+
```
|
|
839
|
+
|
|
840
|
+
### `NewPasswordForm`
|
|
841
|
+
|
|
842
|
+
Reset or first password: "New password" + "Confirm password" (a mismatch is blocked with a browser validation message). Props: `onSubmit?({ password })`, `minPasswordLength?` (default 8), `passwordHint?`, `title?` (default "Choose a new password"), `description?`, `submitLabel?` (default "Save password"), `loading?`, `error?`.
|
|
843
|
+
|
|
844
|
+
```tsx
|
|
845
|
+
;<AuthLayout variant="centered">
|
|
846
|
+
<NewPasswordForm onSubmit={({ password }) => reset(token, password)} loading={pending} error={error} />
|
|
847
|
+
</AuthLayout>
|
|
848
|
+
```
|
|
725
849
|
|
|
726
850
|
`GitHubIcon`, `GoogleIcon`, `AppleIcon`: brand marks for provider buttons.
|
|
727
851
|
|