diff --git a/internal/ui/dialog/oauth.go b/internal/ui/dialog/oauth.go index 25fa08dbe24c4cbd6f7afd3909b399ee7d0974d0..15444db26c8babaf91a76f45f83afa656222e2f0 100644 --- a/internal/ui/dialog/oauth.go +++ b/internal/ui/dialog/oauth.go @@ -222,7 +222,7 @@ func (m *OAuth) headerContent() string { textStyle = t.Dialog.PrimaryText dialogStyle = t.Dialog.View.Width(m.width) headerOffset = titleStyle.GetHorizontalFrameSize() + dialogStyle.GetHorizontalFrameSize() - dialogTitle = fmt.Sprintf("Authenticate with %s", m.oAuthProvider.name()) + dialogTitle = fmt.Sprintf("Let’s authenticate with %s", m.oAuthProvider.name()) ) if m.isOnboarding { return textStyle.Render(dialogTitle) @@ -232,13 +232,13 @@ func (m *OAuth) headerContent() string { func (m *OAuth) innerDialogContent() string { var ( - t = m.com.Styles - whiteStyle = t.Dialog.OAuth.Instructions - primaryStyle = t.Dialog.OAuth.Enter - greenStyle = t.Dialog.OAuth.Success - linkStyle = t.Dialog.OAuth.Link - errorStyle = t.Dialog.OAuth.ErrorText - mutedStyle = t.Dialog.OAuth.StatusText + t = m.com.Styles + instructionStyle = t.Dialog.OAuth.Instructions + enterKeyStyle = t.Dialog.OAuth.Enter + successStyle = t.Dialog.OAuth.Success + linkStyle = t.Dialog.OAuth.Link + errorStyle = t.Dialog.OAuth.ErrorText + statusTextStyle = t.Dialog.OAuth.StatusText ) switch m.State { @@ -248,8 +248,8 @@ func (m *OAuth) innerDialogContent() string { Width(m.width - 2). Align(lipgloss.Center). Render( - greenStyle.Render(m.spinner.View()) + - mutedStyle.Render("Initializing..."), + successStyle.Render(m.spinner.View()) + + statusTextStyle.Render("Initializing..."), ) case OAuthStateDisplay: @@ -257,9 +257,9 @@ func (m *OAuth) innerDialogContent() string { Margin(0, 1). Width(m.width - 2). Render( - whiteStyle.Render("Press ") + - primaryStyle.Render("enter") + - whiteStyle.Render(" to copy the code below and open the browser."), + instructionStyle.Render("Press ") + + enterKeyStyle.Render("enter") + + instructionStyle.Render(" to copy the code below and open the browser."), ) codeBox := lipgloss.NewStyle(). @@ -273,16 +273,16 @@ func (m *OAuth) innerDialogContent() string { ) link := linkStyle.Hyperlink(m.verificationURL, "id=oauth-verify").Render(m.verificationURL) - url := mutedStyle. + url := statusTextStyle. Margin(0, 1). Width(m.width - 2). - Render("Browser not opening? Refer to\n" + link) + Render("Browser not opening? Pay a visit to:\n" + link) waiting := lipgloss.NewStyle(). Margin(0, 1). Width(m.width - 2). Render( - greenStyle.Render(m.spinner.View()) + mutedStyle.Render("Verifying..."), + successStyle.Render(m.spinner.View()) + statusTextStyle.Render("Verifying..."), ) return lipgloss.JoinVertical( @@ -299,7 +299,7 @@ func (m *OAuth) innerDialogContent() string { ) case OAuthStateSuccess: - return greenStyle. + return successStyle. Margin(1). Width(m.width - 2). Render("Authentication successful!") diff --git a/internal/ui/styles/quickstyle.go b/internal/ui/styles/quickstyle.go index 9eca3461208f0bc1e2f30b5408460a9c2b0a727c..056308824acc80bf84930d1d1f87015796794be8 100644 --- a/internal/ui/styles/quickstyle.go +++ b/internal/ui/styles/quickstyle.go @@ -14,13 +14,14 @@ import ( "github.com/charmbracelet/x/exp/charmtone" ) -// quickStyleOpts is the palette of colors used by quickStyle to build a -// complete Styles value. Each field maps to a semantic role in the UI. +// quickStyleOpts is the palette of colors used by quickStyle to simplify the +// process of building a theme. type quickStyleOpts struct { // Brand. primary color.Color secondary color.Color accent color.Color + keyword color.Color // Default foreground and background colors. fgBase color.Color @@ -55,12 +56,11 @@ type quickStyleOpts struct { successMostSubtle color.Color } -// quickStyle builds a complete Styles value from a palette of semantic -// colors. Themes should populate quickStyleOpts and call this rather than -// re-implementing every style rule. +// quickStyle builds the default Styles (that is, the default theme, Charmtone +// Pantera) from a palette of semi-semanticly-named colors. // -// The idea here is that you can do most of the work with quickStyle, then -// add overrides as needed. +// The idea here is that you can do most of the work on a theme with quickStyle, +// then add overrides as needed. func quickStyle(o quickStyleOpts) Styles { var ( base = lipgloss.NewStyle().Foreground(o.fgBase) @@ -863,11 +863,11 @@ func quickStyle(o quickStyleOpts) Styles { // OAuth dialog s.Dialog.OAuth.Spinner = base.Foreground(o.successMoreSubtle) - s.Dialog.OAuth.Instructions = lipgloss.NewStyle().Foreground(o.primary) - s.Dialog.OAuth.UserCode = lipgloss.NewStyle().Bold(true).Foreground(o.primary) + s.Dialog.OAuth.Instructions = lipgloss.NewStyle().Foreground(o.fgBase) + s.Dialog.OAuth.UserCode = lipgloss.NewStyle().Bold(true).Foreground(o.fgBase) s.Dialog.OAuth.Success = lipgloss.NewStyle().Foreground(o.successMoreSubtle) s.Dialog.OAuth.Link = lipgloss.NewStyle().Foreground(o.successMostSubtle).Underline(true) - s.Dialog.OAuth.Enter = lipgloss.NewStyle().Foreground(o.primary) + s.Dialog.OAuth.Enter = lipgloss.NewStyle().Foreground(o.keyword) s.Dialog.OAuth.ErrorText = lipgloss.NewStyle().Foreground(o.error) s.Dialog.OAuth.StatusText = lipgloss.NewStyle().Foreground(o.fgMoreSubtle) s.Dialog.OAuth.UserCodeBg = o.bgLeastVisible diff --git a/internal/ui/styles/themes.go b/internal/ui/styles/themes.go index aba9a263f0beb07fd0146e98e339fe6dac39010f..754abee7b4329f7237fced66340f4f129cbd59f3 100644 --- a/internal/ui/styles/themes.go +++ b/internal/ui/styles/themes.go @@ -21,6 +21,7 @@ func CharmtonePantera() Styles { primary: charmtone.Charple, secondary: charmtone.Dolly, accent: charmtone.Bok, + keyword: charmtone.Blush, fgBase: charmtone.Ash, fgMoreSubtle: charmtone.Squid,