diff --git a/frontend/src/components/ui/badge.tsx b/frontend/src/components/ui/badge.tsx index 99231206..114c4900 100644 --- a/frontend/src/components/ui/badge.tsx +++ b/frontend/src/components/ui/badge.tsx @@ -1,3 +1,4 @@ +import { Slot } from '@radix-ui/react-slot'; import { cva, type VariantProps } from 'class-variance-authority'; import * as React from 'react'; @@ -27,13 +28,17 @@ const badgeVariants = cva( }, ); -export interface BadgeProps extends React.HTMLAttributes, VariantProps {} +export interface BadgeProps extends React.HTMLAttributes, VariantProps { + asChild?: boolean; +} export type BadgeVariant = NonNullable['variant']>; -function Badge({ className, variant, ...props }: BadgeProps) { +function Badge({ asChild = false, className, variant, ...props }: BadgeProps) { + const Comp = asChild ? Slot : 'div'; + return ( -
| Control; - isDesktop: boolean; onEditorFocus: () => void; onVariableClick: (variable: string) => void; variables: string[]; @@ -227,7 +225,6 @@ interface VariablesPanelContainerProps { interface VariablesProps { currentTemplate: string; - isDesktop: boolean; onEditorFocus: () => void; onVariableClick: (variable: string) => void; variables: string[]; @@ -853,7 +850,6 @@ function SettingsPrompt() { {variablesData ? ( countVariableUses(currentTemplate, variables), [currentTemplate, variables]); if (variables.length === 0) { @@ -1064,19 +1061,18 @@ function Variables({ currentTemplate, isDesktop, onEditorFocus, onVariableClick, {/* Both autofocus preventDefaults are load-bearing: insert/cycle act on the editor's stored selection, so opening must not steal the caret and closing must return it to the editor. */} { event.preventDefault(); onEditorFocus(); @@ -1107,23 +1103,27 @@ function VariablesContent({ counts, onVariableClick, variables }: VariablesConte : `Insert {{.${variable}}} at the cursor`; return ( - + + ); })}
@@ -1132,19 +1132,12 @@ function VariablesContent({ counts, onVariableClick, variables }: VariablesConte } // Don't hoist this useWatch to the parent — it would re-subscribe the whole page per keystroke. -function VariablesPanelContainer({ - control, - isDesktop, - onEditorFocus, - onVariableClick, - variables, -}: VariablesPanelContainerProps) { +function VariablesPanelContainer({ control, onEditorFocus, onVariableClick, variables }: VariablesPanelContainerProps) { const currentTemplate = useWatch({ control, name: 'template' }); return (