From d6d45bdc6388dcc7e5e5248c6b4645d90159bb18 Mon Sep 17 00:00:00 2001 From: adamdottv <2363879+adamdottv@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:58:46 -0500 Subject: feat: share and init commands --- packages/tui/internal/components/chat/editor.go | 18 ++++++++++++------ packages/tui/internal/components/dialog/complete.go | 8 ++++---- packages/tui/internal/components/list/list.go | 5 +++++ 3 files changed, 21 insertions(+), 10 deletions(-) (limited to 'packages/tui/internal/components') diff --git a/packages/tui/internal/components/chat/editor.go b/packages/tui/internal/components/chat/editor.go index 3c005a32e..349087fbe 100644 --- a/packages/tui/internal/components/chat/editor.go +++ b/packages/tui/internal/components/chat/editor.go @@ -101,6 +101,8 @@ func (m *editorComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switch msg := msg.(type) { case dialog.ThemeChangedMsg: m.textarea = createTextArea(&m.textarea) + m.spinner = createSpinner() + return m, m.spinner.Tick case dialog.CompletionSelectedMsg: if msg.IsCommand { // Execute the command directly @@ -421,12 +423,8 @@ func createTextArea(existing *textarea.Model) textarea.Model { return ta } -func (m *editorComponent) GetValue() string { - return m.textarea.Value() -} - -func NewEditorComponent(app *app.App) layout.ModelWithView { - s := spinner.New( +func createSpinner() spinner.Model { + return spinner.New( spinner.WithSpinner(spinner.Ellipsis), spinner.WithStyle( styles. @@ -434,6 +432,14 @@ func NewEditorComponent(app *app.App) layout.ModelWithView { Background(theme.CurrentTheme().Background()). Width(3)), ) +} + +func (m *editorComponent) GetValue() string { + return m.textarea.Value() +} + +func NewEditorComponent(app *app.App) layout.ModelWithView { + s := createSpinner() ta := createTextArea(nil) return &editorComponent{ diff --git a/packages/tui/internal/components/dialog/complete.go b/packages/tui/internal/components/dialog/complete.go index 7a15c8c70..d87a331cf 100644 --- a/packages/tui/internal/components/dialog/complete.go +++ b/packages/tui/internal/components/dialog/complete.go @@ -13,7 +13,6 @@ import ( ) type CompletionItem struct { - title string Title string Value string } @@ -35,8 +34,7 @@ func (ci *CompletionItem) Render(selected bool, width int) string { if selected { itemStyle = itemStyle. - Foreground(t.Primary()). - Bold(true) + Foreground(t.Primary()) } title := itemStyle.Render( @@ -62,6 +60,7 @@ type CompletionProvider interface { GetId() string GetEntry() CompletionItemI GetChildEntries(query string) ([]CompletionItemI, error) + GetEmptyMessage() string } type CompletionSelectedMsg struct { @@ -250,6 +249,7 @@ func (c *completionDialogComponent) IsEmpty() bool { func (c *completionDialogComponent) SetProvider(provider CompletionProvider) { if c.completionProvider.GetId() != provider.GetId() { c.completionProvider = provider + c.list.SetEmptyMessage(" " + provider.GetEmptyMessage()) } } @@ -259,7 +259,7 @@ func NewCompletionDialogComponent(completionProvider CompletionProvider) Complet li := list.NewListComponent( []CompletionItemI{}, 7, - "No matches", + completionProvider.GetEmptyMessage(), false, ) diff --git a/packages/tui/internal/components/list/list.go b/packages/tui/internal/components/list/list.go index 8be3c7b01..fea77e902 100644 --- a/packages/tui/internal/components/list/list.go +++ b/packages/tui/internal/components/list/list.go @@ -18,6 +18,7 @@ type List[T ListItem] interface { SetItems(items []T) GetItems() []T SetSelectedIndex(idx int) + SetEmptyMessage(msg string) IsEmpty() bool } @@ -100,6 +101,10 @@ func (c *listComponent[T]) GetItems() []T { return c.items } +func (c *listComponent[T]) SetEmptyMessage(msg string) { + c.fallbackMsg = msg +} + func (c *listComponent[T]) IsEmpty() bool { return len(c.items) == 0 } -- cgit v1.2.3