namespace UVC.UI.Toolbar.Model
{
    /// <summary>
    /// 툴바에 추가될 수 있는 모든 항목(예: 버튼, 구분선, 드롭다운 메뉴 등)의
    /// 기본 인터페이스입니다.
    /// 이 인터페이스를 구현하는 클래스는 툴바 시스템의 일부로 인식되어
    /// ToolbarModel에 추가되고 ToolbarView에 의해 렌더링될 수 있습니다.
    /// 
    /// 역할:
    /// - 툴바 항목의 통일성: 다양한 UI 요소들을 툴바 시스템 내에서 동일한 타입(IToolbarItem)으로 취급할 수 있게 합니다.
    /// - 확장성: 새로운 종류의 툴바 항목을 추가할 때, 이 인터페이스를 구현함으로써
    ///   기존 툴바 시스템과 쉽게 통합될 수 있도록 합니다.
    /// 
    /// 사용 예시:
    /// - ToolbarButtonBase: 모든 버튼 타입의 기본 클래스로, IToolbarItem을 구현합니다.
    /// - ToolbarSeparator: 툴바 내 항목들을 시각적으로 구분하는 구분선 클래스로, IToolbarItem을 구현합니다.
    /// 
    /// 개발자가 새로운 툴바 항목(예: 색상 선택기, 슬라이더 등)을 만들고 싶다면,
    /// 해당 클래스가 IToolbarItem 인터페이스를 구현하도록 해야 합니다.
    /// </summary>
    /// <example>
    /// <code>
    /// // 새로운 툴바 항목으로 'MyCustomToolbarItem'을 정의하는 경우
    /// public class MyCustomToolbarItem : IToolbarItem
    /// {
    ///     // 이 항목에 필요한 속성 및 메서드 정의
    ///     public string CustomData { get; set; }
    ///     public void PerformAction() { /* ... */ }
    /// }
    /// 
    /// // ToolbarModel에 추가하는 방법
    /// ToolbarModel toolbarModel = new ToolbarModel();
    /// MyCustomToolbarItem customItem = new MyCustomToolbarItem { CustomData = "Example" };
    /// toolbarModel.AddItem(customItem); 
    /// // ToolbarView는 이 customItem을 렌더링하기 위한 로직이 추가적으로 필요할 수 있습니다.
    /// // (예: MyCustomToolbarItem 타입에 맞는 프리팹과 렌더링 로직)
    /// </code>
    /// </example>
    public interface IToolbarItem { }
}