This component documentation is currently being developed. Some features may be incomplete.
Teams Toolbar
View in Pattern LabHTML Markup
<div class="hoo-teams-toolbar">
<div class="hoo-cmdbar has-overflow" role="toolbar">
<div class="hoo-overflow">
<div class="hoo-buttoncmd" aria-haspopup="true" >
<button class="hoo-buttoncmd" aria-haspopup="true"><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-plus" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-plus">
</use>
</svg></span></span><span class="hoo-button-label">New Item</span><span class="hoo-button-icon hoo-buttonchevron"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-arrow-down" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-arrow-down">
</use>
</svg></span></span>
</button>
<menu class="hoo-buttonflyout">
<li class="hoo-buttonflyout-item">
<button class="hoo-buttonaction"><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-ninjacat" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-ninjacat">
</use>
</svg></span></span><span class="hoo-button-label">Email message</span>
</button>
</li>
<li class="hoo-buttonflyout-item">
<button class="hoo-buttonaction"><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-minus" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-minus">
</use>
</svg></span></span><span class="hoo-button-label">Calendar Event</span>
</button>
</li>
</menu>
</div>
<div class="hoo-buttoncmd" >
<button class="hoo-buttoncmd" ><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-plus" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-plus">
</use>
</svg></span></span><span class="hoo-button-label">New Item</span>
</button>
</div>
<div class="hoo-buttoncmd" aria-haspopup="true" >
<button class="hoo-buttoncmd" aria-haspopup="true"><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-plus" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-plus">
</use>
</svg></span></span><span class="hoo-button-label">New Item</span><span class="hoo-button-icon hoo-buttonchevron"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-arrow-down" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-arrow-down">
</use>
</svg></span></span>
</button>
<menu class="hoo-buttonflyout">
<li class="hoo-buttonflyout-item">
<button class="hoo-buttonaction"><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-ninjacat" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-ninjacat">
</use>
</svg></span></span><span class="hoo-button-label">Email message</span>
</button>
</li>
<li class="hoo-buttonflyout-item">
<button class="hoo-buttonaction"><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-minus" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-minus">
</use>
</svg></span></span><span class="hoo-button-label">Calendar Event</span>
</button>
</li>
</menu>
</div>
<div class="hoo-buttoncmd" >
<button class="hoo-buttoncmd" ><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-plus" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-plus">
</use>
</svg></span></span><span class="hoo-button-label">New Item</span>
</button>
</div>
<div class="hoo-buttoncmd" aria-haspopup="true" >
<button class="hoo-buttoncmd" aria-haspopup="true"><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg " aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#">
</use>
</svg></span></span><span class="hoo-button-label">New Item</span><span class="hoo-button-icon hoo-buttonchevron"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-arrow-down" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-arrow-down">
</use>
</svg></span></span>
</button>
<menu class="hoo-buttonflyout">
<li class="hoo-buttonflyout-item">
<button class="hoo-buttonaction"><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-ninjacat" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-ninjacat">
</use>
</svg></span></span><span class="hoo-button-label">Email message</span>
</button>
</li>
<li class="hoo-buttonflyout-item">
<button class="hoo-buttonaction"><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-minus" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-minus">
</use>
</svg></span></span><span class="hoo-button-label">Calendar Event</span>
</button>
</li>
</menu>
</div>
<div class="hoo-buttoncmd" >
<button class="hoo-buttoncmd" ><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-plus" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-plus">
</use>
</svg></span></span><span class="hoo-button-label">New Item</span>
</button>
</div>
<div class="hoo-buttonicon-overflow" aria-haspopup="true">
<button class="hoo-buttonicon-flyout" aria-haspopup="true"><span class="hoo-button-icon" aria-hidden="true"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-ellipses" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-ellipses">
</use>
</svg></span></span>
</button>
<menu class="hoo-buttonflyout">
</menu>
</div>
</div>
</div>
</div>
Teams Toolbar
The Teams Toolbar component provides a Microsoft Teams-style toolbar that combines command bar functionality with search capabilities. This specialized molecular component creates a unified interface for application commands and content discovery, maintaining consistency with Microsoft Teams design language.
Overview
The Teams Toolbar is a composite molecular component that integrates a command bar with overflow functionality and a search box, providing a familiar interface experience similar to Microsoft Teams applications. It balances powerful functionality with clean design, offering users both quick actions and search capabilities within a single interface element.
Features
Design Integration
- Microsoft Teams Styling: Authentic Teams visual design language
- Elevated Surface: Subtle elevation (level 4) for prominence
- Consistent Height: Standard 48px height for interface consistency
- Flexible Layout: Responsive flex container adapting to content needs
Functional Components
- Command Bar Integration: Full command bar with overflow behavior
- Search Integration: Seamless search box with Teams styling
- Responsive Behavior: Intelligent adaptation to container constraints
- Action Prioritization: Smart overflow management for secondary commands
Layout Characteristics
- Horizontal Flow: Left-aligned commands, right-aligned search
- Space Distribution: Equal flex growth for balanced spacing
- Edge Padding: Consistent 20px horizontal padding
- Centered Alignment: Vertically centered content for visual balance
Structure
The Teams Toolbar consists of two main molecular components:
- Command Bar with Overflow - Action commands with responsive overflow
- Search Box - Integrated search functionality
Data Structure
{
"cmdBarButtons": [
{
"iconAction": "icon-plus",
"label": "New Item",
"ddItems": [
{
"label": "Document",
"icon": "icon-document"
},
{
"label": "Folder",
"icon": "icon-folder"
}
]
},
{
"iconAction": "icon-upload",
"label": "Upload",
"ddItems": [
{
"label": "Files",
"icon": "icon-document"
},
{
"label": "Folder",
"icon": "icon-folder"
}
]
},
{
"iconAction": "icon-share",
"label": "Share"
}
],
"searchbox": {
"placeholder": "Search files, people, and messages...",
"ariaLabel": "Search application content"
}
}
CSS Classes
Container Classes
.hoo-teams-toolbar: Main Teams toolbar container with elevation and layout
Inherited Classes
From child components:
- Command Bar:
.hoo-cmdbar,.hoo-buttoncmd,.hoo-overflow-button - Search Box:
.hoo-searchbox,.hoo-searchbox-input,.hoo-search-icon
Styling
Visual Design
- Background: Inherits from theme, typically white or Teams surface color
- Elevation: Level 4 shadow for subtle depth and separation
- Height: Fixed 48px height maintaining interface consistency
- Padding: 20px horizontal padding for adequate spacing
Layout Behavior
- Display: Flex row with space-between justification
- Flex Growth: Each child component grows equally (flex: 1)
- Alignment: Vertically centered items with consistent baseline
- Overflow: Command bar handles overflow, search maintains minimum width
Responsive Characteristics
- Large Screens: Full command bar with extended search box
- Medium Screens: Prioritized commands with compact search
- Small Screens: Essential commands only with minimal search box
- Mobile: Touch-optimized button sizes with accessible search
Integration Patterns
Application Header
<header class="app-header">
<div class="app-branding">
<img src="logo.svg" alt="Application name">
</div>
{{> molecules-teams-toolbar }}
<div class="app-user-menu">
{{> molecules-user-menu }}
</div>
</header>
Content Area Toolbar
<main class="content-area">
<section class="content-toolbar">
{{> molecules-teams-toolbar }}
</section>
<section class="content-body">
<!-- Main content -->
</section>
</main>
Dashboard Integration
<div class="dashboard-container">
{{> molecules-teams-toolbar }}
<div class="dashboard-content">
{{> organism-dashboard-grid }}
</div>
</div>
JavaScript Integration
Initialization
Event Handling
Use Cases
Microsoft Teams Applications
- File Management: Document libraries with search and action capabilities
- Channel Interfaces: Team content management with integrated search
- Application Dashboards: Unified command and search interface
SharePoint Online
- Modern Pages: Site content management interfaces
- Document Libraries: File and folder management with search
- List Views: Data management with filtering and actions
Office 365 Applications
- Web Applications: Consistent interface across Office 365 suite
- Power Platform: Custom applications with professional interface
- Teams Apps: Tab applications requiring command and search
Enterprise Applications
- Line of Business: Custom enterprise applications
- Productivity Tools: Internal tools requiring unified interface
- Collaboration Platforms: Team-focused applications
Accessibility
Keyboard Navigation
- Tab Order: Logical progression through commands then search
- Arrow Keys: Command bar navigation with arrow key support
- Enter/Space: Command activation with standard key support
- Escape: Close overflow menus and clear search focus
Screen Reader Support
- Toolbar Role: Proper toolbar landmark with descriptive label
- Search Role: Search landmark for content discovery
- Button Labels: Clear, descriptive labels for all commands
- State Announcements: Dynamic state changes announced properly
Visual Accessibility
- Focus Indicators: Clear visual focus states for all interactive elements
- High Contrast: Support for high contrast themes and Teams themes
- Color Independence: No color-only information conveyance
- Text Scaling: Support for browser zoom up to 200%
Touch Accessibility
- Touch Targets: Minimum 44px touch target size maintained
- Gesture Support: Standard touch gestures for mobile interaction
- Spacing: Adequate spacing between interactive elements
- Responsive Touch: Touch-optimized layouts for mobile devices
Performance Considerations
Rendering Optimization
- CSS Grid/Flexbox: Efficient layout with modern CSS features
- Component Isolation: Independent component initialization
- Event Delegation: Efficient event handling for dynamic content
- Lazy Loading: Progressive enhancement for advanced features
Search Performance
- Debounced Input: Debounced search input to prevent excessive queries
- Caching: Client-side caching of search results and suggestions
- Progressive Loading: Incremental search result loading
- Offline Support: Cached search capability for offline scenarios
Memory Management
- Event Cleanup: Proper event listener cleanup on component destruction
- Reference Management: Avoid memory leaks with proper reference handling
- Dynamic Content: Efficient handling of dynamic toolbar content
Browser Support
Modern Browsers
- Chrome 87+: Full feature support including container queries
- Firefox 110+: Complete compatibility with all features
- Safari 16+: Full support including advanced CSS features
- Edge 87+: Complete modern feature support
Teams Client Support
- Teams Desktop: Full integration with Teams desktop application
- Teams Web: Complete web client compatibility
- Teams Mobile: Mobile-optimized experience and touch support
Fallback Support
- IE 11: Graceful degradation with limited functionality
- Older Browsers: Progressive enhancement approach
- No JavaScript: Core functionality maintained without JavaScript
Teams Theme Integration
Theme System
- Teams Light: Default light theme matching Teams visual design
- Teams Dark: Dark theme for low-light environments
- Teams High Contrast: Accessibility-focused high contrast theme
CSS Custom Properties
Dynamic Theming
Molecular Components
- Command Bar with Overflow - Core command functionality
- Search Box - Integrated search capabilities
- Command Bar - Basic command bar functionality
Template Components
- Teams Dashboard - Complete Teams dashboard layout
- Teams Splash Screen - Teams application welcome screens
Theme Components
- Teams Light Theme - Default Teams light appearance
- Teams Dark Theme - Teams dark mode support
- Teams High Contrast Theme - Accessibility-focused theming
SCSS Import
// Initialize search functionality import { initSearch } from ‘@n8d/htwoo-core/js/search.js’;
document.addEventListener(‘DOMContentLoaded’, () => { // Initialize both components initMenu(); initSearch(); });
## Responsive Behavior
The Teams Toolbar adapts to different screen sizes by:
- Utilizing command bar overflow for limited space
- Adjusting search box width based on available space
- Maintaining usability on mobile devices
- Preserving important commands while hiding less critical ones
## SCSS
## Accessibility
- Inherits accessibility features from child components
- Maintains logical tab order through toolbar and search
- Provides proper semantic structure with landmarks
- Supports keyboard navigation (Tab, Enter, Space)
- Includes appropriate ARIA attributes from component parts
- Ensures search input has proper labeling
- Maintains focus management between toolbar sections