feat: Add RibbonBar component with CAD function tabs
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import React, { useState } from 'react';
|
||||
import './RibbonBar.css';
|
||||
|
||||
interface RibbonBarProps {
|
||||
onTabChange: (tab: string) => void;
|
||||
}
|
||||
|
||||
const RibbonBar: React.FC<RibbonBarProps> = ({ onTabChange }) => {
|
||||
const [activeTab, setActiveTab] = useState('draw');
|
||||
|
||||
const tabs = [
|
||||
{ id: 'draw', label: 'Draw', icon: '✏️' },
|
||||
{ id: 'modify', label: 'Modify', icon: '🔧' },
|
||||
{ id: 'annotate', label: 'Annotate', icon: '📝' },
|
||||
{ id: 'view', label: 'View', icon: '👁️' },
|
||||
{ id: 'tools', label: 'Tools', icon: '🛠️' },
|
||||
];
|
||||
|
||||
const handleTabClick = (tabId: string) => {
|
||||
setActiveTab(tabId);
|
||||
onTabChange(tabId);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="ribbon-bar" role="menubar" aria-label="CAD Functions">
|
||||
{tabs.map((tab) => (
|
||||
<button
|
||||
key={tab.id}
|
||||
className={`ribbon-tab ${activeTab === tab.id ? 'active' : ''}`}
|
||||
onClick={() => handleTabClick(tab.id)}
|
||||
aria-pressed={activeTab === tab.id}
|
||||
role="menuitemradio"
|
||||
>
|
||||
<span className="tab-icon" aria-hidden="true">{tab.icon}</span>
|
||||
<span className="tab-label">{tab.label}</span>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default RibbonBar;
|
||||
Reference in New Issue
Block a user