package mujica_test import ( "github.com/egoist/mygo/ui" mujica "mujicaui" "time" ) func ExampleFileExplorer() { var state mujica.FileExplorerState opts := mujica.FileExplorerOptions{ Roots: []string{"/court"}, Folders: func(string) []string { return nil }, Entries: func(string) []mujica.FileEntry { return []mujica.FileEntry{{Path: "/court/seal.go", Name: "seal.go", Size: 1024}} }, } view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.FileExplorer(c, &state, opts).Element.Height(240) } ui.Render(view, 600, 300, 1) } func ExampleFileGrid() { entries := []mujica.FileEntry{{Path: "/court/seal.go", Name: "seal.go"}} var state mujica.FileGridState view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.FileGrid(c, entries, &state, mujica.FileGridOptions{}).Element.Height(240) } ui.Render(view, 400, 300, 1) } func ExampleFileIcon() { view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.FileIcon(c, "seal.go", mujica.FileIconOptions{Size: 32}) } ui.Render(view, 100, 80, 1) } func ExampleFilePreview() { file := mujica.PreviewFile{Name: "seal.go", Text: "package court\nfunc Seal() {}"} view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.FilePreview(c, file, mujica.FilePreviewOptions{}).Element.Height(240) } ui.Render(view, 500, 300, 1) } func ExamplePathBar() { view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.PathBar(c, "/court/chronicles/seals", mujica.PathBarOptions{}) } ui.Render(view, 400, 100, 1) } func ExampleRenameInline() { name, editing := "seal.txt", true view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.RenameInline(c, &name, &editing, mujica.RenameInlineOptions{}) } ui.Render(view, 400, 100, 1) } func ExampleFileOperationProgress() { op := mujica.FileOperation{Kind: mujica.FileCopy, Done: 2, Total: 10, Current: "seal.go"} view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.FileOperationProgress(c, op, mujica.FileOperationOptions{}) } ui.Render(view, 500, 240, 1) } func ExampleTransferQueue() { items := []mujica.QueuedTransfer{{ID: "a", Name: "ledger.zip", Upload: true, Status: mujica.TransferActive, Done: 25, Total: 100}} var state mujica.TransferQueueState view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.TransferQueue(c, items, &state, mujica.TransferQueueOptions{}).Element.Height(240) } ui.Render(view, 500, 300, 1) } func ExampleStorageUsage() { segments := []mujica.StorageSegment{{Label: "Documents", Bytes: 24 << 30}, {Label: "Photos", Bytes: 40 << 30}} view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.StorageUsage(c, segments, mujica.StorageUsageOptions{Capacity: 128 << 30, Label: "Court disk"}) } ui.Render(view, 500, 240, 1) } func ExampleRecentFiles() { now := time.Date(2026, 10, 5, 12, 0, 0, 0, time.UTC) files := []mujica.RecentFile{{Path: "/court/seal.go", Opened: now}} var state mujica.RecentFilesState view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.RecentFiles(c, files, &state, mujica.RecentFilesOptions{Now: now}).Element.Height(240) } ui.Render(view, 500, 300, 1) } func ExampleArchiveViewer() { entries := []mujica.ArchiveEntry{{Path: "court/seal.go", Size: 4000, Packed: 1000}} var state mujica.ArchiveViewerState view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.ArchiveViewer(c, entries, &state, mujica.ArchiveViewerOptions{}).Element.Height(240) } ui.Render(view, 600, 300, 1) } func ExamplePresenceAvatars() { people := []mujica.Collaborator{{ID: "ada", Name: "Ada Lovelace"}} view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.PresenceAvatars(c, people, mujica.PresenceAvatarsOptions{}) } ui.Render(view, 300, 100, 1) } func ExampleReactions() { items := []mujica.Reaction{{Emoji: "\U0001f44d", Count: 3, Mine: true}} view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.Reactions(c, items, mujica.ReactionsOptions{Choices: []string{"\U0001f44d", "\U0001f389"}}) } ui.Render(view, 400, 100, 1) } func ExampleShareDialog() { open := false members := []mujica.ShareMember{{ID: "ada", Name: "Ada", Permission: mujica.PermissionEdit, Owner: true}} view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) if mujica.Button(c, "Share", mujica.ButtonOptions{}).Clicked() { open = true } mujica.ShareDialog(c, &open, &members, mujica.ShareDialogOptions{Title: "Ledger", Link: "https://court.org/ledger"}) } ui.Render(view, 600, 400, 1) } func ExamplePermissionSelect() { value := mujica.PermissionView view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.PermissionSelect(c, &value, mujica.PermissionSelectOptions{}) } ui.Render(view, 300, 100, 1) } func ExampleLiveIndicator() { view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) mujica.LiveIndicator(c, mujica.LiveOffline, mujica.LiveIndicatorOptions{}) } ui.Render(view, 500, 100, 1) } func ExampleRemoteCursor() { carets := []mujica.RemoteCaret{{ID: "ada", Name: "Ada", Offset: 4, Anchor: 4}} view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) ui.Box(c).Size(300, 100).Children(func() { mujica.RemoteCursor(c, carets, mujica.RemoteCursorOptions{ Caret: func(offset int) ui.Rect { return ui.Rect{X: float32(offset) * 8, Y: 20, H: 20} }, }) }) } ui.Render(view, 320, 120, 1) }