package steps import ( "miasma-installer/tui/styles" "strings" tea "github.com/charmbracelet/bubbletea" ) type WelcomeModel struct { Finished bool } func NewWelcomeModel() WelcomeModel { return WelcomeModel{Finished: false} } func (m WelcomeModel) Init() tea.Cmd { return nil } func (m WelcomeModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { if m.Finished { return m, nil } switch msg := msg.(type) { case tea.KeyMsg: switch msg.String() { case "enter": m.Finished = true } } return m, nil } func (m WelcomeModel) View() string { logo := ` ███╗ ███╗██╗ █████╗ ███████╗███╗ ███╗ █████╗ ████╗ ████║██║██╔══██╗██╔════╝████╗ ████║██╔══██╗ ██╔████╔██║██║███████║███████╗██╔████╔██║███████║ ██║╚██╔╝██║██║██╔══██║╚════██║██║╚██╔╝██║██╔══██║ ██║ ╚═╝ ██║██║██║ ██║███████║██║ ╚═╝ ██║██║ ██║ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ` var content strings.Builder content.WriteString(styles.LogoStyle.Render(logo)) content.WriteString("\n\n") content.WriteString(styles.TitleStyle.Render("Welcome to Miasma OS Installer")) content.WriteString("\n") content.WriteString(styles.SubtitleStyle.Render("An opinionated Arch Linux installation")) content.WriteString("\n\n") features := []string{ "🔒 LUKS2 encryption by default", "🗂️ Btrfs filesystem with snapshots", "🛡️ Hardened Linux kernel", "🚀 Cosmic Desktop environment", "⚡ UEFI boot with systemd-boot", } featureBox := styles.InfoBoxStyle.Render(strings.Join(features, "\n")) content.WriteString(featureBox) content.WriteString("\n\n") warning := styles.WarningBoxStyle.Render("⚠️ WARNING: This will erase all data on the selected disk!") content.WriteString(warning) content.WriteString("\n\n") help := styles.RenderHelp("Enter", "Continue", "Ctrl+C", "Exit") content.WriteString(help) return styles.AppStyle.Render(content.String()) }