diff --git a/frontend/src/components/Filters.tsx b/frontend/src/components/Filters.tsx index 8bedd33..12982bf 100644 --- a/frontend/src/components/Filters.tsx +++ b/frontend/src/components/Filters.tsx @@ -10,6 +10,7 @@ import { groupFeaturesByCategory } from '../lib/features'; import InfoPopup from './InfoPopup'; import { FeatureInfoPopup } from './FeatureInfoPopup'; import { FeatureActions } from './FeatureIcons'; +import { FeatureLabel } from './ui/FeatureLabel'; interface FiltersProps { features: FeatureMeta[]; @@ -91,7 +92,7 @@ function FeatureBrowser({ className="flex items-start justify-between px-3 py-1.5 hover:bg-teal-50 dark:hover:bg-teal-900/30 dark:text-warm-300" >
- {f.name} + {f.description && ( {f.description} @@ -102,7 +103,6 @@ function FeatureBrowser({ feature={f} isPinned={isPinned} onTogglePin={onTogglePin} - onShowInfo={setInfoFeature} onAdd={onAddFilter} />
@@ -232,12 +232,11 @@ export default memo(function Filters({ className={`space-y-1 p-3 rounded ${pinnedFeature === feature.name ? 'ring-2 ring-teal-400 bg-teal-50/50 dark:bg-teal-900/20' : ''}`} >
- +
@@ -281,15 +280,16 @@ export default memo(function Filters({ className={`space-y-1 p-3 rounded ${isActive ? 'ring-2 ring-teal-400 bg-teal-50 dark:bg-teal-900/30' : isPinned ? 'ring-2 ring-teal-400 bg-teal-50/50 dark:bg-teal-900/20' : ''}`} >
- +
+ + + {formatFilterValue(displayValue[0])} - {formatFilterValue(displayValue[1])} + +
diff --git a/frontend/src/components/ui/FeatureLabel.tsx b/frontend/src/components/ui/FeatureLabel.tsx new file mode 100644 index 0000000..73a73f2 --- /dev/null +++ b/frontend/src/components/ui/FeatureLabel.tsx @@ -0,0 +1,35 @@ +import type { FeatureMeta } from '../../types'; +import { InfoIcon } from './icons'; + +interface FeatureLabelProps { + feature: FeatureMeta; + onShowInfo?: (feature: FeatureMeta) => void; + className?: string; + size?: 'xs' | 'sm'; +} + +export function FeatureLabel({ + feature, + onShowInfo, + className = '', + size = 'xs', +}: FeatureLabelProps) { + const textClass = size === 'sm' ? 'text-sm' : 'text-xs'; + + return ( +
+ + {feature.name} + + {feature.detail && onShowInfo && ( + + )} +
+ ); +} diff --git a/frontend/src/components/ui/TabButton.tsx b/frontend/src/components/ui/TabButton.tsx index 573225c..b15f9c9 100644 --- a/frontend/src/components/ui/TabButton.tsx +++ b/frontend/src/components/ui/TabButton.tsx @@ -5,7 +5,7 @@ interface TabButtonProps { onClick: () => void; } -export function TabButton({ label, count, isActive, onClick }: TabButtonProps) { +export function TabButton({ label, isActive, onClick }: TabButtonProps) { return ( ); }