mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-07-22 20:36:08 +00:00
feat: improve sidebar usability
This commit is contained in:
committed by
huanghuoguoguo
parent
1eef5d2344
commit
7cd04a2cff
@@ -83,6 +83,7 @@ import {
|
||||
SidebarMenuSub,
|
||||
SidebarMenuSubButton,
|
||||
SidebarMenuSubItem,
|
||||
SidebarRail,
|
||||
useSidebar,
|
||||
} from '@/components/ui/sidebar';
|
||||
import {
|
||||
@@ -726,7 +727,12 @@ function NavItems({
|
||||
)}
|
||||
/>
|
||||
) : null}
|
||||
<span className="truncate">{item.name}</span>
|
||||
<span className="min-w-0 flex-1 truncate">{item.name}</span>
|
||||
{isBot && item.legacyAdapter && (
|
||||
<span className="ml-auto shrink-0 rounded border border-amber-200 bg-amber-50 px-1.5 py-0.5 text-[10px] font-medium leading-none text-amber-700 dark:border-amber-900/50 dark:bg-amber-950/30 dark:text-amber-300">
|
||||
{t('bots.legacyAdapterBadge')}
|
||||
</span>
|
||||
)}
|
||||
</button>
|
||||
);
|
||||
}
|
||||
@@ -789,7 +795,14 @@ function NavItems({
|
||||
)}
|
||||
/>
|
||||
) : null}
|
||||
<span className="truncate">{item.name}</span>
|
||||
<span className="min-w-0 flex-1 truncate">
|
||||
{item.name}
|
||||
</span>
|
||||
{isBot && item.legacyAdapter && (
|
||||
<span className="shrink-0 rounded border border-amber-200 bg-amber-50 px-1.5 py-0.5 text-[10px] font-medium leading-none text-amber-700 dark:border-amber-900/50 dark:bg-amber-950/30 dark:text-amber-300">
|
||||
{t('bots.legacyAdapterBadge')}
|
||||
</span>
|
||||
)}
|
||||
{item.kind && (
|
||||
<span
|
||||
className="ml-auto flex shrink-0 items-center text-muted-foreground"
|
||||
@@ -2241,6 +2254,7 @@ export default function HomeSidebar({
|
||||
</SidebarMenuItem>
|
||||
</SidebarMenu>
|
||||
</SidebarFooter>
|
||||
<SidebarRail />
|
||||
</Sidebar>
|
||||
|
||||
<Dialog open={feedbackOpen} onOpenChange={setFeedbackOpen}>
|
||||
|
||||
@@ -19,6 +19,7 @@ export interface SidebarEntityItem {
|
||||
updatedAt?: string; // ISO timestamp for sorting by most recently edited
|
||||
// Bot-specific fields
|
||||
enabled?: boolean;
|
||||
legacyAdapter?: boolean;
|
||||
// MCP-specific fields
|
||||
runtimeStatus?: 'connecting' | 'connected' | 'error';
|
||||
// Plugin-specific fields
|
||||
@@ -117,7 +118,15 @@ export function SidebarDataProvider({
|
||||
|
||||
const refreshBots = useCallback(async () => {
|
||||
try {
|
||||
const resp = await httpClient.getBots();
|
||||
const [resp, adaptersResp] = await Promise.all([
|
||||
httpClient.getBots(),
|
||||
httpClient.getAdapters().catch(() => ({ adapters: [] })),
|
||||
]);
|
||||
const legacyAdapterNames = new Set(
|
||||
adaptersResp.adapters
|
||||
.filter((adapter) => adapter.spec.legacy)
|
||||
.map((adapter) => adapter.name),
|
||||
);
|
||||
setBots(
|
||||
resp.bots.map((bot) => ({
|
||||
id: bot.uuid || '',
|
||||
@@ -126,6 +135,7 @@ export function SidebarDataProvider({
|
||||
iconURL: httpClient.getAdapterIconURL(bot.adapter),
|
||||
updatedAt: bot.updated_at,
|
||||
enabled: bot.enable ?? true,
|
||||
legacyAdapter: legacyAdapterNames.has(bot.adapter),
|
||||
})),
|
||||
);
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user