Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions docs/COMPONENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,9 @@ Same names, properties and variants as MAUI, except:
| Carousel | Swipe, arrows, dots | Drag with the mouse or touch; the arrows are tab stops and Left / Right move while one has focus; with `AspectRatio="0"` set `Height` |
| Stepper | Shows the active step's view | Every step stays in the tree and only the active one is visible; reached steps are tab stops (Enter / Space) |
| Pagination | Labels hidden on phones | `ShowLabels` defaults to true; every page and arrow is a tab stop (Enter / Space) |
| Command | Enter picks the highlighted item (the first match) | Up / Down move the highlight and Enter picks it; `Value`, `Text` and the other strings are nullable; children are collected in `Groups` and `Items` |
| CommandPalette | Open it from code | Also `Hotkey`, a key gesture that toggles it anywhere in the window (Ctrl+K by default; `Hotkey="{x:Null}"` for none) |
| NavigationMenu | Tap an item to open its panel | Items are tab stops: Enter / Space / Down open a panel and Left / Right move between items; in a panel Up / Down move and Enter picks; children are collected in `Items` and `Links` |
| ButtonGroup | Children are the buttons | Children are collected in `Items` |
| InputGroup | `Keyboard` picks the on-screen keyboard | No `Keyboard`; a click on a control in the prefix or suffix is left to that control |
| Menubar | Tap a title to open its menu | Titles are tab stops: Enter / Space / Down open a menu and Left / Right move between titles; in a menu Up / Down move and Enter picks; children are collected in `Menus` and `Items` |
Expand Down Expand Up @@ -796,6 +799,78 @@ shellui-native add accordion

## Navigation Components

### Navigation Menu
A row of top-level links for a site or app header. An item with links inside shows a chevron
and opens a panel of them, each with a title, an optional description and an optional icon. An
item without links is a plain link.

```bash
shellui-native add navigation-menu
```

**NavigationMenuItem:** `Title`, `IsOpen` (read-only), `IsEnabled` · **Events:** `Clicked` (an
item without links) · **Methods:** `SetOpen(bool)`, `Close()`

**NavigationMenuLink:** `Title`, `Description`, `Icon`, `IsEnabled` · **Events:** `Clicked`

```xml
<ui:NavigationMenu>
<ui:NavigationMenuItem Title="Getting started">
<ui:NavigationMenuLink Title="Introduction" Description="What ShellUI Native is." Clicked="OnLink" />
<ui:NavigationMenuLink Title="Installation" Description="Add it to your app." Clicked="OnLink" />
</ui:NavigationMenuItem>
<ui:NavigationMenuItem Title="Docs" Clicked="OnDocs" />
</ui:NavigationMenu>
```

---

### Command
A search field over a list of grouped items. Typing filters the list by each item's `Text` and
`Keywords`, and Enter picks the highlighted item. `CommandPalette`, in the same file, shows the
list in a dialog near the top of the page.

```bash
shellui-native add command
```

**Properties (Command):** `Placeholder`, `EmptyText` ("No results found."), `MaxListHeight`
(300), `Query` (read-only) · **Events:** `ItemSelected` (the item) · **Methods:** `Focus()`,
`Reset()`, `Items()`

**CommandGroup:** `Heading` · **CommandItem:** `Text`, `Value`, `Icon`, `Shortcut` (a hint at
the end of the row; display only), `Keywords`, `IsEnabled` · **Events:** `Clicked` ·
**CommandSeparator:** a divider, hidden while the list is filtered

```xml
<ui:Command ItemSelected="OnCommand">
<ui:CommandGroup Heading="Suggestions">
<ui:CommandItem Text="Calendar" Icon="Calendar" Value="calendar" />
<ui:CommandItem Text="Settings" Icon="Settings" Value="settings" Shortcut="Ctrl+," Keywords="preferences options" />
</ui:CommandGroup>
</ui:Command>
```

**CommandPalette:** `Open` (two-way), `Placeholder`, `EmptyText`, `Command` (the list inside) ·
**Events:** `ItemSelected`, `OpenChanged` · **Methods:** `SetOpen(bool)`. Picking an item,
tapping the backdrop or pressing Escape closes it, and it opens with an empty search.

```xml
<ui:CommandPalette x:Name="Palette" ItemSelected="OnCommand">
<ui:CommandGroup Heading="Pages"> ... </ui:CommandGroup>
</ui:CommandPalette>
```

```csharp
Palette.SetOpen(true);
```

On MAUI the name matches `Microsoft.Maui.Controls.Command` (the `ICommand` helper). In C# that
imports both namespaces, qualify one of them or add an alias:
`using UI = YourApp.Components.UI;`.

