176 lines
6.8 KiB
Go
176 lines
6.8 KiB
Go
package main
|
|
|
|
// accountCode contains the compiled Example bodies.
|
|
var accountCode = map[string]string{
|
|
"SettingsLayout": `page := ""
|
|
sound := true
|
|
pages := []mujica.SettingsPage{{ID: "general", Label: "General"}, {ID: "privacy", Label: "Privacy"}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
mujica.SettingsLayout(c, &page, pages, mujica.SettingsLayoutOptions{}, func(id string) {
|
|
mujica.SettingsSection(c, "Notifications", func() {
|
|
mujica.SettingsRow(c, "Sound", mujica.SettingsRowOptions{ID: "sound"}, func() *ui.Element {
|
|
return mujica.Switch(c, &sound, "", mujica.SwitchOptions{})
|
|
})
|
|
})
|
|
})
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"SettingsSearch": `query, page := "", "general"
|
|
entries := []mujica.SettingEntry{{ID: "sound", Page: "general", Label: "Sound", Keywords: []string{"audio"}}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
if e, ok := mujica.SettingsSearch(c, &query, entries, mujica.SettingsSearchOptions{}).Chosen(); ok {
|
|
page = e.Page
|
|
}
|
|
fmt.Println("page", page)
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"ThemeSelector": `mode := mujica.System
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{Mode: mode})
|
|
mujica.ThemeSelector(c, &mode, mujica.ThemeSelectorOptions{})
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"AccentColorPicker": `accent := ui.Hex("#7D2034")
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
mujica.AccentColorPicker(c, &accent, mujica.AccentColorPickerOptions{})
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"ShortcutRecorder": `palette := mujica.Shortcut{Mods: ui.Cmd | ui.Shift, Key: ui.KeyP}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
mujica.ShortcutRecorder(c, &palette, mujica.ShortcutRecorderOptions{
|
|
Label: "Command palette",
|
|
Taken: []mujica.ShortcutBinding{{Action: "Save", Shortcut: mujica.Shortcut{Mods: ui.Cmd, Key: ui.KeyS}}},
|
|
})
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"KeyboardShortcutsList": `query := ""
|
|
groups := []mujica.ShortcutGroup{{Title: "General", Bindings: []mujica.ShortcutBinding{
|
|
{Action: "Command palette", Shortcut: mujica.Shortcut{Mods: ui.Cmd | ui.Shift, Key: ui.KeyP}},
|
|
}}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
mujica.KeyboardShortcutsList(c, &query, groups, mujica.KeyboardShortcutsListOptions{})
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"LoginForm": `var state mujica.LoginFormState
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
mujica.LoginForm(c, &state, mujica.LoginFormOptions{OnSubmit: func(account, password string, remember bool) {
|
|
// Submit credentials through the caller-provided auth service.
|
|
state.EndSubmit("")
|
|
}})
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"OAuthButtons": `providers := []mujica.OAuthProvider{{ID: "sso", Name: "Company SSO"}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
if id, ok := mujica.OAuthButtons(c, providers, mujica.OAuthButtonsOptions{}).Chosen(); ok {
|
|
fmt.Println("start sign-in with", id)
|
|
}
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"TwoFactorInput": `code := ""
|
|
resendAt := time.Now().Add(30 * time.Second)
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
r := mujica.TwoFactorInput(c, &code, mujica.TwoFactorInputOptions{ResendAt: resendAt})
|
|
if r.Completed() {
|
|
fmt.Println("verify the code")
|
|
}
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"ProfileEditor": `saved := mujica.Profile{Name: "Sakiko", Bio: "Keyboard."}
|
|
profile := saved
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
if mujica.ProfileEditor(c, &profile, mujica.ProfileEditorOptions{Saved: saved}).Save() {
|
|
saved = profile
|
|
}
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"AccountSwitcher": `current := "a"
|
|
accounts := []mujica.Account{{ID: "a", Name: "Sakiko Togawa", Email: "sakiko@court"}, {ID: "b", Name: "Oblivionis"}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
if mujica.AccountSwitcher(c, ¤t, accounts, mujica.AccountSwitcherOptions{}).Add() {
|
|
fmt.Println("sign in another account")
|
|
}
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"WorkspaceSwitcher": `current := "ave"
|
|
spaces := []mujica.Workspace{{ID: "ave", Name: "Ave Mujica"}, {ID: "mygo", Name: "MyGO!!!!!"}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
mujica.WorkspaceSwitcher(c, ¤t, spaces, mujica.WorkspaceSwitcherOptions{})
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"UserMenu": `status := mujica.PresenceOnline
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
if mujica.UserMenu(c, &status, mujica.UserMenuOptions{Name: "Sakiko Togawa"}).SignOut() {
|
|
fmt.Println("sign out")
|
|
}
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"SessionList": `sessions := []mujica.Session{{ID: "s1", Device: "MacBook Pro", Current: true}, {ID: "s2", Device: "iPhone", Location: "Osaka"}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
if id, ok := mujica.SessionList(c, sessions, mujica.SessionListOptions{}).Revoked(); ok {
|
|
fmt.Println("sign out", id)
|
|
}
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"ApiKeyManager": `var state mujica.ApiKeyManagerState
|
|
keys := []mujica.APIKey{{ID: "k1", Name: "Deploy bot", Prefix: "mk_live_9f2c"}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
if name, ok := mujica.ApiKeyManager(c, &state, keys, mujica.ApiKeyManagerOptions{}).Create(); ok {
|
|
fmt.Println("create", name)
|
|
state.Reveal("secret from your key service")
|
|
}
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"UsageQuota": `items := []mujica.QuotaItem{{Label: "API calls", Used: 4200, Limit: 10000}, {Label: "Storage", Used: 9, Limit: 10, Unit: "GB"}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
mujica.UsageQuota(c, items, mujica.UsageQuotaOptions{ResetAt: time.Now().Add(72 * time.Hour)})
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"OnboardingWizard": `step := 0
|
|
steps := []mujica.WizardStep{{Title: "Welcome"}, {Title: "Pick a theme"}, {Title: "Done"}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
if mujica.OnboardingWizard(c, &step, steps, mujica.OnboardingWizardOptions{}).Finished() {
|
|
fmt.Println("onboarded")
|
|
}
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"Coachmark": `open, step := true, 0
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
compose := mujica.Button(c, "Compose", mujica.ButtonOptions{})
|
|
mujica.Coachmark(c, &open, &step, []mujica.CoachmarkStep{{Anchor: compose, Title: "Write here", Body: "Start a new letter."}})
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"WhatsNewDialog": `open, hide := true, false
|
|
releases := []mujica.Release{{Version: "1.1", Changes: []mujica.ReleaseChange{{Kind: mujica.ChangeNew, Text: "500 components."}}}}
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
mujica.WhatsNewDialog(c, &open, &hide, releases, mujica.WhatsNewDialogOptions{})
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
"FeedbackWidget": `var state mujica.FeedbackWidgetState
|
|
view := func(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{})
|
|
if f, ok := mujica.FeedbackWidget(c, &state, mujica.FeedbackWidgetOptions{}).Submitted(); ok {
|
|
fmt.Println("send", f.Kind)
|
|
state.EndSubmit("")
|
|
}
|
|
}
|
|
ui.Render(view, 400, 300, 1)`,
|
|
}
|