Change style package, new components, ...

Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
Hadi
2026-08-18 20:10:32 +02:00
parent 499d61bddf
commit 21b574eb6f
56 changed files with 2741 additions and 363 deletions
+61
View File
@@ -0,0 +1,61 @@
package drawer
import tea "charm.land/bubbletea/v2"
type Side int
const (
Left Side = iota
Right
)
type Drawer struct {
Title string
Content tea.Model
Side Side
Width int
Style *Styles
}
type DrawerOption func(*Drawer)
func WithSide(s Side) DrawerOption {
return func(d *Drawer) { d.Side = s }
}
func WithWidth(w int) DrawerOption {
return func(d *Drawer) { d.Width = w }
}
func WithDrawerStyle(s Styles) DrawerOption {
return func(d *Drawer) { d.Style = &s }
}
func newDrawer(title string, content tea.Model, opts ...DrawerOption) Drawer {
d := Drawer{Title: title, Content: content}
for _, opt := range opts {
opt(&d)
}
return d
}
type ShowMsg struct{ Drawer Drawer }
func Show(title string, content tea.Model, opts ...DrawerOption) tea.Cmd {
d := newDrawer(title, content, opts...)
return func() tea.Msg { return ShowMsg{Drawer: d} }
}
type DismissMsg struct{}
func Close() tea.Cmd {
return func() tea.Msg { return DismissMsg{} }
}
type text string
func (t text) Init() tea.Cmd { return nil }
func (t text) Update(tea.Msg) (tea.Model, tea.Cmd) { return t, nil }
func (t text) View() tea.View { return tea.NewView(string(t)) }
func Text(s string) tea.Model { return text(s) }