57122a1d创建于 2025年7月7日历史提交
import React from 'react';

interface ThemePreviewHeaderProps {
  themeName: string;
  isExpanded: boolean;
  onToggleExpanded: () => void;
  isLoading: boolean;
  onCopyCSS: () => void;
}

const ThemePreviewHeader: React.FC<ThemePreviewHeaderProps> = ({
  themeName,
  isExpanded,
  onToggleExpanded,
  isLoading,
  onCopyCSS
}) => {
  const handleActionClick = (e: React.MouseEvent, action: () => void) => {
    e.stopPropagation();
    action();
  };

  return (
    <div 
      className="tool-message__header"
      onClick={onToggleExpanded}
    >
      <div className="tool-message__main">
        <span className="tool-icon">
          {isLoading ? (
            <div className="loading-icon-simple">
              <div className="loading-ring"></div>
            </div>
          ) : (
            '⚙️'
          )}
        </span>
        <div className="tool-info">
          <span className="tool-name">
            Generate Theme - <span style={{ color: 'var(--vscode-descriptionForeground)', fontWeight: 'normal' }}>{themeName}</span>
          </span>
          {isLoading && (
            <span className="tool-time-remaining">
              Generating theme...
            </span>
          )}
        </div>
      </div>
      <div className="tool-actions">
        {!isLoading && (
          <button
            className="theme-copy-btn"
            onClick={(e) => handleActionClick(e, onCopyCSS)}
            title="Copy CSS to clipboard"
            style={{
              background: 'transparent',
              border: 'none',
              color: 'var(--vscode-descriptionForeground)',
              cursor: 'pointer',
              padding: '2px 4px',
              borderRadius: '2px',
              transition: 'all 0.2s ease',
              display: 'flex',
              alignItems: 'center',
              justifyContent: 'center',
              fontSize: '12px'
            }}
          >
            📋
          </button>
        )}
        <button className={`tool-expand-btn ${isExpanded ? 'expanded' : ''}`}>
          <svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor">
            <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/>
          </svg>
        </button>
      </div>
    </div>
  );
};

export default ThemePreviewHeader;