-
Notifications
You must be signed in to change notification settings - Fork 0
/
greeter.go
44 lines (39 loc) · 1.13 KB
/
greeter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package greeter
import (
"github.com/charmbracelet/lipgloss"
"github.com/mieubrisse/teact/teact/components"
"github.com/mieubrisse/teact/teact/components/flexbox"
"github.com/mieubrisse/teact/teact/components/flexbox_item"
"github.com/mieubrisse/teact/teact/components/stylebox"
"github.com/mieubrisse/teact/teact/components/text"
"github.com/mieubrisse/teact/teact/utilities"
)
// A custom component
type Greeter interface {
components.Component
}
// Implementation of the custom component
type greeterImpl struct {
// So long as we assign a component to this then our component will call down to it (via Go struct embedding)
components.Component
}
func New() Greeter {
// This is a tree, just like HTML, with leaf nodes indented the most
root := flexbox.NewWithOpts(
[]flexbox_item.FlexboxItem{
flexbox_item.New(
stylebox.New(
text.New("Hello, world!"),
stylebox.WithStyle(
utilities.WithForeground(lipgloss.Color("#B6DCFE")),
),
),
),
},
flexbox.WithVerticalAlignment(flexbox.AlignCenter),
flexbox.WithHorizontalAlignment(flexbox.AlignCenter),
)
return &greeterImpl{
Component: root,
}
}