Avalonia.FuncUI
1.0.0
Prefix Reserved
See the version list below for details.
dotnet add package Avalonia.FuncUI --version 1.0.0
NuGet\Install-Package Avalonia.FuncUI -Version 1.0.0
<PackageReference Include="Avalonia.FuncUI" Version="1.0.0" />
paket add Avalonia.FuncUI --version 1.0.0
#r "nuget: Avalonia.FuncUI, 1.0.0"
// Install Avalonia.FuncUI as a Cake Addin #addin nuget:?package=Avalonia.FuncUI&version=1.0.0 // Install Avalonia.FuncUI as a Cake Tool #tool nuget:?package=Avalonia.FuncUI&version=1.0.0
<h1 align="center"><img src="github/img/logo/FuncUI_Boxed.png" width="32px" alt="Avalonia FuncUI"> Avalonia FuncUI </h1>
<p align="center">Develop cross-platform GUI Applications using <a href="https://fsharp.org">F#<a> and <a href="https://github.com/AvaloniaUI/Avalonia">AvaloniaUI</a>!</p> <p align="center"> <img src="https://img.shields.io/github/languages/top/fsprojects/Avalonia.FuncUI" alt="GitHub top language"> <img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/fsprojects/Avalonia.FuncUI"> <img src="https://img.shields.io/github/license/fsprojects/Avalonia.FuncUI"> <img alt="Nuget (with prereleases)" src="https://img.shields.io/nuget/vpre/Avalonia.FuncUI?color=green&label=package%20Avalonia.FuncUI"> </p><br>
About
FuncUI is a thin layer built on top of AvaloniaUI. It contains abstractions for writing UI applications in different programming styles. It also contains a component & state management system.
FuncUI mostly consists of:
- Virtual DOM
- View DSL
- Component model
Resources
💨 Getting started
📚 Documentation
📓 Examples
Contributing
Please contribute to this library through issue reports, pull requests, code reviews, documentation, and discussion.
Examples
Example using components
A simple counter made with the component library:
type Components =
static member Counter () =
Component (fun ctx ->
let state = ctx.useState 0
DockPanel.create [
DockPanel.children [
Button.create [
Button.onClick (fun _ -> state.Set(state.Current - 1))
Button.content "click to decrement"
]
Button.create [
Button.onClick (fun _ -> state.Set(state.Current + 1))
Button.content "click to increment"
]
TextBlock.create [
TextBlock.dock Dock.Top
TextBlock.text (string state.Current)
]
]
]
)
Find more examples using components in the Components Examples folder.
Example using Elmish
The same counter as above but using the Avalonia.FuncUI.Elmish
package:
module Counter =
type CounterState = {
count : int
}
let init = {
count = 0
}
type Msg =
| Increment
| Decrement
let update (msg: Msg) (state: CounterState) : CounterState =
match msg with
| Increment -> { state with count = state.count + 1 }
| Decrement -> { state with count = state.count - 1 }
let view (state: CounterState) (dispatch): IView =
DockPanel.create [
DockPanel.children [
Button.create [
Button.onClick (fun _ -> dispatch Increment)
Button.content "click to increment"
]
Button.create [
Button.onClick (fun _ -> dispatch Decrement)
Button.content "click to decrement"
]
TextBlock.create [
TextBlock.dock Dock.Top
TextBlock.text (sprintf "the count is %i" state.count)
]
]
]
Find more examples using Elmish in the Elmish Examples folder
Maintainer(s)
The current co-maintainers of Avalonia.FuncUI are
- @JordanMarr
- @sleepyfran
- @JaggerJo (project originator)
The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)
Commercial Support & Development Services
Please reach out to mail@jaggerjo.com if you need a commercial support contract or are interested in contract work.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Avalonia (>= 11.0.0)
- Avalonia.Controls.DataGrid (>= 11.0.0)
- FSharp.Core (>= 7.0.300)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Avalonia.FuncUI:
Package | Downloads |
---|---|
Avalonia.FuncUI.Elmish
Elmish integration for Avalonia.FuncUI |
|
SilkyFowl.Avalonia.FuncUI.LiveView
Live fs/fsx previewer for Avalonia.FuncUI. |
|
Navs.FuncUI
Package Description |
|
FluentAvalonia.FuncUI.Bindings
FluentAvalonia.FuncUI.Bindings is a library that integrates FluentAvalonia with Avalonia.FuncUI. It contains bindings that enable the use of FluentAvalonia's controls in an F# context offered by Avalonia.FuncUI. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Avalonia.FuncUI:
Repository | Stars |
---|---|
AvaloniaUI/Live.Avalonia
In-app live reload for Avalonia applications.
|
Version | Downloads | Last updated |
---|---|---|
1.5.1 | 910 | 9/5/2024 |
1.5.0 | 337 | 8/12/2024 |
1.4.0 | 750 | 4/26/2024 |
1.3.0 | 978 | 2/23/2024 |
1.2.0 | 649 | 1/6/2024 |
1.1.0 | 875 | 10/23/2023 |
1.0.2 | 194 | 10/22/2023 |
1.0.1 | 1,311 | 8/8/2023 |
1.0.0 | 1,633 | 7/6/2023 |
1.0.0-rc1.1.1 | 150 | 6/26/2023 |
1.0.0-rc1.1.0 | 739 | 6/20/2023 |
0.6.0-preview9.1 | 377 | 4/2/2023 |
0.6.0-preview9 | 346 | 3/10/2023 |
0.6.0-preview8 | 223 | 2/26/2023 |
0.6.0-preview7 | 558 | 1/26/2023 |
0.6.0-preview6.1 | 139 | 1/23/2023 |
0.6.0-preview6 | 207 | 1/22/2023 |
0.6.0-preview5 | 243 | 1/19/2023 |
0.6.0-preview4 | 241 | 1/15/2023 |