ai-design-system 0.1.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/README.md +307 -0
- package/components/ai-elements/actions.tsx +65 -0
- package/components/ai-elements/artifact.tsx +147 -0
- package/components/ai-elements/branch.tsx +212 -0
- package/components/ai-elements/canvas.tsx +24 -0
- package/components/ai-elements/chain-of-thought.tsx +228 -0
- package/components/ai-elements/code-block.tsx +179 -0
- package/components/ai-elements/confirmation.tsx +169 -0
- package/components/ai-elements/connection.tsx +28 -0
- package/components/ai-elements/context.tsx +408 -0
- package/components/ai-elements/controls.tsx +18 -0
- package/components/ai-elements/conversation.tsx +97 -0
- package/components/ai-elements/edge.tsx +140 -0
- package/components/ai-elements/image.tsx +24 -0
- package/components/ai-elements/inline-citation.tsx +287 -0
- package/components/ai-elements/loader.tsx +96 -0
- package/components/ai-elements/message.tsx +80 -0
- package/components/ai-elements/node.tsx +71 -0
- package/components/ai-elements/open-in-chat.tsx +363 -0
- package/components/ai-elements/panel.tsx +15 -0
- package/components/ai-elements/plan.tsx +142 -0
- package/components/ai-elements/prompt-input.tsx +1352 -0
- package/components/ai-elements/queue.tsx +274 -0
- package/components/ai-elements/reasoning.tsx +178 -0
- package/components/ai-elements/response.tsx +22 -0
- package/components/ai-elements/shimmer.tsx +64 -0
- package/components/ai-elements/sources.tsx +77 -0
- package/components/ai-elements/suggestion.tsx +56 -0
- package/components/ai-elements/task.tsx +87 -0
- package/components/ai-elements/tool.tsx +179 -0
- package/components/ai-elements/toolbar.tsx +16 -0
- package/components/ai-elements/web-preview.tsx +263 -0
- package/components/blocks/AIConversation/AIConversation.stories.tsx +164 -0
- package/components/blocks/AIConversation/AIConversation.tsx +186 -0
- package/components/blocks/AIConversation/index.ts +8 -0
- package/components/blocks/AppSidebar/AppSidebar.stories.tsx +63 -0
- package/components/blocks/AppSidebar/AppSidebar.tsx +87 -0
- package/components/blocks/AppSidebar/index.ts +2 -0
- package/components/blocks/DocumentEditorWithComments/DocumentEditorWithComments.stories.tsx +341 -0
- package/components/blocks/DocumentEditorWithComments/DocumentEditorWithComments.tsx +255 -0
- package/components/blocks/DocumentEditorWithComments/index.ts +9 -0
- package/components/blocks/FileChangeQueue/FileChangeQueue.stories.tsx +207 -0
- package/components/blocks/FileChangeQueue/FileChangeQueue.tsx +143 -0
- package/components/blocks/FileChangeQueue/index.ts +7 -0
- package/components/blocks/LayoutProvider/LayoutProvider.tsx +34 -0
- package/components/blocks/LayoutProvider/index.ts +1 -0
- package/components/blocks/index.ts +2 -0
- package/components/composites/AgentIndicator/AgentIndicator.stories.tsx +154 -0
- package/components/composites/AgentIndicator/AgentIndicator.tsx +102 -0
- package/components/composites/AgentIndicator/index.ts +8 -0
- package/components/composites/AppHeader/AppHeader.stories.tsx +46 -0
- package/components/composites/AppHeader/AppHeader.tsx +24 -0
- package/components/composites/AppHeader/index.ts +2 -0
- package/components/composites/CommentBox/CommentBox.stories.tsx +192 -0
- package/components/composites/CommentBox/CommentBox.tsx +364 -0
- package/components/composites/CommentBox/index.ts +8 -0
- package/components/composites/Confirmation/Confirmation.stories.tsx +151 -0
- package/components/composites/Confirmation/Confirmation.tsx +93 -0
- package/components/composites/Confirmation/index.ts +7 -0
- package/components/composites/DataTable/DataTable.stories.tsx +35 -0
- package/components/composites/DataTable/DataTable.tsx +95 -0
- package/components/composites/DataTable/index.ts +2 -0
- package/components/composites/DocumentEditor/DocumentEditor.css +106 -0
- package/components/composites/DocumentEditor/DocumentEditor.stories.tsx +927 -0
- package/components/composites/DocumentEditor/DocumentEditor.tsx +279 -0
- package/components/composites/DocumentEditor/index.ts +8 -0
- package/components/composites/FileQueue/FileQueue.stories.tsx +175 -0
- package/components/composites/FileQueue/FileQueue.tsx +161 -0
- package/components/composites/FileQueue/FileStatusBadge.tsx +74 -0
- package/components/composites/FileQueue/index.ts +24 -0
- package/components/composites/InteractiveChart/InteractiveChart.stories.tsx +49 -0
- package/components/composites/InteractiveChart/InteractiveChart.tsx +69 -0
- package/components/composites/InteractiveChart/index.ts +2 -0
- package/components/composites/ModeToggle/ModeToggle.stories.tsx +212 -0
- package/components/composites/ModeToggle/ModeToggle.tsx +100 -0
- package/components/composites/ModeToggle/index.ts +7 -0
- package/components/composites/NavUser/NavUser.stories.tsx +50 -0
- package/components/composites/NavUser/NavUser.tsx +60 -0
- package/components/composites/NavUser/index.ts +2 -0
- package/components/composites/NavigationList/NavigationList.stories.tsx +46 -0
- package/components/composites/NavigationList/NavigationList.tsx +46 -0
- package/components/composites/NavigationList/index.ts +2 -0
- package/components/composites/OrchestratorMessage/OrchestratorMessage.stories.tsx +188 -0
- package/components/composites/OrchestratorMessage/OrchestratorMessage.tsx +72 -0
- package/components/composites/OrchestratorMessage/index.ts +8 -0
- package/components/composites/PageContainer/PageContainer.stories.tsx +41 -0
- package/components/composites/PageContainer/PageContainer.tsx +24 -0
- package/components/composites/PageContainer/index.ts +2 -0
- package/components/composites/PromptInput/PromptInput.stories.tsx +200 -0
- package/components/composites/PromptInput/PromptInput.tsx +129 -0
- package/components/composites/PromptInput/index.ts +8 -0
- package/components/composites/SpecialistMessage/SpecialistMessage.stories.tsx +286 -0
- package/components/composites/SpecialistMessage/SpecialistMessage.tsx +107 -0
- package/components/composites/SpecialistMessage/index.ts +8 -0
- package/components/composites/StatsCard/StatsCard.stories.tsx +76 -0
- package/components/composites/StatsCard/StatsCard.tsx +81 -0
- package/components/composites/StatsCard/index.ts +2 -0
- package/components/composites/TablePagination/TablePagination.stories.tsx +38 -0
- package/components/composites/TablePagination/TablePagination.tsx +119 -0
- package/components/composites/TablePagination/index.ts +2 -0
- package/components/composites/TableToolbar/TableToolbar.stories.tsx +60 -0
- package/components/composites/TableToolbar/TableToolbar.tsx +66 -0
- package/components/composites/TableToolbar/index.ts +2 -0
- package/components/composites/ThemeSelector/ThemeSelector.stories.tsx +48 -0
- package/components/composites/ThemeSelector/ThemeSelector.tsx +79 -0
- package/components/composites/ThemeSelector/index.ts +2 -0
- package/components/composites/ToolCallDisplay/ToolCallDisplay.stories.tsx +49 -0
- package/components/composites/ToolCallDisplay/ToolCallDisplay.tsx +108 -0
- package/components/composites/ToolCallDisplay/index.ts +8 -0
- package/components/composites/UserMessage/UserMessage.stories.tsx +59 -0
- package/components/composites/UserMessage/UserMessage.tsx +52 -0
- package/components/composites/UserMessage/index.ts +8 -0
- package/components/composites/index.ts +90 -0
- package/components/features/AIDocEditor/AIDocEditor.behaviors.stories.tsx +451 -0
- package/components/features/AIDocEditor/AIDocEditor.mocks.ts +96 -0
- package/components/features/AIDocEditor/AIDocEditor.stories.tsx +140 -0
- package/components/features/AIDocEditor/AIDocEditor.tsx +130 -0
- package/components/features/AIDocEditor/index.ts +8 -0
- package/components/features/AIDocEditor/useAIDocEditor.d.ts +97 -0
- package/components/features/AIDocEditor/useAIDocEditor.mock.ts +83 -0
- package/components/features/PageLayout/PageLayout.behaviors.stories.tsx +119 -0
- package/components/features/PageLayout/PageLayout.mocks.ts +27 -0
- package/components/features/PageLayout/PageLayout.stories.tsx +142 -0
- package/components/features/PageLayout/PageLayout.tsx +94 -0
- package/components/features/PageLayout/index.ts +4 -0
- package/components/features/PageLayout/usePageLayout.d.ts +24 -0
- package/components/features/PageLayout/usePageLayout.mock.ts +19 -0
- package/components/features/RefinementPanel/README.md +189 -0
- package/components/features/RefinementPanel/RefinementPanel.behaviors.stories.tsx +475 -0
- package/components/features/RefinementPanel/RefinementPanel.mocks.ts +131 -0
- package/components/features/RefinementPanel/RefinementPanel.stories.tsx +141 -0
- package/components/features/RefinementPanel/RefinementPanel.tsx +160 -0
- package/components/features/RefinementPanel/index.ts +25 -0
- package/components/features/RefinementPanel/useRefinementPanel.d.ts +74 -0
- package/components/features/RefinementPanel/useRefinementPanel.mock.ts +121 -0
- package/components/features/SpecNavigator/SpecNavigator.behaviors.stories.tsx +379 -0
- package/components/features/SpecNavigator/SpecNavigator.mocks.ts +131 -0
- package/components/features/SpecNavigator/SpecNavigator.stories.tsx +122 -0
- package/components/features/SpecNavigator/SpecNavigator.tsx +43 -0
- package/components/features/SpecNavigator/index.ts +2 -0
- package/components/features/SpecNavigator/useSpecNavigator.d.ts +122 -0
- package/components/features/SpecNavigator/useSpecNavigator.mock.ts +93 -0
- package/components/features/index.ts +18 -0
- package/components/index.ts +14 -0
- package/components/primitives/Accordion/Accordion.stories.tsx +87 -0
- package/components/primitives/Accordion/Accordion.tsx +66 -0
- package/components/primitives/Accordion/index.ts +13 -0
- package/components/primitives/Alert/Alert.stories.tsx +422 -0
- package/components/primitives/Alert/Alert.tsx +61 -0
- package/components/primitives/Alert/index.ts +8 -0
- package/components/primitives/AlertDialog/AlertDialog.stories.tsx +367 -0
- package/components/primitives/AlertDialog/AlertDialog.tsx +182 -0
- package/components/primitives/AlertDialog/index.ts +25 -0
- package/components/primitives/Avatar/Avatar.stories.tsx +321 -0
- package/components/primitives/Avatar/Avatar.tsx +63 -0
- package/components/primitives/Avatar/index.ts +8 -0
- package/components/primitives/Badge/Badge.stories.tsx +74 -0
- package/components/primitives/Badge/Badge.tsx +49 -0
- package/components/primitives/Badge/index.ts +2 -0
- package/components/primitives/Button/Button.stories.tsx +445 -0
- package/components/primitives/Button/Button.tsx +89 -0
- package/components/primitives/Button/index.ts +7 -0
- package/components/primitives/Card/Card.stories.tsx +831 -0
- package/components/primitives/Card/Card.tsx +242 -0
- package/components/primitives/Card/index.ts +30 -0
- package/components/primitives/Carousel/Carousel.stories.tsx +32 -0
- package/components/primitives/Carousel/Carousel.tsx +63 -0
- package/components/primitives/Carousel/index.ts +13 -0
- package/components/primitives/Chart/Chart.stories.tsx +346 -0
- package/components/primitives/Chart/Chart.tsx +117 -0
- package/components/primitives/Chart/index.ts +20 -0
- package/components/primitives/Checkbox/Checkbox.stories.tsx +87 -0
- package/components/primitives/Checkbox/Checkbox.tsx +38 -0
- package/components/primitives/Checkbox/index.ts +2 -0
- package/components/primitives/Collapsible/Collapsible.stories.tsx +38 -0
- package/components/primitives/Collapsible/Collapsible.tsx +39 -0
- package/components/primitives/Collapsible/index.ts +8 -0
- package/components/primitives/Command/Command.stories.tsx +150 -0
- package/components/primitives/Command/Command.tsx +147 -0
- package/components/primitives/Command/index.ts +20 -0
- package/components/primitives/Dialog/Dialog.stories.tsx +390 -0
- package/components/primitives/Dialog/Dialog.tsx +140 -0
- package/components/primitives/Dialog/index.ts +22 -0
- package/components/primitives/Drawer/Drawer.stories.tsx +327 -0
- package/components/primitives/Drawer/Drawer.tsx +208 -0
- package/components/primitives/Drawer/index.ts +27 -0
- package/components/primitives/DropdownMenu/DropdownMenu.stories.tsx +150 -0
- package/components/primitives/DropdownMenu/DropdownMenu.tsx +73 -0
- package/components/primitives/DropdownMenu/index.ts +1 -0
- package/components/primitives/HoverCard/HoverCard.stories.tsx +26 -0
- package/components/primitives/HoverCard/HoverCard.tsx +39 -0
- package/components/primitives/HoverCard/index.ts +8 -0
- package/components/primitives/Icon/Icon.stories.tsx +281 -0
- package/components/primitives/Icon/Icon.tsx +87 -0
- package/components/primitives/Icon/index.ts +8 -0
- package/components/primitives/Input/Input.stories.tsx +370 -0
- package/components/primitives/Input/Input.tsx +88 -0
- package/components/primitives/Input/index.ts +7 -0
- package/components/primitives/InputGroup/InputGroup.stories.tsx +40 -0
- package/components/primitives/InputGroup/InputGroup.tsx +72 -0
- package/components/primitives/InputGroup/index.ts +14 -0
- package/components/primitives/Label/Label.stories.tsx +227 -0
- package/components/primitives/Label/Label.tsx +53 -0
- package/components/primitives/Label/index.ts +7 -0
- package/components/primitives/Popover/Popover.stories.tsx +42 -0
- package/components/primitives/Popover/Popover.tsx +107 -0
- package/components/primitives/Popover/index.ts +2 -0
- package/components/primitives/Progress/Progress.stories.tsx +340 -0
- package/components/primitives/Progress/Progress.tsx +31 -0
- package/components/primitives/Progress/index.ts +1 -0
- package/components/primitives/ScrollArea/ScrollArea.stories.tsx +26 -0
- package/components/primitives/ScrollArea/ScrollArea.tsx +28 -0
- package/components/primitives/ScrollArea/index.ts +6 -0
- package/components/primitives/Select/Select.stories.tsx +288 -0
- package/components/primitives/Select/Select.tsx +162 -0
- package/components/primitives/Select/index.ts +22 -0
- package/components/primitives/Separator/Separator.stories.tsx +264 -0
- package/components/primitives/Separator/Separator.tsx +48 -0
- package/components/primitives/Separator/index.ts +7 -0
- package/components/primitives/Sidebar/Sidebar.stories.tsx +358 -0
- package/components/primitives/Sidebar/Sidebar.tsx +317 -0
- package/components/primitives/Sidebar/index.ts +41 -0
- package/components/primitives/Table/Table.stories.tsx +389 -0
- package/components/primitives/Table/Table.tsx +191 -0
- package/components/primitives/Table/index.ts +26 -0
- package/components/primitives/Tabs/Tabs.stories.tsx +129 -0
- package/components/primitives/Tabs/Tabs.tsx +70 -0
- package/components/primitives/Tabs/index.ts +13 -0
- package/components/primitives/Textarea/Textarea.stories.tsx +358 -0
- package/components/primitives/Textarea/Textarea.tsx +91 -0
- package/components/primitives/Textarea/index.ts +7 -0
- package/components/primitives/ToggleGroup/ToggleGroup.stories.tsx +87 -0
- package/components/primitives/ToggleGroup/ToggleGroup.tsx +52 -0
- package/components/primitives/ToggleGroup/index.ts +6 -0
- package/components/primitives/Tooltip/Tooltip.stories.tsx +336 -0
- package/components/primitives/Tooltip/Tooltip.tsx +78 -0
- package/components/primitives/Tooltip/index.ts +10 -0
- package/components/primitives/index.ts +34 -0
- package/components/ui/accordion.tsx +66 -0
- package/components/ui/alert-dialog.tsx +157 -0
- package/components/ui/alert.tsx +66 -0
- package/components/ui/avatar.tsx +53 -0
- package/components/ui/badge.tsx +46 -0
- package/components/ui/button.tsx +60 -0
- package/components/ui/card.tsx +117 -0
- package/components/ui/carousel.tsx +241 -0
- package/components/ui/chart.tsx +334 -0
- package/components/ui/checkbox.tsx +32 -0
- package/components/ui/collapsible.tsx +33 -0
- package/components/ui/command.tsx +184 -0
- package/components/ui/dialog.tsx +143 -0
- package/components/ui/drawer.tsx +118 -0
- package/components/ui/dropdown-menu.tsx +257 -0
- package/components/ui/hover-card.tsx +44 -0
- package/components/ui/input-group.tsx +170 -0
- package/components/ui/input.tsx +48 -0
- package/components/ui/label.tsx +26 -0
- package/components/ui/popover.tsx +33 -0
- package/components/ui/progress.tsx +31 -0
- package/components/ui/scroll-area.tsx +58 -0
- package/components/ui/select.tsx +187 -0
- package/components/ui/separator.tsx +31 -0
- package/components/ui/sidebar.tsx +577 -0
- package/components/ui/table.tsx +120 -0
- package/components/ui/tabs.tsx +66 -0
- package/components/ui/textarea.tsx +46 -0
- package/components/ui/toggle-group.tsx +83 -0
- package/components/ui/toggle.tsx +47 -0
- package/components/ui/tooltip.tsx +61 -0
- package/dist/index.cjs +7389 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +75 -0
- package/dist/index.css.map +1 -0
- package/dist/index.js +7160 -0
- package/dist/index.js.map +1 -0
- package/hooks/useAIDocReviewer.d.ts +0 -0
- package/lib/utils.ts +6 -0
- package/package.json +140 -0
- package/tokens/color/base.json +14 -0
- package/tokens/color/dark.json +40 -0
- package/tokens/color/green.json +21 -0
- package/tokens/color/light.json +52 -0
- package/tokens/color/neutral.json +20 -0
- package/tokens/color/violet.json +21 -0
- package/tokens/spacing.json +22 -0
- package/utils/ai-editor/format-date.ts +41 -0
- package/utils/ai-editor/index.ts +22 -0
- package/utils/ai-editor/type-guards.ts +72 -0
- package/utils/ai-editor/validation.ts +130 -0
- package/utils/editor-annotations.ts +122 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../lib/utils.ts","../components/ui/accordion.tsx","../components/primitives/Accordion/Accordion.tsx","../components/ui/alert.tsx","../components/primitives/Alert/Alert.tsx","../components/ui/button.tsx","../components/ui/alert-dialog.tsx","../components/primitives/AlertDialog/AlertDialog.tsx","../components/ui/avatar.tsx","../components/primitives/Avatar/Avatar.tsx","../components/ui/badge.tsx","../components/primitives/Badge/Badge.tsx","../components/primitives/Button/Button.tsx","../components/ui/card.tsx","../components/primitives/Card/Card.tsx","../components/ui/carousel.tsx","../components/primitives/Carousel/Carousel.tsx","../components/ui/chart.tsx","../components/primitives/Chart/Chart.tsx","../components/ui/checkbox.tsx","../components/primitives/Checkbox/Checkbox.tsx","../components/ui/collapsible.tsx","../components/primitives/Collapsible/Collapsible.tsx","../components/ui/dialog.tsx","../components/ui/command.tsx","../components/primitives/Command/Command.tsx","../components/primitives/Dialog/Dialog.tsx","../components/ui/drawer.tsx","../components/primitives/Drawer/Drawer.tsx","../components/ui/dropdown-menu.tsx","../components/primitives/DropdownMenu/DropdownMenu.tsx","../components/ui/hover-card.tsx","../components/primitives/HoverCard/HoverCard.tsx","../registry/icons.ts","../components/primitives/Icon/Icon.tsx","../components/ui/input.tsx","../components/primitives/Input/Input.tsx","../components/ui/textarea.tsx","../components/ui/input-group.tsx","../components/primitives/InputGroup/InputGroup.tsx","../components/ui/label.tsx","../components/primitives/Label/Label.tsx","../components/ui/popover.tsx","../components/primitives/Popover/Popover.tsx","../components/ui/progress.tsx","../components/primitives/Progress/Progress.tsx","../components/ui/scroll-area.tsx","../components/primitives/ScrollArea/ScrollArea.tsx","../components/ui/select.tsx","../components/primitives/Select/Select.tsx","../components/ui/separator.tsx","../components/primitives/Separator/Separator.tsx","../components/ui/tooltip.tsx","../components/ui/sidebar.tsx","../components/primitives/Sidebar/Sidebar.tsx","../components/ui/table.tsx","../components/primitives/Table/Table.tsx","../components/ui/tabs.tsx","../components/primitives/Tabs/Tabs.tsx","../components/primitives/Textarea/Textarea.tsx","../components/ui/toggle.tsx","../components/ui/toggle-group.tsx","../components/primitives/ToggleGroup/ToggleGroup.tsx","../components/primitives/Tooltip/Tooltip.tsx","../components/ai-elements/code-block.tsx","../components/ai-elements/tool.tsx","../components/composites/ToolCallDisplay/ToolCallDisplay.tsx","../components/composites/AgentIndicator/AgentIndicator.tsx","../components/ai-elements/message.tsx","../components/composites/UserMessage/UserMessage.tsx","../components/ai-elements/shimmer.tsx","../components/ai-elements/plan.tsx","../components/composites/SpecialistMessage/SpecialistMessage.tsx","../components/composites/OrchestratorMessage/OrchestratorMessage.tsx","../components/ai-elements/prompt-input.tsx","../components/composites/PromptInput/PromptInput.tsx","../components/ai-elements/queue.tsx","../components/composites/FileQueue/FileQueue.tsx","../components/composites/FileQueue/FileStatusBadge.tsx","../components/ai-elements/confirmation.tsx","../components/composites/Confirmation/Confirmation.tsx","../components/ai-elements/conversation.tsx","../utils/ai-editor/format-date.ts","../components/composites/CommentBox/CommentBox.tsx","../extensions/tiptap/CommentMark.ts","../extensions/tiptap/PendingCommentMark.ts","../extensions/tiptap/SuggestionMark.ts","../extensions/tiptap/BlockAdditionNode.ts","../utils/editor-annotations.ts","../components/composites/DocumentEditor/DocumentEditor.tsx","../components/composites/ModeToggle/ModeToggle.tsx","../components/composites/ThemeSelector/ThemeSelector.tsx","../components/composites/TablePagination/TablePagination.tsx","../components/composites/TableToolbar/TableToolbar.tsx","../components/composites/StatsCard/StatsCard.tsx","../components/composites/NavigationList/NavigationList.tsx","../components/composites/NavUser/NavUser.tsx","../components/composites/AppHeader/AppHeader.tsx","../components/composites/InteractiveChart/InteractiveChart.tsx","../components/composites/DataTable/DataTable.tsx","../components/composites/PageContainer/PageContainer.tsx","../components/blocks/AppSidebar/AppSidebar.tsx","../components/blocks/AIConversation/AIConversation.tsx","../components/blocks/FileChangeQueue/FileChangeQueue.tsx","../components/features/RefinementPanel/RefinementPanel.tsx","../components/features/SpecNavigator/SpecNavigator.tsx","../components/blocks/DocumentEditorWithComments/DocumentEditorWithComments.tsx","../components/features/AIDocEditor/AIDocEditor.tsx"],"names":["Accordion","React","jsx","Alert","React2","AlertTitle","AlertDescription","cva","jsxs","AlertDialog","React3","Avatar","React4","AvatarImage","AvatarFallback","Slot","Badge","React5","Button","React6","Card","React7","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","CardAction","React8","api","Carousel","React9","CarouselContent","CarouselItem","CarouselPrevious","CarouselNext","React10","config","ChartContainer","React11","ChartTooltip","ChartTooltipContent","ChartLegend","ChartLegendContent","ChartStyle","Checkbox","React12","CollapsibleTrigger","CollapsibleContent","Collapsible","React13","CommandPrimitive","Command","React14","CommandDialog","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandItem","CommandSeparator","CommandShortcut","Dialog","React15","DrawerPrimitive","React16","Drawer","DrawerPortal","DrawerOverlay","React17","DrawerTrigger","DrawerClose","DrawerContent","DrawerHeader","DrawerFooter","DrawerTitle","DrawerDescription","CheckIcon","DropdownMenu","React18","HoverCard","React19","HoverCardTrigger","HoverCardContent","React20","Input","React21","_a","_b","InputGroup","React22","InputGroupAddon","InputGroupButton","InputGroupInput","InputGroupText","InputGroupTextarea","Label","React23","React24","React25","Popover","React26","Progress","React27","ScrollArea","React28","ScrollBar","ChevronDownIcon","Select","React29","SelectTrigger","SelectContent","SelectItem","SelectLabel","SelectGroup","SelectValue","SelectSeparator","SelectScrollUpButton","SelectScrollDownButton","Separator","React30","React31","Tooltip","React32","open","Fragment","SidebarProvider","Sidebar","SidebarInset","SidebarHeader","SidebarContent","SidebarFooter","SidebarMenu","SidebarMenuItem","SidebarMenuButton","SidebarTrigger","SidebarGroup","SidebarGroupContent","SidebarGroupLabel","SidebarGroupAction","SidebarSeparator","React34","Table","React35","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","Tabs","React36","Textarea","React37","React38","ToggleGroup","React39","TooltipProvider","React40","TooltipTrigger","TooltipContent","createContext","useState","useEffect","CircleIcon","React41","React42","React43","useMemo","memo","useContext","React44","React45","useCallback","useRef","files","Icon","XIcon","PromptInput","React46","React47","React48","Confirmation","React49","Mark","mergeAttributes","React52","React53","React54","React55","React56","React57","React58","React59","React60","React61","React62","React63","statusConfig","React64","React65","React66","content"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from \"react\"\nimport {\n Accordion as ShadcnAccordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"../../ui/accordion\"\n\n/**\n * Accordion Primitive\n *\n * A foundational accordion component for collapsible content sections.\n * Built on Radix UI Accordion primitive with WCAG 2.1 Level AA compliance.\n *\n * ## Accessibility Features\n * - Keyboard navigation (Tab, Space, Enter, Arrow keys)\n * - Proper ARIA attributes (aria-expanded, aria-controls)\n * - Focus management\n * - Screen reader support\n *\n * @example\n * ```tsx\n * <Accordion type=\"single\" collapsible>\n * <AccordionItem value=\"item-1\">\n * <AccordionTrigger>Section 1</AccordionTrigger>\n * <AccordionContent>Content 1</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/accordion\n * @see https://www.radix-ui.com/primitives/docs/components/accordion\n */\n\nexport type AccordionProps = React.ComponentProps<typeof ShadcnAccordion>\nexport type AccordionItemProps = React.ComponentProps<typeof AccordionItem>\nexport type AccordionTriggerProps = React.ComponentProps<typeof AccordionTrigger>\nexport type AccordionContentProps = React.ComponentProps<typeof AccordionContent>\n\n/**\n * Accordion component\n *\n * A collapsible content container built on Radix UI Accordion primitive.\n * Supports both single and multiple item expansion.\n *\n * Features:\n * - Keyboard navigation (Tab, Space, Enter, Arrow keys)\n * - Proper ARIA attributes\n * - Focus management\n * - Screen reader support\n * - Smooth animations\n * - Dark mode support\n */\nexport const Accordion = React.forwardRef<\n React.ElementRef<typeof ShadcnAccordion>,\n AccordionProps\n>((props, ref) => {\n return <ShadcnAccordion {...props} />\n})\n\nAccordion.displayName = \"Accordion\"\n\n/**\n * Re-export Accordion sub-components for composition\n */\nexport { AccordionContent, AccordionItem, AccordionTrigger }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Alert as ShadcnAlert,\n AlertTitle as ShadcnAlertTitle,\n AlertDescription as ShadcnAlertDescription,\n} from \"@/components/ui/alert\";\n\n/**\n * Alert Primitive\n *\n * Displays a callout for user attention with variants for different message types.\n *\n * Features:\n * - Variant support (default, destructive)\n * - Icon support\n * - Title and description components\n * - Semantic role=\"alert\" for accessibility\n * - WCAG 2.1 Level AA compliant\n */\n\nexport type AlertProps = React.ComponentProps<typeof ShadcnAlert>;\nexport type AlertTitleProps = React.ComponentProps<typeof ShadcnAlertTitle>;\nexport type AlertDescriptionProps = React.ComponentProps<typeof ShadcnAlertDescription>;\n\n/**\n * Alert - Root container with role=\"alert\"\n */\nexport const Alert = React.memo<AlertProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnAlert>, AlertProps>(\n (props, ref) => {\n return <ShadcnAlert ref={ref} {...props} />;\n }\n )\n);\nAlert.displayName = \"Alert\";\n\n/**\n * AlertTitle - Title/heading for the alert\n */\nexport const AlertTitle = React.memo<AlertTitleProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnAlertTitle>, AlertTitleProps>(\n (props, ref) => {\n return <ShadcnAlertTitle ref={ref} {...props} />;\n }\n )\n);\nAlertTitle.displayName = \"AlertTitle\";\n\n/**\n * AlertDescription - Description content for the alert\n */\nexport const AlertDescription = React.memo<AlertDescriptionProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnAlertDescription>, AlertDescriptionProps>(\n (props, ref) => {\n return <ShadcnAlertDescription ref={ref} {...props} />;\n }\n )\n);\nAlertDescription.displayName = \"AlertDescription\";\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","import * as React from \"react\"\nimport {\n AlertDialog as ShadcnAlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"../../ui/alert-dialog\"\n\n/**\n * AlertDialog Primitive\n *\n * A foundational alert dialog component for critical user confirmations and destructive actions.\n * This primitive wraps shadcn/ui AlertDialog with extensibility for design system-specific\n * enhancements.\n *\n * Built on Radix UI AlertDialog primitive with WCAG 2.1 Level AA compliance:\n * - Focus trapping and restoration\n * - Keyboard navigation (Escape to cancel)\n * - Screen reader announcements with alert role\n * - Forced interaction (no overlay dismiss by default)\n * - Clear action/cancel distinction\n *\n * ## Key Differences from Dialog\n * - AlertDialog is specifically for critical confirmations\n * - Users must explicitly choose an action (Cancel or Action)\n * - No close button in corner (forces explicit choice)\n * - More restrictive interaction model\n * - Semantic alert role for screen readers\n *\n * @example\n * ```tsx\n * <AlertDialog>\n * <AlertDialogTrigger asChild>\n * <Button variant=\"destructive\">Delete Account</Button>\n * </AlertDialogTrigger>\n * <AlertDialogContent>\n * <AlertDialogHeader>\n * <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n * <AlertDialogDescription>\n * This action cannot be undone. This will permanently delete your\n * account and remove your data from our servers.\n * </AlertDialogDescription>\n * </AlertDialogHeader>\n * <AlertDialogFooter>\n * <AlertDialogCancel>Cancel</AlertDialogCancel>\n * <AlertDialogAction>Delete Account</AlertDialogAction>\n * </AlertDialogFooter>\n * </AlertDialogContent>\n * </AlertDialog>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/alert-dialog - shadcn/ui AlertDialog documentation\n * @see https://www.radix-ui.com/primitives/docs/components/alert-dialog - Radix UI AlertDialog primitive\n */\n\n/**\n * AlertDialog Root component props\n * Controls the open state and alert behavior\n */\nexport type AlertDialogProps = React.ComponentProps<typeof ShadcnAlertDialog>\n\n/**\n * AlertDialogContent component props\n * Main content container for alert dialog\n */\nexport type AlertDialogContentProps = React.ComponentProps<\n typeof AlertDialogContent\n>\n\n/**\n * AlertDialogTrigger component props\n * Element that opens the alert dialog\n */\nexport type AlertDialogTriggerProps = React.ComponentProps<\n typeof AlertDialogTrigger\n>\n\n/**\n * AlertDialogHeader component props\n * Header section for title and description\n */\nexport type AlertDialogHeaderProps = React.ComponentProps<\n typeof AlertDialogHeader\n>\n\n/**\n * AlertDialogFooter component props\n * Footer section with cancel and action buttons\n */\nexport type AlertDialogFooterProps = React.ComponentProps<\n typeof AlertDialogFooter\n>\n\n/**\n * AlertDialogTitle component props\n * Accessible title for the alert dialog (required)\n */\nexport type AlertDialogTitleProps = React.ComponentProps<\n typeof AlertDialogTitle\n>\n\n/**\n * AlertDialogDescription component props\n * Accessible description for the alert dialog (required)\n */\nexport type AlertDialogDescriptionProps = React.ComponentProps<\n typeof AlertDialogDescription\n>\n\n/**\n * AlertDialogAction component props\n * Primary action button (typically destructive or confirming)\n */\nexport type AlertDialogActionProps = React.ComponentProps<\n typeof AlertDialogAction\n>\n\n/**\n * AlertDialogCancel component props\n * Cancel button to dismiss the alert\n */\nexport type AlertDialogCancelProps = React.ComponentProps<\n typeof AlertDialogCancel\n>\n\n/**\n * AlertDialog component\n *\n * A modal dialog for critical user confirmations and destructive actions.\n * Built on Radix UI AlertDialog primitive with strict interaction requirements.\n *\n * Features:\n * - Focus trapping and restoration\n * - Keyboard navigation (Escape to cancel)\n * - Screen reader announcements with alert role\n * - Forced interaction (no overlay dismiss)\n * - Clear action/cancel distinction\n * - Dark mode support\n */\nexport const AlertDialog = React.forwardRef<\n React.ElementRef<typeof ShadcnAlertDialog>,\n AlertDialogProps\n>((props, ref) => {\n return <ShadcnAlertDialog {...props} />\n})\n\nAlertDialog.displayName = \"AlertDialog\"\n\n/**\n * Re-export all AlertDialog sub-components for composition\n *\n * These components should be used together to build complete alert dialog experiences:\n * - AlertDialogTrigger: Opens the alert dialog\n * - AlertDialogContent: Main content container\n * - AlertDialogHeader: Header section with title and description\n * - AlertDialogFooter: Footer section with cancel and action buttons\n * - AlertDialogTitle: Accessible title (required for a11y)\n * - AlertDialogDescription: Accessible description (required for a11y)\n * - AlertDialogAction: Primary action button (closes dialog on click)\n * - AlertDialogCancel: Cancel button (closes dialog on click)\n * - AlertDialogPortal: Advanced portal customization (rarely needed)\n * - AlertDialogOverlay: Advanced overlay customization (rarely needed)\n */\nexport {\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Avatar as ShadcnAvatar,\n AvatarImage as ShadcnAvatarImage,\n AvatarFallback as ShadcnAvatarFallback,\n} from \"@/components/ui/avatar\";\n\n/**\n * Avatar Primitive\n *\n * An image element with a fallback for representing a user or entity.\n *\n * Features:\n * - Automatic image loading with fallback\n * - Circular or custom shape support\n * - Size customization via className\n * - Lazy loading support\n * - WCAG 2.1 Level AA compliant\n */\n\nexport type AvatarProps = React.ComponentProps<typeof ShadcnAvatar>;\nexport type AvatarImageProps = React.ComponentProps<typeof ShadcnAvatarImage>;\nexport type AvatarFallbackProps = React.ComponentProps<typeof ShadcnAvatarFallback>;\n\n/**\n * Avatar - Root container for the avatar component\n */\nexport const Avatar = React.memo<AvatarProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnAvatar>, AvatarProps>(\n (props, ref) => {\n return <ShadcnAvatar ref={ref} {...props} />;\n }\n )\n);\nAvatar.displayName = \"Avatar\";\n\n/**\n * AvatarImage - The image element\n * Falls back to AvatarFallback if image fails to load\n */\nexport const AvatarImage = React.memo<AvatarImageProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnAvatarImage>, AvatarImageProps>(\n (props, ref) => {\n return <ShadcnAvatarImage ref={ref} {...props} />;\n }\n )\n);\nAvatarImage.displayName = \"AvatarImage\";\n\n/**\n * AvatarFallback - Fallback content when image is unavailable\n * Typically displays initials or an icon\n */\nexport const AvatarFallback = React.memo<AvatarFallbackProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnAvatarFallback>, AvatarFallbackProps>(\n (props, ref) => {\n return <ShadcnAvatarFallback ref={ref} {...props} />;\n }\n )\n);\nAvatarFallback.displayName = \"AvatarFallback\";\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\"\nimport { Badge as ShadcnBadge, badgeVariants } from \"../../ui/badge\"\nimport type { VariantProps } from \"class-variance-authority\"\n\n/**\n * Badge Primitive\n *\n * A small status indicator component for labels, counts, and status.\n * Built with CVA for variant management.\n *\n * @see https://ui.shadcn.com/docs/components/badge\n */\n\nexport type BadgeProps = React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & {\n asChild?: boolean\n }\n\n/**\n * Badge component\n *\n * A small status indicator component for labels, counts, and status.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n *\n * Features:\n * - Multiple variants for different contexts (default, secondary, destructive, outline)\n * - Flexible sizing and composition\n * - Dark mode support\n * - Can be rendered as a child element using asChild prop\n */\nexport const Badge = React.memo(\n React.forwardRef<HTMLSpanElement, BadgeProps>(\n (props, ref) => {\n return <ShadcnBadge ref={ref} {...props} />\n }\n )\n)\n\nBadge.displayName = \"Badge\"\n\n/**\n * Re-export badgeVariants for consumers who need direct access to the variant generator.\n */\nexport { badgeVariants }\n\n/**\n * Re-export VariantProps for type inference in consuming components\n */\nexport type { VariantProps }\n","import * as React from \"react\"\nimport {\n Button as ShadcnButton,\n buttonVariants,\n} from \"../../ui/button\"\nimport type { VariantProps } from \"class-variance-authority\"\n\n/**\n * Button Primitive\n *\n * A foundational button component that wraps shadcn/ui Button with design system\n * enhancements. This primitive serves as the single source of truth for all button\n * interactions across the application.\n *\n * @example\n * ```tsx\n * <Button variant=\"default\" size=\"default\">\n * Click me\n * </Button>\n *\n * <Button variant=\"destructive\" size=\"sm\">\n * Delete\n * </Button>\n *\n * <Button variant=\"outline\" size=\"lg\" asChild>\n * <Link href=\"/home\">Go Home</Link>\n * </Button>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/button - shadcn/ui Button documentation\n */\n\n/**\n * Button component props\n * Extends the native button element props with variant and size options\n */\nexport type ButtonProps = React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n /**\n * Renders the button as a child element using Radix Slot.\n * Useful for rendering buttons as links or other custom elements.\n * @default false\n */\n asChild?: boolean\n }\n\n/**\n * Button component\n *\n * A versatile button component with multiple variants and sizes, built on shadcn/ui foundation.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n *\n * Features:\n * - Multiple visual variants for different contexts\n * - Flexible sizing options including icon-only buttons\n * - Full keyboard navigation support\n * - ARIA attributes for screen readers\n * - Dark mode support\n * - Composition via asChild prop (Radix Slot)\n */\nexport const Button = React.memo(\n React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n return <ShadcnButton ref={ref} {...props} />\n }\n )\n)\n\nButton.displayName = \"Button\"\n\n/**\n * Re-export buttonVariants for consumers who need direct access to the variant generator.\n * This is useful for creating custom button-like components that need consistent styling.\n *\n * @example\n * ```tsx\n * import { buttonVariants } from './Button'\n *\n * <div className={buttonVariants({ variant: \"outline\", size: \"sm\" })}>\n * Custom button-like div\n * </div>\n * ```\n */\nexport { buttonVariants }\n\n/**\n * Re-export VariantProps for type inference in consuming components\n */\nexport type { VariantProps }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst cardVariants = cva(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border\",\n {\n variants: {\n elevation: {\n flat: \"shadow-none border-border/50\",\n elevated: \"shadow-lg border-border/30\",\n outlined: \"shadow-none border-border\",\n },\n padding: {\n sm: \"py-4\",\n default: \"py-6\",\n lg: \"py-8\",\n },\n },\n defaultVariants: {\n elevation: \"flat\",\n padding: \"default\",\n },\n }\n)\n\nexport interface CardProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof cardVariants> {}\n\nfunction Card({ className, elevation, padding, ...props }: CardProps) {\n return (\n <div\n data-slot=\"card\"\n className={cn(cardVariants({ elevation, padding }), className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n cardVariants,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import * as React from \"react\"\nimport {\n Card as ShadcnCard,\n cardVariants,\n CardHeader as ShadcnCardHeader,\n CardTitle as ShadcnCardTitle,\n CardDescription as ShadcnCardDescription,\n CardContent as ShadcnCardContent,\n CardFooter as ShadcnCardFooter,\n CardAction as ShadcnCardAction,\n} from \"../../ui/card\"\nimport type { VariantProps } from \"class-variance-authority\"\n\n/**\n * Card Primitive\n *\n * A foundational card component that wraps shadcn/ui Card with extensibility for\n * design system-specific enhancements. Cards are flexible containers for grouping\n * related content and actions, providing visual separation and hierarchy.\n *\n * @example\n * ```tsx\n * <Card>\n * <CardHeader>\n * <CardTitle>Card Title</CardTitle>\n * <CardDescription>Card description goes here</CardDescription>\n * </CardHeader>\n * <CardContent>\n * <p>Card content goes here</p>\n * </CardContent>\n * <CardFooter>\n * <Button>Action</Button>\n * </CardFooter>\n * </Card>\n *\n * <Card elevation=\"elevated\" padding=\"lg\">\n * <CardHeader>\n * <CardTitle>Elevated Card</CardTitle>\n * </CardHeader>\n * <CardContent>\n * <p>Card with elevated shadow and large padding</p>\n * </CardContent>\n * </Card>\n *\n * <Card elevation=\"outlined\" padding=\"sm\">\n * <CardHeader>\n * <CardTitle>Outlined Card</CardTitle>\n * </CardHeader>\n * <CardContent>\n * <p>Card with prominent border and compact padding</p>\n * </CardContent>\n * </Card>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/card - shadcn/ui Card documentation\n */\n\n/**\n * Card component props\n * Extends the native div element props with variant options\n */\nexport type CardProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof cardVariants>\n\n/**\n * CardHeader component props\n * Extends the native div element props\n */\nexport type CardHeaderProps = React.ComponentProps<\"div\">\n\n/**\n * CardTitle component props\n * Extends the native div element props\n */\nexport type CardTitleProps = React.ComponentProps<\"div\">\n\n/**\n * CardDescription component props\n * Extends the native div element props\n */\nexport type CardDescriptionProps = React.ComponentProps<\"div\">\n\n/**\n * CardContent component props\n * Extends the native div element props\n */\nexport type CardContentProps = React.ComponentProps<\"div\">\n\n/**\n * CardFooter component props\n * Extends the native div element props\n */\nexport type CardFooterProps = React.ComponentProps<\"div\">\n\n/**\n * CardAction component props\n * Extends the native div element props\n */\nexport type CardActionProps = React.ComponentProps<\"div\">\n\n/**\n * Card component\n *\n * A versatile card container component built on shadcn/ui foundation.\n * Provides visual separation and hierarchy for grouping related content and actions.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n *\n * Features:\n * - Flexible composition with header, content, and footer sections\n * - Elevation variants (flat, elevated, outlined) for different visual treatments\n * - Padding variants (sm, default, lg) for different content densities\n * - Title and description components for consistent typography\n * - Action slot for card header controls\n * - Dark mode support\n * - Semantic HTML structure\n */\nexport const Card = React.memo(\n React.forwardRef<HTMLDivElement, CardProps>(\n (props, ref) => {\n return <ShadcnCard ref={ref} {...props} />\n }\n )\n)\n\nCard.displayName = \"Card\"\n\n/**\n * Re-export cardVariants for consumers who need direct access to the variant generator.\n * This is useful for creating custom card-like components that need consistent styling.\n *\n * @example\n * ```tsx\n * import { cardVariants } from './Card'\n *\n * <div className={cardVariants({ elevation: \"elevated\", padding: \"lg\" })}>\n * Custom card-like div\n * </div>\n * ```\n */\nexport { cardVariants }\n\n/**\n * Re-export VariantProps for type inference in consuming components\n */\nexport type { VariantProps }\n\n/**\n * CardHeader component\n *\n * Used to group the card's title, description, and optional actions.\n * Provides consistent spacing and layout for the card's header section.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n */\nexport const CardHeader = React.memo(\n React.forwardRef<HTMLDivElement, CardHeaderProps>(\n (props, ref) => {\n return <ShadcnCardHeader ref={ref} {...props} />\n }\n )\n)\n\nCardHeader.displayName = \"CardHeader\"\n\n/**\n * CardTitle component\n *\n * The main heading for the card. Uses semantic HTML and proper typography hierarchy.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n */\nexport const CardTitle = React.memo(\n React.forwardRef<HTMLDivElement, CardTitleProps>(\n (props, ref) => {\n return <ShadcnCardTitle ref={ref} {...props} />\n }\n )\n)\n\nCardTitle.displayName = \"CardTitle\"\n\n/**\n * CardDescription component\n *\n * Supporting text for the card title. Uses muted styling to establish visual hierarchy.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n */\nexport const CardDescription = React.memo(\n React.forwardRef<HTMLDivElement, CardDescriptionProps>(\n (props, ref) => {\n return <ShadcnCardDescription ref={ref} {...props} />\n }\n )\n)\n\nCardDescription.displayName = \"CardDescription\"\n\n/**\n * CardContent component\n *\n * Main container for card body content. Provides consistent padding and spacing.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n */\nexport const CardContent = React.memo(\n React.forwardRef<HTMLDivElement, CardContentProps>(\n (props, ref) => {\n return <ShadcnCardContent ref={ref} {...props} />\n }\n )\n)\n\nCardContent.displayName = \"CardContent\"\n\n/**\n * CardFooter component\n *\n * Used for actions and supplementary content. Typically contains buttons or links.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n */\nexport const CardFooter = React.memo(\n React.forwardRef<HTMLDivElement, CardFooterProps>(\n (props, ref) => {\n return <ShadcnCardFooter ref={ref} {...props} />\n }\n )\n)\n\nCardFooter.displayName = \"CardFooter\"\n\n/**\n * CardAction component\n *\n * Used for action buttons or icons in the card header. Provides consistent positioning.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n */\nexport const CardAction = React.memo(\n React.forwardRef<HTMLDivElement, CardActionProps>(\n (props, ref) => {\n return <ShadcnCardAction ref={ref} {...props} />\n }\n )\n)\n\nCardAction.displayName = \"CardAction\"\n","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Carousel as ShadcnCarousel,\n CarouselContent as ShadcnCarouselContent,\n CarouselItem as ShadcnCarouselItem,\n CarouselNext as ShadcnCarouselNext,\n CarouselPrevious as ShadcnCarouselPrevious,\n type CarouselApi,\n} from \"@/components/ui/carousel\";\n\nexport type { CarouselApi };\nexport type CarouselProps = React.ComponentProps<typeof ShadcnCarousel>;\nexport type CarouselContentProps = React.ComponentProps<typeof ShadcnCarouselContent>;\nexport type CarouselItemProps = React.ComponentProps<typeof ShadcnCarouselItem>;\nexport type CarouselPreviousProps = React.ComponentProps<typeof ShadcnCarouselPrevious>;\nexport type CarouselNextProps = React.ComponentProps<typeof ShadcnCarouselNext>;\n\nexport const Carousel = React.memo<CarouselProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCarousel>, CarouselProps>(\n (props, ref) => {\n return <ShadcnCarousel ref={ref} {...props} />;\n }\n )\n);\nCarousel.displayName = \"Carousel\";\n\nexport const CarouselContent = React.memo<CarouselContentProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCarouselContent>, CarouselContentProps>(\n (props, ref) => {\n return <ShadcnCarouselContent ref={ref} {...props} />;\n }\n )\n);\nCarouselContent.displayName = \"CarouselContent\";\n\nexport const CarouselItem = React.memo<CarouselItemProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCarouselItem>, CarouselItemProps>(\n (props, ref) => {\n return <ShadcnCarouselItem ref={ref} {...props} />;\n }\n )\n);\nCarouselItem.displayName = \"CarouselItem\";\n\nexport const CarouselPrevious = React.memo<CarouselPreviousProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCarouselPrevious>, CarouselPreviousProps>(\n (props, ref) => {\n return <ShadcnCarouselPrevious ref={ref} {...props} />;\n }\n )\n);\nCarouselPrevious.displayName = \"CarouselPrevious\";\n\nexport const CarouselNext = React.memo<CarouselNextProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCarouselNext>, CarouselNextProps>(\n (props, ref) => {\n return <ShadcnCarouselNext ref={ref} {...props} />;\n }\n )\n);\nCarouselNext.displayName = \"CarouselNext\";\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_line]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_line]:stroke-border [&_.recharts-sector]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n})\nChartContainer.displayName = \"ChartContainer\"\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([_, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n active?: boolean\n payload?: any[]\n label?: string\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n labelFormatter?: (value: any, payload: any[]) => React.ReactNode\n labelClassName?: string\n formatter?: (value: any, name: any, item: any, index: any, payload: any) => React.ReactNode\n color?: string\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`\n const itemConfig = config[key as keyof typeof config]\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n ref={ref}\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = config[key as keyof typeof config]\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n }\n)\nChartTooltipContent.displayName = \"ChartTooltipContent\"\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n payload?: any[]\n verticalAlign?: \"top\" | \"bottom\"\n hideIcon?: boolean\n nameKey?: string\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = config[key as keyof typeof config]\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.value}\n </span>\n </div>\n )\n })}\n </div>\n )\n }\n)\nChartLegendContent.displayName = \"ChartLegendContent\"\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","import * as React from \"react\"\nimport {\n ChartContainer as ShadcnChartContainer,\n ChartTooltip as ShadcnChartTooltip,\n ChartTooltipContent as ShadcnChartTooltipContent,\n ChartLegend as ShadcnChartLegend,\n ChartLegendContent as ShadcnChartLegendContent,\n ChartStyle as ShadcnChartStyle,\n} from \"../../ui/chart\"\nimport type { ChartConfig } from \"../../ui/chart\"\n\n/**\n * Chart Primitive\n *\n * A foundational chart component that wraps shadcn/ui Chart with design system\n * enhancements. This primitive serves as the single source of truth for all data\n * visualizations across the application.\n *\n * @example\n * ```tsx\n * const chartConfig = {\n * desktop: { label: \"Desktop\", color: \"var(--chart-1)\" },\n * mobile: { label: \"Mobile\", color: \"var(--chart-2)\" },\n * }\n *\n * <ChartContainer config={chartConfig}>\n * <BarChart data={data}>\n * <Bar dataKey=\"desktop\" fill=\"var(--color-desktop)\" />\n * <Bar dataKey=\"mobile\" fill=\"var(--color-mobile)\" />\n * </BarChart>\n * </ChartContainer>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/chart - shadcn/ui Chart documentation\n */\n\n/**\n * ChartContainer component props\n */\nexport type ChartContainerProps = React.ComponentProps<typeof ShadcnChartContainer>\n\n/**\n * ChartContainer component\n *\n * Container for chart components with configuration and theming.\n */\nexport const ChartContainer = React.memo(\n React.forwardRef<HTMLDivElement, ChartContainerProps>((props, ref) => {\n return <ShadcnChartContainer ref={ref} {...props} />\n })\n)\n\nChartContainer.displayName = \"ChartContainer\"\n\n/**\n * ChartTooltip component\n *\n * Tooltip component for charts from Recharts.\n */\nexport const ChartTooltip = ShadcnChartTooltip\n\n/**\n * ChartTooltipContent component props\n */\nexport type ChartTooltipContentProps = React.ComponentProps<typeof ShadcnChartTooltipContent>\n\n/**\n * ChartTooltipContent component\n *\n * Styled tooltip content for charts.\n */\nexport const ChartTooltipContent = React.memo(\n React.forwardRef<HTMLDivElement, ChartTooltipContentProps>((props, ref) => {\n return <ShadcnChartTooltipContent ref={ref} {...props} />\n })\n)\n\nChartTooltipContent.displayName = \"ChartTooltipContent\"\n\n/**\n * ChartLegend component\n *\n * Legend component for charts from Recharts.\n */\nexport const ChartLegend = ShadcnChartLegend\n\nChartLegend.displayName = \"ChartLegend\"\n\n/**\n * ChartLegendContent component props\n */\nexport type ChartLegendContentProps = React.ComponentProps<typeof ShadcnChartLegendContent>\n\n/**\n * ChartLegendContent component\n *\n * Styled legend content for charts.\n */\nexport const ChartLegendContent = React.memo(\n React.forwardRef<HTMLDivElement, ChartLegendContentProps>((props, ref) => {\n return <ShadcnChartLegendContent ref={ref} {...props} />\n })\n)\n\nChartLegendContent.displayName = \"ChartLegendContent\"\n\n/**\n * ChartStyle component\n *\n * Internal component for injecting chart color styles.\n */\nexport const ChartStyle = ShadcnChartStyle\n\n/**\n * Re-export ChartConfig type for chart configuration\n */\nexport type { ChartConfig }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","import * as React from \"react\"\nimport { Checkbox as ShadcnCheckbox } from \"../../ui/checkbox\"\n\n/**\n * Checkbox Primitive\n *\n * A checkbox input component with support for checked, unchecked, and indeterminate states.\n * Built on Radix UI Checkbox primitive with WCAG 2.1 Level AA compliance.\n *\n * @see https://ui.shadcn.com/docs/components/checkbox\n * @see https://www.radix-ui.com/primitives/docs/components/checkbox\n */\n\nexport type CheckboxProps = React.ComponentProps<typeof ShadcnCheckbox>\n\n/**\n * Checkbox component\n *\n * A checkbox input component with support for checked, unchecked, and indeterminate states.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n *\n * Features:\n * - Three states: checked, unchecked, indeterminate\n * - Full keyboard navigation support\n * - ARIA attributes for screen readers\n * - Dark mode support\n * - Accessible label association\n */\nexport const Checkbox = React.memo(\n React.forwardRef<\n React.ElementRef<typeof ShadcnCheckbox>,\n CheckboxProps\n >((props, ref) => {\n return <ShadcnCheckbox ref={ref} {...props} />\n })\n)\n\nCheckbox.displayName = \"Checkbox\"\n","\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Collapsible as ShadcnCollapsible,\n CollapsibleContent as ShadcnCollapsibleContent,\n CollapsibleTrigger as ShadcnCollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\n\nexport type CollapsibleProps = React.ComponentProps<typeof ShadcnCollapsible>;\nexport type CollapsibleTriggerProps = React.ComponentProps<typeof ShadcnCollapsibleTrigger>;\nexport type CollapsibleContentProps = React.ComponentProps<typeof ShadcnCollapsibleContent>;\n\nexport const Collapsible = React.memo<CollapsibleProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCollapsible>, CollapsibleProps>(\n (props, ref) => {\n return <ShadcnCollapsible {...props} />;\n }\n )\n);\nCollapsible.displayName = \"Collapsible\";\n\nexport const CollapsibleTrigger = React.memo<CollapsibleTriggerProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCollapsibleTrigger>, CollapsibleTriggerProps>(\n (props, ref) => {\n return <ShadcnCollapsibleTrigger ref={ref} {...props} />;\n }\n )\n);\nCollapsibleTrigger.displayName = \"CollapsibleTrigger\";\n\nexport const CollapsibleContent = React.memo<CollapsibleContentProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCollapsibleContent>, CollapsibleContentProps>(\n (props, ref) => {\n return <ShadcnCollapsibleContent ref={ref} {...props} />;\n }\n )\n);\nCollapsibleContent.displayName = \"CollapsibleContent\";\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"**:[[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 **:[[cmdk-input]]:h-12 **:[[cmdk-item]]:px-2 **:[[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Command as ShadcnCommand,\n CommandDialog as ShadcnCommandDialog,\n CommandEmpty as ShadcnCommandEmpty,\n CommandGroup as ShadcnCommandGroup,\n CommandInput as ShadcnCommandInput,\n CommandItem as ShadcnCommandItem,\n CommandList as ShadcnCommandList,\n CommandSeparator as ShadcnCommandSeparator,\n CommandShortcut as ShadcnCommandShortcut,\n} from \"@/components/ui/command\";\n\n/**\n * Command Primitive\n *\n * A command menu component for search and command palette functionality.\n * Built on cmdk (Command+K) library with full keyboard navigation.\n *\n * Features:\n * - Fast fuzzy search\n * - Keyboard navigation\n * - Command groups and shortcuts\n * - Dialog mode for command palette\n * - Empty state handling\n * - WCAG 2.1 Level AA compliant\n */\n\nexport type CommandProps = React.ComponentProps<typeof ShadcnCommand>;\nexport type CommandDialogProps = React.ComponentProps<typeof ShadcnCommandDialog>;\nexport type CommandInputProps = React.ComponentProps<typeof ShadcnCommandInput>;\nexport type CommandListProps = React.ComponentProps<typeof ShadcnCommandList>;\nexport type CommandEmptyProps = React.ComponentProps<typeof ShadcnCommandEmpty>;\nexport type CommandGroupProps = React.ComponentProps<typeof ShadcnCommandGroup>;\nexport type CommandItemProps = React.ComponentProps<typeof ShadcnCommandItem>;\nexport type CommandSeparatorProps = React.ComponentProps<typeof ShadcnCommandSeparator>;\nexport type CommandShortcutProps = React.ComponentProps<typeof ShadcnCommandShortcut>;\n\n/**\n * Command - Root command menu component\n */\nexport const Command = React.memo<CommandProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCommand>, CommandProps>(\n (props, ref) => {\n return <ShadcnCommand ref={ref} {...props} />;\n }\n )\n);\nCommand.displayName = \"Command\";\n\n/**\n * CommandDialog - Command menu in a dialog (Command+K style)\n */\nexport const CommandDialog = React.memo<CommandDialogProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCommandDialog>, CommandDialogProps>(\n (props, ref) => {\n return <ShadcnCommandDialog {...props} />;\n }\n )\n);\nCommandDialog.displayName = \"CommandDialog\";\n\n/**\n * CommandInput - Search input for filtering commands\n */\nexport const CommandInput = React.memo<CommandInputProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCommandInput>, CommandInputProps>(\n (props, ref) => {\n return <ShadcnCommandInput ref={ref} {...props} />;\n }\n )\n);\nCommandInput.displayName = \"CommandInput\";\n\n/**\n * CommandList - Scrollable list container for command items\n */\nexport const CommandList = React.memo<CommandListProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCommandList>, CommandListProps>(\n (props, ref) => {\n return <ShadcnCommandList ref={ref} {...props} />;\n }\n )\n);\nCommandList.displayName = \"CommandList\";\n\n/**\n * CommandEmpty - Displayed when no results found\n */\nexport const CommandEmpty = React.memo<CommandEmptyProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCommandEmpty>, CommandEmptyProps>(\n (props, ref) => {\n return <ShadcnCommandEmpty ref={ref} {...props} />;\n }\n )\n);\nCommandEmpty.displayName = \"CommandEmpty\";\n\n/**\n * CommandGroup - Groups related command items\n */\nexport const CommandGroup = React.memo<CommandGroupProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCommandGroup>, CommandGroupProps>(\n (props, ref) => {\n return <ShadcnCommandGroup ref={ref} {...props} />;\n }\n )\n);\nCommandGroup.displayName = \"CommandGroup\";\n\n/**\n * CommandItem - Individual command item\n */\nexport const CommandItem = React.memo<CommandItemProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCommandItem>, CommandItemProps>(\n (props, ref) => {\n return <ShadcnCommandItem ref={ref} {...props} />;\n }\n )\n);\nCommandItem.displayName = \"CommandItem\";\n\n/**\n * CommandSeparator - Visual separator between groups\n */\nexport const CommandSeparator = React.memo<CommandSeparatorProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCommandSeparator>, CommandSeparatorProps>(\n (props, ref) => {\n return <ShadcnCommandSeparator ref={ref} {...props} />;\n }\n )\n);\nCommandSeparator.displayName = \"CommandSeparator\";\n\n/**\n * CommandShortcut - Displays keyboard shortcut hint\n */\nexport const CommandShortcut = React.memo<CommandShortcutProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnCommandShortcut>, CommandShortcutProps>(\n (props, ref) => {\n return <ShadcnCommandShortcut ref={ref} {...props} />;\n }\n )\n);\nCommandShortcut.displayName = \"CommandShortcut\";\n","import * as React from \"react\"\nimport {\n Dialog as ShadcnDialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n} from \"../../ui/dialog\"\n\n/**\n * Dialog Primitive\n *\n * A foundational modal dialog component that wraps shadcn/ui Dialog with extensibility for\n * design system-specific enhancements. This primitive provides accessible modal interactions\n * with full keyboard navigation and focus management.\n *\n * Built on Radix UI Dialog primitive with WCAG 2.1 Level AA compliance:\n * - Proper focus trapping and restoration\n * - Keyboard navigation (Escape to close)\n * - Screen reader announcements\n * - Portal rendering for proper layering\n *\n * @example\n * ```tsx\n * <Dialog>\n * <DialogTrigger asChild>\n * <Button>Open Dialog</Button>\n * </DialogTrigger>\n * <DialogContent>\n * <DialogHeader>\n * <DialogTitle>Dialog Title</DialogTitle>\n * <DialogDescription>Dialog description text</DialogDescription>\n * </DialogHeader>\n * <div>Dialog body content</div>\n * <DialogFooter>\n * <Button>Action</Button>\n * </DialogFooter>\n * </DialogContent>\n * </Dialog>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/dialog - shadcn/ui Dialog documentation\n * @see https://www.radix-ui.com/primitives/docs/components/dialog - Radix UI Dialog primitive\n */\n\n/**\n * Dialog Root component props\n * Controls the open state and modal behavior\n */\nexport type DialogProps = React.ComponentProps<typeof ShadcnDialog>\n\n/**\n * DialogContent component props\n * Main content container with optional close button\n */\nexport type DialogContentProps = React.ComponentProps<typeof DialogContent>\n\n/**\n * DialogTrigger component props\n * Element that opens the dialog\n */\nexport type DialogTriggerProps = React.ComponentProps<typeof DialogTrigger>\n\n/**\n * DialogHeader component props\n * Header section for title and description\n */\nexport type DialogHeaderProps = React.ComponentProps<typeof DialogHeader>\n\n/**\n * DialogFooter component props\n * Footer section for action buttons\n */\nexport type DialogFooterProps = React.ComponentProps<typeof DialogFooter>\n\n/**\n * DialogTitle component props\n * Accessible title for the dialog\n */\nexport type DialogTitleProps = React.ComponentProps<typeof DialogTitle>\n\n/**\n * DialogDescription component props\n * Accessible description for the dialog\n */\nexport type DialogDescriptionProps = React.ComponentProps<typeof DialogDescription>\n\n/**\n * Dialog component\n *\n * A modal dialog component built on Radix UI Dialog primitive.\n * Provides accessible modal interactions with full keyboard navigation.\n *\n * Features:\n * - Focus trapping and restoration\n * - Keyboard navigation (Escape to close)\n * - Screen reader announcements\n * - Portal rendering for proper layering\n * - Overlay dismiss support\n * - Dark mode support\n */\nexport const Dialog = React.forwardRef<\n React.ElementRef<typeof ShadcnDialog>,\n DialogProps\n>((props, ref) => {\n return <ShadcnDialog {...props} />\n})\n\nDialog.displayName = \"Dialog\"\n\n/**\n * Re-export all Dialog sub-components for composition\n *\n * These components should be used together to build complete dialog experiences:\n * - DialogTrigger: Opens the dialog\n * - DialogContent: Main content container\n * - DialogHeader: Header section with title and description\n * - DialogFooter: Footer section with actions\n * - DialogTitle: Accessible title (required for a11y)\n * - DialogDescription: Accessible description (recommended for a11y)\n * - DialogClose: Explicitly close the dialog (optional, auto close button in DialogContent)\n * - DialogPortal: Advanced portal customization (rarely needed)\n * - DialogOverlay: Advanced overlay customization (rarely needed)\n */\nexport {\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Drawer = ({\n shouldScaleBackground = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n {...props}\n />\n)\nDrawer.displayName = \"Drawer\"\n\nconst DrawerTrigger = DrawerPrimitive.Trigger\n\nconst DrawerPortal = DrawerPrimitive.Portal\n\nconst DrawerClose = DrawerPrimitive.Close\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\n {...props}\n />\n))\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\n className\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n))\nDrawerContent.displayName = \"DrawerContent\"\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n)\nDrawerHeader.displayName = \"DrawerHeader\"\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n)\nDrawerFooter.displayName = \"DrawerFooter\"\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","import * as React from \"react\"\nimport {\n Drawer as ShadcnDrawer,\n DrawerPortal as ShadcnDrawerPortal,\n DrawerOverlay as ShadcnDrawerOverlay,\n DrawerTrigger as ShadcnDrawerTrigger,\n DrawerClose as ShadcnDrawerClose,\n DrawerContent as ShadcnDrawerContent,\n DrawerHeader as ShadcnDrawerHeader,\n DrawerFooter as ShadcnDrawerFooter,\n DrawerTitle as ShadcnDrawerTitle,\n DrawerDescription as ShadcnDrawerDescription,\n} from \"../../ui/drawer\"\n\n/**\n * Drawer Primitive\n *\n * A foundational drawer component that wraps shadcn/ui Drawer with design system\n * enhancements. This primitive serves as the single source of truth for all drawer\n * interactions across the application.\n *\n * @example\n * ```tsx\n * <Drawer>\n * <DrawerTrigger>Open Drawer</DrawerTrigger>\n * <DrawerContent>\n * <DrawerHeader>\n * <DrawerTitle>Drawer Title</DrawerTitle>\n * <DrawerDescription>Drawer description</DrawerDescription>\n * </DrawerHeader>\n * <div>Drawer content</div>\n * <DrawerFooter>\n * <DrawerClose>Close</DrawerClose>\n * </DrawerFooter>\n * </DrawerContent>\n * </Drawer>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/drawer - shadcn/ui Drawer documentation\n */\n\n/**\n * Drawer component props\n */\nexport type DrawerProps = React.ComponentProps<typeof ShadcnDrawer>\n\n/**\n * Drawer component\n *\n * A drawer component for displaying content in a slide-out panel, built on shadcn/ui foundation.\n *\n * Features:\n * - Slide-out panel from bottom (mobile-first)\n * - Backdrop overlay\n * - Keyboard navigation support\n * - Focus management\n * - Dark mode support\n */\nexport const Drawer = ShadcnDrawer\n\nDrawer.displayName = \"Drawer\"\n\n/**\n * DrawerPortal component\n *\n * Portal component for rendering drawer content in a portal.\n */\nexport const DrawerPortal = ShadcnDrawerPortal\n\nDrawerPortal.displayName = \"DrawerPortal\"\n\n/**\n * DrawerOverlay component props\n */\nexport type DrawerOverlayProps = React.ComponentPropsWithoutRef<typeof ShadcnDrawerOverlay>\n\n/**\n * DrawerOverlay component\n *\n * Backdrop overlay for the drawer.\n */\nexport const DrawerOverlay = React.memo(\n React.forwardRef<\n React.ElementRef<typeof ShadcnDrawerOverlay>,\n DrawerOverlayProps\n >((props, ref) => {\n return <ShadcnDrawerOverlay ref={ref} {...props} />\n })\n)\n\nDrawerOverlay.displayName = \"DrawerOverlay\"\n\n/**\n * DrawerTrigger component\n *\n * Button that triggers the drawer to open.\n */\nexport const DrawerTrigger = ShadcnDrawerTrigger\n\nDrawerTrigger.displayName = \"DrawerTrigger\"\n\n/**\n * DrawerClose component\n *\n * Button that closes the drawer.\n */\nexport const DrawerClose = ShadcnDrawerClose\n\nDrawerClose.displayName = \"DrawerClose\"\n\n/**\n * DrawerContent component props\n */\nexport type DrawerContentProps = React.ComponentPropsWithoutRef<typeof ShadcnDrawerContent>\n\n/**\n * DrawerContent component\n *\n * Container for drawer content with proper styling and animations.\n */\nexport const DrawerContent = React.memo(\n React.forwardRef<\n React.ElementRef<typeof ShadcnDrawerContent>,\n DrawerContentProps\n >((props, ref) => {\n return <ShadcnDrawerContent ref={ref} {...props} />\n })\n)\n\nDrawerContent.displayName = \"DrawerContent\"\n\n/**\n * DrawerHeader component props\n */\nexport type DrawerHeaderProps = React.HTMLAttributes<HTMLDivElement>\n\n/**\n * DrawerHeader component\n *\n * Header section of the drawer for title and description.\n */\nexport const DrawerHeader = React.memo(\n React.forwardRef<HTMLDivElement, DrawerHeaderProps>((props, ref) => {\n return <ShadcnDrawerHeader ref={ref} {...props} />\n })\n)\n\nDrawerHeader.displayName = \"DrawerHeader\"\n\n/**\n * DrawerFooter component props\n */\nexport type DrawerFooterProps = React.HTMLAttributes<HTMLDivElement>\n\n/**\n * DrawerFooter component\n *\n * Footer section of the drawer for actions.\n */\nexport const DrawerFooter = React.memo(\n React.forwardRef<HTMLDivElement, DrawerFooterProps>((props, ref) => {\n return <ShadcnDrawerFooter ref={ref} {...props} />\n })\n)\n\nDrawerFooter.displayName = \"DrawerFooter\"\n\n/**\n * DrawerTitle component props\n */\nexport type DrawerTitleProps = React.ComponentPropsWithoutRef<typeof ShadcnDrawerTitle>\n\n/**\n * DrawerTitle component\n *\n * Title of the drawer for accessibility.\n */\nexport const DrawerTitle = React.memo(\n React.forwardRef<\n React.ElementRef<typeof ShadcnDrawerTitle>,\n DrawerTitleProps\n >((props, ref) => {\n return <ShadcnDrawerTitle ref={ref} {...props} />\n })\n)\n\nDrawerTitle.displayName = \"DrawerTitle\"\n\n/**\n * DrawerDescription component props\n */\nexport type DrawerDescriptionProps = React.ComponentPropsWithoutRef<typeof ShadcnDrawerDescription>\n\n/**\n * DrawerDescription component\n *\n * Description of the drawer for accessibility.\n */\nexport const DrawerDescription = React.memo(\n React.forwardRef<\n React.ElementRef<typeof ShadcnDrawerDescription>,\n DrawerDescriptionProps\n >((props, ref) => {\n return <ShadcnDrawerDescription ref={ref} {...props} />\n })\n)\n\nDrawerDescription.displayName = \"DrawerDescription\"\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-inset:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import * as React from \"react\"\nimport {\n DropdownMenu as ShadcnDropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../../ui/dropdown-menu\"\n\n/**\n * DropdownMenu Primitive\n *\n * Displays a menu with actions or options triggered by a button.\n * Built on Radix UI DropdownMenu primitive with WCAG 2.1 Level AA compliance.\n *\n * @see https://ui.shadcn.com/docs/components/dropdown-menu\n * @see https://www.radix-ui.com/primitives/docs/components/dropdown-menu\n */\n\nexport type DropdownMenuProps = React.ComponentProps<typeof ShadcnDropdownMenu>\n\n/**\n * DropdownMenu component\n *\n * Displays a menu with actions or options triggered by a button.\n * Built on Radix UI DropdownMenu primitive with full accessibility support.\n *\n * Features:\n * - Keyboard navigation\n * - Checkbox and radio item support\n * - Submenu support\n * - Keyboard shortcuts display\n * - ARIA attributes\n * - Dark mode support\n */\nexport const DropdownMenu = React.forwardRef<\n React.ElementRef<typeof ShadcnDropdownMenu>,\n DropdownMenuProps\n>((props, ref) => {\n return <ShadcnDropdownMenu {...props} />\n})\n\nDropdownMenu.displayName = \"DropdownMenu\"\n\n/**\n * Re-export DropdownMenu sub-components for composition\n */\nexport {\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n HoverCard as ShadcnHoverCard,\n HoverCardContent as ShadcnHoverCardContent,\n HoverCardTrigger as ShadcnHoverCardTrigger,\n} from \"@/components/ui/hover-card\";\n\nexport type HoverCardProps = React.ComponentProps<typeof ShadcnHoverCard>;\nexport type HoverCardTriggerProps = React.ComponentProps<typeof ShadcnHoverCardTrigger>;\nexport type HoverCardContentProps = React.ComponentProps<typeof ShadcnHoverCardContent>;\n\nexport const HoverCard = React.memo<HoverCardProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnHoverCard>, HoverCardProps>(\n (props, ref) => {\n return <ShadcnHoverCard {...props} />;\n }\n )\n);\nHoverCard.displayName = \"HoverCard\";\n\nexport const HoverCardTrigger = React.memo<HoverCardTriggerProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnHoverCardTrigger>, HoverCardTriggerProps>(\n (props, ref) => {\n return <ShadcnHoverCardTrigger ref={ref} {...props} />;\n }\n )\n);\nHoverCardTrigger.displayName = \"HoverCardTrigger\";\n\nexport const HoverCardContent = React.memo<HoverCardContentProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnHoverCardContent>, HoverCardContentProps>(\n (props, ref) => {\n return <ShadcnHoverCardContent ref={ref} {...props} />;\n }\n )\n);\nHoverCardContent.displayName = \"HoverCardContent\";\n","/**\n * Icon registry for managing SVG icons\n * This allows for consistent icon usage across components\n */\n\nexport interface IconDefinition {\n name: string;\n viewBox: string;\n path: string;\n}\n\n/**\n * Default icon set with common UI icons\n * Icons are defined as SVG path data for optimal performance\n */\nexport const defaultIcons: Record<string, IconDefinition> = {\n // Navigation icons\n 'chevron-down': {\n name: 'chevron-down',\n viewBox: '0 0 24 24',\n path: 'M6 9l6 6 6-6',\n },\n 'chevron-up': {\n name: 'chevron-up',\n viewBox: '0 0 24 24',\n path: 'M18 15l-6-6-6 6',\n },\n 'chevron-left': {\n name: 'chevron-left',\n viewBox: '0 0 24 24',\n path: 'M15 18l-6-6 6-6',\n },\n 'chevron-right': {\n name: 'chevron-right',\n viewBox: '0 0 24 24',\n path: 'M9 18l6-6-6-6',\n },\n 'chevrons-up-down': {\n name: 'chevrons-up-down',\n viewBox: '0 0 24 24',\n path: 'M7 15l5 5 5-5M7 9l5-5 5 5',\n },\n 'arrow-left': {\n name: 'arrow-left',\n viewBox: '0 0 24 24',\n path: 'M19 12H5m7 7l-7-7 7-7',\n },\n 'arrow-right': {\n name: 'arrow-right',\n viewBox: '0 0 24 24',\n path: 'M5 12h14m-7-7 7 7-7 7',\n },\n \n // Action icons\n 'plus': {\n name: 'plus',\n viewBox: '0 0 24 24',\n path: 'M12 5v14m-7-7h14',\n },\n 'minus': {\n name: 'minus',\n viewBox: '0 0 24 24',\n path: 'M5 12h14',\n },\n 'x': {\n name: 'x',\n viewBox: '0 0 24 24',\n path: 'M18 6L6 18M6 6l12 12',\n },\n 'check': {\n name: 'check',\n viewBox: '0 0 24 24',\n path: 'M20 6L9 17l-5-5',\n },\n \n // Interface icons\n 'search': {\n name: 'search',\n viewBox: '0 0 24 24',\n path: 'M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z',\n },\n 'settings': {\n name: 'settings',\n viewBox: '0 0 24 24',\n path: 'M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z M15 12a3 3 0 11-6 0 3 3 0 016 0z',\n },\n 'menu': {\n name: 'menu',\n viewBox: '0 0 24 24',\n path: 'M4 6h16M4 12h16M4 18h16',\n },\n 'more-horizontal': {\n name: 'more-horizontal',\n viewBox: '0 0 24 24',\n path: 'M12 12h.01M19 12h.01M5 12h.01',\n },\n 'more-vertical': {\n name: 'more-vertical',\n viewBox: '0 0 24 24',\n path: 'M12 5h.01M12 12h.01M12 19h.01',\n },\n \n // Status icons\n 'alert-circle': {\n name: 'alert-circle',\n viewBox: '0 0 24 24',\n path: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10zM12 8v4m0 4h.01',\n },\n 'check-circle': {\n name: 'check-circle',\n viewBox: '0 0 24 24',\n path: 'M22 11.08V12a10 10 0 11-5.93-9.14M22 4L12 14.01l-3-3',\n },\n 'info': {\n name: 'info',\n viewBox: '0 0 24 24',\n path: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10zM12 16v-4m0-4h.01',\n },\n 'warning': {\n name: 'warning',\n viewBox: '0 0 24 24',\n path: 'M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0zM12 9v4m0 4h.01',\n },\n \n // File and document icons\n 'file': {\n name: 'file',\n viewBox: '0 0 24 24',\n path: 'M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8zM14 2v6h6M16 13H8m8 4H8m8-8H8',\n },\n 'folder': {\n name: 'folder',\n viewBox: '0 0 24 24',\n path: 'M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2z',\n },\n 'download': {\n name: 'download',\n viewBox: '0 0 24 24',\n path: 'M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4m4-5l5 5 5-5m-5 5V3',\n },\n 'upload': {\n name: 'upload',\n viewBox: '0 0 24 24',\n path: 'M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4m14-7l-5-5-5 5m5-5v12',\n },\n \n // Communication icons\n 'mail': {\n name: 'mail',\n viewBox: '0 0 24 24',\n path: 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2zM22 6l-10 7L2 6',\n },\n 'phone': {\n name: 'phone',\n viewBox: '0 0 24 24',\n path: 'M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z',\n },\n \n // Graph and visualization icons\n 'circle': {\n name: 'circle',\n viewBox: '0 0 24 24',\n path: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z',\n },\n 'square': {\n name: 'square',\n viewBox: '0 0 24 24',\n path: 'M3 3h18v18H3z',\n },\n 'triangle': {\n name: 'triangle',\n viewBox: '0 0 24 24',\n path: 'M12 2l10 18H2z',\n },\n 'diamond': {\n name: 'diamond',\n viewBox: '0 0 24 24',\n path: 'M6 3h12l4 6-10 12L2 9z',\n },\n \n // Additional action icons\n 'save': {\n name: 'save',\n viewBox: '0 0 24 24',\n path: 'M19 21H5a2 2 0 01-2-2V5a2 2 0 012-2h11l5 5v11a2 2 0 01-2 2zM17 21v-8H7v8M7 3v5h8',\n },\n 'loader-2': {\n name: 'loader-2',\n viewBox: '0 0 24 24',\n path: 'M21 12a9 9 0 11-6.219-8.56',\n },\n 'refresh-cw': {\n name: 'refresh-cw',\n viewBox: '0 0 24 24',\n path: 'M3 12a9 9 0 019-9 9.75 9.75 0 016.74 2.74L21 8M21 3v5h-5M21 12a9 9 0 01-9 9 9.75 9.75 0 01-6.74-2.74L3 16M3 21v-5h5',\n },\n 'rocket': {\n name: 'rocket',\n viewBox: '0 0 24 24',\n path: 'M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 00-2.91-.09zM12 15l-3-3a22 22 0 012-3.95A12.88 12.88 0 0122 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 01-4 2z',\n },\n 'file-text': {\n name: 'file-text',\n viewBox: '0 0 24 24',\n path: 'M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8zM14 2v6h6M16 13H8m8 4H8m8-8H8',\n },\n};\n\n/**\n * Type-safe icon names from the default icon set\n * Use this type to ensure icon names are valid at compile time\n */\nexport type IconName = keyof typeof defaultIcons;\n\n/**\n * Icon registry class for managing custom icons\n */\nclass IconRegistry {\n private icons: Map<string, IconDefinition> = new Map();\n\n constructor() {\n // Register default icons\n Object.values(defaultIcons).forEach(icon => {\n this.register(icon);\n });\n }\n\n /**\n * Register a new icon\n */\n register(icon: IconDefinition): void {\n this.icons.set(icon.name, icon);\n }\n\n /**\n * Register multiple icons at once\n */\n registerMany(icons: IconDefinition[]): void {\n icons.forEach(icon => this.register(icon));\n }\n\n /**\n * Get an icon by name\n */\n get(name: string): IconDefinition | undefined {\n return this.icons.get(name);\n }\n\n /**\n * Check if an icon exists\n */\n has(name: string): boolean {\n return this.icons.has(name);\n }\n\n /**\n * Get all registered icon names\n */\n getNames(): string[] {\n return Array.from(this.icons.keys());\n }\n\n /**\n * Remove an icon from the registry\n */\n unregister(name: string): boolean {\n return this.icons.delete(name);\n }\n}\n\n// Export singleton instance\nexport const iconRegistry = new IconRegistry();","\"use client\";\n\nimport * as React from \"react\";\nimport { iconRegistry, type IconName } from \"@/registry/icons\";\nimport { cn } from \"@/lib/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\n/**\n * Icon Primitive\n *\n * A reusable icon component that uses the centralized icon registry.\n * All icons MUST use this component or the iconRegistry directly.\n *\n * Features:\n * - Size variants (xs, sm, default, lg, xl)\n * - Accessibility support with aria-label\n * - Error handling for missing icons\n * - Color inherits from currentColor\n */\n\nconst iconVariants = cva(\"inline-block flex-shrink-0\", {\n variants: {\n size: {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n default: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n xl: \"h-8 w-8\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n});\n\nexport interface IconProps\n extends Omit<React.SVGProps<SVGSVGElement>, \"viewBox\" | \"children\">,\n VariantProps<typeof iconVariants> {\n /**\n * Name of the icon from the icon registry\n * Type-safe: only accepts valid icon names\n */\n name: IconName | string;\n /**\n * Optional aria-label for accessibility\n * If provided, aria-hidden will be false\n */\n \"aria-label\"?: string;\n}\n\n/**\n * Icon component - renders icons from the icon registry\n */\nexport const Icon = React.memo<IconProps>(\n ({ name, size, className, \"aria-label\": ariaLabel, ...props }) => {\n const icon = iconRegistry.get(name);\n\n if (!icon) {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `Icon \"${name}\" not found in registry. Available icons:`,\n iconRegistry.getNames().join(\", \")\n );\n }\n return null;\n }\n\n return (\n <svg\n viewBox={icon.viewBox}\n className={cn(iconVariants({ size }), className)}\n aria-hidden={!ariaLabel}\n aria-label={ariaLabel}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d={icon.path} />\n </svg>\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst inputVariants = cva(\n [\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input w-full min-w-0 rounded-md border bg-transparent px-3 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n ],\n {\n variants: {\n size: {\n sm: \"h-8 py-1 text-sm md:text-xs\",\n default: \"h-9 py-1 text-base md:text-sm\",\n lg: \"h-12 py-2 text-lg md:text-base\",\n },\n state: {\n default: \"\",\n error: \"border-destructive ring-destructive/20 dark:ring-destructive/40\",\n success: \"border-green-500 dark:border-green-600 ring-green-500/20 dark:ring-green-600/40\",\n warning: \"border-orange-500 dark:border-orange-600 ring-orange-500/20 dark:ring-orange-600/40\",\n },\n },\n defaultVariants: {\n size: \"default\",\n state: \"default\",\n },\n }\n)\n\nexport interface InputProps\n extends React.ComponentProps<\"input\">,\n VariantProps<typeof inputVariants> {}\n\nfunction Input({ className, type, size, state, ...props }: InputProps) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(inputVariants({ size, state }), className)}\n aria-invalid={state === \"error\" ? true : props[\"aria-invalid\"]}\n {...props}\n />\n )\n}\n\nexport { Input, inputVariants }\n","import * as React from \"react\"\nimport {\n Input as ShadcnInput,\n inputVariants,\n} from \"../../ui/input\"\nimport type { VariantProps } from \"class-variance-authority\"\n\n/**\n * Input Primitive\n *\n * A foundational input component that wraps shadcn/ui Input with design system\n * enhancements. This primitive serves as the single source of truth for all text\n * input interactions across the application.\n *\n * @example\n * ```tsx\n * <Input type=\"text\" placeholder=\"Enter your name\" />\n *\n * <Input type=\"email\" placeholder=\"email@example.com\" size=\"sm\" />\n *\n * <Input\n * type=\"password\"\n * placeholder=\"Enter password\"\n * state=\"error\"\n * />\n *\n * <Input\n * type=\"text\"\n * placeholder=\"Success state\"\n * state=\"success\"\n * size=\"lg\"\n * />\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/input - shadcn/ui Input documentation\n */\n\n/**\n * Input component props\n * Extends the native input element props with variant options\n */\nexport type InputProps = React.ComponentProps<\"input\"> &\n VariantProps<typeof inputVariants>\n\n/**\n * Input component\n *\n * A versatile input component built on shadcn/ui foundation with full accessibility support.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n *\n * Features:\n * - Full WCAG 2.1 Level AA compliance\n * - Support for all native input types\n * - Size variants (sm, default, lg) for different contexts\n * - State variants (default, error, success, warning) for visual feedback\n * - Validation state styling via aria-invalid\n * - Dark mode support\n * - Placeholder and disabled states\n */\nexport const Input = React.memo(\n React.forwardRef<HTMLInputElement, InputProps>(\n (props, ref) => {\n return <ShadcnInput ref={ref} {...props} />\n }\n )\n)\n\nInput.displayName = \"Input\"\n\n/**\n * Re-export inputVariants for consumers who need direct access to the variant generator.\n * This is useful for creating custom input-like components that need consistent styling.\n *\n * @example\n * ```tsx\n * import { inputVariants } from './Input'\n *\n * <div className={inputVariants({ size: \"sm\", state: \"error\" })}>\n * Custom input-like div\n * </div>\n * ```\n */\nexport { inputVariants }\n\n/**\n * Re-export VariantProps for type inference in consuming components\n */\nexport type { VariantProps }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst textareaVariants = cva(\n [\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n ],\n {\n variants: {\n size: {\n sm: \"py-2 text-sm md:text-xs\",\n default: \"py-3 text-base md:text-sm\",\n lg: \"py-4 text-lg md:text-base\",\n },\n state: {\n default: \"\",\n error: \"border-destructive ring-destructive/20 dark:ring-destructive/40\",\n success: \"border-green-500 dark:border-green-600 ring-green-500/20 dark:ring-green-600/40\",\n warning: \"border-orange-500 dark:border-orange-600 ring-orange-500/20 dark:ring-orange-600/40\",\n },\n },\n defaultVariants: {\n size: \"default\",\n state: \"default\",\n },\n }\n)\n\nexport interface TextareaProps\n extends React.ComponentProps<\"textarea\">,\n VariantProps<typeof textareaVariants> {}\n\nfunction Textarea({ className, size, state, ...props }: TextareaProps) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(textareaVariants({ size, state }), className)}\n aria-invalid={state === \"error\" ? true : props[\"aria-invalid\"]}\n {...props}\n />\n )\n}\n\nexport { Textarea, textareaVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none\",\n \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"text-sm shadow-none flex gap-2 items-center\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2\",\n sm: \"h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n InputGroup as ShadcnInputGroup,\n InputGroupAddon as ShadcnInputGroupAddon,\n InputGroupButton as ShadcnInputGroupButton,\n InputGroupInput as ShadcnInputGroupInput,\n InputGroupText as ShadcnInputGroupText,\n InputGroupTextarea as ShadcnInputGroupTextarea,\n} from \"@/components/ui/input-group\";\n\nexport type InputGroupProps = React.ComponentProps<typeof ShadcnInputGroup>;\nexport type InputGroupAddonProps = React.ComponentProps<typeof ShadcnInputGroupAddon>;\nexport type InputGroupButtonProps = React.ComponentProps<typeof ShadcnInputGroupButton>;\nexport type InputGroupInputProps = React.ComponentProps<typeof ShadcnInputGroupInput>;\nexport type InputGroupTextProps = React.ComponentProps<typeof ShadcnInputGroupText>;\nexport type InputGroupTextareaProps = React.ComponentProps<typeof ShadcnInputGroupTextarea>;\n\nexport const InputGroup = React.memo<InputGroupProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnInputGroup>, InputGroupProps>(\n (props, ref) => {\n return <ShadcnInputGroup ref={ref} {...props} />;\n }\n )\n);\nInputGroup.displayName = \"InputGroup\";\n\nexport const InputGroupAddon = React.memo<InputGroupAddonProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnInputGroupAddon>, InputGroupAddonProps>(\n (props, ref) => {\n return <ShadcnInputGroupAddon ref={ref} {...props} />;\n }\n )\n);\nInputGroupAddon.displayName = \"InputGroupAddon\";\n\nexport const InputGroupButton = React.memo<InputGroupButtonProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnInputGroupButton>, InputGroupButtonProps>(\n (props, ref) => {\n return <ShadcnInputGroupButton ref={ref} {...props} />;\n }\n )\n);\nInputGroupButton.displayName = \"InputGroupButton\";\n\nexport const InputGroupInput = React.memo<InputGroupInputProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnInputGroupInput>, InputGroupInputProps>(\n (props, ref) => {\n return <ShadcnInputGroupInput ref={ref} {...props} />;\n }\n )\n);\nInputGroupInput.displayName = \"InputGroupInput\";\n\nexport const InputGroupText = React.memo<InputGroupTextProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnInputGroupText>, InputGroupTextProps>(\n (props, ref) => {\n return <ShadcnInputGroupText ref={ref} {...props} />;\n }\n )\n);\nInputGroupText.displayName = \"InputGroupText\";\n\nexport const InputGroupTextarea = React.memo<InputGroupTextareaProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnInputGroupTextarea>, InputGroupTextareaProps>(\n (props, ref) => {\n return <ShadcnInputGroupTextarea ref={ref} {...props} />;\n }\n )\n);\nInputGroupTextarea.displayName = \"InputGroupTextarea\";\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import * as React from \"react\"\nimport { Label as ShadcnLabel } from \"../../ui/label\"\n\n/**\n * Label Primitive\n *\n * A foundational label component that wraps shadcn/ui Label with design system\n * enhancements. This primitive serves as the single source of truth for all form\n * labels across the application.\n *\n * @example\n * ```tsx\n * <Label htmlFor=\"email\">Email Address</Label>\n * <Input id=\"email\" type=\"email\" />\n *\n * <Label htmlFor=\"terms\">\n * Accept terms and conditions\n * </Label>\n * <Checkbox id=\"terms\" />\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/label - shadcn/ui Label documentation\n */\n\n/**\n * Label component props\n * Extends the native label element props\n */\nexport type LabelProps = React.ComponentPropsWithoutRef<typeof ShadcnLabel>\n\n/**\n * Label component\n *\n * An accessible label component for form inputs, built on shadcn/ui foundation.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n *\n * Features:\n * - Semantic HTML label element\n * - Proper association with form controls via htmlFor\n * - Consistent typography and spacing\n * - Dark mode support\n * - Disabled state styling via peer selectors\n */\nexport const Label = React.memo(\n React.forwardRef<\n React.ElementRef<typeof ShadcnLabel>,\n LabelProps\n >((props, ref) => {\n return <ShadcnLabel ref={ref} {...props} />\n })\n)\n\nLabel.displayName = \"Label\"\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import * as React from \"react\"\nimport {\n Popover as ShadcnPopover,\n PopoverAnchor,\n PopoverContent,\n PopoverTrigger,\n} from \"../../ui/popover\"\n\n/**\n * Popover Primitive\n *\n * A foundational popover component that wraps shadcn/ui Popover with extensibility for\n * design system-specific enhancements. This primitive provides accessible floating content\n * that appears near a trigger element or anchor point.\n *\n * Built on Radix UI Popover primitive with WCAG 2.1 Level AA compliance:\n * - Proper focus management\n * - Keyboard navigation (Escape to close)\n * - Screen reader announcements\n * - Portal rendering for proper layering\n * - Flexible positioning\n *\n * @example\n * ```tsx\n * <Popover>\n * <PopoverTrigger asChild>\n * <Button>Open Popover</Button>\n * </PopoverTrigger>\n * <PopoverContent>\n * <div>Popover content</div>\n * </PopoverContent>\n * </Popover>\n * ```\n *\n * @example With anchor positioning\n * ```tsx\n * <Popover>\n * <PopoverAnchor asChild>\n * <div ref={anchorRef}>Anchor element</div>\n * </PopoverAnchor>\n * <PopoverContent>\n * <div>Positioned near anchor</div>\n * </PopoverContent>\n * </Popover>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/popover - shadcn/ui Popover documentation\n * @see https://www.radix-ui.com/primitives/docs/components/popover - Radix UI Popover primitive\n */\n\n/**\n * Popover Root component props\n * Controls the open state and positioning behavior\n */\nexport type PopoverProps = React.ComponentProps<typeof ShadcnPopover>\n\n/**\n * PopoverContent component props\n * Main content container with positioning options\n */\nexport type PopoverContentProps = React.ComponentProps<typeof PopoverContent>\n\n/**\n * PopoverTrigger component props\n * Element that opens the popover\n */\nexport type PopoverTriggerProps = React.ComponentProps<typeof PopoverTrigger>\n\n/**\n * PopoverAnchor component props\n * Element to position the popover near (alternative to trigger)\n */\nexport type PopoverAnchorProps = React.ComponentProps<typeof PopoverAnchor>\n\n/**\n * Popover component\n *\n * A popover component built on Radix UI Popover primitive.\n * Provides accessible floating content with flexible positioning.\n *\n * Features:\n * - Focus management\n * - Keyboard navigation (Escape to close)\n * - Screen reader announcements\n * - Portal rendering for proper layering\n * - Flexible positioning (top, right, bottom, left)\n * - Anchor-based positioning\n * - Dark mode support\n */\nexport const Popover = React.forwardRef<\n React.ElementRef<typeof ShadcnPopover>,\n PopoverProps\n>((props, ref) => {\n return <ShadcnPopover {...props} />\n})\n\nPopover.displayName = \"Popover\"\n\n/**\n * Re-export all Popover sub-components for composition\n *\n * These components should be used together to build complete popover experiences:\n * - PopoverTrigger: Opens the popover (optional if using anchor)\n * - PopoverAnchor: Element to position near (alternative to trigger)\n * - PopoverContent: Main content container with positioning\n */\nexport { PopoverAnchor, PopoverContent, PopoverTrigger }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Progress as ShadcnProgress } from \"@/components/ui/progress\";\n\n/**\n * Progress Primitive\n *\n * Displays an indicator showing the completion progress of a task.\n *\n * Features:\n * - Determinate progress (0-100%)\n * - Smooth transitions\n * - Customizable height and color\n * - Accessible with proper ARIA attributes\n * - WCAG 2.1 Level AA compliant\n */\n\nexport type ProgressProps = React.ComponentProps<typeof ShadcnProgress>;\n\n/**\n * Progress - Displays task completion progress\n */\nexport const Progress = React.memo<ProgressProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnProgress>, ProgressProps>(\n (props, ref) => {\n return <ShadcnProgress ref={ref} {...props} />;\n }\n )\n);\nProgress.displayName = \"Progress\";\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ScrollArea as ShadcnScrollArea,\n ScrollBar as ShadcnScrollBar,\n} from \"@/components/ui/scroll-area\";\n\nexport type ScrollAreaProps = React.ComponentProps<typeof ShadcnScrollArea>;\nexport type ScrollBarProps = React.ComponentProps<typeof ShadcnScrollBar>;\n\nexport const ScrollArea = React.memo<ScrollAreaProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnScrollArea>, ScrollAreaProps>(\n (props, ref) => {\n return <ShadcnScrollArea ref={ref} {...props} />;\n }\n )\n);\nScrollArea.displayName = \"ScrollArea\";\n\nexport const ScrollBar = React.memo<ScrollBarProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnScrollBar>, ScrollBarProps>(\n (props, ref) => {\n return <ShadcnScrollBar ref={ref} {...props} />;\n }\n )\n);\nScrollBar.displayName = \"ScrollBar\";\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-placeholder:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width) scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Select as ShadcnSelect,\n SelectContent as ShadcnSelectContent,\n SelectGroup as ShadcnSelectGroup,\n SelectItem as ShadcnSelectItem,\n SelectLabel as ShadcnSelectLabel,\n SelectScrollDownButton as ShadcnSelectScrollDownButton,\n SelectScrollUpButton as ShadcnSelectScrollUpButton,\n SelectSeparator as ShadcnSelectSeparator,\n SelectTrigger as ShadcnSelectTrigger,\n SelectValue as ShadcnSelectValue,\n} from \"@/components/ui/select\";\n\n/**\n * Select Primitive\n *\n * A comprehensive select component built on Radix UI with shadcn/ui styling.\n * Provides a fully accessible dropdown select with keyboard navigation.\n *\n * Features:\n * - Keyboard navigation support\n * - Size variants (sm, default)\n * - Grouped options\n * - Scroll buttons for long lists\n * - Separator support\n * - Portal rendering\n * - WCAG 2.1 Level AA compliant\n */\n\nexport type SelectProps = React.ComponentProps<typeof ShadcnSelect>;\nexport type SelectTriggerProps = React.ComponentProps<typeof ShadcnSelectTrigger>;\nexport type SelectContentProps = React.ComponentProps<typeof ShadcnSelectContent>;\nexport type SelectItemProps = React.ComponentProps<typeof ShadcnSelectItem>;\nexport type SelectLabelProps = React.ComponentProps<typeof ShadcnSelectLabel>;\nexport type SelectGroupProps = React.ComponentProps<typeof ShadcnSelectGroup>;\nexport type SelectValueProps = React.ComponentProps<typeof ShadcnSelectValue>;\nexport type SelectSeparatorProps = React.ComponentProps<typeof ShadcnSelectSeparator>;\nexport type SelectScrollUpButtonProps = React.ComponentProps<typeof ShadcnSelectScrollUpButton>;\nexport type SelectScrollDownButtonProps = React.ComponentProps<typeof ShadcnSelectScrollDownButton>;\n\n/**\n * Root Select component - controls the select state\n */\nexport const Select = React.memo<SelectProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnSelect>, SelectProps>(\n (props, ref) => {\n return <ShadcnSelect {...props} />;\n }\n )\n);\nSelect.displayName = \"Select\";\n\n/**\n * SelectTrigger - The button that opens the select dropdown\n */\nexport const SelectTrigger = React.memo<SelectTriggerProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnSelectTrigger>, SelectTriggerProps>(\n (props, ref) => {\n return <ShadcnSelectTrigger ref={ref} {...props} />;\n }\n )\n);\nSelectTrigger.displayName = \"SelectTrigger\";\n\n/**\n * SelectContent - The dropdown content container\n */\nexport const SelectContent = React.memo<SelectContentProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnSelectContent>, SelectContentProps>(\n (props, ref) => {\n return <ShadcnSelectContent ref={ref} {...props} />;\n }\n )\n);\nSelectContent.displayName = \"SelectContent\";\n\n/**\n * SelectItem - Individual selectable option\n */\nexport const SelectItem = React.memo<SelectItemProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnSelectItem>, SelectItemProps>(\n (props, ref) => {\n return <ShadcnSelectItem ref={ref} {...props} />;\n }\n )\n);\nSelectItem.displayName = \"SelectItem\";\n\n/**\n * SelectLabel - Label for a group of items\n */\nexport const SelectLabel = React.memo<SelectLabelProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnSelectLabel>, SelectLabelProps>(\n (props, ref) => {\n return <ShadcnSelectLabel ref={ref} {...props} />;\n }\n )\n);\nSelectLabel.displayName = \"SelectLabel\";\n\n/**\n * SelectGroup - Groups related select items\n */\nexport const SelectGroup = React.memo<SelectGroupProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnSelectGroup>, SelectGroupProps>(\n (props, ref) => {\n return <ShadcnSelectGroup {...props} />;\n }\n )\n);\nSelectGroup.displayName = \"SelectGroup\";\n\n/**\n * SelectValue - Displays the selected value\n */\nexport const SelectValue = React.memo<SelectValueProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnSelectValue>, SelectValueProps>(\n (props, ref) => {\n return <ShadcnSelectValue {...props} />;\n }\n )\n);\nSelectValue.displayName = \"SelectValue\";\n\n/**\n * SelectSeparator - Visual separator between items\n */\nexport const SelectSeparator = React.memo<SelectSeparatorProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnSelectSeparator>, SelectSeparatorProps>(\n (props, ref) => {\n return <ShadcnSelectSeparator ref={ref} {...props} />;\n }\n )\n);\nSelectSeparator.displayName = \"SelectSeparator\";\n\n/**\n * SelectScrollUpButton - Button to scroll up in long lists\n */\nexport const SelectScrollUpButton = React.memo<SelectScrollUpButtonProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnSelectScrollUpButton>, SelectScrollUpButtonProps>(\n (props, ref) => {\n return <ShadcnSelectScrollUpButton ref={ref} {...props} />;\n }\n )\n);\nSelectScrollUpButton.displayName = \"SelectScrollUpButton\";\n\n/**\n * SelectScrollDownButton - Button to scroll down in long lists\n */\nexport const SelectScrollDownButton = React.memo<SelectScrollDownButtonProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnSelectScrollDownButton>, SelectScrollDownButtonProps>(\n (props, ref) => {\n return <ShadcnSelectScrollDownButton ref={ref} {...props} />;\n }\n )\n);\nSelectScrollDownButton.displayName = \"SelectScrollDownButton\";\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import * as React from \"react\"\nimport { Separator as ShadcnSeparator } from \"../../ui/separator\"\n\n/**\n * Separator Primitive\n *\n * A foundational separator component that wraps shadcn/ui Separator with design system\n * enhancements. This primitive serves as the single source of truth for all visual\n * separators across the application.\n *\n * @example\n * ```tsx\n * <Separator />\n * <Separator orientation=\"vertical\" />\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/separator - shadcn/ui Separator documentation\n */\n\n/**\n * Separator component props\n * Extends the Radix UI Separator props\n */\nexport type SeparatorProps = React.ComponentPropsWithoutRef<typeof ShadcnSeparator>\n\n/**\n * Separator component\n *\n * A visual separator component for dividing content, built on shadcn/ui foundation.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n *\n * Features:\n * - Horizontal and vertical orientations\n * - Semantic HTML with proper ARIA attributes\n * - Consistent styling across the application\n * - Dark mode support\n * - Decorative by default (not announced to screen readers)\n */\nexport const Separator = React.memo(\n React.forwardRef<\n React.ElementRef<typeof ShadcnSeparator>,\n SeparatorProps\n >((props, ref) => {\n return <ShadcnSeparator ref={ref} {...props} />\n })\n)\n\nSeparator.displayName = \"Separator\"\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/ui/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"var(--spacing-sidebar-width)\"\nconst SIDEBAR_WIDTH_MOBILE = \"var(--spacing-sidebar-width-mobile)\"\nconst SIDEBAR_WIDTH_ICON = \"var(--spacing-sidebar-width-icon)\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContext = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const [openMobile, setOpenMobile] = React.useState(false)\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n },\n [setOpenProp, open]\n )\n\n const [isMobile, setIsMobile] = React.useState(false)\n\n React.useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 768)\n }\n checkMobile()\n window.addEventListener(\"resize\", checkMobile)\n return () => window.removeEventListener(\"resize\", checkMobile)\n }, [])\n\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <>\n {openMobile && (\n <div\n className=\"fixed inset-0 z-50 bg-black/80\"\n onClick={() => setOpenMobile(false)}\n />\n )}\n <div\n ref={ref}\n className={cn(\n \"fixed inset-y-0 z-50 hidden h-svh w-[--sidebar-width] transition-transform duration-200 ease-in-out md:flex\",\n side === \"left\" ? \"left-0\" : \"right-0\",\n openMobile\n ? \"translate-x-0\"\n : side === \"left\"\n ? \"-translate-x-full\"\n : \"translate-x-full\",\n \"flex flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </>\n )\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden md:block text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n <div\n style={state === \"expanded\" ? { width: 'var(--sidebar-width)' } : undefined}\n className={cn(\n \"duration-200 relative h-svh bg-transparent transition-[width] ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n )}\n />\n <div\n style={{ width: 'var(--sidebar-width)' }}\n className={cn(\n \"duration-200 fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n </svg>\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarInset = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex min-h-svh flex-1 flex-col bg-background\",\n \"peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n))\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n))\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n))\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarProvider,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import * as React from \"react\"\nimport {\n Sidebar as ShadcnSidebar,\n SidebarContent as ShadcnSidebarContent,\n SidebarFooter as ShadcnSidebarFooter,\n SidebarGroup as ShadcnSidebarGroup,\n SidebarGroupAction as ShadcnSidebarGroupAction,\n SidebarGroupContent as ShadcnSidebarGroupContent,\n SidebarGroupLabel as ShadcnSidebarGroupLabel,\n SidebarHeader as ShadcnSidebarHeader,\n SidebarInset as ShadcnSidebarInset,\n SidebarMenu as ShadcnSidebarMenu,\n SidebarMenuButton as ShadcnSidebarMenuButton,\n SidebarMenuItem as ShadcnSidebarMenuItem,\n SidebarProvider as ShadcnSidebarProvider,\n SidebarSeparator as ShadcnSidebarSeparator,\n SidebarTrigger as ShadcnSidebarTrigger,\n useSidebar,\n} from \"../../ui/sidebar\"\n\n/**\n * Sidebar Primitive\n *\n * A foundational sidebar component that wraps shadcn/ui Sidebar with design system\n * enhancements. This primitive serves as the single source of truth for all sidebar\n * navigation across the application.\n *\n * @example\n * ```tsx\n * <SidebarProvider>\n * <Sidebar>\n * <SidebarHeader>Header</SidebarHeader>\n * <SidebarContent>\n * <SidebarMenu>\n * <SidebarMenuItem>\n * <SidebarMenuButton>Item</SidebarMenuButton>\n * </SidebarMenuItem>\n * </SidebarMenu>\n * </SidebarContent>\n * </Sidebar>\n * <SidebarInset>Main content</SidebarInset>\n * </SidebarProvider>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/sidebar - shadcn/ui Sidebar documentation\n */\n\n/**\n * SidebarProvider component props\n */\nexport type SidebarProviderProps = React.ComponentProps<typeof ShadcnSidebarProvider>\n\n/**\n * SidebarProvider component\n *\n * Context provider for sidebar state management.\n */\nexport const SidebarProvider = ShadcnSidebarProvider\n\nSidebarProvider.displayName = \"SidebarProvider\"\n\n/**\n * Sidebar component props\n */\nexport type SidebarProps = React.ComponentProps<typeof ShadcnSidebar>\n\n/**\n * Sidebar component\n *\n * Main sidebar container with collapsible behavior.\n */\nexport const Sidebar = React.memo(\n React.forwardRef<HTMLDivElement, SidebarProps>((props, ref) => {\n return <ShadcnSidebar ref={ref} {...props} />\n })\n)\n\nSidebar.displayName = \"Sidebar\"\n\n/**\n * SidebarInset component props\n */\nexport type SidebarInsetProps = React.ComponentProps<typeof ShadcnSidebarInset>\n\n/**\n * SidebarInset component\n *\n * Main content area that adjusts based on sidebar state.\n */\nexport const SidebarInset = React.memo(\n React.forwardRef<HTMLDivElement, SidebarInsetProps>((props, ref) => {\n return <ShadcnSidebarInset ref={ref} {...props} />\n })\n)\n\nSidebarInset.displayName = \"SidebarInset\"\n\n/**\n * SidebarHeader component props\n */\nexport type SidebarHeaderProps = React.ComponentProps<typeof ShadcnSidebarHeader>\n\n/**\n * SidebarHeader component\n *\n * Header section of the sidebar.\n */\nexport const SidebarHeader = React.memo(\n React.forwardRef<HTMLDivElement, SidebarHeaderProps>((props, ref) => {\n return <ShadcnSidebarHeader ref={ref} {...props} />\n })\n)\n\nSidebarHeader.displayName = \"SidebarHeader\"\n\n/**\n * SidebarContent component props\n */\nexport type SidebarContentProps = React.ComponentProps<typeof ShadcnSidebarContent>\n\n/**\n * SidebarContent component\n *\n * Scrollable content area of the sidebar.\n */\nexport const SidebarContent = React.memo(\n React.forwardRef<HTMLDivElement, SidebarContentProps>((props, ref) => {\n return <ShadcnSidebarContent ref={ref} {...props} />\n })\n)\n\nSidebarContent.displayName = \"SidebarContent\"\n\n/**\n * SidebarFooter component props\n */\nexport type SidebarFooterProps = React.ComponentProps<typeof ShadcnSidebarFooter>\n\n/**\n * SidebarFooter component\n *\n * Footer section of the sidebar.\n */\nexport const SidebarFooter = React.memo(\n React.forwardRef<HTMLDivElement, SidebarFooterProps>((props, ref) => {\n return <ShadcnSidebarFooter ref={ref} {...props} />\n })\n)\n\nSidebarFooter.displayName = \"SidebarFooter\"\n\n/**\n * SidebarMenu component props\n */\nexport type SidebarMenuProps = React.ComponentProps<typeof ShadcnSidebarMenu>\n\n/**\n * SidebarMenu component\n *\n * Container for sidebar menu items.\n */\nexport const SidebarMenu = React.memo(\n React.forwardRef<HTMLUListElement, SidebarMenuProps>((props, ref) => {\n return <ShadcnSidebarMenu ref={ref} {...props} />\n })\n)\n\nSidebarMenu.displayName = \"SidebarMenu\"\n\n/**\n * SidebarMenuItem component props\n */\nexport type SidebarMenuItemProps = React.ComponentProps<typeof ShadcnSidebarMenuItem>\n\n/**\n * SidebarMenuItem component\n *\n * Individual menu item in the sidebar.\n */\nexport const SidebarMenuItem = React.memo(\n React.forwardRef<HTMLLIElement, SidebarMenuItemProps>((props, ref) => {\n return <ShadcnSidebarMenuItem ref={ref} {...props} />\n })\n)\n\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\n/**\n * SidebarMenuButton component props\n */\nexport type SidebarMenuButtonProps = React.ComponentProps<typeof ShadcnSidebarMenuButton>\n\n/**\n * SidebarMenuButton component\n *\n * Button for sidebar menu items with tooltip support.\n */\nexport const SidebarMenuButton = React.memo(\n React.forwardRef<HTMLButtonElement, SidebarMenuButtonProps>((props, ref) => {\n return <ShadcnSidebarMenuButton ref={ref} {...props} />\n })\n)\n\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\n/**\n * SidebarTrigger component props\n */\nexport type SidebarTriggerProps = React.ComponentProps<typeof ShadcnSidebarTrigger>\n\n/**\n * SidebarTrigger component\n *\n * Button to toggle sidebar open/closed.\n */\nexport const SidebarTrigger = React.memo(\n React.forwardRef<HTMLButtonElement, SidebarTriggerProps>((props, ref) => {\n return <ShadcnSidebarTrigger ref={ref} {...props} />\n })\n)\n\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\n/**\n * SidebarGroup component props\n */\nexport type SidebarGroupProps = React.ComponentProps<typeof ShadcnSidebarGroup>\n\n/**\n * SidebarGroup component\n *\n * Groups related sidebar items together.\n */\nexport const SidebarGroup = React.memo(\n React.forwardRef<HTMLDivElement, SidebarGroupProps>((props, ref) => {\n return <ShadcnSidebarGroup ref={ref} {...props} />\n })\n)\n\nSidebarGroup.displayName = \"SidebarGroup\"\n\n/**\n * SidebarGroupContent component props\n */\nexport type SidebarGroupContentProps = React.ComponentProps<typeof ShadcnSidebarGroupContent>\n\n/**\n * SidebarGroupContent component\n *\n * Content area for sidebar groups.\n */\nexport const SidebarGroupContent = React.memo(\n React.forwardRef<HTMLDivElement, SidebarGroupContentProps>((props, ref) => {\n return <ShadcnSidebarGroupContent ref={ref} {...props} />\n })\n)\n\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\n/**\n * SidebarGroupLabel component props\n */\nexport type SidebarGroupLabelProps = React.ComponentProps<typeof ShadcnSidebarGroupLabel>\n\n/**\n * SidebarGroupLabel component\n *\n * Label for sidebar groups.\n */\nexport const SidebarGroupLabel = React.memo(\n React.forwardRef<HTMLDivElement, SidebarGroupLabelProps>((props, ref) => {\n return <ShadcnSidebarGroupLabel ref={ref} {...props} />\n })\n)\n\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\n/**\n * SidebarGroupAction component props\n */\nexport type SidebarGroupActionProps = React.ComponentProps<typeof ShadcnSidebarGroupAction>\n\n/**\n * SidebarGroupAction component\n *\n * Action button for sidebar groups.\n */\nexport const SidebarGroupAction = React.memo(\n React.forwardRef<HTMLButtonElement, SidebarGroupActionProps>((props, ref) => {\n return <ShadcnSidebarGroupAction ref={ref} {...props} />\n })\n)\n\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\n/**\n * SidebarSeparator component props\n */\nexport type SidebarSeparatorProps = React.ComponentProps<typeof ShadcnSidebarSeparator>\n\n/**\n * SidebarSeparator component\n *\n * Visual separator for sidebar sections.\n */\nexport const SidebarSeparator = React.memo(\n React.forwardRef<HTMLHRElement, SidebarSeparatorProps>((props, ref) => {\n return <ShadcnSidebarSeparator ref={ref} {...props} />\n })\n)\n\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\n/**\n * Re-export useSidebar hook for accessing sidebar state\n */\nexport { useSidebar }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from \"react\"\nimport {\n Table as ShadcnTable,\n TableHeader as ShadcnTableHeader,\n TableBody as ShadcnTableBody,\n TableFooter as ShadcnTableFooter,\n TableRow as ShadcnTableRow,\n TableHead as ShadcnTableHead,\n TableCell as ShadcnTableCell,\n TableCaption as ShadcnTableCaption,\n} from \"../../ui/table\"\n\n/**\n * Table Primitive\n *\n * A foundational table component that wraps shadcn/ui Table with design system\n * enhancements. This primitive serves as the single source of truth for all tabular\n * data display across the application.\n *\n * @example\n * ```tsx\n * <Table>\n * <TableHeader>\n * <TableRow>\n * <TableHead>Name</TableHead>\n * <TableHead>Email</TableHead>\n * </TableRow>\n * </TableHeader>\n * <TableBody>\n * <TableRow>\n * <TableCell>John Doe</TableCell>\n * <TableCell>john@example.com</TableCell>\n * </TableRow>\n * </TableBody>\n * </Table>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/table - shadcn/ui Table documentation\n */\n\n/**\n * Table component props\n */\nexport type TableProps = React.HTMLAttributes<HTMLTableElement>\n\n/**\n * Table component\n *\n * A semantic table component for displaying tabular data, built on shadcn/ui foundation.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n *\n * Features:\n * - Semantic HTML table structure\n * - Responsive overflow handling\n * - Consistent styling across the application\n * - Dark mode support\n * - Accessible table structure\n */\nexport const Table = React.memo(\n React.forwardRef<HTMLTableElement, TableProps>((props, ref) => {\n return <ShadcnTable ref={ref} {...props} />\n })\n)\n\nTable.displayName = \"Table\"\n\n/**\n * TableHeader component props\n */\nexport type TableHeaderProps = React.HTMLAttributes<HTMLTableSectionElement>\n\n/**\n * TableHeader component\n *\n * Wraps table header rows with proper semantic markup.\n */\nexport const TableHeader = React.memo(\n React.forwardRef<HTMLTableSectionElement, TableHeaderProps>((props, ref) => {\n return <ShadcnTableHeader ref={ref} {...props} />\n })\n)\n\nTableHeader.displayName = \"TableHeader\"\n\n/**\n * TableBody component props\n */\nexport type TableBodyProps = React.HTMLAttributes<HTMLTableSectionElement>\n\n/**\n * TableBody component\n *\n * Wraps table body rows with proper semantic markup.\n */\nexport const TableBody = React.memo(\n React.forwardRef<HTMLTableSectionElement, TableBodyProps>((props, ref) => {\n return <ShadcnTableBody ref={ref} {...props} />\n })\n)\n\nTableBody.displayName = \"TableBody\"\n\n/**\n * TableFooter component props\n */\nexport type TableFooterProps = React.HTMLAttributes<HTMLTableSectionElement>\n\n/**\n * TableFooter component\n *\n * Wraps table footer rows with proper semantic markup.\n */\nexport const TableFooter = React.memo(\n React.forwardRef<HTMLTableSectionElement, TableFooterProps>((props, ref) => {\n return <ShadcnTableFooter ref={ref} {...props} />\n })\n)\n\nTableFooter.displayName = \"TableFooter\"\n\n/**\n * TableRow component props\n */\nexport type TableRowProps = React.HTMLAttributes<HTMLTableRowElement>\n\n/**\n * TableRow component\n *\n * Represents a single row in the table.\n */\nexport const TableRow = React.memo(\n React.forwardRef<HTMLTableRowElement, TableRowProps>((props, ref) => {\n return <ShadcnTableRow ref={ref} {...props} />\n })\n)\n\nTableRow.displayName = \"TableRow\"\n\n/**\n * TableHead component props\n */\nexport type TableHeadProps = React.ThHTMLAttributes<HTMLTableCellElement>\n\n/**\n * TableHead component\n *\n * Represents a header cell in the table.\n */\nexport const TableHead = React.memo(\n React.forwardRef<HTMLTableCellElement, TableHeadProps>((props, ref) => {\n return <ShadcnTableHead ref={ref} {...props} />\n })\n)\n\nTableHead.displayName = \"TableHead\"\n\n/**\n * TableCell component props\n */\nexport type TableCellProps = React.TdHTMLAttributes<HTMLTableCellElement>\n\n/**\n * TableCell component\n *\n * Represents a data cell in the table.\n */\nexport const TableCell = React.memo(\n React.forwardRef<HTMLTableCellElement, TableCellProps>((props, ref) => {\n return <ShadcnTableCell ref={ref} {...props} />\n })\n)\n\nTableCell.displayName = \"TableCell\"\n\n/**\n * TableCaption component props\n */\nexport type TableCaptionProps = React.HTMLAttributes<HTMLTableCaptionElement>\n\n/**\n * TableCaption component\n *\n * Provides a caption for the table for accessibility.\n */\nexport const TableCaption = React.memo(\n React.forwardRef<HTMLTableCaptionElement, TableCaptionProps>((props, ref) => {\n return <ShadcnTableCaption ref={ref} {...props} />\n })\n)\n\nTableCaption.displayName = \"TableCaption\"\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","import * as React from \"react\"\nimport {\n Tabs as ShadcnTabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"../../ui/tabs\"\n\n/**\n * Tabs Primitive\n *\n * A foundational tabs component for organizing content into switchable panels.\n * Built on Radix UI Tabs primitive with WCAG 2.1 Level AA compliance.\n *\n * ## Accessibility Features\n * - Arrow key navigation between tabs\n * - Home/End keys for first/last tab\n * - Automatic ARIA attributes (role=\"tablist\", \"tab\", \"tabpanel\")\n * - Focus management and keyboard support\n * - Screen reader announcements\n *\n * @example\n * ```tsx\n * <Tabs defaultValue=\"tab1\">\n * <TabsList>\n * <TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n * <TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n * </TabsList>\n * <TabsContent value=\"tab1\">Content 1</TabsContent>\n * <TabsContent value=\"tab2\">Content 2</TabsContent>\n * </Tabs>\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/tabs\n * @see https://www.radix-ui.com/primitives/docs/components/tabs\n */\n\nexport type TabsProps = React.ComponentProps<typeof ShadcnTabs>\nexport type TabsListProps = React.ComponentProps<typeof TabsList>\nexport type TabsTriggerProps = React.ComponentProps<typeof TabsTrigger>\nexport type TabsContentProps = React.ComponentProps<typeof TabsContent>\n\n/**\n * Tabs component\n *\n * A tabs component for organizing content into switchable panels.\n * Built on Radix UI Tabs primitive with full accessibility support.\n *\n * Features:\n * - Arrow key navigation between tabs\n * - Home/End keys for first/last tab\n * - Automatic ARIA attributes\n * - Focus management\n * - Screen reader support\n * - Horizontal and vertical orientation\n * - Dark mode support\n */\nexport const Tabs = React.forwardRef<\n React.ElementRef<typeof ShadcnTabs>,\n TabsProps\n>((props, ref) => {\n return <ShadcnTabs {...props} />\n})\n\nTabs.displayName = \"Tabs\"\n\n/**\n * Re-export Tabs sub-components for composition\n */\nexport { TabsContent, TabsList, TabsTrigger }\n","import * as React from \"react\"\nimport {\n Textarea as ShadcnTextarea,\n textareaVariants,\n} from \"../../ui/textarea\"\nimport type { VariantProps } from \"class-variance-authority\"\n\n/**\n * Textarea Primitive\n *\n * A foundational textarea component that wraps shadcn/ui Textarea with design system\n * enhancements. This primitive serves as the single source of truth for all multi-line\n * text input interactions across the application.\n *\n * @example\n * ```tsx\n * <Textarea placeholder=\"Enter your message...\" />\n *\n * <Textarea\n * placeholder=\"Description\"\n * rows={5}\n * size=\"sm\"\n * />\n *\n * <Textarea\n * placeholder=\"Enter comment\"\n * state=\"error\"\n * />\n *\n * <Textarea\n * placeholder=\"Success state\"\n * state=\"success\"\n * size=\"lg\"\n * />\n * ```\n *\n * @see https://ui.shadcn.com/docs/components/textarea - shadcn/ui Textarea documentation\n */\n\n/**\n * Textarea component props\n * Extends the native textarea element props with variant options\n */\nexport type TextareaProps = React.ComponentProps<\"textarea\"> &\n VariantProps<typeof textareaVariants>\n\n/**\n * Textarea component\n *\n * A versatile multi-line text input component built on shadcn/ui foundation.\n * Optimized with React.memo for performance in high-frequency rendering scenarios.\n *\n * Features:\n * - Full WCAG 2.1 Level AA compliance\n * - Size variants (sm, default, lg) for different contexts\n * - State variants (default, error, success, warning) for visual feedback\n * - Customizable row height\n * - Validation state styling via aria-invalid\n * - Dark mode support\n * - Placeholder and disabled states\n * - Auto-resize capabilities\n */\nexport const Textarea = React.memo(\n React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (props, ref) => {\n return <ShadcnTextarea ref={ref} {...props} />\n }\n )\n)\n\nTextarea.displayName = \"Textarea\"\n\n/**\n * Re-export textareaVariants for consumers who need direct access to the variant generator.\n * This is useful for creating custom textarea-like components that need consistent styling.\n *\n * @example\n * ```tsx\n * import { textareaVariants } from './Textarea'\n *\n * <div className={textareaVariants({ size: \"sm\", state: \"error\" })}>\n * Custom textarea-like div\n * </div>\n * ```\n */\nexport { textareaVariants }\n\n/**\n * Re-export VariantProps for type inference in consuming components\n */\nexport type { VariantProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 0,\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n \"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\",\n \"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","import * as React from \"react\"\nimport {\n ToggleGroup as ShadcnToggleGroup,\n ToggleGroupItem,\n} from \"../../ui/toggle-group\"\nimport { toggleVariants } from \"../../ui/toggle\"\nimport type { VariantProps } from \"class-variance-authority\"\n\n/**\n * ToggleGroup Primitive\n *\n * A set of two-state toggle buttons that can work independently or as radio group.\n * Built on Radix UI ToggleGroup primitive with WCAG 2.1 Level AA compliance.\n *\n * @see https://ui.shadcn.com/docs/components/toggle-group\n * @see https://www.radix-ui.com/primitives/docs/components/toggle-group\n */\n\nexport type ToggleGroupProps = React.ComponentProps<typeof ShadcnToggleGroup> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }\n\nexport type ToggleGroupItemProps = React.ComponentProps<typeof ToggleGroupItem> &\n VariantProps<typeof toggleVariants>\n\n/**\n * ToggleGroup component\n *\n * A set of two-state toggle buttons that can work independently or as a radio group.\n * Built on Radix UI ToggleGroup primitive with full accessibility support.\n *\n * Features:\n * - Single or multiple selection modes\n * - Keyboard navigation\n * - ARIA attributes\n * - Multiple visual variants\n * - Dark mode support\n */\nexport const ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ShadcnToggleGroup>,\n ToggleGroupProps\n>((props, ref) => {\n return <ShadcnToggleGroup {...props} />\n})\n\nToggleGroup.displayName = \"ToggleGroup\"\n\n/**\n * Re-export ToggleGroupItem for composition\n */\nexport { ToggleGroupItem }\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Tooltip as ShadcnTooltip,\n TooltipContent as ShadcnTooltipContent,\n TooltipTrigger as ShadcnTooltipTrigger,\n TooltipProvider as ShadcnTooltipProvider,\n} from \"@/components/ui/tooltip\";\n\n/**\n * Tooltip Primitive\n *\n * A popup that displays information related to an element when the element\n * receives keyboard focus or the mouse hovers over it.\n *\n * Features:\n * - Keyboard focus support\n * - Customizable delay duration\n * - Arrow indicator\n * - Side positioning (top, right, bottom, left)\n * - Portal rendering for proper z-index\n * - WCAG 2.1 Level AA compliant\n */\n\nexport type TooltipProps = React.ComponentProps<typeof ShadcnTooltip>;\nexport type TooltipTriggerProps = React.ComponentProps<typeof ShadcnTooltipTrigger>;\nexport type TooltipContentProps = React.ComponentProps<typeof ShadcnTooltipContent>;\nexport type TooltipProviderProps = React.ComponentProps<typeof ShadcnTooltipProvider>;\n\n/**\n * TooltipProvider - Wraps your app to provide tooltip context\n * Usually placed at the root of your app\n */\nexport const TooltipProvider = React.memo<TooltipProviderProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnTooltipProvider>, TooltipProviderProps>(\n (props, ref) => {\n return <ShadcnTooltipProvider {...props} />;\n }\n )\n);\nTooltipProvider.displayName = \"TooltipProvider\";\n\n/**\n * Tooltip - Root component that manages tooltip state\n */\nexport const Tooltip = React.memo<TooltipProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnTooltip>, TooltipProps>(\n (props, ref) => {\n return <ShadcnTooltip {...props} />;\n }\n )\n);\nTooltip.displayName = \"Tooltip\";\n\n/**\n * TooltipTrigger - The element that triggers the tooltip\n */\nexport const TooltipTrigger = React.memo<TooltipTriggerProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnTooltipTrigger>, TooltipTriggerProps>(\n (props, ref) => {\n return <ShadcnTooltipTrigger ref={ref} {...props} />;\n }\n )\n);\nTooltipTrigger.displayName = \"TooltipTrigger\";\n\n/**\n * TooltipContent - The popup content that appears\n */\nexport const TooltipContent = React.memo<TooltipContentProps>(\n React.forwardRef<React.ElementRef<typeof ShadcnTooltipContent>, TooltipContentProps>(\n (props, ref) => {\n return <ShadcnTooltipContent ref={ref} {...props} />;\n }\n )\n);\nTooltipContent.displayName = \"TooltipContent\";\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport type { Element } from \"hast\";\nimport { CheckIcon, CopyIcon } from \"lucide-react\";\nimport {\n type ComponentProps,\n createContext,\n type HTMLAttributes,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { type BundledLanguage, codeToHtml, type ShikiTransformer } from \"shiki\";\n\ntype CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n code: string;\n language: BundledLanguage;\n showLineNumbers?: boolean;\n};\n\ntype CodeBlockContextType = {\n code: string;\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n code: \"\",\n});\n\nconst lineNumberTransformer: ShikiTransformer = {\n name: \"line-numbers\",\n line(node: Element, line: number) {\n node.children.unshift({\n type: \"element\",\n tagName: \"span\",\n properties: {\n className: [\n \"inline-block\",\n \"min-w-10\",\n \"mr-4\",\n \"text-right\",\n \"select-none\",\n \"text-muted-foreground\",\n ],\n },\n children: [{ type: \"text\", value: String(line) }],\n });\n },\n};\n\nexport async function highlightCode(\n code: string,\n language: BundledLanguage,\n showLineNumbers = false\n) {\n const transformers: ShikiTransformer[] = showLineNumbers\n ? [lineNumberTransformer]\n : [];\n\n return await Promise.all([\n codeToHtml(code, {\n lang: language,\n theme: \"one-light\",\n transformers,\n }),\n codeToHtml(code, {\n lang: language,\n theme: \"one-dark-pro\",\n transformers,\n }),\n ]);\n}\n\nexport const CodeBlock = ({\n code,\n language,\n showLineNumbers = false,\n className,\n children,\n ...props\n}: CodeBlockProps) => {\n const [html, setHtml] = useState<string>(\"\");\n const [darkHtml, setDarkHtml] = useState<string>(\"\");\n const mounted = useRef(false);\n\n useEffect(() => {\n highlightCode(code, language, showLineNumbers).then(([light, dark]) => {\n if (!mounted.current) {\n setHtml(light);\n setDarkHtml(dark);\n mounted.current = true;\n }\n });\n\n return () => {\n mounted.current = false;\n };\n }, [code, language, showLineNumbers]);\n\n return (\n <CodeBlockContext.Provider value={{ code }}>\n <div\n className={cn(\n \"group relative w-full overflow-hidden rounded-md border bg-background text-foreground\",\n className\n )}\n {...props}\n >\n <div className=\"relative\">\n <div\n className=\"overflow-hidden dark:hidden [&>pre]:m-0 [&>pre]:bg-background! [&>pre]:p-4 [&>pre]:text-foreground! [&>pre]:text-sm [&_code]:font-mono [&_code]:text-sm\"\n // biome-ignore lint/security/noDangerouslySetInnerHtml: \"this is needed.\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n <div\n className=\"hidden overflow-hidden dark:block [&>pre]:m-0 [&>pre]:bg-background! [&>pre]:p-4 [&>pre]:text-foreground! [&>pre]:text-sm [&_code]:font-mono [&_code]:text-sm\"\n // biome-ignore lint/security/noDangerouslySetInnerHtml: \"this is needed.\"\n dangerouslySetInnerHTML={{ __html: darkHtml }}\n />\n {children && (\n <div className=\"absolute top-2 right-2 flex items-center gap-2\">\n {children}\n </div>\n )}\n </div>\n </div>\n </CodeBlockContext.Provider>\n );\n};\n\nexport type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport const CodeBlockCopyButton = ({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeBlockCopyButtonProps) => {\n const [isCopied, setIsCopied] = useState(false);\n const { code } = useContext(CodeBlockContext);\n\n const copyToClipboard = async () => {\n if (typeof window === \"undefined\" || !navigator?.clipboard?.writeText) {\n onError?.(new Error(\"Clipboard API not available\"));\n return;\n }\n\n try {\n await navigator.clipboard.writeText(code);\n setIsCopied(true);\n onCopy?.();\n setTimeout(() => setIsCopied(false), timeout);\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n const Icon = isCopied ? CheckIcon : CopyIcon;\n\n return (\n <Button\n className={cn(\"shrink-0\", className)}\n onClick={copyToClipboard}\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <Icon size={14} />}\n </Button>\n );\n};\n","\"use client\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { cn } from \"@/lib/utils\";\n// Define our own types since ToolUIPart doesn't exist in current AI SDK\ntype ToolUIState = \n | \"input-streaming\" \n | \"input-available\" \n | \"approval-requested\"\n | \"approval-responded\"\n | \"output-denied\"\n | \"output-available\" \n | \"output-error\";\n\ntype ToolUIPart = {\n type: `tool-${string}`;\n state: ToolUIState;\n input?: any;\n output?: any;\n errorText?: string;\n};\nimport {\n CheckCircleIcon,\n ChevronDownIcon,\n CircleIcon,\n ClockIcon,\n WrenchIcon,\n XCircleIcon,\n} from \"lucide-react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { isValidElement } from \"react\";\nimport { CodeBlock } from \"./code-block\";\n\nexport type ToolProps = ComponentProps<typeof Collapsible>;\n\nexport const Tool = ({ className, ...props }: ToolProps) => (\n <Collapsible\n className={cn(\"not-prose mb-4 w-full rounded-md border\", className)}\n {...props}\n />\n);\n\nexport type ToolHeaderProps = {\n title?: string;\n type: ToolUIPart[\"type\"];\n state: ToolUIPart[\"state\"];\n className?: string;\n};\n\nconst getStatusBadge = (status: ToolUIPart[\"state\"]) => {\n const labels: Record<ToolUIPart[\"state\"], string> = {\n \"input-streaming\": \"Pending\",\n \"input-available\": \"Running\",\n \"approval-requested\": \"Awaiting Approval\",\n \"approval-responded\": \"Responded\",\n \"output-available\": \"Completed\",\n \"output-error\": \"Error\",\n \"output-denied\": \"Denied\",\n };\n\n const icons: Record<ToolUIPart[\"state\"], ReactNode> = {\n \"input-streaming\": <CircleIcon className=\"size-4\" />,\n \"input-available\": <ClockIcon className=\"size-4 animate-pulse\" />,\n \"approval-requested\": <ClockIcon className=\"size-4 text-yellow-600\" />,\n \"approval-responded\": <CheckCircleIcon className=\"size-4 text-blue-600\" />,\n \"output-available\": <CheckCircleIcon className=\"size-4 text-green-600\" />,\n \"output-error\": <XCircleIcon className=\"size-4 text-red-600\" />,\n \"output-denied\": <XCircleIcon className=\"size-4 text-orange-600\" />,\n };\n\n return (\n <Badge className=\"gap-1.5 rounded-full text-xs\" variant=\"secondary\">\n {icons[status]}\n {labels[status]}\n </Badge>\n );\n};\n\nexport const ToolHeader = ({\n className,\n title,\n type,\n state,\n ...props\n}: ToolHeaderProps) => (\n <CollapsibleTrigger\n className={cn(\n \"flex w-full items-center justify-between gap-4 p-3\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <WrenchIcon className=\"size-4 text-muted-foreground\" />\n <span className=\"font-medium text-sm\">\n {title ?? type.split(\"-\").slice(1).join(\"-\")}\n </span>\n {getStatusBadge(state)}\n </div>\n <ChevronDownIcon className=\"size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180\" />\n </CollapsibleTrigger>\n);\n\nexport type ToolContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ToolContent = ({ className, ...props }: ToolContentProps) => (\n <CollapsibleContent\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n />\n);\n\nexport type ToolInputProps = ComponentProps<\"div\"> & {\n input: ToolUIPart[\"input\"];\n};\n\nexport const ToolInput = ({ className, input, ...props }: ToolInputProps) => (\n <div className={cn(\"space-y-2 overflow-hidden p-4\", className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n Parameters\n </h4>\n <div className=\"rounded-md bg-muted/50\">\n <CodeBlock code={JSON.stringify(input, null, 2)} language=\"json\" />\n </div>\n </div>\n);\n\nexport type ToolOutputProps = ComponentProps<\"div\"> & {\n output: ToolUIPart[\"output\"];\n errorText: ToolUIPart[\"errorText\"];\n};\n\nexport const ToolOutput = ({\n className,\n output,\n errorText,\n ...props\n}: ToolOutputProps) => {\n if (!(output || errorText)) {\n return null;\n }\n\n let Output = <div>{output as ReactNode}</div>;\n\n if (typeof output === \"object\" && !isValidElement(output)) {\n Output = (\n <CodeBlock code={JSON.stringify(output, null, 2)} language=\"json\" />\n );\n } else if (typeof output === \"string\") {\n Output = <CodeBlock code={output} language=\"json\" />;\n }\n\n return (\n <div className={cn(\"space-y-2 p-4\", className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n {errorText ? \"Error\" : \"Result\"}\n </h4>\n <div\n className={cn(\n \"overflow-x-auto rounded-md text-xs [&_table]:w-full\",\n errorText\n ? \"bg-destructive/10 text-destructive\"\n : \"bg-muted/50 text-foreground\"\n )}\n >\n {errorText && <div>{errorText}</div>}\n {Output}\n </div>\n </div>\n );\n};\n","import * as React from \"react\"\nimport {\n Tool,\n ToolHeader,\n ToolContent,\n ToolInput,\n ToolOutput,\n} from \"@/components/ai-elements/tool\"\n\n/**\n * ToolCallDisplay Block\n *\n * A block component that extends the Tool AI element to display tool execution details\n * with expandable input parameters and output results. Copied logic from reference implementation.\n */\n\nexport interface ToolCall {\n id: string\n name: string\n args: Record<string, unknown>\n result?: string\n status: \"pending\" | \"completed\" | \"error\"\n}\n\nexport interface ToolCallDisplayProps {\n /**\n * Tool call data to display\n */\n toolCall: ToolCall\n /**\n * Whether the tool call is initially expanded\n */\n defaultExpanded?: boolean\n}\n\n/**\n * ToolCallDisplay component - displays tool execution with expandable details\n */\nexport const ToolCallDisplay = React.memo<ToolCallDisplayProps>(\n ({ toolCall, defaultExpanded = false }) => {\n const [isExpanded, setIsExpanded] = React.useState(defaultExpanded)\n\n const { name, args, result, status } = React.useMemo(() => {\n const toolName = toolCall.name || \"Unknown Tool\"\n const toolArgs = toolCall.args || {}\n let parsedArgs: Record<string, unknown> = {}\n try {\n parsedArgs = typeof toolArgs === \"string\" ? JSON.parse(toolArgs) : toolArgs\n } catch {\n parsedArgs = { raw: toolArgs }\n }\n const toolResult = toolCall.result || null\n const toolStatus = toolCall.status || \"completed\"\n\n return {\n name: toolName,\n args: parsedArgs,\n result: toolResult,\n status: toolStatus,\n }\n }, [toolCall])\n\n const toggleExpanded = React.useCallback(() => {\n setIsExpanded((prev) => !prev)\n }, [])\n\n const hasContent = React.useMemo(() => {\n return result !== null || Object.keys(args).length > 0\n }, [result, args])\n\n // Map our status to Tool AI element status\n const toolState = React.useMemo(() => {\n switch (status) {\n case \"pending\":\n return \"input-available\" as const\n case \"completed\":\n return \"output-available\" as const\n case \"error\":\n return \"output-error\" as const\n default:\n return \"output-available\" as const\n }\n }, [status])\n\n return (\n <Tool defaultOpen={isExpanded}>\n <ToolHeader\n title={name}\n type={`tool-${name}` as const}\n state={toolState}\n />\n <ToolContent>\n {Object.keys(args).length > 0 && (\n <ToolInput input={args} />\n )}\n {result && (\n <ToolOutput\n output={result}\n errorText={status === \"error\" ? result : undefined}\n />\n )}\n </ToolContent>\n </Tool>\n )\n }\n)\n\nToolCallDisplay.displayName = \"ToolCallDisplay\"","import * as React from \"react\"\nimport { Button } from \"@/components/primitives/Button\"\nimport { Badge } from \"@/components/primitives/Badge\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * AgentIndicator Block\n *\n * A block component that displays agent working status with visual indicators.\n * Copied logic from reference SubAgentIndicator implementation.\n */\n\nexport interface SubAgent {\n id: string\n name: string\n subAgentName: string\n input: string | Record<string, unknown>\n output?: string | Record<string, unknown>\n status: \"pending\" | \"active\" | \"completed\" | \"error\"\n}\n\nexport interface AgentIndicatorProps {\n /**\n * Sub-agent data to display\n */\n subAgent: SubAgent\n /**\n * Click handler for agent selection\n */\n onClick: () => void\n /**\n * Whether this agent is currently selected\n */\n isSelected?: boolean\n}\n\n/**\n * AgentIndicator component - displays agent working status with visual indicators\n */\nexport const AgentIndicator = React.memo<AgentIndicatorProps>(\n ({ subAgent, onClick, isSelected = false }) => {\n const getStatusIcon = React.useCallback(() => {\n switch (subAgent.status) {\n case \"completed\":\n return \"✅\"\n case \"error\":\n return \"❌\"\n case \"active\":\n return \"⚡\"\n case \"pending\":\n default:\n return \"⏳\"\n }\n }, [subAgent.status])\n\n const getStatusVariant = React.useCallback(() => {\n switch (subAgent.status) {\n case \"completed\":\n return \"default\" as const\n case \"error\":\n return \"destructive\" as const\n case \"active\":\n return \"secondary\" as const\n case \"pending\":\n default:\n return \"outline\" as const\n }\n }, [subAgent.status])\n\n const inputDisplay = React.useMemo(() => {\n return typeof subAgent.input === \"string\"\n ? subAgent.input\n : JSON.stringify(subAgent.input)\n }, [subAgent.input])\n\n return (\n <Button\n variant={isSelected ? \"default\" : \"ghost\"}\n onClick={onClick}\n className={cn(\n \"h-auto p-3 justify-start text-left\",\n isSelected && \"ring-2 ring-primary\"\n )}\n aria-label={`View ${subAgent.subAgentName} details`}\n >\n <div className=\"flex flex-col items-start gap-2 w-full\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm\">{getStatusIcon()}</span>\n <Badge variant={getStatusVariant()} className=\"text-xs\">\n {subAgent.subAgentName}\n </Badge>\n </div>\n <p className=\"text-xs text-muted-foreground text-left line-clamp-2\">\n {inputDisplay}\n </p>\n </div>\n </Button>\n )\n }\n)\n\nAgentIndicator.displayName = \"AgentIndicator\"","import {\n Avatar,\n AvatarFallback,\n AvatarImage,\n} from \"@/components/ui/avatar\";\nimport { cn } from \"@/lib/utils\";\nimport type { UIMessage } from \"ai\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type { ComponentProps, HTMLAttributes } from \"react\";\n\nexport type MessageProps = HTMLAttributes<HTMLDivElement> & {\n from: UIMessage[\"role\"];\n};\n\nexport const Message = ({ className, from, ...props }: MessageProps) => (\n <div\n className={cn(\n \"group flex w-full items-start gap-2 py-2\",\n from === \"user\" ? \"is-user flex-row-reverse\" : \"is-assistant bg-muted/50 -mx-4 px-4\",\n className\n )}\n {...props}\n />\n);\n\nconst messageContentVariants = cva(\n \"is-user:dark flex flex-col gap-2 overflow-hidden rounded-lg text-sm group-[.is-user]:ml-auto\",\n {\n variants: {\n variant: {\n contained: [\n \"max-w-[80%] px-4 py-3\",\n \"group-[.is-user]:bg-primary group-[.is-user]:text-primary-foreground\",\n \"group-[.is-assistant]:bg-secondary group-[.is-assistant]:text-foreground\",\n ],\n flat: [\n \"group-[.is-user]:max-w-[80%] group-[.is-user]:bg-secondary group-[.is-user]:px-4 group-[.is-user]:py-3 group-[.is-user]:text-foreground\",\n \"group-[.is-assistant]:text-foreground\",\n ],\n },\n },\n defaultVariants: {\n variant: \"contained\",\n },\n }\n);\n\nexport type MessageContentProps = HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof messageContentVariants>;\n\nexport const MessageContent = ({\n children,\n className,\n variant,\n ...props\n}: MessageContentProps) => (\n <div\n className={cn(messageContentVariants({ variant, className }))}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type MessageAvatarProps = ComponentProps<typeof Avatar> & {\n src: string;\n name?: string;\n};\n\nexport const MessageAvatar = ({\n src,\n name,\n className,\n ...props\n}: MessageAvatarProps) => (\n <Avatar className={cn(\"size-8 ring-1 ring-border\", className)} {...props}>\n <AvatarImage alt=\"\" className=\"mt-0 mb-0\" src={src} />\n <AvatarFallback>{name?.slice(0, 2) || \"ME\"}</AvatarFallback>\n </Avatar>\n);\n","import * as React from \"react\"\nimport {\n Message,\n MessageContent,\n MessageAvatar,\n} from \"@/components/ai-elements/message\"\n\n/**\n * UserMessage Block\n *\n * A simple block component for displaying user messages.\n * Uses Message AI element with right-alignment.\n */\n\nexport interface UserMessageData {\n id: string\n content: string\n avatarSrc?: string\n avatarName?: string\n}\n\nexport interface UserMessageProps {\n /**\n * User message data to display\n */\n message: UserMessageData\n /**\n * Whether to show avatar\n */\n showAvatar?: boolean\n}\n\n/**\n * UserMessage component - displays user messages with right alignment\n */\nexport const UserMessage = React.memo<UserMessageProps>(\n ({ message, showAvatar = true }) => {\n return (\n <Message from=\"user\">\n {showAvatar && (\n <MessageAvatar\n src={message.avatarSrc || \"/user-avatar.png\"}\n name={message.avatarName || \"User\"}\n />\n )}\n <MessageContent variant=\"contained\">{message.content}</MessageContent>\n </Message>\n )\n }\n)\n\nUserMessage.displayName = \"UserMessage\"\n","\"use client\";\n\nimport { cn } from \"@/lib/utils\";\nimport { motion } from \"motion/react\";\nimport {\n type CSSProperties,\n type ElementType,\n type JSX,\n memo,\n useMemo,\n} from \"react\";\n\nexport type TextShimmerProps = {\n children: string;\n as?: ElementType;\n className?: string;\n duration?: number;\n spread?: number;\n};\n\nconst ShimmerComponent = ({\n children,\n as: Component = \"p\",\n className,\n duration = 2,\n spread = 2,\n}: TextShimmerProps) => {\n const MotionComponent = motion.create(\n Component as keyof JSX.IntrinsicElements\n );\n\n const dynamicSpread = useMemo(\n () => (children?.length ?? 0) * spread,\n [children, spread]\n );\n\n return (\n <MotionComponent\n animate={{ backgroundPosition: \"0% center\" }}\n className={cn(\n \"relative inline-block bg-size-[250%_100%,auto] bg-clip-text text-transparent\",\n \"[--bg:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--color-background),#0000_calc(50%+var(--spread)))] [background-repeat:no-repeat,padding-box]\",\n className\n )}\n initial={{ backgroundPosition: \"100% center\" }}\n style={\n {\n \"--spread\": `${dynamicSpread}px`,\n backgroundImage:\n \"var(--bg), linear-gradient(var(--color-muted-foreground), var(--color-muted-foreground))\",\n } as CSSProperties\n }\n transition={{\n repeat: Number.POSITIVE_INFINITY,\n duration,\n ease: \"linear\",\n }}\n >\n {children}\n </MotionComponent>\n );\n};\n\nexport const Shimmer = memo(ShimmerComponent);\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronsUpDownIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { Shimmer } from \"./shimmer\";\n\ntype PlanContextValue = {\n isStreaming: boolean;\n};\n\nconst PlanContext = createContext<PlanContextValue | null>(null);\n\nconst usePlan = () => {\n const context = useContext(PlanContext);\n if (!context) {\n throw new Error(\"Plan components must be used within Plan\");\n }\n return context;\n};\n\nexport type PlanProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n};\n\nexport const Plan = ({\n className,\n isStreaming = false,\n children,\n ...props\n}: PlanProps) => (\n <PlanContext.Provider value={{ isStreaming }}>\n <Collapsible asChild data-slot=\"plan\" {...props}>\n <Card className={cn(\"shadow-none\", className)}>{children}</Card>\n </Collapsible>\n </PlanContext.Provider>\n);\n\nexport type PlanHeaderProps = ComponentProps<typeof CardHeader>;\n\nexport const PlanHeader = ({ className, ...props }: PlanHeaderProps) => (\n <CardHeader\n className={cn(\"flex items-start justify-between\", className)}\n data-slot=\"plan-header\"\n {...props}\n />\n);\n\nexport type PlanTitleProps = Omit<\n ComponentProps<typeof CardTitle>,\n \"children\"\n> & {\n children: string;\n};\n\nexport const PlanTitle = ({ children, ...props }: PlanTitleProps) => {\n const { isStreaming } = usePlan();\n\n return (\n <CardTitle data-slot=\"plan-title\" {...props}>\n {isStreaming ? <Shimmer>{children}</Shimmer> : children}\n </CardTitle>\n );\n};\n\nexport type PlanDescriptionProps = Omit<\n ComponentProps<typeof CardDescription>,\n \"children\"\n> & {\n children: string;\n};\n\nexport const PlanDescription = ({\n className,\n children,\n ...props\n}: PlanDescriptionProps) => {\n const { isStreaming } = usePlan();\n\n return (\n <CardDescription\n className={cn(\"text-balance\", className)}\n data-slot=\"plan-description\"\n {...props}\n >\n {isStreaming ? <Shimmer>{children}</Shimmer> : children}\n </CardDescription>\n );\n};\n\nexport type PlanActionProps = ComponentProps<typeof CardAction>;\n\nexport const PlanAction = (props: PlanActionProps) => (\n <CardAction data-slot=\"plan-action\" {...props} />\n);\n\nexport type PlanContentProps = ComponentProps<typeof CardContent>;\n\nexport const PlanContent = (props: PlanContentProps) => (\n <CollapsibleContent asChild>\n <CardContent data-slot=\"plan-content\" {...props} />\n </CollapsibleContent>\n);\n\nexport type PlanFooterProps = ComponentProps<\"div\">;\n\nexport const PlanFooter = (props: PlanFooterProps) => (\n <CardFooter data-slot=\"plan-footer\" {...props} />\n);\n\nexport type PlanTriggerProps = ComponentProps<typeof CollapsibleTrigger>;\n\nexport const PlanTrigger = ({ className, ...props }: PlanTriggerProps) => (\n <CollapsibleTrigger asChild>\n <Button\n className={cn(\"size-8\", className)}\n data-slot=\"plan-trigger\"\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n <ChevronsUpDownIcon className=\"size-4\" />\n <span className=\"sr-only\">Toggle plan</span>\n </Button>\n </CollapsibleTrigger>\n);\n","import * as React from \"react\"\nimport {\n Plan,\n PlanHeader,\n PlanTitle,\n PlanDescription,\n PlanTrigger,\n PlanContent,\n} from \"@/components/ai-elements/plan\"\nimport { ToolCallDisplay, type ToolCall } from \"@/components/composites/ToolCallDisplay\"\nimport { cn } from \"@/lib/utils\"\n\n/**\n * SpecialistMessage Block\n *\n * A block component for displaying specialist agent messages with optional collapsible content.\n * Uses Plan AI element for consistent styling and optional space-efficient display.\n */\n\nexport interface SpecialistMessageData {\n id: string\n name: string\n description?: string\n icon?: React.ReactNode\n content: string\n toolCalls?: ToolCall[]\n status: \"pending\" | \"active\" | \"completed\" | \"error\"\n avatarSrc?: string\n avatarName?: string\n}\n\nexport interface SpecialistMessageProps {\n /**\n * Specialist message data to display\n */\n message: SpecialistMessageData\n /**\n * Whether this message is nested under an orchestrator\n */\n isNested?: boolean\n /**\n * Whether the specialist message should be open by default\n * @default false\n */\n defaultOpen?: boolean\n /**\n * Whether to show collapse/expand trigger\n * @default false\n */\n collapsible?: boolean\n}\n\n/**\n * SpecialistMessage component - displays specialist agent messages with optional collapsible content\n */\nexport const SpecialistMessage = React.memo<SpecialistMessageProps>(\n ({ message, isNested = false, defaultOpen = false, collapsible = true }) => {\n const hasContent = React.useMemo(\n () => message.content && message.content.trim() !== \"\",\n [message.content]\n )\n const hasToolCalls = React.useMemo(\n () => message.toolCalls !== undefined && message.toolCalls.length > 0,\n [message.toolCalls]\n )\n\n return (\n <Plan\n defaultOpen={collapsible ? defaultOpen : true}\n className={cn(isNested && \"ml-8\")}\n >\n <PlanHeader>\n <div>\n <div className=\"mb-4 flex items-center gap-2\">\n {message.icon && message.icon}\n <PlanTitle>{message.name}</PlanTitle>\n </div>\n {message.description && (\n <PlanDescription>{message.description}</PlanDescription>\n )}\n </div>\n {collapsible && <PlanTrigger />}\n </PlanHeader>\n\n <PlanContent>\n {/* Message content */}\n {hasContent && (\n <div className=\"prose prose-sm dark:prose-invert max-w-none\">\n {message.content}\n </div>\n )}\n\n {/* Tool calls */}\n {hasToolCalls && (\n <div className={cn(\"space-y-2\", hasContent && \"mt-4\")}>\n {message.toolCalls!.map((toolCall: ToolCall) => (\n <ToolCallDisplay key={toolCall.id} toolCall={toolCall} />\n ))}\n </div>\n )}\n </PlanContent>\n </Plan>\n )\n }\n)\n\nSpecialistMessage.displayName = \"SpecialistMessage\"\n","import * as React from \"react\"\nimport {\n Message,\n MessageContent,\n MessageAvatar,\n} from \"@/components/ai-elements/message\"\n\n/**\n * OrchestratorMessage Block\n *\n * A block component for displaying orchestrator/coordinator agent messages.\n * Accepts children components (SpecialistMessage and ToolCallDisplay) for composition.\n */\n\nexport interface OrchestratorMessageData {\n id: string\n content: string\n avatarSrc?: string\n avatarName?: string\n}\n\nexport interface OrchestratorMessageProps {\n /**\n * Orchestrator message data to display\n */\n message: OrchestratorMessageData\n /**\n * Whether to show avatar\n */\n showAvatar?: boolean\n /**\n * Child components (SpecialistMessage, ToolCallDisplay)\n */\n children?: React.ReactNode\n}\n\n/**\n * OrchestratorMessage component - displays coordinator messages with nested specialists and tools\n */\nexport const OrchestratorMessage = React.memo<OrchestratorMessageProps>(\n ({ message, showAvatar = true, children }) => {\n const hasContent = React.useMemo(\n () => message.content && message.content.trim() !== \"\",\n [message.content]\n )\n\n return (\n <Message from=\"assistant\">\n {showAvatar && (\n <MessageAvatar\n src={message.avatarSrc || \"/coordinator-avatar.png\"}\n name={message.avatarName || \"Coordinator\"}\n />\n )}\n\n <div className=\"flex-1\">\n {/* Orchestrator's message content */}\n {hasContent && (\n <MessageContent variant=\"contained\">\n {message.content}\n </MessageContent>\n )}\n\n {/* Child components (specialists and tool calls) */}\n {children && <div className=\"mt-4 space-y-4\">{children}</div>}\n </div>\n </Message>\n )\n }\n)\n\nOrchestratorMessage.displayName = \"OrchestratorMessage\"\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/components/ui/command\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupTextarea,\n} from \"@/components/ui/input-group\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { cn } from \"@/lib/utils\";\nimport type { ChatStatus, FileUIPart } from \"ai\";\nimport {\n ImageIcon,\n Loader2Icon,\n MicIcon,\n PaperclipIcon,\n PlusIcon,\n SendIcon,\n SquareIcon,\n XIcon,\n} from \"lucide-react\";\nimport { nanoid } from \"nanoid\";\nimport {\n type ChangeEvent,\n type ChangeEventHandler,\n Children,\n type ClipboardEventHandler,\n type ComponentProps,\n createContext,\n type FormEvent,\n type FormEventHandler,\n Fragment,\n type HTMLAttributes,\n type KeyboardEventHandler,\n type PropsWithChildren,\n type ReactNode,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n// ============================================================================\n// Provider Context & Types\n// ============================================================================\n\nexport type AttachmentsContext = {\n files: (FileUIPart & { id: string })[];\n add: (files: File[] | FileList) => void;\n remove: (id: string) => void;\n clear: () => void;\n openFileDialog: () => void;\n fileInputRef: RefObject<HTMLInputElement | null>;\n};\n\nexport type TextInputContext = {\n value: string;\n setInput: (v: string) => void;\n clear: () => void;\n};\n\nexport type PromptInputControllerProps = {\n textInput: TextInputContext;\n attachments: AttachmentsContext;\n /** INTERNAL: Allows PromptInput to register its file textInput + \"open\" callback */\n __registerFileInput: (\n ref: RefObject<HTMLInputElement | null>,\n open: () => void\n ) => void;\n};\n\nconst PromptInputController = createContext<PromptInputControllerProps | null>(\n null\n);\nconst ProviderAttachmentsContext = createContext<AttachmentsContext | null>(\n null\n);\n\nexport const usePromptInputController = () => {\n const ctx = useContext(PromptInputController);\n if (!ctx) {\n throw new Error(\n \"Wrap your component inside <PromptInputProvider> to use usePromptInputController().\"\n );\n }\n return ctx;\n};\n\n// Optional variants (do NOT throw). Useful for dual-mode components.\nconst useOptionalPromptInputController = () =>\n useContext(PromptInputController);\n\nexport const useProviderAttachments = () => {\n const ctx = useContext(ProviderAttachmentsContext);\n if (!ctx) {\n throw new Error(\n \"Wrap your component inside <PromptInputProvider> to use useProviderAttachments().\"\n );\n }\n return ctx;\n};\n\nconst useOptionalProviderAttachments = () =>\n useContext(ProviderAttachmentsContext);\n\nexport type PromptInputProviderProps = PropsWithChildren<{\n initialInput?: string;\n}>;\n\n/**\n * Optional global provider that lifts PromptInput state outside of PromptInput.\n * If you don't use it, PromptInput stays fully self-managed.\n */\nexport function PromptInputProvider({\n initialInput: initialTextInput = \"\",\n children,\n}: PromptInputProviderProps) {\n // ----- textInput state\n const [textInput, setTextInput] = useState(initialTextInput);\n const clearInput = useCallback(() => setTextInput(\"\"), []);\n\n // ----- attachments state (global when wrapped)\n const [attachements, setAttachements] = useState<\n (FileUIPart & { id: string })[]\n >([]);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const openRef = useRef<() => void>(() => {});\n\n const add = useCallback((files: File[] | FileList) => {\n const incoming = Array.from(files);\n if (incoming.length === 0) return;\n\n setAttachements((prev) =>\n prev.concat(\n incoming.map((file) => ({\n id: nanoid(),\n type: \"file\" as const,\n url: URL.createObjectURL(file),\n mediaType: file.type,\n filename: file.name,\n }))\n )\n );\n }, []);\n\n const remove = useCallback((id: string) => {\n setAttachements((prev) => {\n const found = prev.find((f) => f.id === id);\n if (found?.url) URL.revokeObjectURL(found.url);\n return prev.filter((f) => f.id !== id);\n });\n }, []);\n\n const clear = useCallback(() => {\n setAttachements((prev) => {\n for (const f of prev) if (f.url) URL.revokeObjectURL(f.url);\n return [];\n });\n }, []);\n\n const openFileDialog = useCallback(() => {\n openRef.current?.();\n }, []);\n\n const attachments = useMemo<AttachmentsContext>(\n () => ({\n files: attachements,\n add,\n remove,\n clear,\n openFileDialog,\n fileInputRef,\n }),\n [attachements, add, remove, clear, openFileDialog]\n );\n\n const __registerFileInput = useCallback(\n (ref: RefObject<HTMLInputElement | null>, open: () => void) => {\n fileInputRef.current = ref.current;\n openRef.current = open;\n },\n []\n );\n\n const controller = useMemo<PromptInputControllerProps>(\n () => ({\n textInput: {\n value: textInput,\n setInput: setTextInput,\n clear: clearInput,\n },\n attachments,\n __registerFileInput,\n }),\n [textInput, clearInput, attachments, __registerFileInput]\n );\n\n return (\n <PromptInputController.Provider value={controller}>\n <ProviderAttachmentsContext.Provider value={attachments}>\n {children}\n </ProviderAttachmentsContext.Provider>\n </PromptInputController.Provider>\n );\n}\n\n// ============================================================================\n// Component Context & Hooks\n// ============================================================================\n\nconst LocalAttachmentsContext = createContext<AttachmentsContext | null>(null);\n\nexport const usePromptInputAttachments = () => {\n // Dual-mode: prefer provider if present, otherwise use local\n const provider = useOptionalProviderAttachments();\n const local = useContext(LocalAttachmentsContext);\n const context = provider ?? local;\n if (!context) {\n throw new Error(\n \"usePromptInputAttachments must be used within a PromptInput or PromptInputProvider\"\n );\n }\n return context;\n};\n\nexport type PromptInputAttachmentProps = HTMLAttributes<HTMLDivElement> & {\n data: FileUIPart & { id: string };\n className?: string;\n};\n\nexport function PromptInputAttachment({\n data,\n className,\n ...props\n}: PromptInputAttachmentProps) {\n const attachments = usePromptInputAttachments();\n\n const filename = data.filename || \"\";\n\n const mediaType =\n data.mediaType?.startsWith(\"image/\") && data.url ? \"image\" : \"file\";\n const isImage = mediaType === \"image\";\n\n const attachmentLabel = filename || (isImage ? \"Image\" : \"Attachment\");\n\n return (\n <PromptInputHoverCard>\n <HoverCardTrigger asChild>\n <div\n className={cn(\n \"group relative flex h-8 cursor-default select-none items-center gap-1.5 rounded-md border border-border px-1.5 font-medium text-sm transition-all hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n className\n )}\n key={data.id}\n {...props}\n >\n <div className=\"relative size-5 shrink-0\">\n <div className=\"absolute inset-0 flex size-5 items-center justify-center overflow-hidden rounded bg-background transition-opacity group-hover:opacity-0\">\n {isImage ? (\n <img\n alt={filename || \"attachment\"}\n className=\"size-5 object-cover\"\n height={20}\n src={data.url}\n width={20}\n />\n ) : (\n <div className=\"flex size-5 items-center justify-center text-muted-foreground\">\n <PaperclipIcon className=\"size-3\" />\n </div>\n )}\n </div>\n <Button\n aria-label=\"Remove attachment\"\n className=\"absolute inset-0 size-5 cursor-pointer rounded p-0 opacity-0 transition-opacity group-hover:pointer-events-auto group-hover:opacity-100 [&>svg]:size-2.5\"\n onClick={(e) => {\n e.stopPropagation();\n attachments.remove(data.id);\n }}\n type=\"button\"\n variant=\"ghost\"\n >\n <XIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n </div>\n\n <span className=\"flex-1 truncate\">{attachmentLabel}</span>\n </div>\n </HoverCardTrigger>\n <PromptInputHoverCardContent className=\"w-auto p-2\">\n <div className=\"w-auto space-y-3\">\n {isImage && (\n <div className=\"flex max-h-96 w-96 items-center justify-center overflow-hidden rounded-md border\">\n <img\n alt={filename || \"attachment preview\"}\n className=\"max-h-full max-w-full object-contain\"\n height={384}\n src={data.url}\n width={448}\n />\n </div>\n )}\n <div className=\"flex items-center gap-2.5\">\n <div className=\"min-w-0 flex-1 space-y-1 px-0.5\">\n <h4 className=\"truncate font-semibold text-sm leading-none\">\n {filename || (isImage ? \"Image\" : \"Attachment\")}\n </h4>\n {data.mediaType && (\n <p className=\"truncate font-mono text-muted-foreground text-xs\">\n {data.mediaType}\n </p>\n )}\n </div>\n </div>\n </div>\n </PromptInputHoverCardContent>\n </PromptInputHoverCard>\n );\n}\n\nexport type PromptInputAttachmentsProps = Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\"\n> & {\n children: (attachment: FileUIPart & { id: string }) => ReactNode;\n};\n\nexport function PromptInputAttachments({\n children,\n}: PromptInputAttachmentsProps) {\n const attachments = usePromptInputAttachments();\n\n if (!attachments.files.length) {\n return null;\n }\n\n return attachments.files.map((file) => (\n <Fragment key={file.id}>{children(file)}</Fragment>\n ));\n}\n\nexport type PromptInputActionAddAttachmentsProps = ComponentProps<\n typeof DropdownMenuItem\n> & {\n label?: string;\n};\n\nexport const PromptInputActionAddAttachments = ({\n label = \"Add photos or files\",\n ...props\n}: PromptInputActionAddAttachmentsProps) => {\n const attachments = usePromptInputAttachments();\n\n return (\n <DropdownMenuItem\n {...props}\n onSelect={(e) => {\n e.preventDefault();\n attachments.openFileDialog();\n }}\n >\n <ImageIcon className=\"mr-2 size-4\" /> {label}\n </DropdownMenuItem>\n );\n};\n\nexport type PromptInputMessage = {\n text?: string;\n files?: FileUIPart[];\n};\n\nexport type PromptInputProps = Omit<\n HTMLAttributes<HTMLFormElement>,\n \"onSubmit\" | \"onError\"\n> & {\n accept?: string; // e.g., \"image/*\" or leave undefined for any\n multiple?: boolean;\n // When true, accepts drops anywhere on document. Default false (opt-in).\n globalDrop?: boolean;\n // Render a hidden input with given name and keep it in sync for native form posts. Default false.\n syncHiddenInput?: boolean;\n // Minimal constraints\n maxFiles?: number;\n maxFileSize?: number; // bytes\n onError?: (err: {\n code: \"max_files\" | \"max_file_size\" | \"accept\";\n message: string;\n }) => void;\n onSubmit: (\n message: PromptInputMessage,\n event: FormEvent<HTMLFormElement>\n ) => void | Promise<void>;\n};\n\nexport const PromptInput = ({\n className,\n accept,\n multiple,\n globalDrop,\n syncHiddenInput,\n maxFiles,\n maxFileSize,\n onError,\n onSubmit,\n children,\n ...props\n}: PromptInputProps) => {\n // Try to use a provider controller if present\n const controller = useOptionalPromptInputController();\n const usingProvider = !!controller;\n\n // Refs\n const inputRef = useRef<HTMLInputElement | null>(null);\n const anchorRef = useRef<HTMLSpanElement>(null);\n const formRef = useRef<HTMLFormElement | null>(null);\n\n // Find nearest form to scope drag & drop\n useEffect(() => {\n const root = anchorRef.current?.closest(\"form\");\n if (root instanceof HTMLFormElement) {\n formRef.current = root;\n }\n }, []);\n\n // ----- Local attachments (only used when no provider)\n const [items, setItems] = useState<(FileUIPart & { id: string })[]>([]);\n const files = usingProvider ? controller.attachments.files : items;\n\n const openFileDialogLocal = useCallback(() => {\n inputRef.current?.click();\n }, []);\n\n const matchesAccept = useCallback(\n (f: File) => {\n if (!accept || accept.trim() === \"\") {\n return true;\n }\n if (accept.includes(\"image/*\")) {\n return f.type.startsWith(\"image/\");\n }\n // NOTE: keep simple; expand as needed\n return true;\n },\n [accept]\n );\n\n const addLocal = useCallback(\n (fileList: File[] | FileList) => {\n const incoming = Array.from(fileList);\n const accepted = incoming.filter((f) => matchesAccept(f));\n if (incoming.length && accepted.length === 0) {\n onError?.({\n code: \"accept\",\n message: \"No files match the accepted types.\",\n });\n return;\n }\n const withinSize = (f: File) =>\n maxFileSize ? f.size <= maxFileSize : true;\n const sized = accepted.filter(withinSize);\n if (accepted.length > 0 && sized.length === 0) {\n onError?.({\n code: \"max_file_size\",\n message: \"All files exceed the maximum size.\",\n });\n return;\n }\n\n setItems((prev) => {\n const capacity =\n typeof maxFiles === \"number\"\n ? Math.max(0, maxFiles - prev.length)\n : undefined;\n const capped =\n typeof capacity === \"number\" ? sized.slice(0, capacity) : sized;\n if (typeof capacity === \"number\" && sized.length > capacity) {\n onError?.({\n code: \"max_files\",\n message: \"Too many files. Some were not added.\",\n });\n }\n const next: (FileUIPart & { id: string })[] = [];\n for (const file of capped) {\n next.push({\n id: nanoid(),\n type: \"file\",\n url: URL.createObjectURL(file),\n mediaType: file.type,\n filename: file.name,\n });\n }\n return prev.concat(next);\n });\n },\n [matchesAccept, maxFiles, maxFileSize, onError]\n );\n\n const add = usingProvider\n ? (files: File[] | FileList) => controller.attachments.add(files)\n : addLocal;\n\n const remove = usingProvider\n ? (id: string) => controller.attachments.remove(id)\n : (id: string) =>\n setItems((prev) => {\n const found = prev.find((file) => file.id === id);\n if (found?.url) {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((file) => file.id !== id);\n });\n\n const clear = usingProvider\n ? () => controller.attachments.clear()\n : () =>\n setItems((prev) => {\n for (const file of prev) {\n if (file.url) {\n URL.revokeObjectURL(file.url);\n }\n }\n return [];\n });\n\n const openFileDialog = usingProvider\n ? () => controller.attachments.openFileDialog()\n : openFileDialogLocal;\n\n // Let provider know about our hidden file input so external menus can call openFileDialog()\n useEffect(() => {\n if (!usingProvider) return;\n controller.__registerFileInput(inputRef, () => inputRef.current?.click());\n }, [usingProvider, controller]);\n\n // Note: File input cannot be programmatically set for security reasons\n // The syncHiddenInput prop is no longer functional\n useEffect(() => {\n if (syncHiddenInput && inputRef.current && files.length === 0) {\n inputRef.current.value = \"\";\n }\n }, [files, syncHiddenInput]);\n\n // Attach drop handlers on nearest form and document (opt-in)\n useEffect(() => {\n const form = formRef.current;\n if (!form) return;\n\n const onDragOver = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n };\n const onDrop = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {\n add(e.dataTransfer.files);\n }\n };\n form.addEventListener(\"dragover\", onDragOver);\n form.addEventListener(\"drop\", onDrop);\n return () => {\n form.removeEventListener(\"dragover\", onDragOver);\n form.removeEventListener(\"drop\", onDrop);\n };\n }, [add]);\n\n useEffect(() => {\n if (!globalDrop) return;\n\n const onDragOver = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n };\n const onDrop = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {\n add(e.dataTransfer.files);\n }\n };\n document.addEventListener(\"dragover\", onDragOver);\n document.addEventListener(\"drop\", onDrop);\n return () => {\n document.removeEventListener(\"dragover\", onDragOver);\n document.removeEventListener(\"drop\", onDrop);\n };\n }, [add, globalDrop]);\n\n useEffect(\n () => () => {\n if (!usingProvider) {\n for (const f of files) {\n if (f.url) URL.revokeObjectURL(f.url);\n }\n }\n },\n [usingProvider, files]\n );\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n if (event.currentTarget.files) {\n add(event.currentTarget.files);\n }\n };\n\n const convertBlobUrlToDataUrl = async (url: string): Promise<string> => {\n const response = await fetch(url);\n const blob = await response.blob();\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n };\n\n const ctx = useMemo<AttachmentsContext>(\n () => ({\n files: files.map((item) => ({ ...item, id: item.id })),\n add,\n remove,\n clear,\n openFileDialog,\n fileInputRef: inputRef,\n }),\n [files, add, remove, clear, openFileDialog]\n );\n\n const handleSubmit: FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n\n const form = event.currentTarget;\n const text = usingProvider\n ? controller.textInput.value\n : (() => {\n const formData = new FormData(form);\n return (formData.get(\"message\") as string) || \"\";\n })();\n\n // Reset form immediately after capturing text to avoid race condition\n // where user input during async blob conversion would be lost\n if (!usingProvider) {\n form.reset();\n }\n\n // Convert blob URLs to data URLs asynchronously\n Promise.all(\n files.map(async ({ id, ...item }) => {\n if (item.url && item.url.startsWith(\"blob:\")) {\n return {\n ...item,\n url: await convertBlobUrlToDataUrl(item.url),\n };\n }\n return item;\n })\n ).then((convertedFiles: FileUIPart[]) => {\n try {\n const result = onSubmit({ text, files: convertedFiles }, event);\n\n // Handle both sync and async onSubmit\n if (result instanceof Promise) {\n result\n .then(() => {\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n })\n .catch(() => {\n // Don't clear on error - user may want to retry\n });\n } else {\n // Sync function completed without throwing, clear attachments\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n }\n } catch (error) {\n // Don't clear on error - user may want to retry\n }\n });\n };\n\n // Render with or without local provider\n const inner = (\n <>\n <span aria-hidden=\"true\" className=\"hidden\" ref={anchorRef} />\n <input\n accept={accept}\n aria-label=\"Upload files\"\n className=\"hidden\"\n multiple={multiple}\n onChange={handleChange}\n ref={inputRef}\n title=\"Upload files\"\n type=\"file\"\n />\n <form\n className={cn(\"w-full\", className)}\n onSubmit={handleSubmit}\n {...props}\n >\n <InputGroup>{children}</InputGroup>\n </form>\n </>\n );\n\n return usingProvider ? (\n inner\n ) : (\n <LocalAttachmentsContext.Provider value={ctx}>\n {inner}\n </LocalAttachmentsContext.Provider>\n );\n};\n\nexport type PromptInputBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputBody = ({\n className,\n ...props\n}: PromptInputBodyProps) => (\n <div className={cn(\"contents\", className)} {...props} />\n);\n\nexport type PromptInputTextareaProps = ComponentProps<\n typeof InputGroupTextarea\n>;\n\nexport const PromptInputTextarea = ({\n onChange,\n className,\n placeholder = \"What would you like to know?\",\n ...props\n}: PromptInputTextareaProps) => {\n const controller = useOptionalPromptInputController();\n const attachments = usePromptInputAttachments();\n const [isComposing, setIsComposing] = useState(false);\n\n const handleKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = (e) => {\n if (e.key === \"Enter\") {\n if (isComposing || e.nativeEvent.isComposing) {\n return;\n }\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n e.currentTarget.form?.requestSubmit();\n }\n\n // Remove last attachment when Backspace is pressed and textarea is empty\n if (\n e.key === \"Backspace\" &&\n e.currentTarget.value === \"\" &&\n attachments.files.length > 0\n ) {\n e.preventDefault();\n const lastAttachment = attachments.files.at(-1);\n if (lastAttachment) {\n attachments.remove(lastAttachment.id);\n }\n }\n };\n\n const handlePaste: ClipboardEventHandler<HTMLTextAreaElement> = (event) => {\n const items = event.clipboardData?.items;\n\n if (!items) {\n return;\n }\n\n const files: File[] = [];\n\n for (const item of items) {\n if (item.kind === \"file\") {\n const file = item.getAsFile();\n if (file) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n event.preventDefault();\n attachments.add(files);\n }\n };\n\n const controlledProps = controller\n ? {\n value: controller.textInput.value,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => {\n controller.textInput.setInput(e.currentTarget.value);\n onChange?.(e);\n },\n }\n : {\n onChange,\n };\n\n return (\n <InputGroupTextarea\n className={cn(\"field-sizing-content max-h-48 min-h-16\", className)}\n name=\"message\"\n onCompositionEnd={() => setIsComposing(false)}\n onCompositionStart={() => setIsComposing(true)}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n {...props}\n {...controlledProps}\n />\n );\n};\n\nexport type PromptInputHeaderProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n \"align\"\n>;\n\nexport const PromptInputHeader = ({\n className,\n ...props\n}: PromptInputHeaderProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn(\"order-first flex-wrap gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputFooterProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n \"align\"\n>;\n\nexport const PromptInputFooter = ({\n className,\n ...props\n}: PromptInputFooterProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn(\"justify-between gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputToolsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTools = ({\n className,\n ...props\n}: PromptInputToolsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props} />\n);\n\nexport type PromptInputButtonProps = ComponentProps<typeof InputGroupButton>;\n\nexport const PromptInputButton = ({\n variant = \"ghost\",\n className,\n size,\n ...props\n}: PromptInputButtonProps) => {\n const newSize =\n size ?? (Children.count(props.children) > 1 ? \"sm\" : \"icon-sm\");\n\n return (\n <InputGroupButton\n className={cn(className)}\n size={newSize}\n type=\"button\"\n variant={variant}\n {...props}\n />\n );\n};\n\nexport type PromptInputActionMenuProps = ComponentProps<typeof DropdownMenu>;\nexport const PromptInputActionMenu = (props: PromptInputActionMenuProps) => (\n <DropdownMenu {...props} />\n);\n\nexport type PromptInputActionMenuTriggerProps = PromptInputButtonProps;\n\nexport const PromptInputActionMenuTrigger = ({\n className,\n children,\n ...props\n}: PromptInputActionMenuTriggerProps) => (\n <DropdownMenuTrigger asChild>\n <PromptInputButton className={className} {...props}>\n {children ?? <PlusIcon className=\"size-4\" />}\n </PromptInputButton>\n </DropdownMenuTrigger>\n);\n\nexport type PromptInputActionMenuContentProps = ComponentProps<\n typeof DropdownMenuContent\n>;\nexport const PromptInputActionMenuContent = ({\n className,\n ...props\n}: PromptInputActionMenuContentProps) => (\n <DropdownMenuContent align=\"start\" className={cn(className)} {...props} />\n);\n\nexport type PromptInputActionMenuItemProps = ComponentProps<\n typeof DropdownMenuItem\n>;\nexport const PromptInputActionMenuItem = ({\n className,\n ...props\n}: PromptInputActionMenuItemProps) => (\n <DropdownMenuItem className={cn(className)} {...props} />\n);\n\n// Note: Actions that perform side-effects (like opening a file dialog)\n// are provided in opt-in modules (e.g., prompt-input-attachments).\n\nexport type PromptInputSubmitProps = ComponentProps<typeof InputGroupButton> & {\n status?: ChatStatus;\n};\n\nexport const PromptInputSubmit = ({\n className,\n variant = \"default\",\n size = \"icon-sm\",\n status,\n children,\n ...props\n}: PromptInputSubmitProps) => {\n let Icon = <SendIcon className=\"size-4\" />;\n\n if (status === \"submitted\") {\n Icon = <Loader2Icon className=\"size-4 animate-spin\" />;\n } else if (status === \"streaming\") {\n Icon = <SquareIcon className=\"size-4\" />;\n } else if (status === \"error\") {\n Icon = <XIcon className=\"size-4\" />;\n }\n\n return (\n <InputGroupButton\n aria-label=\"Submit\"\n className={cn(className)}\n size={size}\n type=\"submit\"\n variant={variant}\n {...props}\n >\n {children ?? Icon}\n </InputGroupButton>\n );\n};\n\ninterface SpeechRecognition extends EventTarget {\n continuous: boolean;\n interimResults: boolean;\n lang: string;\n start(): void;\n stop(): void;\n onstart: ((this: SpeechRecognition, ev: Event) => any) | null;\n onend: ((this: SpeechRecognition, ev: Event) => any) | null;\n onresult:\n | ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => any)\n | null;\n onerror:\n | ((this: SpeechRecognition, ev: SpeechRecognitionErrorEvent) => any)\n | null;\n}\n\ninterface SpeechRecognitionEvent extends Event {\n results: SpeechRecognitionResultList;\n}\n\ntype SpeechRecognitionResultList = {\n readonly length: number;\n item(index: number): SpeechRecognitionResult;\n [index: number]: SpeechRecognitionResult;\n};\n\ntype SpeechRecognitionResult = {\n readonly length: number;\n item(index: number): SpeechRecognitionAlternative;\n [index: number]: SpeechRecognitionAlternative;\n isFinal: boolean;\n};\n\ntype SpeechRecognitionAlternative = {\n transcript: string;\n confidence: number;\n};\n\ninterface SpeechRecognitionErrorEvent extends Event {\n error: string;\n}\n\ndeclare global {\n interface Window {\n SpeechRecognition: {\n new (): SpeechRecognition;\n };\n webkitSpeechRecognition: {\n new (): SpeechRecognition;\n };\n }\n}\n\nexport type PromptInputSpeechButtonProps = ComponentProps<\n typeof PromptInputButton\n> & {\n textareaRef?: RefObject<HTMLTextAreaElement | null>;\n onTranscriptionChange?: (text: string) => void;\n};\n\nexport const PromptInputSpeechButton = ({\n className,\n textareaRef,\n onTranscriptionChange,\n ...props\n}: PromptInputSpeechButtonProps) => {\n const [isListening, setIsListening] = useState(false);\n const [recognition, setRecognition] = useState<SpeechRecognition | null>(\n null\n );\n const recognitionRef = useRef<SpeechRecognition | null>(null);\n\n useEffect(() => {\n if (\n typeof window !== \"undefined\" &&\n (\"SpeechRecognition\" in window || \"webkitSpeechRecognition\" in window)\n ) {\n const SpeechRecognition =\n window.SpeechRecognition || window.webkitSpeechRecognition;\n const speechRecognition = new SpeechRecognition();\n\n speechRecognition.continuous = true;\n speechRecognition.interimResults = true;\n speechRecognition.lang = \"en-US\";\n\n speechRecognition.onstart = () => {\n setIsListening(true);\n };\n\n speechRecognition.onend = () => {\n setIsListening(false);\n };\n\n speechRecognition.onresult = (event) => {\n let finalTranscript = \"\";\n\n const results = Array.from(event.results);\n\n for (const result of results) {\n if (result.isFinal) {\n finalTranscript += result[0]?.transcript ?? \"\";\n }\n }\n\n if (finalTranscript && textareaRef?.current) {\n const textarea = textareaRef.current;\n const currentValue = textarea.value;\n const newValue =\n currentValue + (currentValue ? \" \" : \"\") + finalTranscript;\n\n textarea.value = newValue;\n textarea.dispatchEvent(new Event(\"input\", { bubbles: true }));\n onTranscriptionChange?.(newValue);\n }\n };\n\n speechRecognition.onerror = (event) => {\n console.error(\"Speech recognition error:\", event.error);\n setIsListening(false);\n };\n\n recognitionRef.current = speechRecognition;\n setRecognition(speechRecognition);\n }\n\n return () => {\n if (recognitionRef.current) {\n recognitionRef.current.stop();\n }\n };\n }, [textareaRef, onTranscriptionChange]);\n\n const toggleListening = useCallback(() => {\n if (!recognition) {\n return;\n }\n\n if (isListening) {\n recognition.stop();\n } else {\n recognition.start();\n }\n }, [recognition, isListening]);\n\n return (\n <PromptInputButton\n className={cn(\n \"relative transition-all duration-200\",\n isListening && \"animate-pulse bg-accent text-accent-foreground\",\n className\n )}\n disabled={!recognition}\n onClick={toggleListening}\n {...props}\n >\n <MicIcon className=\"size-4\" />\n </PromptInputButton>\n );\n};\n\nexport type PromptInputModelSelectProps = ComponentProps<typeof Select>;\n\nexport const PromptInputModelSelect = (props: PromptInputModelSelectProps) => (\n <Select {...props} />\n);\n\nexport type PromptInputModelSelectTriggerProps = ComponentProps<\n typeof SelectTrigger\n>;\n\nexport const PromptInputModelSelectTrigger = ({\n className,\n ...props\n}: PromptInputModelSelectTriggerProps) => (\n <SelectTrigger\n className={cn(\n \"border-none bg-transparent font-medium text-muted-foreground shadow-none transition-colors\",\n 'hover:bg-accent hover:text-foreground aria-expanded:bg-accent aria-expanded:text-foreground',\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputModelSelectContentProps = ComponentProps<\n typeof SelectContent\n>;\n\nexport const PromptInputModelSelectContent = ({\n className,\n ...props\n}: PromptInputModelSelectContentProps) => (\n <SelectContent className={cn(className)} {...props} />\n);\n\nexport type PromptInputModelSelectItemProps = ComponentProps<typeof SelectItem>;\n\nexport const PromptInputModelSelectItem = ({\n className,\n ...props\n}: PromptInputModelSelectItemProps) => (\n <SelectItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputModelSelectValueProps = ComponentProps<\n typeof SelectValue\n>;\n\nexport const PromptInputModelSelectValue = ({\n className,\n ...props\n}: PromptInputModelSelectValueProps) => (\n <SelectValue className={cn(className)} {...props} />\n);\n\nexport type PromptInputHoverCardProps = ComponentProps<typeof HoverCard>;\n\nexport const PromptInputHoverCard = ({\n openDelay = 0,\n closeDelay = 0,\n ...props\n}: PromptInputHoverCardProps) => (\n <HoverCard closeDelay={closeDelay} openDelay={openDelay} {...props} />\n);\n\nexport type PromptInputHoverCardTriggerProps = ComponentProps<\n typeof HoverCardTrigger\n>;\n\nexport const PromptInputHoverCardTrigger = (\n props: PromptInputHoverCardTriggerProps\n) => <HoverCardTrigger {...props} />;\n\nexport type PromptInputHoverCardContentProps = ComponentProps<\n typeof HoverCardContent\n>;\n\nexport const PromptInputHoverCardContent = ({\n align = \"start\",\n ...props\n}: PromptInputHoverCardContentProps) => (\n <HoverCardContent align={align} {...props} />\n);\n\nexport type PromptInputTabsListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabsList = ({\n className,\n ...props\n}: PromptInputTabsListProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTab = ({\n className,\n ...props\n}: PromptInputTabProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabLabelProps = HTMLAttributes<HTMLHeadingElement>;\n\nexport const PromptInputTabLabel = ({\n className,\n ...props\n}: PromptInputTabLabelProps) => (\n <h3\n className={cn(\n \"mb-2 px-3 font-medium text-muted-foreground text-xs\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputTabBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabBody = ({\n className,\n ...props\n}: PromptInputTabBodyProps) => (\n <div className={cn(\"space-y-1\", className)} {...props} />\n);\n\nexport type PromptInputTabItemProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabItem = ({\n className,\n ...props\n}: PromptInputTabItemProps) => (\n <div\n className={cn(\n \"flex items-center gap-2 px-3 py-2 text-xs hover:bg-accent\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputCommandProps = ComponentProps<typeof Command>;\n\nexport const PromptInputCommand = ({\n className,\n ...props\n}: PromptInputCommandProps) => <Command className={cn(className)} {...props} />;\n\nexport type PromptInputCommandInputProps = ComponentProps<typeof CommandInput>;\n\nexport const PromptInputCommandInput = ({\n className,\n ...props\n}: PromptInputCommandInputProps) => (\n <CommandInput className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandListProps = ComponentProps<typeof CommandList>;\n\nexport const PromptInputCommandList = ({\n className,\n ...props\n}: PromptInputCommandListProps) => (\n <CommandList className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const PromptInputCommandEmpty = ({\n className,\n ...props\n}: PromptInputCommandEmptyProps) => (\n <CommandEmpty className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const PromptInputCommandGroup = ({\n className,\n ...props\n}: PromptInputCommandGroupProps) => (\n <CommandGroup className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandItemProps = ComponentProps<typeof CommandItem>;\n\nexport const PromptInputCommandItem = ({\n className,\n ...props\n}: PromptInputCommandItemProps) => (\n <CommandItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const PromptInputCommandSeparator = ({\n className,\n ...props\n}: PromptInputCommandSeparatorProps) => (\n <CommandSeparator className={cn(className)} {...props} />\n);\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n PromptInput as AIPromptInput,\n PromptInputBody,\n PromptInputFooter,\n PromptInputSubmit,\n PromptInputTextarea,\n PromptInputTools,\n PromptInputProvider,\n type PromptInputMessage,\n type PromptInputProps as AIPromptInputProps,\n} from \"@/components/ai-elements/prompt-input\";\nimport type { FormEvent } from \"react\";\n\n/**\n * PromptInput Block\n *\n * A thin wrapper around the PromptInput AI element that hides attachment functionality.\n * This block provides a simplified prompt input interface focused on text-only input.\n *\n * Features:\n * - Controlled and uncontrolled state support\n * - Disabled state (blocks submission, keeps textarea editable)\n * - Custom placeholder text\n * - No attachment UI (compositional hiding)\n */\n\nexport interface PromptInputBlockProps\n extends Omit<\n AIPromptInputProps,\n \"accept\" | \"multiple\" | \"maxFiles\" | \"maxFileSize\" | \"globalDrop\" | \"syncHiddenInput\" | \"onSubmit\" | \"onChange\"\n > {\n /**\n * Blocks form submission when true. Textarea remains editable for drafts.\n */\n disabled?: boolean;\n /**\n * Placeholder text for the textarea input\n */\n placeholder?: string;\n /**\n * Controlled state value (when provided with onChange)\n */\n value?: string;\n /**\n * Controlled state change handler (when provided with value)\n */\n onChange?: (value: string) => void;\n /**\n * Submit handler called when form is submitted\n */\n onSubmit: (\n message: PromptInputMessage,\n event: FormEvent<HTMLFormElement>\n ) => void | Promise<void>;\n}\n\n/**\n * PromptInput component - text-only prompt input without attachments\n */\nexport const PromptInput = React.memo<PromptInputBlockProps>(\n ({\n disabled = false,\n placeholder,\n value,\n onChange,\n onSubmit,\n ...props\n }) => {\n // Handle form submission with disabled state\n const handleSubmit = React.useCallback(\n (message: PromptInputMessage, event: FormEvent<HTMLFormElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onSubmit(message, event);\n },\n [disabled, onSubmit]\n );\n\n // Controlled mode: wrap in PromptInputProvider\n const isControlled = value !== undefined && onChange !== undefined;\n\n // Handle controlled state change\n const handleControlledChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange) {\n onChange(e.target.value);\n }\n },\n [onChange]\n );\n\n // Render the prompt input composition\n const promptInputContent = (\n <AIPromptInput onSubmit={handleSubmit} {...props}>\n <PromptInputBody>\n <PromptInputTextarea\n placeholder={placeholder}\n disabled={false} // Keep editable even when form is disabled\n onChange={isControlled ? handleControlledChange : undefined}\n />\n </PromptInputBody>\n <PromptInputFooter>\n <PromptInputTools>\n {/* No attachment menu - compositionally hidden */}\n </PromptInputTools>\n <PromptInputSubmit disabled={disabled} />\n </PromptInputFooter>\n </AIPromptInput>\n );\n\n // Wrap in provider for controlled mode\n if (isControlled) {\n return (\n <PromptInputProvider initialInput={value}>\n {promptInputContent}\n </PromptInputProvider>\n );\n }\n\n return promptInputContent;\n }\n);\n\nPromptInput.displayName = \"PromptInput\";\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronDownIcon, PaperclipIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport type QueueMessagePart = {\n type: string;\n text?: string;\n url?: string;\n filename?: string;\n mediaType?: string;\n};\n\nexport type QueueMessage = {\n id: string;\n parts: QueueMessagePart[];\n};\n\nexport type QueueTodo = {\n id: string;\n title: string;\n description?: string;\n status?: \"pending\" | \"completed\";\n};\n\nexport type QueueItemProps = ComponentProps<\"li\">;\n\nexport const QueueItem = ({ className, ...props }: QueueItemProps) => (\n <li\n className={cn(\n \"group flex flex-col gap-1 rounded-md px-3 py-1 text-sm transition-colors hover:bg-muted\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemIndicatorProps = ComponentProps<\"span\"> & {\n completed?: boolean;\n};\n\nexport const QueueItemIndicator = ({\n completed = false,\n className,\n ...props\n}: QueueItemIndicatorProps) => (\n <span\n className={cn(\n \"mt-0.5 inline-block size-2.5 rounded-full border\",\n completed\n ? \"border-muted-foreground/20 bg-muted-foreground/10\"\n : \"border-muted-foreground/50\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemContentProps = ComponentProps<\"span\"> & {\n completed?: boolean;\n};\n\nexport const QueueItemContent = ({\n completed = false,\n className,\n ...props\n}: QueueItemContentProps) => (\n <span\n className={cn(\n \"line-clamp-1 grow wrap-break-word\",\n completed\n ? \"text-muted-foreground/50 line-through\"\n : \"text-muted-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemDescriptionProps = ComponentProps<\"div\"> & {\n completed?: boolean;\n};\n\nexport const QueueItemDescription = ({\n completed = false,\n className,\n ...props\n}: QueueItemDescriptionProps) => (\n <div\n className={cn(\n \"ml-6 text-xs\",\n completed\n ? \"text-muted-foreground/40 line-through\"\n : \"text-muted-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemActionsProps = ComponentProps<\"div\">;\n\nexport const QueueItemActions = ({\n className,\n ...props\n}: QueueItemActionsProps) => (\n <div className={cn(\"flex gap-1\", className)} {...props} />\n);\n\nexport type QueueItemActionProps = Omit<\n ComponentProps<typeof Button>,\n \"variant\" | \"size\"\n>;\n\nexport const QueueItemAction = ({\n className,\n ...props\n}: QueueItemActionProps) => (\n <Button\n className={cn(\n \"size-auto rounded p-1 text-muted-foreground opacity-0 transition-opacity hover:bg-muted-foreground/10 hover:text-foreground group-hover:opacity-100\",\n className\n )}\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n />\n);\n\nexport type QueueItemAttachmentProps = ComponentProps<\"div\">;\n\nexport const QueueItemAttachment = ({\n className,\n ...props\n}: QueueItemAttachmentProps) => (\n <div className={cn(\"mt-1 flex flex-wrap gap-2\", className)} {...props} />\n);\n\nexport type QueueItemImageProps = ComponentProps<\"img\">;\n\nexport const QueueItemImage = ({\n className,\n ...props\n}: QueueItemImageProps) => (\n <img\n alt=\"\"\n className={cn(\"h-8 w-8 rounded border object-cover\", className)}\n height={32}\n width={32}\n {...props}\n />\n);\n\nexport type QueueItemFileProps = ComponentProps<\"span\">;\n\nexport const QueueItemFile = ({\n children,\n className,\n ...props\n}: QueueItemFileProps) => (\n <span\n className={cn(\n \"flex items-center gap-1 rounded border bg-muted px-2 py-1 text-xs\",\n className\n )}\n {...props}\n >\n <PaperclipIcon size={12} />\n <span className=\"max-w-[100px] truncate\">{children}</span>\n </span>\n);\n\nexport type QueueListProps = ComponentProps<typeof ScrollArea>;\n\nexport const QueueList = ({\n children,\n className,\n ...props\n}: QueueListProps) => (\n <ScrollArea className={cn(\"-mb-1 mt-2\", className)} {...props}>\n <div className=\"max-h-40 pr-4\">\n <ul>{children}</ul>\n </div>\n </ScrollArea>\n);\n\n// QueueSection - collapsible section container\nexport type QueueSectionProps = ComponentProps<typeof Collapsible>;\n\nexport const QueueSection = ({\n className,\n defaultOpen = true,\n ...props\n}: QueueSectionProps) => (\n <Collapsible className={cn(className)} defaultOpen={defaultOpen} {...props} />\n);\n\n// QueueSectionTrigger - section header/trigger\nexport type QueueSectionTriggerProps = ComponentProps<\"button\">;\n\nexport const QueueSectionTrigger = ({\n children,\n className,\n ...props\n}: QueueSectionTriggerProps) => (\n <CollapsibleTrigger asChild>\n <button\n className={cn(\n \"group flex w-full items-center justify-between rounded-md bg-muted/40 px-3 py-2 text-left font-medium text-muted-foreground text-sm transition-colors hover:bg-muted\",\n className\n )}\n type=\"button\"\n {...props}\n >\n {children}\n </button>\n </CollapsibleTrigger>\n);\n\n// QueueSectionLabel - label content with icon and count\nexport type QueueSectionLabelProps = ComponentProps<\"span\"> & {\n count?: number;\n label: string;\n icon?: React.ReactNode;\n};\n\nexport const QueueSectionLabel = ({\n count,\n label,\n icon,\n className,\n ...props\n}: QueueSectionLabelProps) => (\n <span className={cn(\"flex items-center gap-2\", className)} {...props}>\n <ChevronDownIcon className=\"group-data-[state=closed]:-rotate-90 size-4 transition-transform\" />\n {icon}\n <span>\n {count} {label}\n </span>\n </span>\n);\n\n// QueueSectionContent - collapsible content area\nexport type QueueSectionContentProps = ComponentProps<\n typeof CollapsibleContent\n>;\n\nexport const QueueSectionContent = ({\n className,\n ...props\n}: QueueSectionContentProps) => (\n <CollapsibleContent className={cn(className)} {...props} />\n);\n\nexport type QueueProps = ComponentProps<\"div\">;\n\nexport const Queue = ({ className, ...props }: QueueProps) => (\n <div\n className={cn(\n \"flex flex-col gap-2 rounded-xl border border-border bg-background px-3 pt-2 pb-2 shadow-xs\",\n className\n )}\n {...props}\n />\n);\n","import * as React from \"react\";\nimport {\n Queue,\n QueueSection,\n QueueSectionTrigger,\n QueueSectionLabel,\n QueueSectionContent,\n QueueList,\n QueueItem,\n QueueItemContent,\n} from \"@/components/ai-elements/queue\";\nimport { Icon } from \"@/components/primitives/Icon\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * FileQueue Block\n *\n * Generic block component for displaying files organized into collapsible groups.\n * Supports optional file selection with visual feedback and keyboard navigation.\n * Uses Queue AI element for structure.\n */\n\n/**\n * File item structure\n */\nexport interface FileItem {\n /** Unique identifier for the file */\n id: string;\n /** File name to display */\n name: string;\n /** Optional file path to display */\n path?: string;\n}\n\n/**\n * File group structure\n */\nexport interface FileGroup {\n /** Unique identifier for the group */\n id: string;\n /** Display title for the group */\n title: string;\n /** Optional icon name from icon registry */\n icon?: string;\n /** Optional icon color class */\n iconColor?: string;\n /** Array of files in this group */\n files: FileItem[];\n /** Whether group should be open by default */\n defaultOpen?: boolean;\n}\n\n/**\n * FileQueue component props\n */\nexport interface FileQueueProps {\n /** Array of file groups to display */\n groups: FileGroup[];\n /** ID of currently selected file */\n selectedFileId?: string;\n /** Callback when a file is selected */\n onFileSelect?: (fileId: string) => void;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * FileQueue component - displays files organized into collapsible groups\n */\nexport const FileQueue = React.memo<FileQueueProps>(\n ({ groups, selectedFileId, onFileSelect, className }) => {\n const handleFileClick = React.useCallback(\n (fileId: string) => {\n if (onFileSelect) {\n onFileSelect(fileId);\n }\n },\n [onFileSelect]\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent, fileId: string) => {\n if (onFileSelect && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n handleFileClick(fileId);\n }\n },\n [onFileSelect, handleFileClick]\n );\n\n return (\n <Queue className={cn(\"w-full\", className)}>\n {groups.map((group) => {\n return (\n <QueueSection key={group.id} defaultOpen={group.defaultOpen}>\n <QueueSectionTrigger>\n <QueueSectionLabel\n count={group.files.length}\n label={group.title}\n icon={\n group.icon ? (\n <Icon\n name={group.icon}\n size=\"sm\"\n className={group.iconColor}\n />\n ) : undefined\n }\n />\n </QueueSectionTrigger>\n <QueueSectionContent>\n <QueueList className=\"max-h-[300px]\">\n {group.files.length === 0 ? (\n <div className=\"px-4 py-3 text-sm text-muted-foreground italic\">\n No files yet\n </div>\n ) : (\n group.files.map((file) => {\n const isSelected = selectedFileId === file.id;\n const isClickable = !!onFileSelect;\n\n return (\n <QueueItem\n key={file.id}\n className={cn(\n isClickable && \"cursor-pointer\",\n isSelected && \"bg-accent\"\n )}\n onClick={() => isClickable && handleFileClick(file.id)}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable ? 0 : undefined}\n onKeyDown={(e) => handleKeyDown(e, file.id)}\n aria-selected={isClickable ? isSelected : undefined}\n >\n <div className=\"flex items-start gap-2\">\n <Icon name=\"file\" size=\"sm\" className=\"mt-0.5\" />\n <QueueItemContent>\n {file.name}\n {file.path && (\n <span className=\"text-muted-foreground/70\">\n {\" \"}\n • {file.path}\n </span>\n )}\n </QueueItemContent>\n </div>\n </QueueItem>\n );\n })\n )}\n </QueueList>\n </QueueSectionContent>\n </QueueSection>\n );\n })}\n </Queue>\n );\n }\n);\n\nFileQueue.displayName = \"FileQueue\";\n","import * as React from \"react\";\nimport { Badge } from \"@/components/primitives/Badge\";\nimport { Icon } from \"@/components/primitives/Icon\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * FileStatusBadge\n *\n * Displays file change status with color-coded badge and icon.\n * Adapted from Tool AI element's status badge pattern.\n */\n\nexport type FileStatus = \"pending\" | \"modified\" | \"created\" | \"deleted\";\n\nexport interface FileStatusBadgeProps {\n status: FileStatus;\n className?: string;\n}\n\nconst statusConfig: Record<\n FileStatus,\n {\n label: string;\n icon: string;\n colorClass: string;\n }\n> = {\n pending: {\n label: \"Pending\",\n icon: \"loader-2\",\n colorClass: \"text-yellow-600 dark:text-yellow-500\",\n },\n modified: {\n label: \"Modified\",\n icon: \"file-text\",\n colorClass: \"text-blue-600 dark:text-blue-500\",\n },\n created: {\n label: \"Created\",\n icon: \"plus\",\n colorClass: \"text-green-600 dark:text-green-500\",\n },\n deleted: {\n label: \"Deleted\",\n icon: \"x\",\n colorClass: \"text-red-600 dark:text-red-500\",\n },\n};\n\n/**\n * FileStatusBadge component - displays file change status\n */\nexport const FileStatusBadge = React.memo<FileStatusBadgeProps>(\n ({ status, className }) => {\n const config = statusConfig[status];\n\n return (\n <Badge\n variant=\"secondary\"\n className={cn(\"gap-1.5 rounded-full text-xs\", className)}\n >\n <Icon\n name={config.icon}\n size=\"xs\"\n className={config.colorClass}\n aria-hidden=\"true\"\n />\n <span className={config.colorClass}>{config.label}</span>\n </Badge>\n );\n }\n);\n\nFileStatusBadge.displayName = \"FileStatusBadge\";\n","\"use client\";\n\nimport { Alert, AlertDescription } from \"@/components/ui/alert\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n// Define our own types since ToolUIPart doesn't exist in current AI SDK\ntype ToolUIState = \n | \"input-streaming\" \n | \"input-available\" \n | \"approval-requested\"\n | \"approval-responded\"\n | \"output-denied\"\n | \"output-available\" \n | \"output-error\";\n\ntype ToolApproval = {\n approved?: boolean;\n};\n\ntype ToolUIPart = {\n type: `tool-${string}`;\n state: ToolUIState;\n approval?: ToolApproval;\n input?: any;\n output?: any;\n errorText?: string;\n};\nimport {\n type ComponentProps,\n createContext,\n type ReactNode,\n useContext,\n} from \"react\";\n\ntype ConfirmationContextValue = {\n approval: ToolUIPart[\"approval\"];\n state: ToolUIPart[\"state\"];\n};\n\nconst ConfirmationContext = createContext<ConfirmationContextValue | null>(\n null\n);\n\nconst useConfirmation = () => {\n const context = useContext(ConfirmationContext);\n\n if (!context) {\n throw new Error(\"Confirmation components must be used within Confirmation\");\n }\n\n return context;\n};\n\nexport type ConfirmationProps = ComponentProps<typeof Alert> & {\n approval?: ToolUIPart[\"approval\"];\n state: ToolUIPart[\"state\"];\n};\n\nexport const Confirmation = ({\n className,\n approval,\n state,\n ...props\n}: ConfirmationProps) => {\n if (!approval || state === \"input-streaming\" || state === \"input-available\") {\n return null;\n }\n\n return (\n <ConfirmationContext.Provider value={{ approval, state }}>\n <Alert className={cn(\"flex flex-col gap-2\", className)} {...props} />\n </ConfirmationContext.Provider>\n );\n};\n\nexport type ConfirmationTitleProps = ComponentProps<typeof AlertDescription>;\n\nexport const ConfirmationTitle = ({\n className,\n ...props\n}: ConfirmationTitleProps) => (\n <AlertDescription className={cn(\"inline\", className)} {...props} />\n);\n\nexport type ConfirmationRequestProps = {\n children?: ReactNode;\n};\n\nexport const ConfirmationRequest = ({ children }: ConfirmationRequestProps) => {\n const { state } = useConfirmation();\n\n // Only show when approval is requested\n if (state !== \"approval-requested\") {\n return null;\n }\n\n return children;\n};\n\nexport type ConfirmationAcceptedProps = {\n children?: ReactNode;\n};\n\nexport const ConfirmationAccepted = ({\n children,\n}: ConfirmationAcceptedProps) => {\n const { approval, state } = useConfirmation();\n\n // Only show when approved and in response states\n if (\n !approval?.approved ||\n (state !== \"approval-responded\" &&\n state !== \"output-denied\" &&\n state !== \"output-available\")\n ) {\n return null;\n }\n\n return children;\n};\n\nexport type ConfirmationRejectedProps = {\n children?: ReactNode;\n};\n\nexport const ConfirmationRejected = ({\n children,\n}: ConfirmationRejectedProps) => {\n const { approval, state } = useConfirmation();\n\n // Only show when rejected and in response states\n if (\n approval?.approved !== false ||\n (state !== \"approval-responded\" &&\n state !== \"output-denied\" &&\n state !== \"output-available\")\n ) {\n return null;\n }\n\n return children;\n};\n\nexport type ConfirmationActionsProps = ComponentProps<\"div\">;\n\nexport const ConfirmationActions = ({\n className,\n ...props\n}: ConfirmationActionsProps) => {\n const { state } = useConfirmation();\n\n // Only show when approval is requested\n if (state !== \"approval-requested\") {\n return null;\n }\n\n return (\n <div\n className={cn(\"flex items-center justify-end gap-2 self-end\", className)}\n {...props}\n />\n );\n};\n\nexport type ConfirmationActionProps = ComponentProps<typeof Button>;\n\nexport const ConfirmationAction = (props: ConfirmationActionProps) => (\n <Button className=\"h-8 px-3 text-sm\" type=\"button\" {...props} />\n);\n","import * as React from \"react\";\nimport {\n Confirmation as AIConfirmation,\n ConfirmationTitle,\n ConfirmationActions,\n ConfirmationAction,\n} from \"@/components/ai-elements/confirmation\";\nimport { Icon } from \"@/components/primitives/Icon\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * Confirmation Block\n *\n * Approval workflow component that internally manages action buttons.\n * Wraps content with Confirmation AI element and provides approve/reject actions.\n */\n\n// Define our own types since ToolUIPart doesn't exist in current AI SDK\ntype ToolUIState =\n | \"input-streaming\"\n | \"input-available\"\n | \"approval-requested\"\n | \"approval-responded\"\n | \"output-denied\"\n | \"output-available\"\n | \"output-error\";\n\ntype ToolApproval = {\n approved?: boolean;\n};\n\nexport interface ConfirmationProps {\n /**\n * Title text displayed at the top of the confirmation\n */\n title?: string;\n /**\n * Callback when user approves\n */\n onApprove?: () => void;\n /**\n * Callback when user rejects\n */\n onReject?: () => void;\n /**\n * Confirmation state\n */\n state: ToolUIState;\n /**\n * Approval data\n */\n approval?: ToolApproval;\n /**\n * Content to display (e.g., FileQueue)\n */\n children: React.ReactNode;\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * Confirmation component - manages approval workflow with internal action buttons\n */\nexport const Confirmation = React.memo<ConfirmationProps>(\n ({ title, onApprove, onReject, state, approval, children, className }) => {\n return (\n <AIConfirmation state={state} approval={approval} className={cn(className)}>\n {title && <ConfirmationTitle>{title}</ConfirmationTitle>}\n\n {children}\n\n <ConfirmationActions>\n {onReject && (\n <ConfirmationAction variant=\"outline\" onClick={onReject}>\n <Icon name=\"x\" size=\"sm\" className=\"mr-2\" />\n Reject All\n </ConfirmationAction>\n )}\n {onApprove && (\n <ConfirmationAction variant=\"default\" onClick={onApprove}>\n <Icon name=\"check\" size=\"sm\" className=\"mr-2\" />\n Approve All\n </ConfirmationAction>\n )}\n </ConfirmationActions>\n </AIConfirmation>\n );\n }\n);\n\nConfirmation.displayName = \"Confirmation\";\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ArrowDownIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\nimport { useCallback } from \"react\";\nimport { StickToBottom, useStickToBottomContext } from \"use-stick-to-bottom\";\n\nexport type ConversationProps = ComponentProps<typeof StickToBottom>;\n\nexport const Conversation = ({ className, ...props }: ConversationProps) => (\n <StickToBottom\n className={cn(\"relative flex-1 overflow-y-auto\", className)}\n initial=\"smooth\"\n resize=\"smooth\"\n role=\"log\"\n {...props}\n />\n);\n\nexport type ConversationContentProps = ComponentProps<\n typeof StickToBottom.Content\n>;\n\nexport const ConversationContent = ({\n className,\n ...props\n}: ConversationContentProps) => (\n <StickToBottom.Content className={cn(\"p-4\", className)} {...props} />\n);\n\nexport type ConversationEmptyStateProps = ComponentProps<\"div\"> & {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n};\n\nexport const ConversationEmptyState = ({\n className,\n title = \"No messages yet\",\n description = \"Start a conversation to see messages here\",\n icon,\n children,\n ...props\n}: ConversationEmptyStateProps) => (\n <div\n className={cn(\n \"flex size-full flex-col items-center justify-center gap-3 p-8 text-center\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n {icon && <div className=\"text-muted-foreground\">{icon}</div>}\n <div className=\"space-y-1\">\n <h3 className=\"font-medium text-sm\">{title}</h3>\n {description && (\n <p className=\"text-muted-foreground text-sm\">{description}</p>\n )}\n </div>\n </>\n )}\n </div>\n);\n\nexport type ConversationScrollButtonProps = ComponentProps<typeof Button>;\n\nexport const ConversationScrollButton = ({\n className,\n ...props\n}: ConversationScrollButtonProps) => {\n const { isAtBottom, scrollToBottom } = useStickToBottomContext();\n\n const handleScrollToBottom = useCallback(() => {\n scrollToBottom();\n }, [scrollToBottom]);\n\n return (\n !isAtBottom && (\n <Button\n className={cn(\n \"absolute bottom-4 left-[50%] translate-x-[-50%] rounded-full\",\n className\n )}\n onClick={handleScrollToBottom}\n size=\"icon\"\n type=\"button\"\n variant=\"outline\"\n {...props}\n >\n <ArrowDownIcon className=\"size-4\" />\n </Button>\n )\n );\n};\n","/**\n * Format Comment Date Utility\n * \n * Formats timestamps as relative time for comment display\n */\n\nimport { formatDistanceToNow } from 'date-fns'\n\n/**\n * Formats a timestamp as relative time\n * \n * @param date - Date object or Unix timestamp (number) to format\n * @returns Formatted string like \"5m\", \"2h\", \"3d\", \"2w\", \"3mo\", \"1y\"\n * \n * @example\n * ```ts\n * formatCommentDate(new Date(Date.now() - 5 * 60 * 1000)) // \"5m\"\n * formatCommentDate(Date.now() - 2 * 60 * 60 * 1000) // \"2h\"\n * ```\n */\nexport function formatCommentDate(date: Date | number): string {\n const now = Date.now()\n const timestamp = typeof date === 'number' ? date : date.getTime()\n const diffMs = now - timestamp\n\n const seconds = Math.floor(diffMs / 1000)\n const minutes = Math.floor(seconds / 60)\n const hours = Math.floor(minutes / 60)\n const days = Math.floor(hours / 24)\n const weeks = Math.floor(days / 7)\n const months = Math.floor(days / 30)\n const years = Math.floor(days / 365)\n\n if (seconds < 60) return 'just now'\n if (minutes < 60) return `${minutes}m`\n if (hours < 24) return `${hours}h`\n if (days < 7) return `${days}d`\n if (weeks < 4) return `${weeks}w`\n if (months < 12) return `${months}mo`\n return `${years}y`\n}\n","/**\n * CommentBox Block\n * \n * Floating inline panel that appears for viewing/adding comments\n * Integrates comment thread display and reply functionality\n * Block layer: uses primitives and AI elements only\n */\n\nimport React from 'react'\nimport type { JSONContent } from '@tiptap/react'\n\n/**\n * Extract plain text from Tiptap JSONContent\n */\nfunction extractTextFromJSONContent(content: JSONContent): string {\n if (!content) return ''\n \n let text = ''\n \n // Add text from current node\n if (content.text) {\n text += content.text\n }\n \n // Recursively extract text from child nodes\n if (content.content && Array.isArray(content.content)) {\n for (const child of content.content) {\n const childText = extractTextFromJSONContent(child)\n // Add space between block-level elements\n if (childText && text && content.type !== 'text') {\n text += ' '\n }\n text += childText\n }\n }\n \n return text\n}\nimport {\n Popover,\n PopoverContent,\n Card,\n Badge,\n} from '@/components/primitives'\nimport {\n Conversation,\n ConversationContent,\n} from '@/components/ai-elements/conversation'\nimport {\n Message,\n MessageAvatar,\n MessageContent,\n} from '@/components/ai-elements/message'\nimport {\n InputGroup,\n InputGroupTextarea,\n InputGroupButton,\n} from '@/components/primitives/InputGroup'\nimport { Send } from 'lucide-react'\nimport { formatCommentDate } from '@/utils/ai-editor'\nimport type { CommentBoxProps, Comment } from '@/types/ai-editor'\nimport { cn } from '@/lib/utils'\n\n/**\n * Internal component for rendering comment thread\n */\nconst CommentThreadDisplay = React.memo<{\n comments: Comment[]\n currentUserId: string\n onReply?: (commentId: string, content: string) => void\n}>(({ comments, currentUserId, onReply }) => {\n return (\n <Conversation className=\"flex-none\">\n <ConversationContent className=\"p-0 space-y-3\">\n {comments.map((comment) => (\n <Message\n key={comment.id}\n from={comment.userId === currentUserId ? 'user' : 'assistant'}\n className=\"!bg-transparent !mx-0 !px-0\"\n >\n <MessageAvatar\n src={comment.avatarSrc || '/default-avatar.png'}\n name={comment.userName}\n />\n <MessageContent variant=\"flat\" className=\"!bg-transparent !px-0 !py-0\">\n <div className={cn(\n \"flex items-center gap-2 text-xs text-muted-foreground\",\n comment.userId === currentUserId && \"flex-row-reverse\"\n )}>\n <span className=\"font-medium text-foreground\">\n {comment.userName}\n </span>\n <span>{formatCommentDate(comment.timestamp)}</span>\n {comment.isEdited && <span className=\"italic\">(edited)</span>}\n </div>\n <div className=\"text-sm\">\n {typeof comment.contentRich === 'string'\n ? comment.contentRich\n : extractTextFromJSONContent(comment.contentRich)}\n </div>\n </MessageContent>\n </Message>\n ))}\n\n <InputGroup className=\"w-full\">\n <InputGroupTextarea\n placeholder=\"Reply...\"\n className=\"min-h-[40px] max-h-[200px] py-2 resize-none min-w-0\"\n onKeyDown={(e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n const value = e.currentTarget.value\n if (value.trim() && comments.length > 0 && onReply) {\n onReply(comments[0].id, value)\n e.currentTarget.value = ''\n }\n }\n }}\n />\n <InputGroupButton\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={(e) => {\n const textarea = e.currentTarget.parentElement?.querySelector('textarea')\n if (textarea) {\n const value = textarea.value\n if (value.trim() && comments.length > 0 && onReply) {\n onReply(comments[0].id, value)\n textarea.value = ''\n }\n }\n }}\n >\n <Send className=\"h-4 w-4\" />\n </InputGroupButton>\n </InputGroup>\n </ConversationContent>\n </Conversation>\n )\n})\n\nCommentThreadDisplay.displayName = 'CommentThreadDisplay'\n\nexport const CommentBox = React.memo<CommentBoxProps>(\n ({\n annotation,\n position,\n visible,\n currentUserId,\n onClose,\n onCommentAdd,\n onCommentReply,\n }) => {\n if (!visible) return null\n\n const handleInputSubmit = (textareaElement: HTMLTextAreaElement) => {\n const value = textareaElement.value\n if (!value.trim()) return\n\n // Convert string to JSONContent format\n const content = {\n type: 'doc',\n content: [\n {\n type: 'paragraph',\n content: [{ type: 'text', text: value }],\n },\n ],\n }\n\n if (!annotation) {\n // New comment\n onCommentAdd?.(content)\n onClose?.()\n } else {\n // Reply to existing annotation\n onCommentReply?.(annotation.id, content)\n textareaElement.value = ''\n }\n }\n\n const renderContent = () => {\n // New comment (no annotation)\n if (!annotation) {\n return (\n <div className=\"p-4\">\n <InputGroup className=\"w-full\">\n <InputGroupTextarea\n placeholder=\"Add a comment...\"\n autoFocus\n className=\"min-h-[40px] max-h-[200px] py-2 resize-none min-w-0\"\n onKeyDown={(e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleInputSubmit(e.currentTarget)\n }\n }}\n />\n <InputGroupButton\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={(e) => {\n const textarea = e.currentTarget.parentElement?.querySelector('textarea')\n if (textarea) {\n handleInputSubmit(textarea)\n }\n }}\n >\n <Send className=\"h-4 w-4\" />\n </InputGroupButton>\n </InputGroup>\n </div>\n )\n }\n\n // Existing comment annotation\n if (annotation.type === 'comment') {\n return (\n <div className=\"p-4\">\n <CommentThreadDisplay\n comments={annotation.data.thread}\n currentUserId={currentUserId}\n onReply={(_, content) => {\n // Convert string to JSONContent format\n const jsonContent = {\n type: 'doc',\n content: [\n {\n type: 'paragraph',\n content: [{ type: 'text', text: content }],\n },\n ],\n }\n onCommentReply?.(annotation.id, jsonContent)\n }}\n />\n </div>\n )\n }\n\n // Suggestion annotation (no diff display, just reason and comments)\n if (annotation.type === 'suggestion') {\n const { action } = annotation.data\n const badgeConfig = {\n insert: { label: 'Added', className: 'bg-green-500' },\n delete: { label: 'Removed', className: 'bg-red-500' },\n modify: { label: 'Modified', className: 'bg-yellow-500' },\n }\n const badge = badgeConfig[action]\n\n return (\n <div className=\"flex flex-col gap-1 p-1\">\n <div className=\"flex items-center gap-2\">\n {badge && (\n <Badge variant=\"default\" className={badge.className}>\n {badge.label}\n </Badge>\n )}\n {annotation.data.reason && (\n <span className=\"text-sm text-muted-foreground\">\n {annotation.data.reason}\n </span>\n )}\n </div>\n {annotation.data.thread.length > 0 && (\n <>\n <div className=\"h-px bg-border\" />\n <CommentThreadDisplay\n comments={annotation.data.thread}\n currentUserId={currentUserId}\n onReply={(_, content) => {\n // Convert string to JSONContent format\n const jsonContent = {\n type: 'doc',\n content: [\n {\n type: 'paragraph',\n content: [{ type: 'text', text: content }],\n },\n ],\n }\n onCommentReply?.(annotation.id, jsonContent)\n }}\n />\n </>\n )}\n </div>\n )\n }\n\n // Block addition annotation\n if (annotation.type === 'block-addition') {\n return (\n <div className=\"flex flex-col gap-1 p-1\">\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"default\" className=\"bg-green-500\">\n Added\n </Badge>\n {annotation.data.reason && (\n <span className=\"text-sm text-muted-foreground\">\n {annotation.data.reason}\n </span>\n )}\n </div>\n {annotation.data.thread.length > 0 && (\n <>\n <div className=\"h-px bg-border\" />\n <CommentThreadDisplay\n comments={annotation.data.thread}\n currentUserId={currentUserId}\n onReply={(_, content) => {\n // Convert string to JSONContent format\n const jsonContent = {\n type: 'doc',\n content: [\n {\n type: 'paragraph',\n content: [{ type: 'text', text: content }],\n },\n ],\n }\n onCommentReply?.(annotation.id, jsonContent)\n }}\n />\n </>\n )}\n </div>\n )\n }\n\n return null\n }\n\n return (\n <Popover open={visible} modal={false}>\n <PopoverContent\n className=\"w-[400px] p-0\"\n style={{\n position: 'absolute',\n left: position.x,\n top: position.y,\n }}\n side=\"right\"\n align=\"start\"\n onEscapeKeyDown={onClose}\n onPointerDownOutside={(e) => {\n // Only close if clicking outside the popover AND outside any annotation\n const target = e.target as HTMLElement\n const isAnnotation = target.closest('[data-comment-id], [data-suggestion-id], [data-addition-id]')\n if (!isAnnotation) {\n onClose?.()\n }\n }}\n >\n <Card className=\"border-0 shadow-none p-0\">{renderContent()}</Card>\n </PopoverContent>\n </Popover>\n )\n }\n)\n\nCommentBox.displayName = 'CommentBox'\n","/**\n * CommentMark Tiptap Extension\n * \n * Renders comment annotations as inline marks with hover and active states\n */\n\nimport { Mark, mergeAttributes } from '@tiptap/core'\n\nexport interface CommentMarkAttributes {\n commentId: string\n isActive?: boolean\n isHover?: boolean\n}\n\nexport const CommentMark = Mark.create({\n name: 'comment',\n\n addAttributes() {\n return {\n commentId: {\n default: null,\n parseHTML: (element) => element.getAttribute('data-comment-id'),\n renderHTML: (attributes) => {\n if (!attributes.commentId) {\n return {}\n }\n return {\n 'data-comment-id': attributes.commentId,\n }\n },\n },\n isActive: {\n default: false,\n parseHTML: (element) => element.getAttribute('data-active') === 'true',\n renderHTML: (attributes) => {\n if (!attributes.isActive) {\n return {}\n }\n return {\n 'data-active': 'true',\n }\n },\n },\n isHover: {\n default: false,\n parseHTML: (element) => element.getAttribute('data-hover') === 'true',\n renderHTML: (attributes) => {\n if (!attributes.isHover) {\n return {}\n }\n return {\n 'data-hover': 'true',\n }\n },\n },\n }\n },\n\n parseHTML() {\n return [\n {\n tag: 'mark[data-annotation-type=\"comment\"]',\n },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'mark',\n mergeAttributes(HTMLAttributes, {\n 'data-annotation-type': 'comment',\n }),\n 0,\n ]\n },\n})\n","/**\n * PendingCommentMark Tiptap Extension\n * \n * Renders pending comment selection (before comment is added) with yellow highlight\n * This is separate from CommentMark to avoid conflicts with applyAnnotationsToEditor\n */\n\nimport { Mark, mergeAttributes } from '@tiptap/core'\n\nexport const PendingCommentMark = Mark.create({\n name: 'pendingComment',\n\n addAttributes() {\n return {\n pending: {\n default: true,\n },\n }\n },\n\n parseHTML() {\n return [\n {\n tag: 'mark[data-pending-comment=\"true\"]',\n },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'mark',\n mergeAttributes(HTMLAttributes, {\n 'data-pending-comment': 'true',\n }),\n 0,\n ]\n },\n})\n","/**\n * SuggestionMark Tiptap Extensions\n * \n * Renders suggestion annotations as inline marks with different styles\n * for insert, delete, and modify actions\n */\n\nimport { Mark, mergeAttributes } from '@tiptap/core'\n\nexport interface SuggestionMarkAttributes {\n suggestionId: string\n action: 'insert' | 'delete' | 'modify'\n isActive?: boolean\n isHover?: boolean\n}\n\n/**\n * SuggestionInsertMark - Green highlight for insertions\n */\nexport const SuggestionInsertMark = Mark.create({\n name: 'suggestionInsert',\n\n addAttributes() {\n return {\n suggestionId: {\n default: null,\n parseHTML: (element) => element.getAttribute('data-suggestion-id'),\n renderHTML: (attributes) => {\n if (!attributes.suggestionId) {\n return {}\n }\n return {\n 'data-suggestion-id': attributes.suggestionId,\n }\n },\n },\n isActive: {\n default: false,\n parseHTML: (element) => element.getAttribute('data-active') === 'true',\n renderHTML: (attributes) => {\n if (!attributes.isActive) {\n return {}\n }\n return {\n 'data-active': 'true',\n }\n },\n },\n isHover: {\n default: false,\n parseHTML: (element) => element.getAttribute('data-hover') === 'true',\n renderHTML: (attributes) => {\n if (!attributes.isHover) {\n return {}\n }\n return {\n 'data-hover': 'true',\n }\n },\n },\n }\n },\n\n parseHTML() {\n return [\n {\n tag: 'ins[data-annotation-type=\"suggestion-insert\"]',\n },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'ins',\n mergeAttributes(HTMLAttributes, {\n class: 'annotation-suggestion-insert',\n 'data-annotation-type': 'suggestion-insert',\n }),\n 0,\n ]\n },\n})\n\n/**\n * SuggestionDeleteMark - Red strikethrough for deletions\n */\nexport const SuggestionDeleteMark = Mark.create({\n name: 'suggestionDelete',\n\n addAttributes() {\n return {\n suggestionId: {\n default: null,\n parseHTML: (element) => element.getAttribute('data-suggestion-id'),\n renderHTML: (attributes) => {\n if (!attributes.suggestionId) {\n return {}\n }\n return {\n 'data-suggestion-id': attributes.suggestionId,\n }\n },\n },\n isActive: {\n default: false,\n parseHTML: (element) => element.getAttribute('data-active') === 'true',\n renderHTML: (attributes) => {\n if (!attributes.isActive) {\n return {}\n }\n return {\n 'data-active': 'true',\n }\n },\n },\n isHover: {\n default: false,\n parseHTML: (element) => element.getAttribute('data-hover') === 'true',\n renderHTML: (attributes) => {\n if (!attributes.isHover) {\n return {}\n }\n return {\n 'data-hover': 'true',\n }\n },\n },\n }\n },\n\n parseHTML() {\n return [\n {\n tag: 'del[data-annotation-type=\"suggestion-delete\"]',\n },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'del',\n mergeAttributes(HTMLAttributes, {\n class: 'annotation-suggestion-delete',\n 'data-annotation-type': 'suggestion-delete',\n }),\n 0,\n ]\n },\n})\n\n/**\n * SuggestionModifyMark - Combination of delete and insert\n */\nexport const SuggestionModifyMark = Mark.create({\n name: 'suggestionModify',\n\n addAttributes() {\n return {\n suggestionId: {\n default: null,\n parseHTML: (element) => element.getAttribute('data-suggestion-id'),\n renderHTML: (attributes) => {\n if (!attributes.suggestionId) {\n return {}\n }\n return {\n 'data-suggestion-id': attributes.suggestionId,\n }\n },\n },\n isActive: {\n default: false,\n parseHTML: (element) => element.getAttribute('data-active') === 'true',\n renderHTML: (attributes) => {\n if (!attributes.isActive) {\n return {}\n }\n return {\n 'data-active': 'true',\n }\n },\n },\n isHover: {\n default: false,\n parseHTML: (element) => element.getAttribute('data-hover') === 'true',\n renderHTML: (attributes) => {\n if (!attributes.isHover) {\n return {}\n }\n return {\n 'data-hover': 'true',\n }\n },\n },\n }\n },\n\n parseHTML() {\n return [\n {\n tag: 'span[data-annotation-type=\"suggestion-modify\"]',\n },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n mergeAttributes(HTMLAttributes, {\n class: 'annotation-suggestion-modify',\n 'data-annotation-type': 'suggestion-modify',\n }),\n 0,\n ]\n },\n})\n","/**\n * BlockAdditionNode Tiptap Extension\n * \n * Renders block-level addition annotations with green highlight and badge\n */\n\nimport { Node, mergeAttributes } from '@tiptap/core'\n\nexport interface BlockAdditionNodeAttributes {\n additionId: string\n reason?: string\n isActive?: boolean\n}\n\nexport const BlockAdditionNode = Node.create({\n name: 'blockAddition',\n\n group: 'block',\n\n content: 'block+',\n\n addAttributes() {\n return {\n additionId: {\n default: null,\n parseHTML: (element) => element.getAttribute('data-addition-id'),\n renderHTML: (attributes) => {\n if (!attributes.additionId) {\n return {}\n }\n return {\n 'data-addition-id': attributes.additionId,\n }\n },\n },\n reason: {\n default: null,\n parseHTML: (element) => element.getAttribute('data-reason'),\n renderHTML: (attributes) => {\n if (!attributes.reason) {\n return {}\n }\n return {\n 'data-reason': attributes.reason,\n }\n },\n },\n isActive: {\n default: false,\n parseHTML: (element) => element.getAttribute('data-active') === 'true',\n renderHTML: (attributes) => {\n if (!attributes.isActive) {\n return {}\n }\n return {\n 'data-active': 'true',\n }\n },\n },\n }\n },\n\n parseHTML() {\n return [\n {\n tag: 'div[data-annotation-type=\"block-addition\"]',\n },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'div',\n mergeAttributes(HTMLAttributes, {\n class: 'annotation-block-addition',\n 'data-annotation-type': 'block-addition',\n }),\n 0,\n ]\n },\n})\n","/**\n * Editor Annotation Utilities\n * \n * Functions for applying annotations to Tiptap editor\n */\n\nimport type { Editor } from '@tiptap/core'\nimport type { Annotation } from '@/types/ai-editor'\n\n/**\n * Apply annotations to the editor by setting marks and nodes\n * \n * @param editor - Tiptap editor instance\n * @param annotations - Array of annotations to apply\n * @param selectedAnnotationId - ID of currently selected annotation\n * @param hoveredAnnotationId - ID of currently hovered annotation\n */\nexport function applyAnnotationsToEditor(\n editor: Editor | null,\n annotations: Annotation[],\n selectedAnnotationId?: string,\n hoveredAnnotationId?: string | null\n): void {\n if (!editor) return\n\n // Clear existing annotation marks first\n editor.chain().focus().unsetMark('comment').unsetMark('suggestionInsert').unsetMark('suggestionDelete').unsetMark('suggestionModify').run()\n\n // Apply each annotation\n annotations.forEach((annotation) => {\n const { range, id } = annotation\n const isActive = id === selectedAnnotationId\n const isHover = id === hoveredAnnotationId\n\n try {\n if (annotation.type === 'comment') {\n // Apply comment mark\n editor\n .chain()\n .focus()\n .setTextSelection({ from: range.from, to: range.to })\n .setMark('comment', {\n commentId: id,\n isActive,\n isHover,\n })\n .run()\n } else if (annotation.type === 'suggestion') {\n const { action } = annotation.data\n\n if (action === 'insert') {\n // Apply insert mark\n editor\n .chain()\n .focus()\n .setTextSelection({ from: range.from, to: range.to })\n .setMark('suggestionInsert', {\n suggestionId: id,\n isActive,\n isHover,\n })\n .run()\n } else if (action === 'delete') {\n // Apply delete mark\n editor\n .chain()\n .focus()\n .setTextSelection({ from: range.from, to: range.to })\n .setMark('suggestionDelete', {\n suggestionId: id,\n isActive,\n isHover,\n })\n .run()\n } else if (action === 'modify') {\n // Apply modify mark\n editor\n .chain()\n .focus()\n .setTextSelection({ from: range.from, to: range.to })\n .setMark('suggestionModify', {\n suggestionId: id,\n isActive,\n isHover,\n })\n .run()\n }\n }\n // Note: Block additions are handled differently - they're part of the document structure\n // and should be in the content JSONContent, not applied as marks\n } catch (error) {\n console.error('Error applying annotation:', annotation, error)\n }\n })\n\n // Reset selection to end of document\n editor.commands.blur()\n}\n\n/**\n * Calculate position for CommentBox near an annotation or selection\n * \n * @param editor - Tiptap editor instance\n * @param from - Starting position\n * @returns Position coordinates { x, y }\n */\nexport function calculateCommentBoxPosition(\n editor: Editor,\n from: number\n): { x: number; y: number } {\n try {\n const coords = editor.view.coordsAtPos(from)\n \n return {\n x: coords.right + 10, // 10px to the right of selection\n y: coords.top,\n }\n } catch (error) {\n console.error('Error calculating comment box position:', error)\n return { x: 0, y: 0 }\n }\n}\n","/**\n * DocumentEditor Block\n * \n * Tiptap-based read-only editor with annotation overlays\n * Block layer: uses primitives and Tiptap extensions only\n */\n\nimport React, { useEffect } from 'react'\nimport './DocumentEditor.css'\nimport { useEditor, EditorContent } from '@tiptap/react'\nimport StarterKit from '@tiptap/starter-kit'\nimport Highlight from '@tiptap/extension-highlight'\nimport { Markdown } from '@tiptap/markdown'\nimport { cn } from '@/lib/utils'\nimport {\n CommentMark,\n PendingCommentMark,\n SuggestionInsertMark,\n SuggestionDeleteMark,\n SuggestionModifyMark,\n BlockAdditionNode,\n} from '@/extensions/tiptap'\nimport { applyAnnotationsToEditor } from '@/utils/editor-annotations'\nimport type { DocumentEditorProps } from '@/types/ai-editor'\n\nexport const DocumentEditor = React.memo<DocumentEditorProps>(\n ({\n content,\n format = 'json',\n annotations,\n selectedAnnotationId,\n hoveredAnnotationId,\n pendingCommentRange,\n onTextSelect,\n onAnnotationClick,\n onAnnotationHover,\n readOnly = true,\n className,\n }) => {\n const editor = useEditor({\n extensions: [\n StarterKit,\n Highlight,\n Markdown,\n CommentMark,\n PendingCommentMark,\n SuggestionInsertMark,\n SuggestionDeleteMark,\n SuggestionModifyMark,\n BlockAdditionNode,\n ],\n content,\n // Tell Tiptap what format the initial content is in\n contentType: format === 'markdown' ? 'markdown' : 'json',\n editable: !readOnly,\n editorProps: {\n attributes: {\n class: cn(\n 'prose max-w-none focus:outline-none',\n 'min-h-[200px] p-4',\n className\n ),\n },\n },\n })\n\n // Update content when it changes\n useEffect(() => {\n if (editor && content) {\n // Handle markdown format\n if (format === 'markdown' && typeof content === 'string') {\n // Use contentType option to tell Tiptap to parse as markdown\n editor.commands.setContent(content, { contentType: 'markdown' })\n } \n // Handle JSON format\n else {\n const currentContent = editor.getJSON()\n if (JSON.stringify(currentContent) !== JSON.stringify(content)) {\n editor.commands.setContent(content)\n }\n }\n }\n }, [editor, content, format])\n\n // Apply annotations when they change\n useEffect(() => {\n if (editor) {\n applyAnnotationsToEditor(editor, annotations, selectedAnnotationId, hoveredAnnotationId)\n }\n }, [editor, annotations, selectedAnnotationId, hoveredAnnotationId])\n\n // Apply pending comment highlight (yellow) when user selects text\n useEffect(() => {\n if (!editor) return\n\n if (pendingCommentRange) {\n const { from, to } = pendingCommentRange\n \n // Apply pending comment mark to show yellow highlight\n // Use transaction to avoid triggering selection events\n const { state, view } = editor\n const tr = state.tr\n tr.addMark(from, to, state.schema.marks.pendingComment.create({ pending: true }))\n view.dispatch(tr)\n } else {\n // Clear all pending comment marks\n const { state, view } = editor\n const tr = state.tr\n \n state.doc.descendants((node, pos) => {\n node.marks.forEach((mark) => {\n if (mark.type.name === 'pendingComment') {\n tr.removeMark(pos, pos + node.nodeSize, mark.type)\n }\n })\n })\n \n if (tr.docChanged) {\n view.dispatch(tr)\n }\n }\n }, [editor, pendingCommentRange])\n\n // Handle text selection events - trigger on mouseup (selection complete)\n useEffect(() => {\n if (!editor || !onTextSelect) return\n\n const handleMouseUp = (event: MouseEvent) => {\n // Check if the click was on an existing annotation\n // If so, skip text selection handling (annotation click handler will handle it)\n const target = event.target as HTMLElement\n const annotationEl = target.closest(\n '[data-comment-id], [data-suggestion-id], [data-addition-id]'\n )\n \n if (annotationEl) {\n // This is a click on an existing annotation, not a text selection\n // The annotation click handler will handle this\n return\n }\n \n // Small delay to ensure selection is finalized\n setTimeout(() => {\n let { from, to, empty } = editor.state.selection\n if (!empty) {\n let text = editor.state.doc.textBetween(from, to)\n \n // Trim leading whitespace and adjust range\n const leadingWhitespace = text.match(/^\\s+/)\n if (leadingWhitespace) {\n from += leadingWhitespace[0].length\n text = text.trimStart()\n }\n \n // Trim trailing whitespace and adjust range\n const trailingWhitespace = text.match(/\\s+$/)\n if (trailingWhitespace) {\n to -= trailingWhitespace[0].length\n text = text.trimEnd()\n }\n \n // Skip if only whitespace was selected\n if (!text.trim()) return\n \n // Log selected text for API usage\n console.log('Selected text:', text)\n console.log('Selection range:', { from, to })\n \n // Calculate position for CommentBox based on selection\n const selection = window.getSelection()\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0)\n const rect = range.getBoundingClientRect()\n const position = {\n x: rect.left,\n y: rect.bottom + 8, // 8px below selection\n }\n \n // Clear the browser selection\n selection.removeAllRanges()\n \n onTextSelect({ from, to }, text, position)\n } else {\n onTextSelect({ from, to }, text)\n }\n }\n }, 10)\n }\n\n const editorElement = editor.view.dom\n editorElement.addEventListener('mouseup', handleMouseUp)\n \n return () => {\n editorElement.removeEventListener('mouseup', handleMouseUp)\n }\n }, [editor, onTextSelect])\n\n // Handle annotation click events\n useEffect(() => {\n if (!editor || !onAnnotationClick) return\n\n const handleClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n const annotationEl = target.closest(\n '[data-comment-id], [data-suggestion-id], [data-addition-id]'\n )\n \n if (annotationEl) {\n const id =\n annotationEl.getAttribute('data-comment-id') ||\n annotationEl.getAttribute('data-suggestion-id') ||\n annotationEl.getAttribute('data-addition-id')\n \n if (id) {\n // Calculate position based on the clicked element\n // Position below the annotation, similar to Google Docs\n const rect = annotationEl.getBoundingClientRect()\n const position = {\n x: rect.left, // Align with left edge of annotation\n y: rect.bottom + 8, // 8px below the annotation\n }\n onAnnotationClick(id, position)\n }\n }\n }\n\n const editorElement = editor.view.dom\n editorElement.addEventListener('click', handleClick)\n \n return () => {\n editorElement.removeEventListener('click', handleClick)\n }\n }, [editor, onAnnotationClick])\n\n // Handle annotation hover events\n useEffect(() => {\n if (!editor || !onAnnotationHover) return\n\n const handleMouseOver = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n const annotationEl = target.closest(\n '[data-comment-id], [data-suggestion-id], [data-addition-id]'\n )\n \n if (annotationEl) {\n const id =\n annotationEl.getAttribute('data-comment-id') ||\n annotationEl.getAttribute('data-suggestion-id') ||\n annotationEl.getAttribute('data-addition-id')\n \n if (id) {\n onAnnotationHover(id)\n }\n } else {\n onAnnotationHover(null)\n }\n }\n\n const editorElement = editor.view.dom\n editorElement.addEventListener('mouseover', handleMouseOver)\n \n return () => {\n editorElement.removeEventListener('mouseover', handleMouseOver)\n }\n }, [editor, onAnnotationHover])\n\n if (!editor) {\n return null\n }\n\n return (\n <div className={cn('document-editor-wrapper', className)}>\n <EditorContent editor={editor} />\n </div>\n )\n }\n)\n\nDocumentEditor.displayName = 'DocumentEditor'\n","import * as React from \"react\"\nimport { Button } from \"@/components/primitives/Button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/primitives/DropdownMenu\"\nimport { Icon } from \"@/components/primitives/Icon\"\n\n/**\n * ModeToggle Composite\n *\n * A theme mode switcher component that allows users to toggle between light, dark, and system themes.\n * Composes Button and DropdownMenu primitives.\n *\n * @example\n * ```tsx\n * <ModeToggle />\n * ```\n */\n\nexport interface ModeToggleProps {\n /**\n * Additional CSS classes\n */\n className?: string\n}\n\n/**\n * ModeToggle component\n *\n * Provides a dropdown menu to switch between light, dark, and system theme modes.\n * Uses local storage to persist the user's theme preference.\n */\nexport const ModeToggle = React.memo<ModeToggleProps>(({ className }) => {\n const [theme, setThemeState] = React.useState<\"light\" | \"dark\" | \"system\">(\"system\")\n\n React.useEffect(() => {\n // Load theme from localStorage on mount\n const stored = localStorage.getItem(\"theme\") as \"light\" | \"dark\" | \"system\" | null\n if (stored) {\n setThemeState(stored)\n }\n }, [])\n\n React.useEffect(() => {\n // Apply theme to document\n const root = window.document.documentElement\n root.classList.remove(\"light\", \"dark\")\n\n if (theme === \"system\") {\n const systemTheme = window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\"\n root.classList.add(systemTheme)\n } else {\n root.classList.add(theme)\n }\n }, [theme])\n\n const setTheme = (newTheme: \"light\" | \"dark\" | \"system\") => {\n localStorage.setItem(\"theme\", newTheme)\n setThemeState(newTheme)\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className={className}>\n <Icon\n name=\"sun\"\n className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\"\n />\n <Icon\n name=\"moon\"\n className=\"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\"\n />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme(\"light\")}>\n <Icon name=\"sun\" className=\"mr-2 h-4 w-4\" />\n <span>Light</span>\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(\"dark\")}>\n <Icon name=\"moon\" className=\"mr-2 h-4 w-4\" />\n <span>Dark</span>\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(\"system\")}>\n <Icon name=\"laptop\" className=\"mr-2 h-4 w-4\" />\n <span>System</span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n})\n\nModeToggle.displayName = \"ModeToggle\"\n","import * as React from \"react\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/primitives/Select\"\n\n/**\n * ThemeSelector Composite\n *\n * A theme variant selector component that allows users to choose from multiple theme options.\n * Composes Select primitive.\n *\n * @example\n * ```tsx\n * const themes = [\n * { label: \"Default\", value: \"default\" },\n * { label: \"Ocean\", value: \"ocean\" },\n * { label: \"Forest\", value: \"forest\" },\n * ]\n * <ThemeSelector themes={themes} value=\"default\" onValueChange={setTheme} />\n * ```\n */\n\nexport interface Theme {\n label: string\n value: string\n}\n\nexport interface ThemeSelectorProps {\n /**\n * Available theme options\n */\n themes: Theme[]\n /**\n * Currently selected theme value\n */\n value?: string\n /**\n * Callback when theme selection changes\n */\n onValueChange?: (value: string) => void\n /**\n * Placeholder text when no theme is selected\n */\n placeholder?: string\n /**\n * Additional CSS classes\n */\n className?: string\n}\n\n/**\n * ThemeSelector component\n *\n * Provides a select dropdown to choose from multiple theme variants.\n */\nexport const ThemeSelector = React.memo<ThemeSelectorProps>(\n ({ themes, value, onValueChange, placeholder = \"Select theme\", className }) => {\n return (\n <Select value={value} onValueChange={onValueChange}>\n <SelectTrigger className={className}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {themes.map((theme) => (\n <SelectItem key={theme.value} value={theme.value}>\n {theme.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n }\n)\n\nThemeSelector.displayName = \"ThemeSelector\"\n","import * as React from \"react\"\nimport { Button } from \"@/components/primitives/Button\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/primitives/Select\"\nimport { Label } from \"@/components/primitives/Label\"\nimport type { Table } from \"@tanstack/react-table\"\n\n/**\n * TablePagination Composite\n *\n * Reusable pagination controls for tables with TanStack Table integration.\n * Composes Button, Select, and Label primitives.\n *\n * @example\n * ```tsx\n * <TablePagination table={table} />\n * ```\n */\n\nexport interface TablePaginationProps {\n /**\n * TanStack Table instance\n */\n table: Table<any>\n /**\n * Available page size options\n */\n pageSizeOptions?: number[]\n /**\n * Additional CSS classes\n */\n className?: string\n}\n\n/**\n * TablePagination component\n *\n * Provides pagination controls including page size selection and navigation buttons.\n */\nexport const TablePagination = React.memo<TablePaginationProps>(\n ({ table, pageSizeOptions = [10, 20, 30, 40, 50], className }) => {\n return (\n <div className={`flex items-center justify-between px-4 py-2 ${className || \"\"}`}>\n <div className=\"text-sm text-muted-foreground\">\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n {table.getFilteredRowModel().rows.length} row(s) selected\n </div>\n <div className=\"flex items-center gap-8\">\n <div className=\"flex items-center gap-2\">\n <Label htmlFor=\"rows-per-page\" className=\"text-sm\">\n Rows per page\n </Label>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => table.setPageSize(Number(value))}\n >\n <SelectTrigger id=\"rows-per-page\" className=\"h-8 w-[70px]\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {pageSizeOptions.map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n First\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n Last\n </Button>\n </div>\n </div>\n </div>\n </div>\n )\n }\n)\n\nTablePagination.displayName = \"TablePagination\"\n","import * as React from \"react\"\nimport { Input } from \"@/components/primitives/Input\"\nimport { Button } from \"@/components/primitives/Button\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"@/components/primitives/DropdownMenu\"\nimport { Icon } from \"@/components/primitives/Icon\"\nimport type { Table } from \"@tanstack/react-table\"\n\nexport interface TableToolbarProps {\n table: Table<any>\n searchPlaceholder?: string\n searchColumn?: string\n actions?: React.ReactNode\n className?: string\n}\n\nexport const TableToolbar = React.memo<TableToolbarProps>(\n ({ table, searchPlaceholder = \"Search...\", searchColumn, actions, className }) => {\n return (\n <div className={`flex items-center justify-between px-4 py-2 ${className || \"\"}`}>\n <div className=\"flex flex-1 items-center gap-2\">\n <Input\n placeholder={searchPlaceholder}\n value={(searchColumn && (table.getColumn(searchColumn)?.getFilterValue() as string)) ?? \"\"}\n onChange={(e) => searchColumn && table.getColumn(searchColumn)?.setFilterValue(e.target.value)}\n className=\"h-8 w-[150px] lg:w-[250px]\"\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"ml-auto\">\n <Icon name=\"settings-2\" className=\"mr-2 h-4 w-4\" />\n Columns\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n {actions}\n </div>\n </div>\n )\n }\n)\n\nTableToolbar.displayName = \"TableToolbar\"\n","import * as React from \"react\"\nimport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardAction,\n CardFooter,\n} from \"@/components/primitives/Card\"\nimport { Badge } from \"@/components/primitives/Badge\"\nimport { Icon } from \"@/components/primitives/Icon\"\n\nexport interface StatsCardProps {\n /**\n * Card title (e.g., \"Total Revenue\")\n */\n title: string\n /**\n * Main value to display (e.g., \"$1,250.00\")\n */\n value: string | number\n /**\n * Trend indicator with direction and percentage\n */\n trend?: {\n direction: \"up\" | \"down\"\n value: string\n }\n /**\n * Footer content with primary message and secondary description\n */\n footer?: {\n message: string\n description: string\n }\n /**\n * Additional CSS classes\n */\n className?: string\n}\n\nexport const StatsCard = React.memo<StatsCardProps>(\n ({ title, value, trend, footer, className }) => {\n return (\n <Card className={className}>\n <CardHeader>\n <CardDescription>{title}</CardDescription>\n <CardTitle className=\"text-2xl font-semibold tabular-nums @[250px]/card:text-3xl\">\n {value}\n </CardTitle>\n {trend && (\n <CardAction>\n <Badge variant=\"outline\">\n <Icon\n name={trend.direction === \"up\" ? \"trending-up\" : \"trending-down\"}\n />\n {trend.value}\n </Badge>\n </CardAction>\n )}\n </CardHeader>\n {footer && (\n <CardFooter className=\"flex-col items-start gap-1.5 text-sm\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span>{footer.message}</span>\n {trend && (\n <Icon\n name={trend.direction === \"up\" ? \"trending-up\" : \"trending-down\"}\n className=\"size-4\"\n />\n )}\n </div>\n <div className=\"text-muted-foreground\">{footer.description}</div>\n </CardFooter>\n )}\n </Card>\n )\n }\n)\n\nStatsCard.displayName = \"StatsCard\"\n","import * as React from \"react\"\nimport {\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n} from \"@/components/primitives/Sidebar\"\nimport { Icon } from \"@/components/primitives/Icon\"\n\nexport interface NavigationItem {\n title: string\n url: string\n icon?: string\n isActive?: boolean\n}\n\nexport interface NavigationListProps {\n items: NavigationItem[]\n onItemClick?: (item: NavigationItem) => void\n className?: string\n}\n\nexport const NavigationList = React.memo<NavigationListProps>(\n ({ items, onItemClick, className }) => {\n return (\n <SidebarMenu className={className}>\n {items.map((item) => (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton\n tooltip={item.title}\n isActive={item.isActive}\n onClick={() => onItemClick?.(item)}\n asChild\n >\n <a href={item.url}>\n {item.icon && <Icon name={item.icon} />}\n <span>{item.title}</span>\n </a>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n )\n }\n)\n\nNavigationList.displayName = \"NavigationList\"\n","import * as React from \"react\"\nimport {\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n} from \"@/components/primitives/Sidebar\"\nimport { Avatar, AvatarImage, AvatarFallback } from \"@/components/primitives/Avatar\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/primitives/DropdownMenu\"\n\nexport interface NavUserProps {\n user: {\n name: string\n email: string\n avatar?: string\n }\n actions?: { label: string; onClick: () => void }[]\n className?: string\n}\n\nexport const NavUser = React.memo<NavUserProps>(({ user, actions, className }) => {\n return (\n <SidebarMenu className={className}>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">{user.name[0]}</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name}</span>\n <span className=\"truncate text-xs text-muted-foreground\">{user.email}</span>\n </div>\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n {actions && actions.length > 0 && (\n <DropdownMenuContent align=\"end\" className=\"w-56\">\n {actions.map((action) => (\n <DropdownMenuItem key={action.label} onClick={action.onClick}>\n {action.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n )}\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n )\n})\n\nNavUser.displayName = \"NavUser\"\n","import * as React from \"react\"\nimport { SidebarTrigger } from \"@/components/primitives/Sidebar\"\nimport { Separator } from \"@/components/primitives/Separator\"\n\nexport interface AppHeaderProps {\n title?: string\n actions?: React.ReactNode\n className?: string\n}\n\nexport const AppHeader = React.memo<AppHeaderProps>(({ title, actions, className }) => {\n return (\n <header className={`flex h-14 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-14 ${className || \"\"}`}>\n <div className=\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\">\n <SidebarTrigger className=\"-ml-1\" />\n <Separator orientation=\"vertical\" className=\"mx-2 data-[orientation=vertical]:h-4\" />\n {title && <h1 className=\"text-base font-medium\">{title}</h1>}\n <div className=\"ml-auto flex items-center gap-2\">{actions}</div>\n </div>\n </header>\n )\n})\n\nAppHeader.displayName = \"AppHeader\"\n","import * as React from \"react\"\nimport { ChartContainer, ChartConfig } from \"@/components/primitives/Chart\"\nimport { Card, CardHeader, CardTitle, CardDescription, CardContent } from \"@/components/primitives/Card\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/primitives/Select\"\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/primitives/ToggleGroup\"\n\nexport interface InteractiveChartProps {\n title: string\n description?: string\n data: any[]\n config: ChartConfig\n timeRanges?: { label: string; value: string }[]\n defaultTimeRange?: string\n children: React.ReactNode\n className?: string\n}\n\nexport const InteractiveChart = React.memo<InteractiveChartProps>(\n ({ title, description, data, config, timeRanges, defaultTimeRange, children, className }) => {\n const [timeRange, setTimeRange] = React.useState(defaultTimeRange || timeRanges?.[0]?.value)\n\n return (\n <Card className={className}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle>{title}</CardTitle>\n {description && <CardDescription>{description}</CardDescription>}\n </div>\n {timeRanges && timeRanges.length > 0 && (\n <div className=\"flex items-center gap-2\">\n <div className=\"hidden sm:block\">\n <ToggleGroup type=\"single\" value={timeRange} onValueChange={setTimeRange}>\n {timeRanges.map((range) => (\n <ToggleGroupItem key={range.value} value={range.value} size=\"sm\">\n {range.label}\n </ToggleGroupItem>\n ))}\n </ToggleGroup>\n </div>\n <div className=\"sm:hidden\">\n <Select value={timeRange} onValueChange={setTimeRange}>\n <SelectTrigger className=\"w-[120px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {timeRanges.map((range) => (\n <SelectItem key={range.value} value={range.value}>\n {range.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n )}\n </div>\n </CardHeader>\n <CardContent>\n <ChartContainer config={config} className=\"h-[300px] w-full\">\n {children}\n </ChartContainer>\n </CardContent>\n </Card>\n )\n }\n)\n\nInteractiveChart.displayName = \"InteractiveChart\"\n","import * as React from \"react\"\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n flexRender,\n type ColumnDef,\n} from \"@tanstack/react-table\"\nimport { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from \"@/components/primitives/Table\"\nimport { TablePagination } from \"@/components/composites/TablePagination\"\nimport { TableToolbar } from \"@/components/composites/TableToolbar\"\n\nexport interface DataTableProps<TData, TValue> {\n data: TData[]\n columns: ColumnDef<TData, TValue>[]\n enableRowSelection?: boolean\n enablePagination?: boolean\n enableFiltering?: boolean\n searchColumn?: string\n onRowClick?: (row: TData) => void\n className?: string\n}\n\nexport function DataTable<TData, TValue>({\n data,\n columns,\n enableRowSelection = false,\n enablePagination = true,\n enableFiltering = true,\n searchColumn,\n onRowClick,\n className,\n}: DataTableProps<TData, TValue>) {\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n enableRowSelection,\n })\n\n return (\n <div className={`space-y-4 ${className || \"\"}`}>\n {enableFiltering && <TableToolbar table={table} searchColumn={searchColumn} />}\n <div className=\"rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n onClick={() => onRowClick?.(row.original)}\n className={onRowClick ? \"cursor-pointer\" : \"\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n {enablePagination && <TablePagination table={table} />}\n </div>\n )\n}\n\nDataTable.displayName = \"DataTable\"\n","import * as React from \"react\"\nimport { SidebarInset } from \"@/components/primitives/Sidebar\"\n\n/**\n * PageContainer Composite\n *\n * Container for page content that works with Sidebar layout.\n * Wraps content with SidebarInset primitive.\n */\n\nexport interface PageContainerProps {\n children: React.ReactNode\n className?: string\n}\n\nexport const PageContainer = React.memo<PageContainerProps>(({ children, className }) => {\n return (\n <SidebarInset className={className}>\n {children}\n </SidebarInset>\n )\n})\n\nPageContainer.displayName = \"PageContainer\"\n","import * as React from \"react\"\nimport {\n Sidebar,\n SidebarHeader,\n SidebarContent,\n SidebarFooter,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n} from \"@/components/primitives/Sidebar\"\nimport { Icon } from \"@/components/primitives/Icon\"\nimport { NavigationList, type NavigationItem } from \"@/components/composites/NavigationList\"\nimport { NavUser } from \"@/components/composites/NavUser\"\n\nexport interface AppSidebarProps extends React.ComponentPropsWithoutRef<typeof Sidebar> {\n logo?: {\n icon: string\n text: string\n href: string\n }\n mainNavigation: NavigationItem[]\n secondaryNavigation?: NavigationItem[]\n documents?: NavigationItem[]\n user: {\n name: string\n email: string\n avatar?: string\n }\n userActions?: { label: string; onClick: () => void }[]\n}\n\nexport const AppSidebar = React.memo<AppSidebarProps>(\n ({ logo, mainNavigation, secondaryNavigation, documents, user, userActions, ...props }) => {\n return (\n <Sidebar {...props} variant=\"inset\" collapsible=\"offcanvas\">\n <SidebarHeader>\n {logo && (\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton asChild className=\"data-[slot=sidebar-menu-button]:!p-1.5\">\n <a href={logo.href}>\n <Icon name={logo.icon} className=\"!size-5\" />\n <span className=\"text-base font-semibold\">{logo.text}</span>\n </a>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n )}\n </SidebarHeader>\n\n <SidebarContent>\n <SidebarGroup>\n <SidebarGroupContent>\n <NavigationList items={mainNavigation} />\n </SidebarGroupContent>\n </SidebarGroup>\n\n {documents && documents.length > 0 && (\n <SidebarGroup>\n <SidebarGroupLabel>Documents</SidebarGroupLabel>\n <SidebarGroupContent>\n <NavigationList items={documents} />\n </SidebarGroupContent>\n </SidebarGroup>\n )}\n\n {secondaryNavigation && secondaryNavigation.length > 0 && (\n <SidebarGroup>\n <SidebarGroupContent className=\"mt-auto\">\n <NavigationList items={secondaryNavigation} />\n </SidebarGroupContent>\n </SidebarGroup>\n )}\n </SidebarContent>\n\n <SidebarFooter>\n <NavUser user={user} actions={userActions} />\n </SidebarFooter>\n </Sidebar>\n )\n }\n)\n\nAppSidebar.displayName = \"AppSidebar\"\n","import * as React from \"react\"\nimport {\n Conversation,\n ConversationContent,\n ConversationEmptyState,\n ConversationScrollButton,\n type ConversationProps,\n} from \"@/components/ai-elements/conversation\"\nimport { type AIMessage } from \"@/components/composites/AgentMessage\"\nimport { UserMessage } from \"@/components/composites/UserMessage\"\nimport { SpecialistMessage } from \"@/components/composites/SpecialistMessage\"\nimport { OrchestratorMessage } from \"@/components/composites/OrchestratorMessage\"\nimport { ToolCallDisplay } from \"@/components/composites/ToolCallDisplay\"\nimport type { SubAgent } from \"@/components/composites/AgentIndicator\"\n\n/**\n * AIConversation Section\n *\n * A section-level component specifically designed for AI agent conversations.\n * Uses the Conversation AI element with AgentMessage blocks to display\n * multi-agent workflows with tool calls and sub-agent indicators.\n *\n * Based on reference implementation from deep-agents-ui ChatInterface.\n */\n\nexport interface AIConversationProps\n extends Omit<ConversationProps, \"children\"> {\n /**\n * Array of AI messages to display\n */\n messages: AIMessage[]\n /**\n * Whether to show avatars for messages\n */\n showAvatars?: boolean\n /**\n * Handler for sub-agent selection\n */\n onSelectSubAgent?: (subAgent: SubAgent) => void\n /**\n * Currently selected sub-agent\n */\n selectedSubAgent?: SubAgent | null\n /**\n * Empty state configuration\n */\n emptyState?: {\n title?: string\n description?: string\n icon?: React.ReactNode\n }\n}\n\n/**\n * AIConversation component - displays AI agent conversations with tool calls and sub-agents\n */\nexport const AIConversation = React.memo<AIConversationProps>(\n ({\n messages,\n showAvatars = true,\n onSelectSubAgent,\n selectedSubAgent,\n emptyState,\n ...conversationProps\n }) => {\n const isEmpty = React.useMemo(\n () => messages.length === 0,\n [messages.length]\n )\n\n const emptyStateTitle = React.useMemo(\n () => emptyState?.title || \"No conversation yet\",\n [emptyState?.title]\n )\n\n const emptyStateDescription = React.useMemo(\n () =>\n emptyState?.description ||\n \"Start a conversation to see AI agent interactions\",\n [emptyState?.description]\n )\n\n const renderedMessages = React.useMemo(\n () =>\n messages.map((message) => {\n // Render based on role field\n if (message.role === \"user\") {\n return (\n <UserMessage\n key={message.id}\n message={{\n id: message.id,\n content: message.content,\n avatarSrc: message.avatarSrc,\n avatarName: message.avatarName,\n }}\n showAvatar={showAvatars}\n />\n )\n }\n\n if (message.role === \"orchestrator\") {\n // Extract sub-agents from the message\n const subAgents = message.subAgents || []\n\n // Filter tool calls that aren't \"task\" type (those become sub-agents)\n const directToolCalls =\n message.toolCalls?.filter(\n (tc) => tc.name !== \"task\"\n ) || []\n\n return (\n <OrchestratorMessage\n key={message.id}\n message={{\n id: message.id,\n content: message.content,\n avatarSrc: message.avatarSrc,\n avatarName: message.avatarName,\n }}\n showAvatar={showAvatars}\n >\n {/* Render direct tool calls */}\n {directToolCalls.map((tc) => (\n <ToolCallDisplay key={tc.id} toolCall={tc} />\n ))}\n\n {/* Render specialist sub-agents */}\n {subAgents.map((subAgent) => (\n <SpecialistMessage\n key={subAgent.id}\n message={{\n id: subAgent.id,\n name: subAgent.subAgentName,\n description: typeof subAgent.input === 'string' ? subAgent.input : JSON.stringify(subAgent.input),\n content: typeof subAgent.output === 'string' ? subAgent.output : (subAgent.output ? JSON.stringify(subAgent.output) : ''),\n status: subAgent.status,\n toolCalls: [],\n }}\n showAvatar={showAvatars}\n isNested={true}\n />\n ))}\n </OrchestratorMessage>\n )\n }\n\n // Default to specialist message for any other AI messages\n return (\n <SpecialistMessage\n key={message.id}\n message={{\n id: message.id,\n name: message.avatarName || \"Agent\",\n content: message.content,\n toolCalls: message.toolCalls?.filter((tc) => tc.name !== \"task\"),\n status: \"completed\",\n }}\n showAvatar={showAvatars}\n isNested={false}\n />\n )\n }),\n [messages, showAvatars]\n )\n\n return (\n <Conversation {...conversationProps}>\n <ConversationContent>\n {isEmpty ? (\n <ConversationEmptyState\n title={emptyStateTitle}\n description={emptyStateDescription}\n icon={emptyState?.icon}\n />\n ) : (\n renderedMessages\n )}\n </ConversationContent>\n <ConversationScrollButton />\n </Conversation>\n )\n }\n)\n\nAIConversation.displayName = \"AIConversation\"","import * as React from \"react\";\nimport { Confirmation, type ConfirmationProps } from \"@/components/composites/Confirmation\";\nimport { FileQueue, type FileGroup } from \"@/components/composites/FileQueue\";\nimport type { FileChangeData, FileStatus } from \"@/components/composites/FileQueue\";\n\n/**\n * FileChangeQueue Section\n *\n * Composes FileQueue block with Confirmation block for file approval workflow.\n * Displays file modifications with approve/reject actions.\n */\n\nexport interface FileChangeQueueProps {\n /**\n * Array of file changes to display\n */\n changes: FileChangeData[];\n /**\n * Title/prompt text for the confirmation\n */\n title?: string;\n /**\n * Confirmation state\n */\n state: ConfirmationProps[\"state\"];\n /**\n * Approval data\n */\n approval?: ConfirmationProps[\"approval\"];\n /**\n * Approve all changes callback\n */\n onApprove?: () => void;\n /**\n * Reject all changes callback\n */\n onReject?: () => void;\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * Transform file changes to groups for FileQueue\n * Maintains existing visual appearance with status-based grouping\n */\nconst transformFileChangesToGroups = (\n changes: FileChangeData[]\n): FileGroup[] => {\n const statusConfig = {\n modified: {\n title: \"Modified\",\n icon: \"file-text\",\n iconColor: \"text-blue-600 dark:text-blue-500\",\n },\n created: {\n title: \"Created\",\n icon: \"plus\",\n iconColor: \"text-green-600 dark:text-green-500\",\n },\n deleted: {\n title: \"Deleted\",\n icon: \"x\",\n iconColor: \"text-red-600 dark:text-red-500\",\n },\n pending: {\n title: \"Pending\",\n icon: \"loader-2\",\n iconColor: \"text-yellow-600 dark:text-yellow-500\",\n },\n };\n\n const grouped: Record<FileStatus, FileChangeData[]> = {\n modified: [],\n created: [],\n deleted: [],\n pending: [],\n };\n\n changes.forEach((change) => {\n grouped[change.status].push(change);\n });\n\n const statusOrder: FileStatus[] = [\"modified\", \"created\", \"deleted\", \"pending\"];\n\n const result: FileGroup[] = [];\n\n statusOrder.forEach((status) => {\n const files = grouped[status];\n if (files.length === 0) return;\n\n const config = statusConfig[status];\n\n result.push({\n id: status,\n title: config.title,\n icon: config.icon,\n iconColor: config.iconColor,\n files: files.map((file) => ({\n id: file.id,\n name: file.filename,\n path: file.path,\n })),\n defaultOpen: false,\n });\n });\n\n return result;\n};\n\n/**\n * FileChangeQueue component - section-level component for file approval workflow\n */\nexport const FileChangeQueue = React.memo<FileChangeQueueProps>(\n ({ changes, title, state, approval, onApprove, onReject, className }) => {\n // Only display if at least 1 file change exists\n if (changes.length === 0) {\n return null;\n }\n\n // Transform file changes to groups\n const groups = React.useMemo(\n () => transformFileChangesToGroups(changes),\n [changes]\n );\n\n return (\n <Confirmation\n title={title}\n state={state}\n approval={approval}\n onApprove={onApprove}\n onReject={onReject}\n className={className}\n >\n <FileQueue groups={groups} />\n </Confirmation>\n );\n }\n);\n\nFileChangeQueue.displayName = \"FileChangeQueue\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { AIConversation } from \"@/components/blocks/AIConversation\";\nimport { FileChangeQueue } from \"@/components/blocks/FileChangeQueue\";\nimport { PromptInput } from \"@/components/composites/PromptInput\";\nimport type { ToolCall } from \"@/components/composites/ToolCallDisplay\";\nimport type { SubAgent } from \"@/components/composites/AgentIndicator\";\nimport type { FileChangeData } from \"@/components/composites/FileQueue\";\nimport type { PromptInputMessage } from \"@/components/ai-elements/prompt-input\";\nimport type { FormEvent } from \"react\";\n\n/**\n * RefinementPanel Feature\n *\n * A two-state feature component for AI-powered code refinement workflows.\n * Enables users to submit refinement requests and review multi-agent generated changes.\n *\n * States:\n * - input: Clean interface for submitting refinement requests\n * - multi-agent-review: Complex interface showing agent conversations and file changes\n */\n\n/**\n * Message data structure for conversation display\n */\nexport interface RefinementMessage {\n id: string;\n type: \"human\" | \"ai\";\n role: \"user\" | \"orchestrator\" | \"specialist\";\n content: string;\n avatarSrc?: string;\n avatarName?: string;\n toolCalls?: ToolCall[];\n subAgents?: SubAgent[];\n}\n\n/**\n * RefinementPanel component props\n */\nexport interface RefinementPanelProps {\n /**\n * Conversation messages to display\n */\n messages: RefinementMessage[];\n /**\n * File changes to review\n */\n fileChanges?: FileChangeData[];\n /**\n * Submit handler for user input\n */\n onSubmit: (\n message: PromptInputMessage,\n event: FormEvent<HTMLFormElement>\n ) => void | Promise<void>;\n /**\n * Approve handler for file changes\n */\n onApprove?: () => void;\n /**\n * Reject handler for file changes\n */\n onReject?: () => void;\n /**\n * Placeholder text for input\n */\n placeholder?: string;\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * RefinementPanel component - two-state refinement workflow interface\n */\nexport const RefinementPanel = React.memo<RefinementPanelProps>(\n ({\n messages,\n fileChanges = [],\n onSubmit,\n onApprove,\n onReject,\n placeholder = \"Ask a question or describe a task...\",\n className,\n }) => {\n // File change queue state\n const [fileChangeState, setFileChangeState] = React.useState<\n \"approval-requested\" | \"approval-responded\"\n >(\"approval-requested\");\n const [approval, setApproval] = React.useState<\n { approved?: boolean }\n >({});\n\n // Handle approve action\n const handleApprove = React.useCallback(() => {\n setFileChangeState(\"approval-responded\");\n setApproval({ approved: true });\n onApprove?.();\n }, [onApprove]);\n\n // Handle reject action\n const handleReject = React.useCallback(() => {\n setFileChangeState(\"approval-responded\");\n setApproval({ approved: false });\n onReject?.();\n }, [onReject]);\n\n // Reset file change state when fileChanges are cleared\n React.useEffect(() => {\n if (fileChanges.length === 0) {\n setFileChangeState(\"approval-requested\");\n setApproval({});\n }\n }, [fileChanges.length]);\n\n\n\n return (\n <div className={`relative flex h-screen flex-col ${className || \"\"}`}>\n {/* Conversation Area - Override to prevent double scroll (StickToBottom handles scroll internally) */}\n <AIConversation\n messages={messages}\n showAvatars={true}\n className=\"relative min-h-0 flex-1 overflow-visible\"\n />\n\n {/* File Changes Queue (fixed at bottom, constrained height) */}\n {fileChanges.length > 0 && (\n <div className=\"w-full flex-shrink-0 border-t\">\n <div className=\"max-h-[40vh] overflow-y-auto bg-background\">\n <FileChangeQueue\n changes={fileChanges}\n title=\"Review and approve these file changes\"\n state={fileChangeState}\n approval={approval}\n onApprove={handleApprove}\n onReject={handleReject}\n />\n </div>\n </div>\n )}\n\n {/* Input Area (visible only when no file changes to review) */}\n {fileChanges.length === 0 && (\n <div className=\"w-full flex-shrink-0\">\n <PromptInput\n placeholder={placeholder}\n onSubmit={onSubmit}\n className=\"border-t\"\n />\n </div>\n )}\n </div>\n );\n }\n);\n\nRefinementPanel.displayName = \"RefinementPanel\";\n","import * as React from \"react\";\nimport { FileQueue, type FileGroup } from \"@/components/composites/FileQueue\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * SpecNavigator Feature\n *\n * Domain-specific navigation for browsing specification files.\n * Uses FileQueue block for rendering grouped file lists.\n */\n\n/**\n * SpecNavigator component props\n */\nexport interface SpecNavigatorProps {\n /** Array of file groups to display */\n groups: FileGroup[];\n /** ID of currently selected file */\n selectedFileId?: string;\n /** Callback when a file is selected */\n onFileSelect?: (fileId: string) => void;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * SpecNavigator component - domain-specific spec file navigation\n */\nexport const SpecNavigator = React.memo<SpecNavigatorProps>(\n ({ groups, selectedFileId, onFileSelect, className }) => {\n return (\n <div className={cn(\"flex h-full flex-col\", className)}>\n <FileQueue\n groups={groups}\n selectedFileId={selectedFileId}\n onFileSelect={onFileSelect}\n />\n </div>\n );\n }\n);\n\nSpecNavigator.displayName = \"SpecNavigator\";\n","/**\n * DocumentEditorWithComments Section\n * \n * Combines DocumentEditor and CommentBox blocks to provide inline commenting functionality\n * Section layer: composes blocks and manages UI state\n */\n\nimport React, { useState, useCallback, useMemo, useEffect } from 'react'\nimport { DocumentEditor } from '@/components/composites/DocumentEditor'\nimport { CommentBox } from '@/components/composites/CommentBox'\nimport { Card } from '@/components/primitives/Card'\nimport type { JSONContent } from '@tiptap/core'\nimport type { Annotation, CommentAnnotation, Range } from '@/types/ai-editor'\n\n/**\n * Props for DocumentEditorWithComments section\n */\nexport interface DocumentEditorWithCommentsProps {\n /** \n * Document content - can be either:\n * - JSONContent: Tiptap's JSON format (default)\n * - string: Markdown string (when format='markdown')\n */\n content: JSONContent | string\n /** \n * Content format - determines how content prop is interpreted\n * @default 'json'\n */\n format?: 'json' | 'markdown'\n /** Array of annotations to display */\n annotations: Annotation[]\n /** ID of currently selected annotation */\n selectedAnnotationId?: string\n /** Current user ID for comment ownership */\n currentUserId: string\n /** Current user name for new comments and replies */\n currentUserName: string\n /** Whether editor is in read-only mode */\n readOnly?: boolean\n /** Callback when new annotation is added */\n onAnnotationAdd?: (annotation: Annotation) => void\n /** Callback when annotation is updated (e.g., reply added) */\n onAnnotationUpdate?: (annotation: Annotation) => void\n /** Additional CSS classes */\n className?: string\n}\n\nexport const DocumentEditorWithComments = React.memo<DocumentEditorWithCommentsProps>(\n ({\n content,\n format = 'json',\n annotations,\n selectedAnnotationId,\n currentUserId,\n currentUserName,\n readOnly = false,\n onAnnotationAdd,\n onAnnotationUpdate,\n className,\n }) => {\n // Internal UI state\n const [commentBoxVisible, setCommentBoxVisible] = useState(false)\n const [commentBoxPosition, setCommentBoxPosition] = useState({ x: 0, y: 0 })\n const [activeAnnotation, setActiveAnnotation] = useState<Annotation | undefined>()\n const [selectedRange, setSelectedRange] = useState<Range | undefined>()\n const [hoveredAnnotationId, setHoveredAnnotationId] = useState<string | null>(null)\n\n /**\n * Sync activeAnnotation with latest data from annotations array\n * This ensures CommentBox shows updated data when replies are added\n */\n useEffect(() => {\n if (activeAnnotation && commentBoxVisible) {\n const updatedAnnotation = annotations.find((a) => a.id === activeAnnotation.id)\n if (updatedAnnotation) {\n setActiveAnnotation(updatedAnnotation)\n }\n }\n }, [annotations, activeAnnotation, commentBoxVisible])\n\n /**\n * Handle annotation click - show CommentBox near the annotation\n */\n const handleAnnotationClick = useCallback(\n (annotationId: string, position: { x: number; y: number }) => {\n const annotation = annotations.find((a) => a.id === annotationId)\n if (annotation) {\n setActiveAnnotation(annotation)\n setSelectedRange(undefined)\n setCommentBoxPosition(position)\n setCommentBoxVisible(true)\n }\n },\n [annotations]\n )\n\n /**\n * Handle text selection - show CommentBox for new comment\n */\n const handleTextSelect = useCallback(\n (range: Range, text: string, position?: { x: number; y: number }) => {\n if (readOnly || !text.trim()) return\n\n // Show CommentBox for new comment\n setActiveAnnotation(undefined)\n setSelectedRange(range)\n \n // Use calculated position from DocumentEditor, or fallback to default\n const finalPosition = position || { x: 600, y: 100 }\n setCommentBoxPosition(finalPosition)\n setCommentBoxVisible(true)\n },\n [readOnly]\n )\n\n /**\n * Handle new comment submission\n */\n const handleCommentAdd = useCallback(\n (content: JSONContent) => {\n if (!selectedRange || !onAnnotationAdd) return\n\n // Create new comment annotation\n const newAnnotation: CommentAnnotation = {\n type: 'comment',\n id: `comment-${Date.now()}`,\n range: selectedRange,\n createdAt: Date.now(),\n userId: currentUserId,\n data: {\n thread: [\n {\n id: `comment-msg-${Date.now()}`,\n userId: currentUserId,\n userName: currentUserName,\n contentRich: content,\n timestamp: Date.now(),\n },\n ],\n },\n }\n\n onAnnotationAdd(newAnnotation)\n setCommentBoxVisible(false)\n setSelectedRange(undefined)\n },\n [selectedRange, currentUserId, currentUserName, onAnnotationAdd]\n )\n\n /**\n * Handle reply to existing annotation\n */\n const handleCommentReply = useCallback(\n (annotationId: string, content: JSONContent) => {\n if (!onAnnotationUpdate) return\n\n const annotation = annotations.find((a) => a.id === annotationId)\n if (!annotation) return\n\n // Add reply to the annotation's thread\n const newComment = {\n id: `comment-msg-${Date.now()}`,\n userId: currentUserId,\n userName: currentUserName,\n contentRich: content,\n timestamp: Date.now(),\n }\n\n let updatedAnnotation: Annotation\n \n if (annotation.type === 'comment') {\n updatedAnnotation = {\n ...annotation,\n data: {\n ...annotation.data,\n thread: [...annotation.data.thread, newComment],\n },\n }\n } else if (annotation.type === 'suggestion') {\n updatedAnnotation = {\n ...annotation,\n data: {\n ...annotation.data,\n thread: [...annotation.data.thread, newComment],\n },\n }\n } else {\n updatedAnnotation = {\n ...annotation,\n data: {\n ...annotation.data,\n thread: [...annotation.data.thread, newComment],\n },\n }\n }\n\n onAnnotationUpdate(updatedAnnotation)\n },\n [annotations, currentUserId, currentUserName, onAnnotationUpdate]\n )\n\n /**\n * Handle annotation hover - update hover state\n */\n const handleAnnotationHover = useCallback((annotationId: string | null) => {\n setHoveredAnnotationId(annotationId)\n }, [])\n\n /**\n * Handle CommentBox close - clear pending comment highlight\n */\n const handleCommentBoxClose = useCallback(() => {\n setCommentBoxVisible(false)\n setActiveAnnotation(undefined)\n setSelectedRange(undefined) // This clears the yellow highlight\n }, [])\n\n // Memoize props to prevent unnecessary re-renders of DocumentEditor\n // This is critical because re-renders trigger setContent() which clears marks\n const documentEditorProps = useMemo(\n () => ({\n content,\n format,\n annotations,\n selectedAnnotationId,\n hoveredAnnotationId,\n pendingCommentRange: selectedRange, // Pass pending range to show yellow highlight\n onTextSelect: handleTextSelect,\n onAnnotationClick: handleAnnotationClick,\n onAnnotationHover: handleAnnotationHover,\n readOnly,\n }),\n [content, format, annotations, selectedAnnotationId, hoveredAnnotationId, selectedRange, handleTextSelect, handleAnnotationClick, handleAnnotationHover, readOnly]\n )\n\n return (\n <Card className={className}>\n <DocumentEditor {...documentEditorProps} />\n\n <CommentBox\n annotation={activeAnnotation}\n position={commentBoxPosition}\n visible={commentBoxVisible}\n currentUserId={currentUserId}\n onClose={handleCommentBoxClose}\n onCommentAdd={handleCommentAdd}\n onCommentReply={handleCommentReply}\n />\n </Card>\n )\n }\n)\n\nDocumentEditorWithComments.displayName = 'DocumentEditorWithComments'\n\n","/**\n * AIDocEditor Feature Component\n * \n * Complete document editor with inline comment annotations.\n * Feature layer: uses DocumentEditorWithComments section with data management.\n * \n * @example\n * ```tsx\n * <AIDocEditor\n * content={document}\n * annotations={annotations}\n * currentUser={user}\n * mode=\"review\"\n * onAnnotationAdd={(annotation) => saveAnnotation(annotation)}\n * />\n * ```\n */\n\nimport React, { useCallback } from 'react'\nimport { DocumentEditorWithComments } from '@/components/blocks/DocumentEditorWithComments'\nimport { cn } from '@/lib/utils'\nimport type { JSONContent } from '@tiptap/core'\nimport type { Annotation, User } from '@/types/ai-editor/annotations'\n\n/**\n * Props for AIDocEditor feature component\n */\nexport interface AIDocEditorProps {\n /** \n * Document content - can be either:\n * - JSONContent: Tiptap's JSON format (default)\n * - string: Markdown string (when format='markdown')\n */\n content: JSONContent | string\n /** \n * Content format - determines how content prop is interpreted\n * - 'json': Content is Tiptap JSONContent (default)\n * - 'markdown': Content is a markdown string\n * \n * @default 'json'\n */\n format?: 'json' | 'markdown'\n /** Array of annotations to display */\n annotations: Annotation[]\n /** ID of currently selected annotation */\n selectedAnnotationId?: string\n /** Current user information */\n currentUser: User\n /** Editor mode: 'review' allows commenting, 'readonly' disables interactions */\n mode: 'review' | 'readonly'\n /** Callback when document content is updated */\n onContentUpdate?: (content: JSONContent) => void\n /** Callback when annotation is clicked */\n onAnnotationClick?: (annotation: Annotation) => void\n /** Callback when annotation is hovered */\n onAnnotationHover?: (annotation: Annotation | null) => void\n /** Callback when text is selected */\n onTextSelect?: (range: { from: number; to: number }, selectedText: string) => void\n /** Callback when new annotation is added */\n onAnnotationAdd?: (annotation: Annotation) => void\n /** Callback when annotation is updated (e.g., reply added) */\n onAnnotationUpdate?: (annotation: Annotation) => void\n /** Callback when annotation is deleted */\n onAnnotationDelete?: (annotationId: string) => void\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * AIDocEditor - Document editor with inline comment annotations\n * \n * This feature component provides a complete document review experience with:\n * - Read-only document display with annotation highlights\n * - Inline comment box for viewing and adding comments\n * - Support for comments, suggestions, and block additions\n * - Controlled component pattern (all state managed by parent)\n * \n * Note: The refinement panel (right sidebar with Accept All/Reject All) is a\n * separate component in the parent application, not part of this feature.\n */\nexport const AIDocEditor = React.memo<AIDocEditorProps>(\n ({\n content,\n format = 'json',\n annotations,\n selectedAnnotationId,\n currentUser,\n mode,\n onAnnotationAdd,\n onAnnotationUpdate,\n className,\n }) => {\n /**\n * Handle annotation add - emit event to parent\n */\n const handleAnnotationAdd = useCallback(\n (annotation: Annotation) => {\n onAnnotationAdd?.(annotation)\n },\n [onAnnotationAdd]\n )\n\n /**\n * Handle annotation update - emit event to parent\n */\n const handleAnnotationUpdate = useCallback(\n (annotation: Annotation) => {\n onAnnotationUpdate?.(annotation)\n },\n [onAnnotationUpdate]\n )\n\n return (\n <DocumentEditorWithComments\n content={content}\n format={format}\n annotations={annotations}\n selectedAnnotationId={selectedAnnotationId}\n currentUserId={currentUser.id}\n currentUserName={currentUser.name}\n readOnly={mode === 'readonly'}\n onAnnotationAdd={handleAnnotationAdd}\n onAnnotationUpdate={handleAnnotationUpdate}\n className={cn('ai-doc-editor p-6', className)}\n />\n )\n }\n)\n\nAIDocEditor.displayName = 'AIDocEditor'\n"]}
|