summaryrefslogtreecommitdiff
path: root/menu/style/style.go
diff options
context:
space:
mode:
Diffstat (limited to 'menu/style/style.go')
-rw-r--r--menu/style/style.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/menu/style/style.go b/menu/style/style.go
new file mode 100644
index 0000000..e7164e1
--- /dev/null
+++ b/menu/style/style.go
@@ -0,0 +1,30 @@
+package style
+
+import "github.com/charmbracelet/lipgloss"
+
+type StyleBuilder func() lipgloss.Style
+
+type Style struct {
+ style *lipgloss.Style
+ builder StyleBuilder
+}
+
+func New(builder StyleBuilder) Style {
+ return Style{
+ builder: builder,
+ }
+}
+
+func (s *Style) Get() lipgloss.Style {
+
+ if s.style == nil {
+ st := s.builder()
+ s.style = &st
+ }
+
+ return *s.style
+}
+
+func (s *Style) Render(input ...string) string {
+ return s.Get().Render(input...)
+}