diff --git a/go.mod b/go.mod index f7c8f4d1c11ea2bd7bcc747c94ddab224a63a7bf..86b3a8541ddc01679f4a6e25a02ea6599b6b3754 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/charmbracelet/glamour/v2 v2.0.0-20250516160903-6f1e2c8f9ebe github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.1.0.20250523195325-2d1af06b557c github.com/charmbracelet/x/ansi v0.9.3-0.20250602153603-fb931ed90413 - github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444 + github.com/charmbracelet/x/exp/charmtone v0.0.0-20250627134340-c144409e381c github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a github.com/disintegration/imageorient v0.0.0-20180920195336-8147d86e83ec github.com/fsnotify/fsnotify v1.8.0 @@ -41,7 +41,6 @@ require ( ) require ( - golang.org/x/term v0.31.0 // indirect cloud.google.com/go v0.116.0 // indirect cloud.google.com/go/auth v0.13.0 // indirect cloud.google.com/go/compute/metadata v0.6.0 // indirect @@ -108,7 +107,7 @@ require ( github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/sethvargo/go-retry v0.3.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.12.0 // indirect + github.com/spf13/afero v1.12.0 github.com/spf13/cast v1.7.1 // indirect github.com/spf13/pflag v1.0.6 // indirect github.com/subosito/gotenv v1.6.0 // indirect @@ -132,6 +131,7 @@ require ( golang.org/x/net v0.39.0 // indirect golang.org/x/sync v0.13.0 // indirect golang.org/x/sys v0.32.0 // indirect + golang.org/x/term v0.31.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genai v1.3.0 google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect diff --git a/go.sum b/go.sum index 56284da1290cd092f24115a9a71084564d62284d..3a0b0a6177b193cbbea1bb6d331e4b46fc19cb28 100644 --- a/go.sum +++ b/go.sum @@ -86,6 +86,8 @@ github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa h1:lphz github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa/go.mod h1:xBlh2Yi3DL3zy/2n15kITpg0YZardf/aa/hgUaIM6Rk= github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444 h1:IJDiTgVE56gkAGfq0lBEloWgkXMk4hl/bmuPoicI4R0= github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444/go.mod h1:T9jr8CzFpjhFVHjNjKwbAD7KwBNyFnj2pntAO7F2zw0= +github.com/charmbracelet/x/exp/charmtone v0.0.0-20250627134340-c144409e381c h1:2GELBLPgfSbHU53bsQhR9XIgNuVZ6w+Rz8RWV5Lq+A4= +github.com/charmbracelet/x/exp/charmtone v0.0.0-20250627134340-c144409e381c/go.mod h1:T9jr8CzFpjhFVHjNjKwbAD7KwBNyFnj2pntAO7F2zw0= github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a h1:FsHEJ52OC4VuTzU8t+n5frMjLvpYWEznSr/u8tnkCYw= github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= github.com/charmbracelet/x/exp/slice v0.0.0-20250611152503-f53cdd7e01ef h1:v7qwsZ2OxzlwvpKwz8dtZXp7fIJlcDEUOyFBNE4fz4Q= diff --git a/internal/tui/styles/crush.go b/internal/tui/styles/crush.go index 975c7f6080e654bad0a7d760543535bc6eea5827..f59b78ac2202a268337af48913fd2e3a397f4ef5 100644 --- a/internal/tui/styles/crush.go +++ b/internal/tui/styles/crush.go @@ -13,6 +13,7 @@ func NewCrushTheme() *Theme { Secondary: charmtone.Dolly, Tertiary: charmtone.Bok, Accent: charmtone.Zest, + // Backgrounds BgBase: charmtone.Pepper, BgBaseLighter: Lighten(charmtone.Pepper, 2), diff --git a/internal/tui/styles/theme.go b/internal/tui/styles/theme.go index b6a5b4d1e2b41b7bb1190d5a802bd48f4aeceec3..3a2790c6d4e4f8904f5aff92cb6641fcd8ecf320 100644 --- a/internal/tui/styles/theme.go +++ b/internal/tui/styles/theme.go @@ -13,6 +13,7 @@ import ( "github.com/charmbracelet/crush/internal/exp/diffview" "github.com/charmbracelet/glamour/v2/ansi" "github.com/charmbracelet/lipgloss/v2" + "github.com/charmbracelet/x/exp/charmtone" "github.com/lucasb-eyer/go-colorful" "github.com/rivo/uniseg" ) @@ -191,13 +192,12 @@ func (t *Theme) buildStyles() *Styles { }, }, - // TODO: update using the colors and add colors if missing Markdown: ansi.StyleConfig{ Document: ansi.StyleBlock{ StylePrimitive: ansi.StylePrimitive{ // BlockPrefix: "\n", // BlockSuffix: "\n", - Color: stringPtr("252"), + Color: stringPtr(charmtone.Smoke.Hex()), }, // Margin: uintPtr(defaultMargin), }, @@ -212,7 +212,7 @@ func (t *Theme) buildStyles() *Styles { Heading: ansi.StyleBlock{ StylePrimitive: ansi.StylePrimitive{ BlockSuffix: "\n", - Color: stringPtr("39"), + Color: stringPtr(charmtone.Malibu.Hex()), Bold: boolPtr(true), }, }, @@ -220,8 +220,8 @@ func (t *Theme) buildStyles() *Styles { StylePrimitive: ansi.StylePrimitive{ Prefix: " ", Suffix: " ", - Color: stringPtr("228"), - BackgroundColor: stringPtr("63"), + Color: stringPtr(charmtone.Zest.Hex()), + BackgroundColor: stringPtr(charmtone.Charple.Hex()), Bold: boolPtr(true), }, }, @@ -248,7 +248,7 @@ func (t *Theme) buildStyles() *Styles { H6: ansi.StyleBlock{ StylePrimitive: ansi.StylePrimitive{ Prefix: "###### ", - Color: stringPtr("35"), + Color: stringPtr(charmtone.Guac.Hex()), Bold: boolPtr(false), }, }, @@ -262,7 +262,7 @@ func (t *Theme) buildStyles() *Styles { Bold: boolPtr(true), }, HorizontalRule: ansi.StylePrimitive{ - Color: stringPtr("240"), + Color: stringPtr(charmtone.Charcoal.Hex()), Format: "\n--------\n", }, Item: ansi.StylePrimitive{ @@ -277,117 +277,117 @@ func (t *Theme) buildStyles() *Styles { Unticked: "[ ] ", }, Link: ansi.StylePrimitive{ - Color: stringPtr("30"), + Color: stringPtr(charmtone.Zinc.Hex()), Underline: boolPtr(true), }, LinkText: ansi.StylePrimitive{ - Color: stringPtr("35"), + Color: stringPtr(charmtone.Guac.Hex()), Bold: boolPtr(true), }, Image: ansi.StylePrimitive{ - Color: stringPtr("212"), + Color: stringPtr(charmtone.Cheeky.Hex()), Underline: boolPtr(true), }, ImageText: ansi.StylePrimitive{ - Color: stringPtr("243"), + Color: stringPtr(charmtone.Squid.Hex()), Format: "Image: {{.text}} →", }, Code: ansi.StyleBlock{ StylePrimitive: ansi.StylePrimitive{ Prefix: " ", Suffix: " ", - Color: stringPtr("203"), - BackgroundColor: stringPtr("236"), + Color: stringPtr(charmtone.Coral.Hex()), + BackgroundColor: stringPtr(charmtone.Charcoal.Hex()), }, }, CodeBlock: ansi.StyleCodeBlock{ StyleBlock: ansi.StyleBlock{ StylePrimitive: ansi.StylePrimitive{ - Color: stringPtr("244"), + Color: stringPtr(charmtone.Charcoal.Hex()), }, Margin: uintPtr(defaultMargin), }, Chroma: &ansi.Chroma{ Text: ansi.StylePrimitive{ - Color: stringPtr("#C4C4C4"), + Color: stringPtr(charmtone.Smoke.Hex()), }, Error: ansi.StylePrimitive{ - Color: stringPtr("#F1F1F1"), - BackgroundColor: stringPtr("#F05B5B"), + Color: stringPtr(charmtone.Butter.Hex()), + BackgroundColor: stringPtr(charmtone.Sriracha.Hex()), }, Comment: ansi.StylePrimitive{ - Color: stringPtr("#676767"), + Color: stringPtr(charmtone.Oyster.Hex()), }, CommentPreproc: ansi.StylePrimitive{ - Color: stringPtr("#FF875F"), + Color: stringPtr(charmtone.Bengal.Hex()), }, Keyword: ansi.StylePrimitive{ - Color: stringPtr("#00AAFF"), + Color: stringPtr(charmtone.Malibu.Hex()), }, KeywordReserved: ansi.StylePrimitive{ - Color: stringPtr("#FF5FD2"), + Color: stringPtr(charmtone.Pony.Hex()), }, KeywordNamespace: ansi.StylePrimitive{ - Color: stringPtr("#FF5F87"), + Color: stringPtr(charmtone.Pony.Hex()), }, KeywordType: ansi.StylePrimitive{ - Color: stringPtr("#6E6ED8"), + Color: stringPtr(charmtone.Guppy.Hex()), }, Operator: ansi.StylePrimitive{ - Color: stringPtr("#EF8080"), + Color: stringPtr(charmtone.Salmon.Hex()), }, Punctuation: ansi.StylePrimitive{ - Color: stringPtr("#E8E8A8"), + Color: stringPtr(charmtone.Zest.Hex()), }, Name: ansi.StylePrimitive{ - Color: stringPtr("#C4C4C4"), + Color: stringPtr(charmtone.Smoke.Hex()), }, NameBuiltin: ansi.StylePrimitive{ - Color: stringPtr("#FF8EC7"), + Color: stringPtr(charmtone.Cheeky.Hex()), }, NameTag: ansi.StylePrimitive{ - Color: stringPtr("#B083EA"), + Color: stringPtr(charmtone.Mauve.Hex()), }, NameAttribute: ansi.StylePrimitive{ - Color: stringPtr("#7A7AE6"), + Color: stringPtr(charmtone.Hazy.Hex()), }, NameClass: ansi.StylePrimitive{ - Color: stringPtr("#F1F1F1"), + Color: stringPtr(charmtone.Salt.Hex()), Underline: boolPtr(true), Bold: boolPtr(true), }, NameDecorator: ansi.StylePrimitive{ - Color: stringPtr("#FFFF87"), + Color: stringPtr(charmtone.Citron.Hex()), }, NameFunction: ansi.StylePrimitive{ - Color: stringPtr("#00D787"), + Color: stringPtr(charmtone.Guac.Hex()), }, LiteralNumber: ansi.StylePrimitive{ - Color: stringPtr("#6EEFC0"), + Color: stringPtr(charmtone.Julep.Hex()), }, LiteralString: ansi.StylePrimitive{ - Color: stringPtr("#C69669"), + Color: stringPtr(charmtone.Cumin.Hex()), }, LiteralStringEscape: ansi.StylePrimitive{ - Color: stringPtr("#AFFFD7"), + Color: stringPtr(charmtone.Bok.Hex()), }, GenericDeleted: ansi.StylePrimitive{ - Color: stringPtr("#FD5B5B"), + Color: stringPtr(charmtone.Coral.Hex()), }, GenericEmph: ansi.StylePrimitive{ Italic: boolPtr(true), }, GenericInserted: ansi.StylePrimitive{ - Color: stringPtr("#00D787"), + Color: stringPtr(charmtone.Guac.Hex()), }, GenericStrong: ansi.StylePrimitive{ Bold: boolPtr(true), }, GenericSubheading: ansi.StylePrimitive{ - Color: stringPtr("#777777"), + Color: stringPtr(charmtone.Squid.Hex()), }, Background: ansi.StylePrimitive{ - BackgroundColor: stringPtr("#373737"), + BackgroundColor: stringPtr(charmtone.Charcoal.Hex()), }, }, },