From b2bea0ede6b952928a3927d0975b3cedc403889d Mon Sep 17 00:00:00 2001 From: EthanHealy01 Date: Thu, 14 Aug 2025 15:40:02 +0100 Subject: [PATCH] =?UTF-8?q?-=20Links=20in=20developer=20tools=20section=20?= =?UTF-8?q?should=20be=20links,=20not=20buttons=20=E2=9C=85=20-=20Text=20s?= =?UTF-8?q?eems=20to=20be=20slightly=20clipped=20at=20various=20zoom=20lev?= =?UTF-8?q?els=20in=20the=20all=20tools=20sidebar.=20=E2=9C=85=20-=20Inves?= =?UTF-8?q?tigate=20colors=20on=20the=20light=20mode=20search=20section=20?= =?UTF-8?q?=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/shared/FitText.tsx | 2 +- frontend/src/components/tools/ToolPanel.tsx | 30 ++++------------ .../tools/toolPicker/ToolButton.tsx | 14 ++++++-- .../tools/toolPicker/ToolPicker.css | 36 +++++++++++++++++++ .../tools/toolPicker/ToolSearch.tsx | 33 ++++++++++------- frontend/src/data/toolRegistry.tsx | 24 ++++++++----- frontend/src/styles/theme.css | 6 ++++ 7 files changed, 99 insertions(+), 46 deletions(-) diff --git a/frontend/src/components/shared/FitText.tsx b/frontend/src/components/shared/FitText.tsx index 6b6ee723c..bea17ddef 100644 --- a/frontend/src/components/shared/FitText.tsx +++ b/frontend/src/components/shared/FitText.tsx @@ -53,7 +53,7 @@ const FitText: React.FC = ({ const clampStyles: CSSProperties = { // Multi-line clamp with ellipsis fallback whiteSpace: lines === 1 ? 'nowrap' : 'normal', - overflow: 'hidden', + overflow: 'visible', textOverflow: 'ellipsis', display: lines > 1 ? ('-webkit-box' as any) : undefined, WebkitBoxOrient: lines > 1 ? ('vertical' as any) : undefined, diff --git a/frontend/src/components/tools/ToolPanel.tsx b/frontend/src/components/tools/ToolPanel.tsx index 1ec73ef47..972237c5d 100644 --- a/frontend/src/components/tools/ToolPanel.tsx +++ b/frontend/src/components/tools/ToolPanel.tsx @@ -1,11 +1,12 @@ import React from 'react'; -import { TextInput, useMantineColorScheme } from '@mantine/core'; +import { useMantineColorScheme } from '@mantine/core'; import { useTranslation } from 'react-i18next'; import { useRainbowThemeContext } from '../shared/RainbowThemeProvider'; import { useToolPanelState, useToolSelection, useWorkbenchState } from '../../contexts/ToolWorkflowContext'; import ToolPicker from './ToolPicker'; import SearchResults from './SearchResults'; import ToolRenderer from './ToolRenderer'; +import ToolSearch from './toolPicker/ToolSearch'; import { useSidebarContext } from "../../contexts/SidebarContext"; import rainbowStyles from '../../styles/rainbow.module.css'; @@ -25,6 +26,7 @@ export default function ToolPanel() { isPanelVisible, searchQuery, filteredTools, + toolRegistry, setSearchQuery, handleBackToTools } = useToolPanelState(); @@ -58,29 +60,11 @@ export default function ToolPanel() { marginBottom: (leftPanelView === 'toolContent') ? '1rem' : 0, }} > - setSearchQuery(e.currentTarget.value)} - autoComplete="off" - size="sm" - styles={{ - root: { - marginTop: '0.5rem', - marginBottom: '0.5rem', - }, - input: { - backgroundColor: colorScheme === 'dark' ? '#4B525A' : '#FFFFFF', - color: colorScheme === 'dark' ? '#FFFFFF' : '#6B7382', - border: 'none', - boxShadow: 'none', - borderBottom: leftPanelView === 'toolContent' ? `1px solid ${colorScheme === 'dark' ? '#3A4047' : '#E0E0E0'}` : 'none', - }, - section: { - color: colorScheme === 'dark' ? '#FFFFFF' : '#6B7382', - } - }} - leftSection={search} + onChange={setSearchQuery} + toolRegistry={toolRegistry} + mode="filter" /> diff --git a/frontend/src/components/tools/toolPicker/ToolButton.tsx b/frontend/src/components/tools/toolPicker/ToolButton.tsx index b5d93bdad..8d3469333 100644 --- a/frontend/src/components/tools/toolPicker/ToolButton.tsx +++ b/frontend/src/components/tools/toolPicker/ToolButton.tsx @@ -12,11 +12,21 @@ interface ToolButtonProps { } const ToolButton: React.FC = ({ id, tool, isSelected, onSelect }) => { + const handleClick = (id: string) => { + if (tool.link) { + // Open external link in new tab + window.open(tool.link, '_blank', 'noopener,noreferrer'); + return; + } + // Normal tool selection + onSelect(id); + }; + return (