Files
metabuilder/fakemui/react/components/email/navigation/AccountTabs.tsx
johndoe6345789 89f83a7476 Organize fakemui folder: email components complete, docs consolidated
- Email components (Phase 2 COMPLETE):
  * Fixed 18 broken imports: @metabuilder/fakemui/hooks → ../../../src/utils/useAccessible
  * Renamed email-wip/ → email/ (production-ready)
  * Enabled exports in react/components/index.ts
  * All 22 email components now production-ready (1244 lines)

- Cleanup:
  * Removed wip/ directory (duplicate of src/utils/accessibility)
  * Preserved 15 Python/PyQt6 implementation files (full implementations, not stubs)
  * Moved 7 markdown files to fakemui/docs/ (better organization)

- Documentation:
  * Updated CLAUDE.md: Phase 2 email complete, added deletion safety gotcha
  * Created plan: txt/FAKEMUI_REORGANIZATION_PLAN_2026-02-01.txt

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 20:18:49 +00:00

55 lines
1.5 KiB
TypeScript

import React, { forwardRef } from 'react'
import { Tabs, Tab, TabsProps } from '..'
import { useAccessible } from '../../../src/utils/useAccessible'
export interface EmailAccount {
id: string
accountName: string
emailAddress: string
unreadCount?: number
}
export interface AccountTabsProps extends Omit<TabsProps, 'onChange'> {
accounts: EmailAccount[]
selectedAccountId?: string
onSelectAccount?: (accountId: string) => void
testId?: string
}
export const AccountTabs = forwardRef<HTMLDivElement, AccountTabsProps>(
({ accounts, selectedAccountId, onSelectAccount, testId: customTestId, ...props }, ref) => {
const accessible = useAccessible({
feature: 'email',
component: 'account-tabs',
identifier: customTestId || 'accounts'
})
return (
<Tabs
ref={ref}
value={selectedAccountId || (accounts[0]?.id ?? '')}
onChange={(_, value) => onSelectAccount?.(value as string)}
{...accessible}
{...props}
>
{accounts.map((account) => (
<Tab
key={account.id}
label={
<span className="account-tab">
<span className="account-name">{account.accountName}</span>
{account.unreadCount ? (
<span className="unread-badge">{account.unreadCount}</span>
) : null}
</span>
}
value={account.id}
/>
))}
</Tabs>
)
}
)
AccountTabs.displayName = 'AccountTabs'