Phase 7 of the monorepo maintainability plan: New files created: - model/jobs.go - Job type, JobStatus constants, list.Item interface - model/messages.go - tea.Msg types (JobsLoadedMsg, StatusMsg, TickMsg, etc.) - model/styles.go - NewJobListDelegate(), JobListTitleStyle(), SpinnerStyle() - model/keys.go - KeyMap struct, DefaultKeys() function Modified files: - model/state.go - reduced from 226 to ~130 lines - Removed: Job, JobStatus, KeyMap, Keys, inline styles - Kept: State struct, domain re-exports, ViewMode, DatasetInfo, InitialState() - controller/commands.go - use model. prefix for message types - controller/controller.go - use model. prefix for message types - controller/settings.go - use model.SettingsContentMsg Deleted files: - controller/keys.go (moved to model/keys.go since State references KeyMap) Result: - No file >150 lines in model/ package - Single concern per file: state, jobs, messages, styles, keys - All 41 test packages pass
32 lines
992 B
Go
32 lines
992 B
Go
// Package model provides TUI data structures and state management
|
|
package model
|
|
|
|
import (
|
|
"github.com/charmbracelet/bubbles/list"
|
|
"github.com/charmbracelet/lipgloss"
|
|
)
|
|
|
|
// NewJobListDelegate creates a styled delegate for the job list
|
|
func NewJobListDelegate() list.DefaultDelegate {
|
|
delegate := list.NewDefaultDelegate()
|
|
delegate.Styles.SelectedTitle = delegate.Styles.SelectedTitle.
|
|
Foreground(lipgloss.Color("170")).
|
|
Bold(true)
|
|
delegate.Styles.SelectedDesc = delegate.Styles.SelectedDesc.
|
|
Foreground(lipgloss.Color("246"))
|
|
return delegate
|
|
}
|
|
|
|
// JobListTitleStyle returns the style for the job list title
|
|
func JobListTitleStyle() lipgloss.Style {
|
|
return lipgloss.NewStyle().
|
|
Bold(true).
|
|
Foreground(lipgloss.AdaptiveColor{Light: "#2980b9", Dark: "#7aa2f7"}).
|
|
Padding(0, 0, 1, 0)
|
|
}
|
|
|
|
// SpinnerStyle returns the style for the spinner
|
|
func SpinnerStyle() lipgloss.Style {
|
|
return lipgloss.NewStyle().
|
|
Foreground(lipgloss.AdaptiveColor{Light: "#2980b9", Dark: "#7aa2f7"})
|
|
}
|