diff --git a/components/ui/button.tsx b/components/ui/button.tsx index e44e027..8bb00a7 100644 --- a/components/ui/button.tsx +++ b/components/ui/button.tsx @@ -37,7 +37,9 @@ const buttonVariants = cva( export interface ButtonProps extends React.ButtonHTMLAttributes, VariantProps { - asChild?: boolean + asChild?: boolean; + variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link"; + size?: "default" | "sm" | "lg" | "icon"; } const Button = React.forwardRef( diff --git a/components/ui/dialog.tsx b/components/ui/dialog.tsx index 40cece6..9b2be73 100644 --- a/components/ui/dialog.tsx +++ b/components/ui/dialog.tsx @@ -53,4 +53,64 @@ const DialogContent = React.forwardRef< )) DialogContent.displayName = DialogPrimitive.Content.displayName -export { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent } +function DialogHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function DialogFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function DialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +}; diff --git a/components/ui/dropdown-menu.tsx b/components/ui/dropdown-menu.tsx index 3ecc756..4f96bff 100644 --- a/components/ui/dropdown-menu.tsx +++ b/components/ui/dropdown-menu.tsx @@ -60,6 +60,18 @@ const DropdownMenuSeparator = React.forwardRef< )) DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName +const DropdownMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; + export { DropdownMenu, DropdownMenuTrigger, @@ -70,4 +82,5 @@ export { DropdownMenuPortal, DropdownMenuSub, DropdownMenuRadioGroup, + DropdownMenuLabel, } diff --git a/src/components/ui/dropdown-menu.tsx b/src/components/ui/dropdown-menu.tsx index a757339..c643ccf 100644 --- a/src/components/ui/dropdown-menu.tsx +++ b/src/components/ui/dropdown-menu.tsx @@ -241,6 +241,7 @@ function DropdownMenuSubContent({ } export { + DropdownMenu, DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, @@ -254,6 +255,14 @@ export { DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, - DropdownMenuSubTrigger, DropdownMenuSubContent, -} + DropdownMenuSubTrigger, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, diff --git a/src/lib/templates.ts b/src/lib/templates.ts index cbc6a89..88ef914 100644 --- a/src/lib/templates.ts +++ b/src/lib/templates.ts @@ -12,9 +12,11 @@ export interface ScriptTemplate { } export function getTemplatesForPlatform(platform: PlatformId): ScriptTemplate[] { - return templates.filter(t => t.platform === platform); + return templates.filter(t => t.platform === platform); } +export { getTemplatesForPlatform }; + const robloxTemplates: ScriptTemplate[] = [ { id: 'hello-world', diff --git a/src/lib/translation-engine.ts b/src/lib/translation-engine.ts index 7613960..82f7eef 100644 --- a/src/lib/translation-engine.ts +++ b/src/lib/translation-engine.ts @@ -5,7 +5,7 @@ import { PlatformId, getPlatform } from './platforms'; import { toast } from 'sonner'; -import { captureEvent, captureError } from './analytics'; +import { trackEvent, trackError } from './analytics'; export interface TranslationRequest { sourceCode: string; @@ -199,7 +199,7 @@ async function translateWithClaudeAPI( const result = parseClaudeResponse(content, request.targetPlatform); return result; } catch (error) { - captureError(error as Error, { + trackError(error as Error, { context: 'translation_api', sourcePlatform: request.sourcePlatform, targetPlatform: request.targetPlatform, @@ -292,7 +292,7 @@ export async function translateCode( } // Log translation attempt - captureEvent('translation_started', { + trackEvent('translation_started', { sourcePlatform: request.sourcePlatform, targetPlatform: request.targetPlatform, codeLength: request.sourceCode.length, @@ -303,7 +303,7 @@ export async function translateCode( // Log result if (result.success) { - captureEvent('translation_success', { + trackEvent('translation_success', { sourcePlatform: request.sourcePlatform, targetPlatform: request.targetPlatform, }); @@ -311,7 +311,7 @@ export async function translateCode( `Translated ${request.sourcePlatform} → ${request.targetPlatform}` ); } else { - captureEvent('translation_failed', { + trackEvent('translation_failed', { sourcePlatform: request.sourcePlatform, targetPlatform: request.targetPlatform, error: result.error, @@ -321,7 +321,7 @@ export async function translateCode( return result; } catch (error) { - captureError(error as Error, { context: 'translate_code' }); + trackError(error as Error, { context: 'translate_code' }); return { success: false, error: `Unexpected error: ${(error as Error).message}`,