import 'package:flutter/material.dart';

// 자동완성 드롭다운에서 텍스트 하이라이트를 위한 위젯
class HighlightText extends StatelessWidget {
  // 전체 텍스트
  final String text;
  // 하이라이트할 부분
  final String highlight;
  // 하이라이트 색상
  final Color highlightColor;
  // 텍스트 스타일
  final TextStyle? style;

  const HighlightText({
    super.key,
    required this.text,
    required this.highlight,
    this.highlightColor = Colors.blue,
    this.style,
  });

  @override
  Widget build(BuildContext context) {
    if (highlight.isEmpty) {
      // 하이라이트가 없으면 전체 텍스트 반환
      return Text(text, style: style);
    }
    final String lowerText = text.toLowerCase();
    final String lowerHighlight = highlight.toLowerCase();
    final int start = lowerText.indexOf(lowerHighlight);
    if (start < 0) {
      // 일치하는 부분이 없으면 전체 텍스트 반환
      return Text(text, style: style);
    }
    final int end = start + highlight.length;
    return RichText(
      text: TextSpan(
        style: style ?? DefaultTextStyle.of(context).style,
        children: [
          if (start > 0) TextSpan(text: text.substring(0, start)),
          TextSpan(
            text: text.substring(start, end),
            style: TextStyle(
              fontWeight: FontWeight.bold,
              color: highlightColor,
            ),
          ),
          if (end < text.length) TextSpan(text: text.substring(end)),
        ],
      ),
    );
  }
}