---

### Menubar
A row of menus, like a desktop app's File / Edit / View. Each menu opens a panel of items under
its title; clicking outside, picking an item or pressing Escape closes it, and opening one menu
Expand Down
9 changes: 5 additions & 4 deletions docs/COMPONENTS_ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Prioritized list of components to create for ShellUI Native, aligned with [Shell

Last revised: **2026-10-11** (second prerelease, `0.1.0-alpha.2`).

**Status at a glance:** P0–P6 ✅ done · P7 done except chart · `0.1.0-alpha.2`: 63 families, 94 CLI targets, each for MAUI and Avalonia · since then: button-group, input-group, menubar.
**Status at a glance:** P0–P6 ✅ done · P7 done except chart · `0.1.0-alpha.2`: 63 families, 94 CLI targets, each for MAUI and Avalonia · since then: button-group, input-group, menubar, command, navigation-menu.

---

Expand Down Expand Up @@ -294,7 +294,8 @@ resizable, navbar, sidebar, date-range-picker and file-upload on both platforms
94 CLI targets. From here on a component lands on both platforms together.

**After `0.1.0-alpha.2`, from ShellUI's Blazor set** (both platforms): button-group ✅,
input-group ✅ and menubar ✅ (2026-10-11; 66 families, 97 CLI targets).
input-group ✅ and menubar ✅ (2026-10-11), then command ✅ (with a command palette) and
navigation-menu ✅ (2026-10-12; 68 families, 99 CLI targets).

**Backlog:** chart (P7); and the ShellUI Blazor targets not yet ported (command /
command-palette, navigation-menu, data-table, …).
**Backlog:** chart (P7); and the ShellUI Blazor targets not yet ported (data-table, chat,
form, image-viewer, qr-code, …).
13 changes: 9 additions & 4 deletions docs/DEVELOPMENT_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ into it, not directly into `main`.
```
main ← Phase 1 (PRs #1–#5), release 0.1.0-alpha.1 (PR #6), Phase 2 Avalonia (PRs #7–#13),
layout, navigation and pickers on both platforms (PR #14) merged
release 0.1.0-alpha.2 (PR #15), CI action bumps (PR #16) merged
└─ feat/button-group-input-group-menubar ← first batch from ShellUI's Blazor set (active)
release 0.1.0-alpha.2 (PR #15), CI action bumps (PR #16), button-group,
input-group and menubar (PR #17) merged
└─ feat/command-navigation-menu ← second batch from ShellUI's Blazor set (active)
└─ feat/winui ← Phase 3 (conditional)
```

Expand All @@ -36,8 +37,8 @@ main ← Phase 1 (PRs #1–#5), release 0.1.0-alpha.1 (PR #6), Phase 2 Avaloni

| Branch | Base | Status | Purpose |
|--------|------|--------|---------|
| `main` | — | Phase 1, Phase 2 and PR #14 merged; released as `0.1.0-alpha.2` | 97 registry entries (94 CLI targets, 63 families), each with MAUI and Avalonia content |
| `feat/button-group-input-group-menubar` | `main` | **Active** | button-group, input-group and menubar for MAUI and Avalonia (100 registry entries, 97 CLI targets, 66 families) |
| `main` | — | Phase 1, Phase 2 and PR #14 merged; released as `0.1.0-alpha.2`; PR #17 merged since | 97 registry entries (94 CLI targets, 63 families), each with MAUI and Avalonia content |
| `feat/command-navigation-menu` | `main` | **Active** | command (with a command palette) and navigation-menu for MAUI and Avalonia (102 registry entries, 99 CLI targets, 68 families) |

---

Expand Down Expand Up @@ -524,6 +525,10 @@ Cross-desktop (Windows + macOS + Linux) from one XAML codebase.
(`feat/button-group-input-group-menubar`): button-group (Button gains an internal corner
override, so an older `button` needs `shellui-native update button`), input-group and
menubar (one template: Menubar, MenubarMenu, MenubarItem, MenubarSeparator)
- [x] Second batch (`feat/command-navigation-menu`): command (one template: Command,
CommandGroup, CommandItem, CommandSeparator and CommandPalette, which hosts a Command in a
`ShellOverlayHost`; Avalonia adds a window-wide hotkey) and navigation-menu (NavigationMenu,
NavigationMenuItem, NavigationMenuLink)
- [ ] Replace the generated `Icon.cs` with the `ShellIcons.Maui` / `ShellIcons.Avalonia` packages
once they are on NuGet. Their names already match (`IconName`, `Icon`, `Kind` on Avalonia), so
components change little: token tinting binds the package's `Color` (MAUI) or `Foreground`
Expand Down
Loading
Loading