49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:flutter/material.dart';
 | |
| import 'package:gap/gap.dart';
 | |
| import 'package:material_symbols_icons/material_symbols_icons.dart';
 | |
| import 'package:island/models/thought.dart';
 | |
| 
 | |
| class TokenInfo extends StatelessWidget {
 | |
|   const TokenInfo({super.key, required this.thought});
 | |
| 
 | |
|   final SnThinkingThought thought;
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     if (thought.tokenCount == null && thought.modelName == null) {
 | |
|       return const SizedBox.shrink();
 | |
|     }
 | |
| 
 | |
|     return Column(
 | |
|       crossAxisAlignment: CrossAxisAlignment.start,
 | |
|       children: [
 | |
|         Row(
 | |
|           children: [
 | |
|             if (thought.modelName != null) ...[
 | |
|               const Icon(Symbols.neurology, size: 16),
 | |
|               const Gap(4),
 | |
|               Text(
 | |
|                 '${thought.modelName}',
 | |
|                 style: Theme.of(context).textTheme.bodySmall?.copyWith(
 | |
|                   color: Theme.of(context).colorScheme.onSurfaceVariant,
 | |
|                 ),
 | |
|               ),
 | |
|               const Gap(16),
 | |
|             ],
 | |
|             if (thought.tokenCount != null) ...[
 | |
|               const Icon(Symbols.token, size: 16),
 | |
|               const Gap(4),
 | |
|               Text(
 | |
|                 '${thought.tokenCount} tokens',
 | |
|                 style: Theme.of(context).textTheme.bodySmall?.copyWith(
 | |
|                   color: Theme.of(context).colorScheme.onSurfaceVariant,
 | |
|                 ),
 | |
|               ),
 | |
|             ],
 | |
|           ],
 | |
|         ),
 | |
|       ],
 | |
|     );
 | |
|   }
 | |
| }
 |