@@ -1,6 +1,7 @@
11package models
22
33import (
4+ "fmt"
45 "slices"
56
67 tea "github.com/charmbracelet/bubbletea/v2"
@@ -9,6 +10,7 @@ import (
910 "github.com/charmbracelet/crush/internal/tui/components/completions"
1011 "github.com/charmbracelet/crush/internal/tui/components/core/list"
1112 "github.com/charmbracelet/crush/internal/tui/components/dialogs/commands"
13+ "github.com/charmbracelet/crush/internal/tui/styles"
1214 "github.com/charmbracelet/crush/internal/tui/util"
1315 "github.com/charmbracelet/lipgloss/v2"
1416)
@@ -18,11 +20,12 @@ type ModelListComponent struct {
1820 modelType int
1921}
2022
21−func NewModelListComponent(keyMap list.KeyMap, inputStyle lipgloss.Style) *ModelListComponent {
23+func NewModelListComponent(keyMap list.KeyMap, inputStyle lipgloss.Style, inputPlaceholder string) *ModelListComponent {
2224 modelList := list.New(
2325 list.WithFilterable(true),
2426 list.WithKeyMap(keyMap),
2527 list.WithInputStyle(inputStyle),
28+ list.WithFilterPlaceholder(inputPlaceholder),
2629 list.WithWrapNavigation(true),
2730 )
2831
@@ -59,6 +62,7 @@ func (m *ModelListComponent) SelectedIndex() int {
5962}
6063
6164func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
65+ t := styles.CurrentTheme()
6266 m.modelType = modelType
6367
6468 providers, err := config.Providers()
@@ -77,6 +81,9 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
7781 currentModel = cfg.Models[config.SelectedModelTypeSmall]
7882 }
7983
84+ configuredIcon := t.S().Base.Foreground(t.Success).Render(styles.CheckIcon)
85+ configured := fmt.Sprintf("%s %s", configuredIcon, t.S().Subtle.Render("Configured"))
86+
8087 // Create a map to track which providers we've already added
8188 addedProviders := make(map[string]bool)
8289
@@ -120,7 +127,9 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
120127 if name == "" {
121128 name = string(configProvider.ID)
122129 }
123− modelItems = append(modelItems, commands.NewItemSection(name))
130+ section := commands.NewItemSection(name)
131+ section.SetInfo(configured)
132+ modelItems = append(modelItems, section)
124133 for _, model := range configProvider.Models {
125134 modelItems = append(modelItems, completions.NewCompletionItem(model.Name, ModelOption{
126135 Provider: configProvider,
@@ -150,7 +159,12 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
150159 if name == "" {
151160 name = string(provider.ID)
152161 }
153− modelItems = append(modelItems, commands.NewItemSection(name))
162+
163+ section := commands.NewItemSection(name)
164+ if _, ok := cfg.Providers[string(provider.ID)]; ok {
165+ section.SetInfo(configured)
166+ }
167+ modelItems = append(modelItems, section)
154168 for _, model := range provider.Models {
155169 modelItems = append(modelItems, completions.NewCompletionItem(model.Name, ModelOption{
156170 Provider: provider,
@@ -169,3 +183,7 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
169183func (m *ModelListComponent) GetModelType() int {
170184 return m.modelType
171185}
186+
187+func (m *ModelListComponent) SetInputPlaceholder(placeholder string) {
188+ m.list.SetFilterPlaceholder(placeholder)
189+}