{#snippet viewButton(opts: { view: ChatMessageStatsView; icon: Component; label: string; tooltipText: string; disabled?: boolean; })} {@const IconComponent = opts.icon} {#snippet child({ props })} {/snippet}

{opts.tooltipText}

{/snippet}
{#if isSwitchable}
{#if hasPromptStats || isLive} {@render viewButton({ icon: BookOpenText, label: 'Reading', tooltipText: 'Processing', view: ChatMessageStatsView.READING })} {/if} {@render viewButton({ disabled: isGenerationDisabled, icon: Sparkles, label: 'Generation', tooltipText: isGenerationDisabled ? 'Waiting for tokens...' : 'Generation', view: ChatMessageStatsView.GENERATION })} {#if hasAgenticStats} {@render viewButton({ icon: Wrench, label: 'Tools', tooltipText: 'Tool calls', view: ChatMessageStatsView.TOOLS })} {#if !hideSummary} {@render viewButton({ icon: Layers, label: 'Summary', tooltipText: 'Agentic summary', view: ChatMessageStatsView.SUMMARY })} {/if} {/if}
{/if}
{#if activeView === ChatMessageStatsView.GENERATION && hasGenerationStats} {:else if activeView === ChatMessageStatsView.TOOLS && hasAgenticStats} {:else if activeView === ChatMessageStatsView.SUMMARY && hasAgenticStats} {:else if hasPromptStats && (mode === ChatMessageStatisticsMode.READING || isSwitchable)} {/if}