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
43 changes: 43 additions & 0 deletions docs/COMPONENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ 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) |
| ImageViewer | `Source` is an `ImageSource`; `Aspect`; pinch zooms | `Source` is an `IImage` (a resource path such as `/Assets/photo.jpg`); `Stretch` instead of `Aspect`; the wheel and the + / - / 0 keys zoom; the thumbnail and the controls are tab stops |
| PrevNextNav | Tap a card | The cards are also tab stops (Enter / Space) |
| ChatInput | The send button sends | Also Enter sends and Shift+Enter starts a new line |
| DataTable | Tap a header to sort | Sortable headers are also tab stops (Enter / Space) and keep focus after sorting; a click on a row's checkbox does not raise `RowTapped` |
| 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` |
Expand Down Expand Up @@ -1120,6 +1122,24 @@ the current one, default 1), `ShowLabels` (text next to the chevrons) · **Event

---

### Prev Next Nav
Previous and next links for the foot of a page: two bordered cards side by side, each a small
"Previous" or "Next" over the page's name. A side with no label is left empty.

```bash
shellui-native add prev-next-nav
```

**Properties:** `PreviousLabel`, `NextLabel`, `PreviousText` ("Previous"), `NextText` ("Next"),
`IsEnabled` · **Events:** `PreviousClicked`, `NextClicked`

```xml
<ui:PrevNextNav PreviousLabel="Installation" NextLabel="Theming"
PreviousClicked="OnPrevious" NextClicked="OnNext" />
```

---

## Data Display & Feedback

### Badge
Expand Down Expand Up @@ -1333,6 +1353,29 @@ with `HeightRequest` instead) · **Events:** `PositionChanged` · **Methods:** `
</ui:Carousel>
```

### Image Viewer
A thumbnail that opens the image over the page on a dark backdrop, with zoom out, reset, zoom in
and close controls. A tap on the backdrop or Escape closes it. Give it a size: the thumbnail
fills it.

```bash
shellui-native add image-viewer
```

**Properties:** `Source`, `ThumbnailSource` (a smaller file for the page; `Source` then loads
only in the viewer), `Description` (for screen readers), `Aspect` (how the thumbnail fills its
box; AspectFill), `Open` (two-way), `Zoom` (read-only; 0.5 to 4, 1 fits the page) ·
**Events:** `OpenChanged` · **Methods:** `SetOpen(bool)`, `ZoomIn()`, `ZoomOut()`, `ResetZoom()`

```xml
<ui:ImageViewer Source="photo.jpg" Description="The harbour at dusk"
WidthRequest="160" HeightRequest="120" />
```

Zooming scales the image around its centre; it does not pan.

---

### Empty State
Placeholder for an empty list or screen: icon in a muted tile, title, description and optional
actions, centered. `Bordered="True"` adds a dashed outline.
Expand Down
8 changes: 4 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, command, navigation-menu, data-table, chat, form.
**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, data-table, chat, form, image-viewer, prev-next-nav.

---

Expand Down Expand Up @@ -296,9 +296,9 @@ resizable, navbar, sidebar, date-range-picker and file-upload on both platforms
**After `0.1.0-alpha.2`, from ShellUI's Blazor set** (both platforms): button-group ✅,
input-group ✅ and menubar ✅ (2026-10-11), then command ✅ (with a command palette) and
navigation-menu ✅, then data-table ✅ (client-side filter, sort, selection and pages;
2026-10-12), then chat ✅ and form ✅ (2026-10-13; 71 families, 102 CLI targets).
2026-10-12), then chat ✅ and form ✅, then image-viewer ✅ and prev-next-nav ✅ (2026-10-13;
73 families, 104 CLI targets).

**Backlog:** chart (P7); and the ShellUI Blazor targets not yet ported (image-viewer,
prev-next-nav, …). qr-code waits, like the icon switch, for NuGet package dependencies in the
**Backlog:** chart (P7). qr-code waits, like the icon switch, for NuGet package dependencies in the
CLI: it needs a QR encoder. Not in the native data-table yet: row actions and server-side
paging.
11 changes: 7 additions & 4 deletions docs/DEVELOPMENT_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ main ← Phase 1 (PRs #1–#5), release 0.1.0-alpha.1 (PR #6), Phase 2 Avaloni
layout, navigation and pickers on both platforms (PR #14) merged
release 0.1.0-alpha.2 (PR #15), CI action bumps (PR #16), button-group,
input-group and menubar (PR #17), command and navigation-menu (PR #18),
data-table (PR #19) merged
└─ feat/chat-form ← chat and form from ShellUI's Blazor set (active)
data-table (PR #19), chat and form (PR #20) merged
└─ feat/image-viewer-prev-next ← image-viewer and prev-next-nav (active)
└─ feat/winui ← Phase 3 (conditional)
```

Expand All @@ -38,8 +38,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`; PRs #17–#19 merged since | 97 registry entries (94 CLI targets, 63 families), each with MAUI and Avalonia content |
| `feat/chat-form` | `main` | **Active** | chat and form for MAUI and Avalonia (105 registry entries, 102 CLI targets, 71 families) |
| `main` | — | Phase 1, Phase 2 and PR #14 merged; released as `0.1.0-alpha.2`; PRs #17–#20 merged since | 97 registry entries (94 CLI targets, 63 families), each with MAUI and Avalonia content |
| `feat/image-viewer-prev-next` | `main` | **Active** | image-viewer and prev-next-nav for MAUI and Avalonia (107 registry entries, 104 CLI targets, 73 families) |

---

Expand Down Expand Up @@ -536,6 +536,9 @@ Cross-desktop (Windows + macOS + Linux) from one XAML codebase.
- [x] chat and form (`feat/chat-form`): Chat, ChatMessage and ChatInput (the message's name
property is `Sender` on both platforms, since Avalonia controls already have a `Name`); Form
and FormField, where validation stays with the app and the form only reports field errors
- [x] image-viewer and prev-next-nav (`feat/image-viewer-prev-next`): ImageViewer is a
`ShellOverlayHost` whose trigger is its own thumbnail; zoom scales the image, no panning.
With these, the Blazor set is ported except the chart family and qr-code
- [ ] 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