mirror of
https://github.com/mark3labs/kit.git
synced 2026-06-14 03:30:26 +00:00
95abb6fa6e
Add RegisterTheme, SetTheme, and ListThemes to the extension Context, allowing extensions to create custom themes at runtime and switch between them. Uses ThemeColor/ThemeColorConfig concrete structs (no interfaces) for Yaegi safety. Include neon-theme.go example extension demonstrating the API.
43 lines
1.6 KiB
Go
43 lines
1.6 KiB
Go
//go:build ignore
|
|
|
|
package main
|
|
|
|
import "kit/ext"
|
|
|
|
// Init registers a "neon" theme and a /neon slash command to apply it.
|
|
// Demonstrates how extensions can create and set themes programmatically.
|
|
//
|
|
// Usage: kit -e examples/extensions/neon-theme.go
|
|
func Init(api ext.API) {
|
|
api.OnSessionStart(func(_ ext.SessionStartEvent, ctx ext.Context) {
|
|
// Register a cyberpunk neon theme at startup.
|
|
ctx.RegisterTheme("neon", ext.ThemeColorConfig{
|
|
Primary: ext.ThemeColor{Light: "#CC00FF", Dark: "#FF00FF"},
|
|
Secondary: ext.ThemeColor{Light: "#0088CC", Dark: "#00FFFF"},
|
|
Success: ext.ThemeColor{Light: "#00CC44", Dark: "#00FF66"},
|
|
Warning: ext.ThemeColor{Light: "#CCAA00", Dark: "#FFFF00"},
|
|
Error: ext.ThemeColor{Light: "#CC0033", Dark: "#FF0055"},
|
|
Info: ext.ThemeColor{Light: "#0088CC", Dark: "#00CCFF"},
|
|
Text: ext.ThemeColor{Light: "#111111", Dark: "#F0F0F0"},
|
|
Background: ext.ThemeColor{Light: "#F0F0F0", Dark: "#0A0A14"},
|
|
MdKeyword: ext.ThemeColor{Light: "#CC00FF", Dark: "#FF00FF"},
|
|
MdString: ext.ThemeColor{Light: "#00CC44", Dark: "#00FF66"},
|
|
MdComment: ext.ThemeColor{Light: "#888888", Dark: "#555555"},
|
|
})
|
|
|
|
ctx.PrintInfo("Neon theme registered! Use /theme neon to activate.")
|
|
})
|
|
|
|
// Also register a /neon slash command as a shortcut.
|
|
api.RegisterCommand(ext.CommandDef{
|
|
Name: "neon",
|
|
Description: "Switch to the neon cyberpunk theme",
|
|
Execute: func(args string, ctx ext.Context) (string, error) {
|
|
if err := ctx.SetTheme("neon"); err != nil {
|
|
return "", err
|
|
}
|
|
return "Neon theme activated!", nil
|
|
},
|
|
})
|
|
}
|