diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 637220298..2117c2ac6 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1 +1 @@
-github: [lepoco]
\ No newline at end of file
+# github: [lepoco]
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index e68acbff2..000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: bug
-assignees: pomianowski
-
----
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Desktop (please complete the following information):**
- - OS: [e.g. Windows 10]
- - .NET: [e.g. net5.0-windows10.0.17763.0]
- - Version: [e.g. 1.0.4-prerelease45]
-
-**Additional context**
-Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml
new file mode 100644
index 000000000..1b9d5f489
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yaml
@@ -0,0 +1,49 @@
+name: Bug report
+description: Create a report to help us improve
+title: "Bug title"
+labels: [bug]
+body:
+ - type: textarea
+ validations:
+ required: true
+ attributes:
+ label: Describe the bug
+ description: A clear and concise description of what the bug is
+ - type: textarea
+ validations:
+ required: true
+ attributes:
+ label: To Reproduce
+ description: Steps to reproduce the behavior
+ - type: textarea
+ validations:
+ required: true
+ attributes:
+ label: Expected behavior
+ description: A clear and concise description of what you expected to happen
+ - type: textarea
+ attributes:
+ label: Screenshots
+ description: If applicable, add screenshots to help explain your problem
+ - type: textarea
+ validations:
+ required: true
+ attributes:
+ label: OS version
+ description: Which OS versions did you see the issue on?
+ - type: textarea
+ validations:
+ required: true
+ attributes:
+ label: .NET version
+ description: Which .NET versions did you see the issue on?
+ - type: textarea
+ validations:
+ required: true
+ attributes:
+ label: WPF-UI NuGet version
+ description: Which WPF-UI NuGet versions did you see the issue on?
+ - type: textarea
+ attributes:
+ label: Additional context
+ description: Add any other context about the problem here
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 94047437e..000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: enhancement
-assignees: pomianowski
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml
new file mode 100644
index 000000000..38358df4c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yaml
@@ -0,0 +1,25 @@
+name: Feature request
+description: Suggest an idea for the wpfui
+title: "Feature request title"
+labels: [enhancement]
+body:
+ - type: textarea
+ validations:
+ required: true
+ attributes:
+ label: Is your feature request related to a problem? Please describe
+ description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+ - type: textarea
+ validations:
+ required: true
+ attributes:
+ label: Describe the solution you'd like
+ description: A clear and concise description of what you want to happen
+ - type: textarea
+ attributes:
+ label: Describe alternatives you've considered
+ description: A clear and concise description of any alternative solutions or features you've considered
+ - type: textarea
+ attributes:
+ label: Additional context
+ description: Add any other context or screenshots about the feature request here
\ No newline at end of file
diff --git a/.github/labeler.yml b/.github/labeler.yml
new file mode 100644
index 000000000..56acb887f
--- /dev/null
+++ b/.github/labeler.yml
@@ -0,0 +1,29 @@
+---
+PR:
+ - "*"
+
+github_actions:
+ - .github/workflows/*
+
+documentation:
+ - docs/*
+
+update:
+ - src/Directory.Build.props
+
+controls:
+ - src/Wpf.Ui/Controls/*
+
+styles:
+ - src/Wpf.Ui/Styles/*
+
+icons:
+ - src/Wpf.Ui/Fonts/FluentSystemIcons-Filled.ttf
+ - src/Wpf.Ui/Fonts/FluentSystemIcons-Regular.ttf
+
+dependencies:
+ - src/Packages.props
+ - branding/package.json
+
+NuGet:
+ - src/Packages.props
diff --git a/.github/labels.yml b/.github/labels.yml
new file mode 100644
index 000000000..396124380
--- /dev/null
+++ b/.github/labels.yml
@@ -0,0 +1,73 @@
+---
+- name: "icons"
+ color: "86CBEC"
+ description: "Fonts and icons updates"
+- name: "animations"
+ color: "233C4F"
+ description: "Topic is related to animations"
+- name: "bug"
+ color: "d73a4a"
+ description: "Something isn't working"
+- name: "controls"
+ color: "26CB0A"
+ description: "Changes to the appearance or logic of custom controls."
+- name: "dependencies"
+ color: "0366d6"
+ description: "Pull requests that update a dependency file"
+- name: "documentation"
+ color: "0075ca"
+ description: "Improvements or additions to documentation"
+- name: "duplicate"
+ color: "cfd3d7"
+ description: "This issue or pull request already exists"
+- name: "enhancement"
+ color: "a2eeef"
+ description: "New feature or request"
+- name: "github_actions"
+ color: "000000"
+ description: "Pull requests that update GitHub Actions code"
+- name: "good_first_issue"
+ color: "7057ff"
+ description: "Good for newcomers"
+- name: "help_wanted"
+ color: "008672"
+ description: "Extra attention is needed"
+- name: "invalid"
+ color: "e4e669"
+ description: "This doesn't seem right"
+- name: "more_info_needed"
+ color: "B60205"
+ description: "More information is needed to solve the problem."
+- name: "MVVM_DI"
+ color: "536317"
+ description: "Issues related to MVVM and Dependency Injection."
+- name: "navigation"
+ color: "C2AAA3"
+ description: "Changes to navigation related controls."
+- name: ".NET"
+ color: "7121c6"
+ description: "Pull requests that update .NET code."
+- name: "NuGet"
+ color: "004880"
+ description: "Update of the NuGet package."
+- name: "performance"
+ color: "D93F0B"
+ description: "Performance improvements."
+- name: "PR"
+ color: "666666"
+ description: "Pull request."
+- name: "question"
+ color: "d876e3"
+ description: "Further information is requested."
+- name: "styles"
+ color: "bfd4f2"
+ description: "Updates to the appearance of the controls."
+- name: "themes"
+ color: "080AA0"
+ description: "Updates to the appearance of the themes."
+- name: "update"
+ color: "1D76DB"
+ description: "Pull Request containing the update."
+- name: "wontfix"
+ color: "ffffff"
+ description: "This will not be worked on."
diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index 43831545b..8f2ecd4a9 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -2,7 +2,7 @@ name: DotNet Main
on:
push:
- branches: [ main ]
+ branches: [main]
workflow_dispatch:
diff --git a/.github/workflows/DV.yml b/.github/workflows/DV.yml
index dad667703..c383d047e 100644
--- a/.github/workflows/DV.yml
+++ b/.github/workflows/DV.yml
@@ -2,9 +2,9 @@ name: DotNet Development
on:
pull_request:
- branches: [ development ]
+ branches: [development]
push:
- branches: [ development ]
+ branches: [development]
workflow_dispatch:
@@ -16,12 +16,12 @@ jobs:
- uses: microsoft/setup-msbuild@v1.1
with:
msbuild-architecture: x64
- - uses: nuget/setup-nuget@v1.0.6
+ - uses: nuget/setup-nuget@v1.0.7
with:
- nuget-version: 'latest'
+ nuget-version: "latest"
- name: NuGet restore
- run: nuget restore src/Wpf.Ui.sln
+ run: nuget restore src/Wpf.Ui.Demo.sln
- name: Build
run: msbuild src/Wpf.Ui.sln -p:Configuration=Release -m
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
new file mode 100644
index 000000000..356bbb911
--- /dev/null
+++ b/.github/workflows/labeler.yml
@@ -0,0 +1,14 @@
+name: "Pull Request Labeler"
+on:
+ - pull_request_target
+
+jobs:
+ triage:
+ permissions:
+ contents: read
+ pull-requests: write
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/labeler@v4
+ with:
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml
index e36042e4e..5207ea059 100644
--- a/.github/workflows/lock.yml
+++ b/.github/workflows/lock.yml
@@ -17,4 +17,4 @@ jobs:
exclude-any-issue-labels: "keep-unlocked, status:awaiting response"
add-issue-labels: "locked-due-to-inactivity"
issue-comment: ""
- issue-lock-reason: "resolved"
\ No newline at end of file
+ issue-lock-reason: "resolved"
diff --git a/README.md b/README.md
index e6458b18c..aeaa6d385 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,19 @@ A simple way to make your application written in WPF keep up with modern design
[![GitHub license](https://img.shields.io/github/license/lepoco/wpfui)](https://github.com/lepoco/wpfui/blob/master/LICENSE) [![Nuget](https://img.shields.io/nuget/v/WPF-UI)](https://www.nuget.org/packages/WPF-UI/) [![Nuget](https://img.shields.io/nuget/dt/WPF-UI?label=nuget-downloads)](https://www.nuget.org/packages/WPF-UI/) [![VS 2022 Downloads](https://img.shields.io/visual-studio-marketplace/i/lepo.WPF-UI?label=vs-2022-downloads)](https://marketplace.visualstudio.com/items?itemName=lepo.WPF-UI) [![Size](https://img.shields.io/github/repo-size/lepoco/wpfui)](https://github.com/lepoco/wpfui) [![Sponsors](https://img.shields.io/github/sponsors/lepoco)](https://github.com/sponsors/lepoco)
+![ua](https://user-images.githubusercontent.com/13592821/184498735-d296feb8-0f9b-45df-bc0d-b7f0b6f580ed.png)
+
+### Deliver humanitarian aid directly to Ukraine.
+
+https://bank.gov.ua/en/about/humanitarian-aid-to-ukraine
+
+### Refugees in Poland
+
+Many forms of support for refugees from Ukraine and organizations supporting them are available on the Polish government website
+https://pomagamukrainie.gov.pl/chce-pomoc/prywatnie/pomoc-finansowa
+
+![ua](https://user-images.githubusercontent.com/13592821/184498735-d296feb8-0f9b-45df-bc0d-b7f0b6f580ed.png)
+
## 🚀 Getting started
For a starter guide see our [documentation](https://wpfui.lepo.co/documentation/).
@@ -68,59 +81,9 @@ Radiograph is a computer hardware monitoring app that uses **WPF UI**.
[](https://www.microsoft.com/en-us/p/radiograph/9nh1p86h06cg?activetab=pivot:overviewtab)
-## 🛠️ Custom controls
-
-| Control | Namespace | Description |
-| ----------------------- | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **UiWindow** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/UiWindow.cs) | WPF window with additional features. |
-| **UiPage** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/UiPage.cs) | WPF page with additional features. |
-| **Anchor** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Anchor.cs) | Creates a hyperlink to web pages, files or anything else a URL can address. |
-| **Arc** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Arc.cs) | Draws a symmetrical arc with rounded edges. |
-| **AutoSuggestBox** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/AutoSuggestBox.cs) | Represents a text control that makes suggestions to users as they enter text using a keyboard. |
-| **Badge** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Badge.cs) | Used to highlight an item, attract attention or flag status. |
-| **Breadcrumb** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Breadcrumb.cs) | Automatic display of the page title from the navigation in the application. |
-| **Button** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Button.cs) | Custom button with additional parameters like an icon. |
-| **Card** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Card.cs) | Simple card compatible with the theme for displaying other elements. |
-| **CardAction** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/CardAction.cs) | Inherited from the Button interactive card styled according to Fluent Design. |
-| **CardControl** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/CardControl.cs) | Inherited from the Button control which displays an additional control on the right side of the card. |
-| **CardExpander** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/CardExpander.cs) | Inherited from the ContentControl control which can hide the collapsable content. |
-| **CodeBlock** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/CodeBlock.cs) | Formats syntax and display a fragment of the source code. |
-| **Dialog** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Dialog.cs) | Displays a large card with a slightly transparent background and two action buttons. |
-| **FontIcon** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/FontIcon.cs) | Represents a text element containing an icon glyph with selectable font family. |
-| **Hyperlink** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Hyperlink.cs) | Button that opens a URL in a web browser. |
-| **SymbolIcon** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/SymbolIcon.cs) | Represents a text element containing an icon glyph. |
-| **MessageBox** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/MessageBox.cs) | Custom window to display notifications outside the application. |
-| **Navigation** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Navigation.cs) | Navigation styled as UWP apps. |
-| **NavigationHeader** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationHeader.cs) | Header for the navigation. |
-| **NavigationSeparator** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationSeparator.cs) | Separator for the navigation. |
-| **NavigationItem** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationItem.cs) | Element of the navigation. |
-| **NavigationStore** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationStore.cs) | Navigation styled as Windows 11 Store app |
-| **NavigationFluent** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationFluent.cs) | Navigation styled as Windows 11 Settings app. |
-| **NavigationCompact** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationCompact.cs) | Compact navigation styled as Windows 11 Task Manager app. |
-| **NotifyIcon** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NotifyIcon.cs) | Icon with menu in the tray. |
-| **NumberBox** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NumberBox.cs) | Text field for entering numbers with the possibility of setting a mask. |
-| **ProgressRing** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/ProgressRing.cs) | Rotating loading ring like in Windows 11. |
-| **ThumbRate** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/ThumbRate.cs) | Buttons to leave positive or negative ratings. |
-| **Rating** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Rating.cs) | Stars to display the rating. |
-| **Snackbar** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Snackbar.cs) | Animated card with a notification displayed at the bottom of the application. |
-| **ToggleSwitch** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/ToggleSwitch.cs) | Use ToggleSwitch to present users with two mutally exclusive options (like on/off). |
-| **TextBox** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/TextBox.cs) | Text field for with placeholders and icons. |
-| **TitleBar** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/TitleBar.cs) | A set of buttons that can replace the default window navigation, giving it a new, modern look with implemented [NotifyIcon](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Tray/NotifyIcon.cs). |
-
-## 🧩 Custom classes and tools
-
-| Class | Namespace | Description |
-| -------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
-| **Theme** | [Wpf.Ui.Appearance](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Appearance/Theme.cs) | Allows to manage available color themes from the library. |
-| **Background** | [Wpf.Ui.Appearance](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Appearance/Background.cs) | Allows to add background effects like Mica or Acrylic. |
-| **Accent** | [Wpf.Ui.Appearance](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Appearance/Accent.cs) | Allows to change the application color accents. |
-| **Watcher** | [Wpf.Ui.Appearance](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Appearance/Watcher.cs) | Listens for changes in system parameters, then switches theme with **Appearance.Theme.Set**. |
-| **Progress** | [Wpf.Ui.Taskbar](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Taskbar/Progress.cs) | Allows to change the status of the displayed notification in the application icon on the TaskBar. |
-| **NotifyIcon** | [Wpf.Ui.Tray](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Tray/NotifyIcon.cs) | Allows to create an icon and a menu in the tray. |
-
## 📖 Documentation
-Documentation can be found at https://wpfui.lepo.co/. We also have a [tutorial](https://wpfui.lepo.co/documentation/tutorial) over there for newcomers.
+Documentation can be found at https://wpfui.lepo.co/. We also have a [tutorial](https://wpfui.lepo.co/tutorial/) over there for newcomers.
## 🚧 Development
@@ -132,42 +95,29 @@ First, your application needs to load custom styles, add in the **MyApp\App.xaml
```xml
-
+
```
-Now, you can customize your views, for example by adding a non-standard look to the main window and navigation buttons
+Now you can create fantastic apps, e.g. with one button:
```xml
+ ...
+ xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
```
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 000000000..eb998bf79
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,13 @@
+# Security Policy
+
+## Supported Versions
+
+At the moment, the only supported version of the **WPF UI** is the newest one. You can find it on _NuGet_.
+https://www.nuget.org/packages/wpf-ui/
+
+## Reporting a Vulnerability
+
+Security issues and bugs should be reported privately, by emailing support (at) lepo.co
+lepo.co does not offer Bug Bounty for the **WPF UI** library.
+
+Please do not open issues for anything you think might have a security implication.
diff --git a/branding/package.json b/branding/package.json
index e43a87c6f..5b0827c6a 100644
--- a/branding/package.json
+++ b/branding/package.json
@@ -3,6 +3,6 @@
"name": "wpf-ui",
"version": "1.1.0",
"dependencies": {
- "@fluentui/react-icons": "2.0.176"
+ "@fluentui/react-icons": "2.0.182"
}
}
\ No newline at end of file
diff --git a/build.cmd b/build.cmd
new file mode 100644
index 000000000..242094145
--- /dev/null
+++ b/build.cmd
@@ -0,0 +1,4 @@
+@echo off
+powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0scripts\build_demo.ps1""""
+@REM powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0scripts\build_extension.ps1""""
+exit /b %ErrorLevel%
\ No newline at end of file
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 000000000..4378419e7
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,9 @@
+###############
+# folder #
+###############
+/**/DROP/
+/**/TEMP/
+/**/packages/
+/**/bin/
+/**/obj/
+_site
diff --git a/docs/BACKGROUND.md b/docs/BACKGROUND.md
deleted file mode 100644
index fea922242..000000000
--- a/docs/BACKGROUND.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# Backgrounds
-With the help of WPF UI, you can take advantage of the new backgrounds available for Windows 11.
-All you need to do is register your `Window` in the [Background](https://github.com/lepoco/wpfui/blob/main/WPFUI/Appearance/Background.cs) class before initialization.
-
-```cpp
-namespace MyApp
-{
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- Wpf.Ui.Appearance.Background.Apply(
- this, // Window class
- Wpf.Ui.Appearance.BackgroundType.Mica // Background type
- );
-
- InitializeComponent();
- }
- }
-}
-```
-
-```xml
-
-
-```
-
-### Available backgrounds
-For the premiere edition of Windows 11, only the `Mica` background is available.
-For later editions `Auto`, `Tabbed`, and `Acrylic` are also available.
-
-### Automatic change
-The background can be changed automatically when changing the colors or the theme of the operating system using the [Watcher](https://github.com/lepoco/wpfui/blob/main/WPFUI/Appearance/Watcher.cs) class.
-```cpp
-namespace MyApp
-{
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
-
- Loaded += (sender, args) =>
- {
- Wpf.Ui.Appearance.Watcher.Watch(
- this, // Window class
- BackgroundType.Mica, // Background type
- true // Whether to change accents automatically
- );
- };
- }
- }
-}
-```
diff --git a/docs/COLORS.md b/docs/COLORS.md
deleted file mode 100644
index f5f428af7..000000000
--- a/docs/COLORS.md
+++ /dev/null
@@ -1,161 +0,0 @@
-# Colors
-WPF UI uses three kinds of colors. Theme colors, system accents and palette.
-Based on the colors of the themes, the [Brushes](https://github.com/lepoco/wpfui/blob/main/WPFUI/Styles/Assets/Brushes.xaml) are created.
-
-### Palette
-The palette colors are available in the [Palette](https://github.com/lepoco/wpfui/blob/main/WPFUI/Styles/Assets/Palette.xaml) dictionary and are automatically added together with [Wpf.Ui.xaml](https://github.com/lepoco/wpfui/blob/main/WPFUI/Styles/Wpf.Ui.xaml).
-```xml
-#333333
-#F44336
-#E91E63
-#9C27B0
-#673AB7
-#3F51B5
-#2196F3
-#03A9F4
-#00BCD4
-#009688
-#4CAF50
-#8BC34A
-#CDDC39
-#FFEB3B
-#FFC107
-#FF9800
-#FF5722
-#795548
-#9E9E9E
-#607D8B
-```
-
-### System Accents
-System accents are saved in the [Accent](https://github.com/lepoco/wpfui/blob/main/WPFUI/Styles/Assets/Accent.xaml) dictionary by default.
-```xml
-#3379d9
-#559ce4
-#80b9ee
-#add8ff
-```
-
-You can change system accents on the fly with the [Accent](https://github.com/lepoco/wpfui/blob/main/WPFUI/Appearance/Accent.cs) class.
-```cpp
-Wpf.Ui.Appearance.Accent.Apply(
- SystemParameters.WindowGlassColor,// Base system accent
- Wpf.Ui.Appearance.ThemeType.Light, // Theme type
- true // Whether GlassColor is used
-)
-```
-```cpp
-Wpf.Ui.Appearance.Accent.ApplySystemAccent();
-```
-
-### Theme Colors
-Each theme contains a collection of colors, e.g. a [Dark](https://github.com/lepoco/wpfui/blob/main/WPFUI/Styles/Theme/Dark.xaml) theme contains:
-```xml
-#202020
-
-#FFFFFF
-#C5FFFFFF
-#87FFFFFF
-#5DFFFFFF
-#E4000000
-
-#5DFFFFFF
-#FFFFFF
-#000000
-#80000000
-#87FFFFFF
-
-#0FFFFFFF
-#15FFFFFF
-#08FFFFFF
-#0BFFFFFF
-#00FFFFFF
-#B31E1E1E
-
-#8BFFFFFF
-#3FFFFFFF
-
-#454545
-
-#00FFFFFF
-#0FFFFFFF
-#0AFFFFFF
-#00FFFFFF
-
-#00FFFFFF
-#19000000
-#0BFFFFFF
-#12FFFFFF
-#00FFFFFF
-
-#B31C1C1C
-#1A1A1A
-#131313
-#1E1E1E
-
-#28FFFFFF
-
-#12FFFFFF
-#18FFFFFF
-#14FFFFFF
-#23000000
-#37000000
-#33000000
-
-#6B000000
-
-#19000000
-#1C1C1C
-
-#151515
-
-#8BFFFFFF
-#28FFFFFF
-
-#66757575
-#33000000
-#0F000000
-
-#15FFFFFF
-
-#FFFFFF
-#B3000000
-
-#0DFFFFFF
-#08FFFFFF
-
-#4D000000
-
-#4C3A3A3A
-#0DFFFFFF
-#09FFFFFF
-#09FFFFFF
-
-#202020
-#1C1C1C
-#282828
-#2C2C2C
-#00202020
-
-#6CCB5F
-#FCE100
-#FF99A4
-#8BFFFFFF
-#9D9D9D
-#08FFFFFF
-#393D1B
-#433519
-#442726
-#08FFFFFF
-#2E2E2E
-#2E2E2E
-```
-
-Theme colors can be changed with [Theme](https://github.com/lepoco/wpfui/blob/main/WPFUI/Appearance/Theme.cs) class.
-```cpp
-Wpf.Ui.Appearance.Theme.Set(
- Wpf.Ui.Appearance.ThemeType.Light, // Theme type
- Wpf.Ui.Appearance.BackgroundType.Mica, // Background type
- true // Whether to be change accents automatically
-);
-```
\ No newline at end of file
diff --git a/docs/CONTRIBUTE.md b/docs/CONTRIBUTE.md
deleted file mode 100644
index 8bd99fdd5..000000000
--- a/docs/CONTRIBUTE.md
+++ /dev/null
@@ -1 +0,0 @@
-# Contribute
\ No newline at end of file
diff --git a/docs/CONTROLS.md b/docs/CONTROLS.md
deleted file mode 100644
index 08917b929..000000000
--- a/docs/CONTROLS.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# Controls
-**WPF UI** has two kinds of controls. Default WPF ones, which styles have been overridden, and custom proprietary controls like `ProgressRing`.
-
-### Access to custom controls
-In order for your `Window`, `Page`, or `UserControl` to use custom **WPF UI** controls, you need to add `wpfui` namespace.
-```xml
-
-
-
-```
-
-## 🛠️ Custom controls
-| Control | Namespace | Description |
-| --- | --- | --- |
-| **UiWindow** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/UiWindow.cs) | WPF window with additional features. |
-| **UiPage** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/UiPage.cs) | WPF page with additional features. |
-| **Anchor** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Anchor.cs) | Creates a hyperlink to web pages, files or anything else a URL can address. |
-| **Arc** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Arc.cs) | Draws a symmetrical arc with rounded edges. |
-| **AutoSuggestBox** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/AutoSuggestBox.cs) | Represents a text control that makes suggestions to users as they enter text using a keyboard. |
-| **Badge** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Badge.cs) | Used to highlight an item, attract attention or flag status. |
-| **Breadcrumb** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Breadcrumb.cs) | Automatic display of the page title from the navigation in the application. |
-| **Button** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Button.cs) | Custom button with additional parameters like an icon. |
-| **Card** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Card.cs) | Simple card compatible with the theme for displaying other elements. |
-| **CardAction** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/CardAction.cs) | Inherited from the Button interactive card styled according to Fluent Design. |
-| **CardControl** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/CardControl.cs) | Inherited from the Button control which displays an additional control on the right side of the card. |
-| **CardExpander** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/CardExpander.cs) | Inherited from the ContentControl control which can hide the collapsable content. |
-| **CodeBlock** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/CodeBlock.cs) | Formats syntax and display a fragment of the source code. |
-| **Dialog** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Dialog.cs) | Displays a large card with a slightly transparent background and two action buttons. |
-| **FontIcon** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/FontIcon.cs) | Represents a text element containing an icon glyph with selectable font family. |
-| **Hyperlink** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Hyperlink.cs) | Button that opens a URL in a web browser. |
-| **SymbolIcon** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/SymbolIcon.cs) | Represents a text element containing an icon glyph. |
-| **MessageBox** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/MessageBox.cs) | Custom window to display notifications outside the application. |
-| **Navigation** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Navigation.cs) | Navigation styled as UWP apps. |
-| **NavigationHeader** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationHeader.cs) | Header for the navigation. |
-| **NavigationSeparator** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationSeparator.cs) | Separator for the navigation. |
-| **NavigationItem** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationItem.cs) | Element of the navigation. |
-| **NavigationStore** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationStore.cs) | Navigation styled as Windows 11 Store app |
-| **NavigationFluent** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationFluent.cs) | Navigation styled as Windows 11 Settings app. |
-| **NavigationCompact** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NavigationCompact.cs) | Compact navigation styled as Windows 11 Task Manager app. |
-| **NotifyIcon** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NotifyIcon.cs) | Icon with menu in the tray. |
-| **NumberBox** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/NumberBox.cs) | Text field for entering numbers with the possibility of setting a mask. |
-| **ProgressRing** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/ProgressRing.cs) | Rotating loading ring like in Windows 11. |
-| **ThumbRate** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/ThumbRate.cs) | Buttons to leave positive or negative ratings. |
-| **Rating** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Rating.cs) | Stars to display the rating. |
-| **Snackbar** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Snackbar.cs) | Animated card with a notification displayed at the bottom of the application. |
-| **ToggleSwitch** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/ToggleSwitch.cs) | Use ToggleSwitch to present users with two mutally exclusive options (like on/off). |
-| **TextBox** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/TextBox.cs) | Text field for with placeholders and icons. |
-| **TitleBar** | [Wpf.Ui.Controls](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/TitleBar.cs) | A set of buttons that can replace the default window navigation, giving it a new, modern look with implemented [NotifyIcon](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Tray/NotifyIcon.cs). |
\ No newline at end of file
diff --git a/docs/DATA.md b/docs/DATA.md
deleted file mode 100644
index e5a6f103c..000000000
--- a/docs/DATA.md
+++ /dev/null
@@ -1,117 +0,0 @@
-# Data
-There is often a need to display datasets. We can use default controls like `ListView` or `ItemsControl`, but **WPF UI** also provides controls like `VirtualizingItemsControl` or `VirtualizingWrapPanel` which allow you to display thousands of controls without slowing down your application.
-
-## ListView
-```xml
-
-```
-
-## ListBox
-```xml
-
-```
-
-## TreeView
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-## DataGrid
-```xml
-
-
-
-
-
-
-
-
-
-
-```
-
-## VirtualizingWrapPanel
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-## VirtualizingItemsControl
-```xml
-
-
-
-
-
-
-
-```
\ No newline at end of file
diff --git a/docs/INPUT.md b/docs/INPUT.md
deleted file mode 100644
index 7120198c6..000000000
--- a/docs/INPUT.md
+++ /dev/null
@@ -1,402 +0,0 @@
-# Forms
-
-**WPF UI** modifies the styles of the default text-editing controls and provides some new ones.
-
-# TextBox
-
-`TextBox` enables you to display or edit unformatted text.
-
-### Implementation
-
-```cpp
-class System.Windows.Controls.TextBox
-```
-
-## Exposes
-
-```cpp
-// Gets or sets the displayed / edited text.
-TextBox.Text = "Hello World";
-```
-
-### How to use
-
-```xml
-
-```
-
-# ui:TextBox
-
-`ui:TextBox` enables you to display or edit unformatted text. Additionally, it has parameters such as icon or placeholder.
-
-### Implementation
-
-```cpp
-class Wpf.Ui.Controls.TextBox
-```
-
-## Exposes
-
-```cpp
-// Gets or sets the displayed / edited text.
-TextBox.Text = "Hello World";
-```
-
-```cpp
-// Gets or sets text displayed if the parameter Text is empty.
-TextBox.PlaceholderText = "Hello World";
-```
-
-```cpp
-// Gets or sets a value determining whether to display the placeholder.
-TextBox.PlaceholderEnabled = true;
-```
-
-```cpp
-// Gets or sets a value determining whether to enable the clear button.
-TextBox.ClearButtonEnabled = true;
-```
-
-```cpp
-// Gets or sets displayed icon.
-TextBox.Icon = SymbolRegular.Fluent24;
-```
-
-```cpp
-// Defines whether or not the SymbolFilled should be used.
-TextBox.IconFilled = false;
-```
-
-```cpp
-// Foreground of the icon.
-TextBox.IconForeground = Brushes.White;
-```
-
-```cpp
-// Defines which side the icon should be placed on.
-TextBox.IconPlacement = ElementPlacement.Left;
-```
-
-### How to use
-
-```xml
-
-```
-
-# PasswordBox
-
-`PasswordBox` represents a control designed for entering and handling passwords.
-
-### Implementation
-
-```cpp
-class System.Windows.Controls.PasswordBox
-```
-
-## Exposes
-
-```cpp
-// Gets or sets the password.
-PasswordBox.Password = "Secret";
-```
-
-```cpp
-// Gets or sets the maximum length for passwords to be handled by this PasswordBox.
-PasswordBox.MaxLength = 64;
-```
-
-```cpp
-// Gets or sets the masking character for the PasswordBox.
-PasswordBox.PasswordChar = '#';
-```
-
-### How to use
-
-```xml
-
-```
-
-# ui:PasswordBox
-
-`ui:PasswordBox` represents a control designed for entering and handling passwords. Additionally, it has parameters such as icon or placeholder.
-
-### Implementation
-
-```cpp
-class Wpf.Ui.Controls.PasswordBox
-```
-
-## Exposes
-
-```cpp
-// Gets or sets the password.
-PasswordBox.Password = "Secret";
-```
-
-```cpp
-// Gets or sets the maximum length for passwords to be handled by this PasswordBox.
-PasswordBox.MaxLength = 64;
-```
-
-```cpp
-// Gets or sets character used to mask the password.
-PasswordBox.PasswordChar = '*';
-```
-
-```cpp
-// Gets or sets a value deciding whether to display the reveal password button.
-PasswordBox.RevealButtonEnabled = true;
-```
-
-```cpp
-// Gets or sets text displayed if the parameter Text is empty.
-PasswordBox.PlaceholderText = "Hello World";
-```
-
-```cpp
-// Gets or sets a value determining whether to display the placeholder.
-PasswordBox.PlaceholderEnabled = true;
-```
-
-```cpp
-// Gets or sets a value determining whether to enable the clear button.
-PasswordBox.ClearButtonEnabled = true;
-```
-
-```cpp
-// Gets or sets displayed icon.
-PasswordBox.Icon = SymbolRegular.Fluent24;
-```
-
-```cpp
-// Defines whether or not the SymbolFilled should be used.
-PasswordBox.IconFilled = false;
-```
-
-```cpp
-// Foreground of the icon.
-PasswordBox.IconForeground = Brushes.White;
-```
-
-```cpp
-// Defines which side the icon should be placed on.
-PasswordBox.IconPlacement = ElementPlacement.Left;
-```
-
-### How to use
-
-```xml
-
-```
-
-# ui:NumberBox
-
-`ui:NumberBox` is a control adapted to entering numerical values. Additionally, it has parameters such as icon or placeholder.
-
-### Implementation
-
-```cpp
-class Wpf.Ui.Controls.NumberBox
-```
-
-## Exposes
-
-```cpp
-// Gets or sets current numeric value.
-NumberBox.Value = 10.0;
-```
-
-```cpp
-// Gets or sets value by which the given number will be increased or decreased after pressing the button.
-NumberBox.Step = 10.0;
-```
-
-```cpp
-// Maximum allowable value.
-NumberBox.Max = 100.0;
-```
-
-```cpp
-// Minimum allowable value.
-NumberBox.Max = 0.0;
-```
-
-```cpp
-// Number of decimal places.
-NumberBox.DecimalPlaces = 2;
-```
-
-```cpp
-// Gets or sets numbers pattern.
-NumberBox.Mask = "";
-```
-
-```cpp
-// Gets or sets value determining whether to display the button controls.
-NumberBox.SpinButtonsEnabled = true;
-```
-
-```cpp
-// Gets or sets value which determines whether only integers can be entered.
-NumberBox.IntegersOnly = false;
-```
-
-```cpp
-// Gets or sets text displayed if the parameter Text is empty.
-NumberBox.PlaceholderText = "Hello World";
-```
-
-```cpp
-// Gets or sets a value determining whether to display the placeholder.
-NumberBox.PlaceholderEnabled = true;
-```
-
-```cpp
-// Gets or sets a value determining whether to enable the clear button.
-NumberBox.ClearButtonEnabled = true;
-```
-
-```cpp
-// Gets or sets displayed icon.
-NumberBox.Icon = SymbolRegular.Fluent24;
-```
-
-```cpp
-// Defines whether or not the SymbolFilled should be used.
-NumberBox.IconFilled = false;
-```
-
-```cpp
-// Foreground of the icon.
-NumberBox.IconForeground = Brushes.White;
-```
-
-```cpp
-// Defines which side the icon should be placed on.
-NumberBox.IconPlacement = ElementPlacement.Left;
-```
-
-```cpp
-// Event occurs when a value is incremented by button or arrow key.
-NumberBox.Incremented += OnNumberBoxIncremented;
-```
-
-```cpp
-// Event occurs when a value is decremented by button or arrow key.
-NumberBox.Decremented += OnNumberBoxDecremented;
-```
-
-### How to use
-
-```xml
-
-```
-
-# ui:AutoSuggestBox
-
-`ui:AutoSuggestBox` represents a text control that makes suggestions to users as they enter text. Additionally, it has parameters such as icon or placeholder.
-
-### Implementation
-
-```cpp
-class Wpf.Ui.Controls.AutoSuggestBox
-```
-
-## Exposes
-
-```cpp
-// ItemsSource specifies a collection used to generate the list of suggestions.
-AutoSuggestBox.ItemsSource = new List{"One", "Two"};
-```
-
-```cpp
-// Gets or sets the displayed / edited text.
-AutoSuggestBox.Text = "Hello World";
-```
-
-```cpp
-// Gets or sets text displayed if the parameter Text is empty.
-AutoSuggestBox.PlaceholderText = "Hello World";
-```
-
-```cpp
-// Gets or sets a value determining whether to display the placeholder.
-AutoSuggestBox.PlaceholderEnabled = true;
-```
-
-```cpp
-// Gets or sets a value determining whether to enable the clear button.
-AutoSuggestBox.ClearButtonEnabled = true;
-```
-
-```cpp
-// Gets or sets displayed icon.
-AutoSuggestBox.Icon = SymbolRegular.Fluent24;
-```
-
-```cpp
-// Defines whether or not the SymbolFilled should be used.
-AutoSuggestBox.IconFilled = false;
-```
-
-```cpp
-// Foreground of the icon.
-AutoSuggestBox.IconForeground = Brushes.White;
-```
-
-```cpp
-// Defines which side the icon should be placed on.
-AutoSuggestBox.IconPlacement = ElementPlacement.Left;
-```
-
-### How to use
-
-```xml
-
-```
diff --git a/docs/MENU.md b/docs/MENU.md
deleted file mode 100644
index 793c71fb1..000000000
--- a/docs/MENU.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# Menus
-**WPF UI** mainly modifies the styles of already added navigation related controls in WPF. The exceptions are, for example, the `MenuItem`, which has a `SymbolIcon` parameter added to it.
-
-## Menu
-An interesting menu, you can create, for example, this way.
-```xml
-
-```
-As you can see, in some places we use the native `MenuItem` control, and in some places we use `wpfui: MenuItem`. You can mix them with each other freely.
\ No newline at end of file
diff --git a/docs/PAGES.md b/docs/PAGES.md
deleted file mode 100644
index 8812fa83a..000000000
--- a/docs/PAGES.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Pages
-Pages are controls that you display inside a `Frame` control using one of the available navigation methods.
-[You can read more here](https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.page)
-
-**WPF UI** provides you with several modifiers for the `Page` control that can help you manage your application.
-
-## Add a custom style
-The custom `UiPage` style changes the background, text color and some basic parameters according to your chosen theme.
-
-```xml
-
-
-```
-
-You can also use an other style, `UiPageScrollable`, which automatically adds a scrollbar if the page content is too long.
-```xml
-
-
-```
\ No newline at end of file
diff --git a/docs/SERVICES.md b/docs/SERVICES.md
deleted file mode 100644
index 76d36387d..000000000
--- a/docs/SERVICES.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# Services
-**WPF UI** tries to support ***Dependency Injection*** (DI) and ***Model-View-ViewModel*** (MVVM) patterns.
-If you use [CommunityToolkit](https://github.com/CommunityToolkit/dotnet) or [Microsoft.Toolkit.Mvvm](https://docs.microsoft.com/en-us/windows/communitytoolkit/mvvm/introduction) in your application, the services listed below may be useful for you.
-
-## Getting started
-**MVVM**
-Model–view–viewmodel (MVVM) is a software architectural pattern that facilitates the separation of the development of the graphical user interface (the view) – be it via a markup language or GUI code – from the development of the business logic or back-end logic (the model) so that the view is not dependent on any specific model platform.[^1]
-
-**DI**
-In software engineering, dependency injection is a design pattern in which an object receives other objects that it depends on. A form of inversion of control, dependency injection aims to separate the concerns of constructing objects and using them, leading to loosely coupled programs.[^2]
-
-**Sources in WPF UI**
-The classes and interfaces created for MVVM and DI are in the namespace:
-```cpp
-namespace Wpf.Ui.Mvvm.Services;
-```
-
-# DialogService
-`DialogService` is responsible for managing the display of the `Dialog` control.
-
-### Contract
-```cpp
-interface Wpf.Ui.Mvvm.Contracts.IDialogService
-```
-
-### Implementation
-```cpp
-class Wpf.Ui.Mvvm.Services.DialogService
-```
-
-## Exposes
-```cpp
-// Sets the IDialogControl
-IDialogService.SetDialogControl(IDialogControl dialog);
-```
-```cpp
-// Provides direct access to the IDialogControl
-IDialogService.GetDialogControl();
-```
-
-### How to use
-```cpp
-// Services registration in your service management class
-private static void ConfigureServices(HostBuilderContext context, IServiceCollection services)
-{
- services.AddSingleton();
-}
-
-// Pointing to an existing control somewhere in your Window or Page.
-public Container(IDialogService dialogService)
-{
- dialogService.SetDialogControl(MyDialogControlName);
-}
-```
-
-
-
-[^1]: Model–view–viewmodel https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel
-
-[^2]: Dependency injection https://en.wikipedia.org/wiki/Dependency_injection
\ No newline at end of file
diff --git a/docs/TRAY.md b/docs/TRAY.md
deleted file mode 100644
index dbb75f327..000000000
--- a/docs/TRAY.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# Tray
-**WPF UI** implements Tray icon its own way using native Windows features.
-You can create such an icon in several ways, but we particularly recommend pinning it to the `Titlebar` control inside your main `Window`. Thanks to this, you will have access to all functionalities.
-
-```xml
-
-
-
-
-
-
-
-
-
-
-
-```
-
-## NotifyIcon
-The `NotifyIcon` control can be placed inside one of your XAML files, or simply created in code.
-It has several properties.
-
-`TooltipText` is the text that will be displayed when you hover your mouse over the icon.
-```cpp
-NotifyIcon.TooltipText = "Hello World";
-```
-
-`FocusOnLeftClick` automatically restores your `Window` if it is minimized, and drags it over all other applications.
-```cpp
-NotifyIcon.FocusOnLeftClick = true;
-```
-
-`MenuOnRightClick` automatically opens the menu you set on right-click.
-```cpp
-NotifyIcon.MenuOnRightClick = true;
-```
-
-`Icon` is an `ImageSource`, e.g. in the form of a PNG that will be used as an icon. It should be added as the `Resource` of your application.
-```cpp
-NotifyIcon.Icon = "pack://application:,,,/Assets/Wpf.Ui.png";
-```
-
-`Menu` is the `ContextMenu` that will appear in the tray after right-click.
-```cpp
-NotifyIcon.Menu = new ContextMenu();
-```
-
-`MenuFontSize` is a `Double` number that defines the size of the text in the menu.
-```cpp
-NotifyIcon.MenuFontSize = 14d;
-```
\ No newline at end of file
diff --git a/docs/TUTORIAL.md b/docs/TUTORIAL.md
deleted file mode 100644
index 24f4ca773..000000000
--- a/docs/TUTORIAL.md
+++ /dev/null
@@ -1,225 +0,0 @@
-# Tutorial
-
-**WPF UI** is a library built for [WPF](https://docs.microsoft.com/en-us/visualstudio/designers/getting-started-with-wpf) and the [C#](https://docs.microsoft.com/en-us/dotnet/csharp/) language. To be able to work with them comfortably, you will need [Visual Studio Community Edition](https://visualstudio.microsoft.com/vs/community/) _(NOT VISUAL STUDIO CODE)_.
-
-- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/community/)
-- .NET desktop development package _(via VS2022 installer)_
-
-## Get a package
-
-The first thing you need to do is install the WPF UI via the package manager.
-To do so, in your new WPF project, right-click on **Dependencies** and **Manage NuGet Packages**
-
-Type **WPF-UI** in the search and when the correct result appears - click **Install**.
-
-![image](https://user-images.githubusercontent.com/13592821/158079885-7715b552-bbc6-4574-bac9-92ecb7b161d8.png)
-
-## Adding dictionaries
-
-[XAML](https://docs.microsoft.com/en-us/dotnet/desktop/wpf/xaml/?view=netdesktop-6.0), and hence WPF, operate on resource dictionaries. These are HTML-like files that describe the appearance and various aspects of the [controls](https://wpfui.lepo.co/documentation/controls).
-**WPF UI** adds its own sets of these files to tell the application how the controls should look like.
-
-There should be a file called `App.xaml` in your new application. Add new dictionaries to it using **WPF UI** `Resources` class:
-
-```xml
-
-
-
-
-
-
-
-
-
-
-```
-
-You can choose a color theme here,
-`Light` or `Dark`.
-
-## The main window
-
-At the design stage, we decided not to create ready-made [Window](https://docs.microsoft.com/en-us/dotnet/api/system.windows.window?view=windowsdesktop-6.0) templates, so you can design everything, including [TitleBar](https://github.com/lepoco/wpfui/blob/main/WPFUI/Controls/TitleBar.cs), to your liking. This takes a little more work at the beginning, but allows you to have more control over application look.
-
-First, let's modify MainWindow.xaml
-
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-Things have changed a bit, so let's go over what is what.
-
-#### WPF UI Namespace
-
-This line tells the interpreter that we will be using the **WPF UI** controls under the **ui:** abbreviation
-
-```xml
-
-```
-
-#### Pages Namespace
-
-This line informs that in the given directory there are files of our pages. They will be displayed by the navigation.
-
-```xml
-
-```
-
-#### Style
-
-This line will make the window of our application slightly change. Necessary effects required for the correct display of the custom controls will be added.
-
-```xml
-
-```
-
-#### Navigation
-
-The `ui:NavigationStore` control is responsible managing the displayed pages. The [Page](https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.page) is displayed inside the [Frame](https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.frame).
-As you can see in the example above, the navigation indicates which Frame will display pages.
-
-```xml
-
-
-
-```
-
-### Bradcrumb
-
-Breadcrumb is a small navigation aid, it automatically displays the title of the currently used [Page](https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.page) based on its name given in the navigation. As you can see in the example above, Breadcrumb has indicated which navigation it should use
-
-```xml
-
-
-
-```
-
-### TitleBar
-
-The [TitleBar](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/TitleBar.cs) includes minimize, maximize, and close buttons, and lets you drag the application across the desktop by grabbing at its top bar.
-`TitleBar` is a powerful control and allows you to control aspects such as the [Tray](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Tray/NotifyIcon.cs) icon/menu or [SnapLayout](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/SnapLayout.cs).
-
-```xml
-
-
-
-
-
-
-
-
-
-
-
-```
diff --git a/docs/WINDOWS.md b/docs/WINDOWS.md
deleted file mode 100644
index 58d21d9d7..000000000
--- a/docs/WINDOWS.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# Windows
-Before we cover non-standard `Window` behavior, we need to understand how the window works, well... in Windows.
-In hidden code layers WPF uses WINAPI to create a native system window. Then, inside it, we can create the content of our application. Each such native window has a number of additional properties that can be modified, like border, minimize button or icon. The window also receives WM (Windows Messages) such as keystrokes or mouse movements. These can also be manually processed to achieve specific effects.
-
-## Default `Window` with transparency
-The classic Window control in WPF allows us to set parameters such as size, transparency or name. You can [read more about it here](https://docs.microsoft.com/en-us/dotnet/api/system.windows.window). While transparency matters in the context of Acrylic effect, Mica does not really need it for the entire window, but only for its content.
-Therefore, if we want to get the cool effect of a fully custom window, we should remove the default titlebar and make the background of our content presenter transparent.
-
-One way to do this is to use `WindowChrome`. And then setting the background of our `Window` control to transparent.
-```xml
-
-
-
-```
-Additionally, a few parameters related to margins need to be modified, so if you want an easy window effect without the default titlebar, you can use the preset style.
-```xml
-
-
-```
-As you can see, the above `Window` does not set a transparent background. The reason for this is that if the application is run on Windows 10 and not 11, the background will be just black. Therefore, it is worth using a ready-made function in the **WPF UI** which is Background.Apply.
-```cpp
-public partial class MyWindow : Window
-{
- public MyWindow()
- {
- InitializeComponent();
-
- Wpf.Ui.Appearance.Background.Apply(this, Wpf.Ui.Appearance.BackgroundType.Mica);
- }
-}
-```
-The above function will check if the used OS is version 11 or higher and will remove the `Window` background automatically.
-
-## Custom `UiWindow` control
-In **WPF UI**, you'll find a `UiWindow` control. It has custom styles immediately, but by default it does not use `WindowChrome`. Many of its functions can be forced manually.
-
-For example, you can remove the default menu
-```cpp
-public partial class MyWindow : Wpf.Ui.Controls.UiWindow
-{
- public MyWindow()
- {
- InitializeComponent();
-
- RemoveTitlebar();
- }
-}
-```
-
-Or choose a background for Windows 11 (this method is just a shortcut to Background.Apply).
-```cpp
-public partial class MyWindow : Wpf.Ui.Controls.UiWindow
-{
- public MyWindow()
- {
- InitializeComponent();
-
- ApplyBackdrop(Wpf.Ui.Appearance.BackgroundType.Mica);
- }
-}
-```
-
-~~~
-**NOTE**
-The `UiWindow` control is under development and experimental, please check branch development to stay up to date.
-~~~
-
-## Known limitations
-You must remember that **WPF UI** is designed for single-window, non-fullscreen applications. If your application has special needs and behaviors, don't use the `Style="{DynamicResource UiWindow}"` and create your own. You can also play with the `UiWindow` control to achieve the desired effect.
-
-Known issues include:
- - Strange window behavior on Windows 7.
- - Problems with maximization.
- - Problems with multi-window applications.
\ No newline at end of file
diff --git a/docs/build.ps1 b/docs/build.ps1
new file mode 100644
index 000000000..ea0b8bccb
--- /dev/null
+++ b/docs/build.ps1
@@ -0,0 +1 @@
+docfx .\docfx.json --serve
\ No newline at end of file
diff --git a/docs/docfx.json b/docs/docfx.json
new file mode 100644
index 000000000..2329f8dd4
--- /dev/null
+++ b/docs/docfx.json
@@ -0,0 +1,63 @@
+{
+ "metadata": [
+ {
+ "src": [
+ {
+ "files": ["*.csproj"],
+ "exclude": ["**/bin/**", "**/obj/**"],
+ "src": "../src/Wpf.Ui"
+ }
+ ],
+ "dest": "documentation",
+ "properties": {
+ "TargetFramework": "net6.0"
+ },
+ "disableGitFeatures": false,
+ "disableDefaultFilter": false
+ }
+ ],
+ "build": {
+ "content": [
+ {
+ "files": ["tutorial/**.md", "tutorial/**/toc.yml", "toc.yml", "*.md"]
+ },
+ {
+ "files": ["documentation/**.yml", "documentation/index.md"]
+ }
+ ],
+ "resource": [
+ {
+ "files": ["images/**", "manifest.webmanifest", "robots.txt"]
+ }
+ ],
+ "overwrite": [
+ {
+ "exclude": ["obj/**", "_site/**"]
+ }
+ ],
+ "dest": "_site",
+ "globalMetadata": {
+ "_appTitle": "WPF UI",
+ "_appName": "WPF UI",
+ "_appFaviconPath": "images/favicon.ico",
+ "_appLogoPath": "images/wpfui.png",
+ "_appFooter": "",
+ "_description": "A simple way to make your application written in WPF keep up with modern design trends.",
+ "_copyrightFooter": "",
+ "_enableSearch": false,
+ "_disableSideFilter": false,
+ "_enableNewTab": true,
+ "_disableContribution": false,
+ "_disableBreadcrumb": false
+ },
+ "globalMetadataFiles": [],
+ "fileMetadataFiles": [],
+ "template": ["default", "templates/singulinkfx"],
+ "postProcessors": [],
+ "markdownEngineName": "markdig",
+ "noLangKeyword": false,
+ "keepFileLink": false,
+ "cleanupCacheHistory": false,
+ "disableGitFeatures": false
+ }
+}
diff --git a/docs/documentation/.gitignore b/docs/documentation/.gitignore
new file mode 100644
index 000000000..e8079a3be
--- /dev/null
+++ b/docs/documentation/.gitignore
@@ -0,0 +1,5 @@
+###############
+# temp file #
+###############
+*.yml
+.manifest
diff --git a/docs/README.md b/docs/documentation/index.md
similarity index 98%
rename from docs/README.md
rename to docs/documentation/index.md
index 7445fe8cf..c9a3f60e4 100644
--- a/docs/README.md
+++ b/docs/documentation/index.md
@@ -8,7 +8,7 @@ By default, the library is created for `.NET 6`. If you want to know more about
### 🚀 Getting started
Before you start playing around with **WPF UI**, we recommend that you familiarize yourself [with the WPF basics](https://docs.microsoft.com/en-us/dotnet/desktop/wpf/get-started/create-app-visual-studio?view=netdesktop-6.0).
-When you know more or less what and how, [see our tutorial](https://wpfui.lepo.co/documentation/tutorial).
+When you know more or less what and how, [see our tutorial](https://wpfui.lepo.co/tutorial/tutorial.html).
### Windows Presentation Foundation
diff --git a/src/Wpf.Ui.Extension/Templates/WPFUI_FluentNav/applicationIcon.ico b/docs/images/favicon.ico
similarity index 100%
rename from src/Wpf.Ui.Extension/Templates/WPFUI_FluentNav/applicationIcon.ico
rename to docs/images/favicon.ico
diff --git a/docs/images/icon-192x192.png b/docs/images/icon-192x192.png
new file mode 100644
index 000000000..e0bbb5a3b
Binary files /dev/null and b/docs/images/icon-192x192.png differ
diff --git a/docs/images/icon-256x256.png b/docs/images/icon-256x256.png
new file mode 100644
index 000000000..ae017fbf0
Binary files /dev/null and b/docs/images/icon-256x256.png differ
diff --git a/docs/images/icon-384x384.png b/docs/images/icon-384x384.png
new file mode 100644
index 000000000..247f1052b
Binary files /dev/null and b/docs/images/icon-384x384.png differ
diff --git a/docs/images/icon-512x512.png b/docs/images/icon-512x512.png
new file mode 100644
index 000000000..583a9cc5a
Binary files /dev/null and b/docs/images/icon-512x512.png differ
diff --git a/src/Wpf.Ui.Extension/Templates/WPFUI_FluentNav/Assets/applicationIcon-1024.png b/docs/images/wpfui.png
similarity index 100%
rename from src/Wpf.Ui.Extension/Templates/WPFUI_FluentNav/Assets/applicationIcon-1024.png
rename to docs/images/wpfui.png
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 000000000..cb51cd454
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,157 @@
+
+
+
+
+# WPF UI
+
+[Created with ❤ in Poland by lepo.co](https://dev.lepo.co/)
+A simple way to make your application written in WPF keep up with modern design trends. Library changes the base elements like `Page`, `ToggleButton` or `List`, and also includes additional controls like `Navigation`, `NumberBox`, `Dialog` or `Snackbar`.
+
+[![GitHub license](https://img.shields.io/github/license/lepoco/wpfui)](https://github.com/lepoco/wpfui/blob/master/LICENSE) [![Nuget](https://img.shields.io/nuget/v/WPF-UI)](https://www.nuget.org/packages/WPF-UI/) [![Nuget](https://img.shields.io/nuget/dt/WPF-UI?label=nuget-downloads)](https://www.nuget.org/packages/WPF-UI/) [![VS 2022 Downloads](https://img.shields.io/visual-studio-marketplace/i/lepo.WPF-UI?label=vs-2022-downloads)](https://marketplace.visualstudio.com/items?itemName=lepo.WPF-UI) [![Size](https://img.shields.io/github/repo-size/lepoco/wpfui)](https://github.com/lepoco/wpfui) [![Sponsors](https://img.shields.io/github/sponsors/lepoco)](https://github.com/sponsors/lepoco)
+
+![ua](https://user-images.githubusercontent.com/13592821/184498735-d296feb8-0f9b-45df-bc0d-b7f0b6f580ed.png)
+
+### Deliver humanitarian aid directly to Ukraine.
+
+https://bank.gov.ua/en/about/humanitarian-aid-to-ukraine
+
+### Refugees in Poland
+
+Many forms of support for refugees from Ukraine and organizations supporting them are available on the Polish government website
+https://pomagamukrainie.gov.pl/chce-pomoc/prywatnie/pomoc-finansowa
+
+![ua](https://user-images.githubusercontent.com/13592821/184498735-d296feb8-0f9b-45df-bc0d-b7f0b6f580ed.png)
+
+## 🚀 Getting started
+
+For a starter guide see our [documentation](https://wpfui.lepo.co/documentation/).
+
+**WPF UI** is delivered via **NuGet** package manager. You can find the package here:
+https://www.nuget.org/packages/wpf-ui/
+
+**Visual Studio**
+The plugin for **Visual Studio 2022** let you easily create new projects using **WPF UI**.
+https://marketplace.visualstudio.com/items?itemName=lepo.wpf-ui
+
+## 📁 What's included?
+
+| Name | Framework |
+| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Wpf.Ui** Library that allows you to use all features in your own application | [![NET6](https://img.shields.io/badge/.NET-6.0-red)](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/WPFUI.csproj) [![NET5](https://img.shields.io/badge/.NET-5.0-blue)](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/WPFUI.csproj) [![NETCore3](https://img.shields.io/badge/.NET%20Core-3.1-brightgreen)](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/WPFUI.csproj) [![NETFramework48](https://img.shields.io/badge/.NET%20Framework-4.8-orange)](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/WPFUI.csproj) [![NETFramework47](https://img.shields.io/badge/.NET%20Framework-4.7-orange)](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/WPFUI.csproj) [![NETFramework461](https://img.shields.io/badge/.NET%20Framework-4.6.1-orange)](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/WPFUI.csproj) |
+| **Wpf.Ui.Demo** An MVVM application written in WPF .NET 6 where you can test the features. | [![NET6win](https://img.shields.io/badge/.NET-6.0--windows-red)](https://github.com/lepoco/wpfui/blob/main/WPFUI.Demo/WPFUI.Demo.csproj) |
+| **Wpf.Ui.SimpleDemo** Simple .NET 6 application with navigation. | [![NET6win](https://img.shields.io/badge/.NET-6.0--windows-red)](https://github.com/lepoco/wpfui/blob/main/WPFUI.Demo/WPFUI.Demo.csproj) |
+| **Wpf.Ui.FontMapper** Console app for generating Fluent System Icons enums. | [![NET6win](https://img.shields.io/badge/.NET-6.0-yellow)](https://github.com/lepoco/wpfui/blob/main/WPFUI.Demo/WPFUI.Demo.csproj) |
+| **Wpf.Ui.Extension** Project for Visual Studio 2022 extension. | [![NET6win](https://img.shields.io/badge/MS%20Build-blue)](https://github.com/lepoco/wpfui/blob/main/WPFUI.Demo/WPFUI.Demo.csproj) |
+
+## 🏭 Branches
+
+| Branch | Status |
+| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [**WPF UI - Main**](https://github.com/lepoco/wpfui/tree/main) | [![Build status](https://img.shields.io/github/workflow/status/lepoco/wpfui/DotNet%20Main/main)](https://github.com/lepoco/wpfui/actions/workflows/CI.yml) |
+| [**WPF UI - Development**](https://github.com/lepoco/wpfui/tree/development) | [![Build status](https://img.shields.io/github/workflow/status/lepoco/wpfui/DotNet%20Development/development)](https://github.com/lepoco/wpfui/actions/workflows/DV.yml) |
+
+## 📷 Screenshots
+
+![Demo App Sample](https://user-images.githubusercontent.com/13592821/166259110-0fb98120-fe34-4e6d-ab92-9f72ad7113c3.png)
+
+![Text Editor Sample](https://user-images.githubusercontent.com/13592821/165918838-a65cbb86-4fc4-4efb-adb7-e39027fb661f.png)
+
+![Store App Sample](https://user-images.githubusercontent.com/13592821/165918914-6948fb42-1ee1-4c36-870e-65bb8ffe3c8a.png)
+
+## 🏗️ Works with Visual Studio Designer
+
+![VS2022 Designer Preview](https://user-images.githubusercontent.com/13592821/165919228-0aa3a36c-fb37-4198-835e-53488845226c.png)
+
+## 🏁 Virtualized panels for displaying thousands controls
+
+![WPF UI virtualized wrap panels](https://user-images.githubusercontent.com/13592821/167254364-bc7d1106-2740-4337-907c-0e0f1ce4c320.png)
+
+## ❤️ Custom Tray icon and menu in pure WPF
+
+![WPF UI Tray menu in WPF](https://user-images.githubusercontent.com/13592821/166259470-2d48a88e-47ce-4f8f-8f07-c9b110de64a5.png)
+
+## ⚓ Custom Windows 11 SnapLayout available for TitleBar.
+
+![WPF UI Snap Layout for WPF](https://user-images.githubusercontent.com/13592821/166259869-e60d37e4-ded4-46bf-80d9-f92c47266f34.png)
+
+## 🚧 Development
+
+If you want to propose a new functionality or submit a bugfix, create a [Pull Request](https://github.com/lepoco/wpfui/compare/development...development) for the branch [development](https://github.com/lepoco/wpfui/tree/development).
+
+## 📐 How to use?
+
+First, your application needs to load custom styles, add in the **MyApp\App.xaml** file:
+
+```xml
+
+
+
+
+
+
+
+
+
+
+```
+
+Now, you can customize your views, for example by adding a non-standard look to the main window and navigation buttons
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Special thanks
+
+Crafting apps for .NET without the creators of tools like ReSharper or XAML Styler would never be such a fantastic adventure.
+
+- [🔗 JetBrains ReSharper](https://www.jetbrains.com/resharper/)
+- [🔗 XAML Styler](https://github.com/Xavalon/XamlStyler)
+
+## Microsoft Property
+
+Design of the interface, choice of colors and the appearance of the controls were inspired by projects made by Microsoft for Windows 11.
+The Wpf.Ui.Demo app includes icons from Shell32 for Windows 11. These icons are the legal property of Microsoft and you may not use them in your own app without permission. They are used here as an example of creating tools for Microsoft systems.
+
+## Segoe Fluent Icons
+
+**WPF UI** uses Fluent System Icons. Although this font was also created by Microsoft, it does not contain all the icons for Windows 11. If you need the missing icons, add Segoe Fluent Icons to your application.
+According to the EULA of Segoe Fluent Icons we cannot ship a copy of it with this dll. Segoe Fluent Icons is installed by default on Windows 11, but if you want these icons in an application for Windows 10 and below, you must manually add the font to your application's resources.
+[https://docs.microsoft.com/en-us/windows/apps/design/style/segoe-fluent-icons-font](https://docs.microsoft.com/en-us/windows/apps/design/style/segoe-fluent-icons-font)
+[https://docs.microsoft.com/en-us/windows/apps/design/downloads/#fonts](https://docs.microsoft.com/en-us/windows/apps/design/downloads/#fonts)
+
+In the app dictionaries, you can add an alternate path to the font
+
+```XML
+pack://application:,,,/;component/Fonts/#Segoe Fluent Icons
+```
+
+## Compilation
+
+Use Visual Studio 2022 and invoke the .sln.
+
+Visual Studio
+**WPF UI** is an Open Source project. You are entitled to download and use the freely available Visual Studio Community Edition to build, run or develop for WPF UI. As per the Visual Studio Community Edition license, this applies regardless of whether you are an individual or a corporate user.
+
+## Code of Conduct
+
+This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.
+
+## License
+
+**WPF UI** is free and open source software licensed under **MIT License**. You can use it in private and commercial projects.
+Keep in mind that you must include a copy of the license in your project.
diff --git a/docs/manifest.webmanifest b/docs/manifest.webmanifest
new file mode 100644
index 000000000..f17140314
--- /dev/null
+++ b/docs/manifest.webmanifest
@@ -0,0 +1,32 @@
+{
+ "theme_color": "#1f1f23",
+ "background_color": "#1f1f23",
+ "display": "standalone",
+ "scope": "/",
+ "start_url": "/",
+ "name": "WPF UI",
+ "short_name": "WPF UI",
+ "description": "A simple way to make your application written in WPF keep up with modern design trends.",
+ "icons": [
+ {
+ "src": "images/icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "images/icon-256x256.png",
+ "sizes": "256x256",
+ "type": "image/png"
+ },
+ {
+ "src": "images/icon-384x384.png",
+ "sizes": "384x384",
+ "type": "image/png"
+ },
+ {
+ "src": "images/icon-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/docs/react-docs.json b/docs/react-docs.json
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/robots.txt b/docs/robots.txt
new file mode 100644
index 000000000..eb0536286
--- /dev/null
+++ b/docs/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow:
diff --git a/docs/templates/LICENSE b/docs/templates/LICENSE
new file mode 100644
index 000000000..efe0437de
--- /dev/null
+++ b/docs/templates/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Singulink
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/docs/templates/singulinkfx/layout/_master.tmpl b/docs/templates/singulinkfx/layout/_master.tmpl
new file mode 100644
index 000000000..c17e535c9
--- /dev/null
+++ b/docs/templates/singulinkfx/layout/_master.tmpl
@@ -0,0 +1,63 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+{{!include(/^styles/.*/)}}
+{{!include(/^fonts/.*/)}}
+{{!include(favicon.ico)}}
+{{!include(logo.svg)}}
+{{!include(search-stopwords.json)}}
+
+
+
+ {{>partials/head}}
+
+
+
+
+ {{>partials/scripts}}
+
+
diff --git a/docs/templates/singulinkfx/partials/footer.tmpl.partial b/docs/templates/singulinkfx/partials/footer.tmpl.partial
new file mode 100644
index 000000000..1b92deef2
--- /dev/null
+++ b/docs/templates/singulinkfx/partials/footer.tmpl.partial
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/docs/templates/singulinkfx/partials/head.tmpl.partial b/docs/templates/singulinkfx/partials/head.tmpl.partial
new file mode 100644
index 000000000..16408b12f
--- /dev/null
+++ b/docs/templates/singulinkfx/partials/head.tmpl.partial
@@ -0,0 +1,39 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
+
+
+ {{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}
+
+
+
+ {{#_description}}{{/_description}}
+
+
+
+
+
+
+
+ {{#_appTitle}}{{/_appTitle}}
+ {{#_description}}{{/_description}}
+
+
+
+
+
+
+ {{#_description}}{{/_description}}
+
+
+
+
+
+
+
+
+
+ {{#_noindex}}{{/_noindex}}
+ {{#_enableSearch}}{{/_enableSearch}}
+ {{#_enableNewTab}}{{/_enableNewTab}}
+
\ No newline at end of file
diff --git a/docs/templates/singulinkfx/partials/li.tmpl.partial b/docs/templates/singulinkfx/partials/li.tmpl.partial
new file mode 100644
index 000000000..2c8a3d0e7
--- /dev/null
+++ b/docs/templates/singulinkfx/partials/li.tmpl.partial
@@ -0,0 +1,31 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
diff --git a/docs/templates/singulinkfx/partials/logo.tmpl.partial b/docs/templates/singulinkfx/partials/logo.tmpl.partial
new file mode 100644
index 000000000..738ab5b6f
--- /dev/null
+++ b/docs/templates/singulinkfx/partials/logo.tmpl.partial
@@ -0,0 +1,6 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
+
+ {{_appName}}
+
\ No newline at end of file
diff --git a/docs/templates/singulinkfx/partials/namespace.tmpl.partial b/docs/templates/singulinkfx/partials/namespace.tmpl.partial
new file mode 100644
index 000000000..42d64e69b
--- /dev/null
+++ b/docs/templates/singulinkfx/partials/namespace.tmpl.partial
@@ -0,0 +1,13 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
{{>partials/title}}
+
{{{summary}}}
+
{{{conceptual}}}
+
{{{remarks}}}
+{{#children}}
+
{{>partials/namespaceSubtitle}}
+ {{#children}}
+
+ {{{summary}}}
+ {{/children}}
+{{/children}}
diff --git a/docs/templates/singulinkfx/partials/navbar.tmpl.partial b/docs/templates/singulinkfx/partials/navbar.tmpl.partial
new file mode 100644
index 000000000..cfddfd830
--- /dev/null
+++ b/docs/templates/singulinkfx/partials/navbar.tmpl.partial
@@ -0,0 +1,19 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
+
+ {{>partials/logo}}
+
+
+ {{#_enableSearch}}
+
+
+
+ {{/_enableSearch}}
+
+
+
+
\ No newline at end of file
diff --git a/docs/templates/singulinkfx/partials/scripts.tmpl.partial b/docs/templates/singulinkfx/partials/scripts.tmpl.partial
new file mode 100644
index 000000000..90fb7d576
--- /dev/null
+++ b/docs/templates/singulinkfx/partials/scripts.tmpl.partial
@@ -0,0 +1,12 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/templates/singulinkfx/partials/searchResults.tmpl.partial b/docs/templates/singulinkfx/partials/searchResults.tmpl.partial
new file mode 100644
index 000000000..9f08c90e3
--- /dev/null
+++ b/docs/templates/singulinkfx/partials/searchResults.tmpl.partial
@@ -0,0 +1,9 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
+
{{__global.searchResults}}
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/templates/singulinkfx/partials/toc.tmpl.partial b/docs/templates/singulinkfx/partials/toc.tmpl.partial
new file mode 100644
index 000000000..c660966b6
--- /dev/null
+++ b/docs/templates/singulinkfx/partials/toc.tmpl.partial
@@ -0,0 +1,5 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
+
+
diff --git a/docs/templates/singulinkfx/styles/down-arrow.svg b/docs/templates/singulinkfx/styles/down-arrow.svg
new file mode 100644
index 000000000..e086126a2
--- /dev/null
+++ b/docs/templates/singulinkfx/styles/down-arrow.svg
@@ -0,0 +1,44 @@
+
+
+
diff --git a/docs/templates/singulinkfx/styles/jquery.twbsPagination.js b/docs/templates/singulinkfx/styles/jquery.twbsPagination.js
new file mode 100644
index 000000000..332c01c62
--- /dev/null
+++ b/docs/templates/singulinkfx/styles/jquery.twbsPagination.js
@@ -0,0 +1,317 @@
+/*!
+ * jQuery pagination plugin v1.4.1
+ * http://esimakin.github.io/twbs-pagination/
+ *
+ * Copyright 2014-2016, Eugene Simakin
+ * Released under Apache 2.0 license
+ * http://apache.org/licenses/LICENSE-2.0.html
+ */
+(function ($, window, document, undefined) {
+
+ 'use strict';
+
+ var old = $.fn.twbsPagination;
+
+ // PROTOTYPE AND CONSTRUCTOR
+
+ var TwbsPagination = function (element, options) {
+ this.$element = $(element);
+ this.options = $.extend({}, $.fn.twbsPagination.defaults, options);
+
+ if (this.options.startPage < 1 || this.options.startPage > this.options.totalPages) {
+ throw new Error('Start page option is incorrect');
+ }
+
+ this.options.totalPages = parseInt(this.options.totalPages);
+ if (isNaN(this.options.totalPages)) {
+ throw new Error('Total pages option is not correct!');
+ }
+
+ this.options.visiblePages = parseInt(this.options.visiblePages);
+ if (isNaN(this.options.visiblePages)) {
+ throw new Error('Visible pages option is not correct!');
+ }
+
+ if (this.options.onPageClick instanceof Function) {
+ this.$element.first().on('page', this.options.onPageClick);
+ }
+
+ // hide if only one page exists
+ if (this.options.hideOnlyOnePage && this.options.totalPages == 1) {
+ this.$element.trigger('page', 1);
+ return this;
+ }
+
+ if (this.options.totalPages < this.options.visiblePages) {
+ this.options.visiblePages = this.options.totalPages;
+ }
+
+ if (this.options.href) {
+ this.options.startPage = this.getPageFromQueryString();
+ if (!this.options.startPage) {
+ this.options.startPage = 1;
+ }
+ }
+
+ var tagName = (typeof this.$element.prop === 'function') ?
+ this.$element.prop('tagName') : this.$element.attr('tagName');
+
+ if (tagName === 'UL') {
+ this.$listContainer = this.$element;
+ } else {
+ this.$listContainer = $('
');
+ }
+
+ this.$listContainer.addClass(this.options.paginationClass);
+
+ if (tagName !== 'UL') {
+ this.$element.append(this.$listContainer);
+ }
+
+ if (this.options.initiateStartPageClick) {
+ this.show(this.options.startPage);
+ } else {
+ this.render(this.getPages(this.options.startPage));
+ this.setupEvents();
+ }
+
+ return this;
+ };
+
+ TwbsPagination.prototype = {
+
+ constructor: TwbsPagination,
+
+ destroy: function () {
+ this.$element.empty();
+ this.$element.removeData('twbs-pagination');
+ this.$element.off('page');
+
+ return this;
+ },
+
+ show: function (page) {
+ if (page < 1 || page > this.options.totalPages) {
+ throw new Error('Page is incorrect.');
+ }
+ this.currentPage = page;
+
+ this.render(this.getPages(page));
+ this.setupEvents();
+
+ this.$element.trigger('page', page);
+
+ return this;
+ },
+
+ buildListItems: function (pages) {
+ var listItems = [];
+
+ if (this.options.first) {
+ listItems.push(this.buildItem('first', 1));
+ }
+
+ if (this.options.prev) {
+ var prev = pages.currentPage > 1 ? pages.currentPage - 1 : this.options.loop ? this.options.totalPages : 1;
+ listItems.push(this.buildItem('prev', prev));
+ }
+
+ for (var i = 0; i < pages.numeric.length; i++) {
+ listItems.push(this.buildItem('page', pages.numeric[i]));
+ }
+
+ if (this.options.next) {
+ var next = pages.currentPage < this.options.totalPages ? pages.currentPage + 1 : this.options.loop ? 1 : this.options.totalPages;
+ listItems.push(this.buildItem('next', next));
+ }
+
+ if (this.options.last) {
+ listItems.push(this.buildItem('last', this.options.totalPages));
+ }
+
+ return listItems;
+ },
+
+ buildItem: function (type, page) {
+ var $itemContainer = $(''),
+ $itemContent = $(''),
+ itemText = this.options[type] ? this.makeText(this.options[type], page) : page;
+
+ $itemContainer.addClass(this.options[type + 'Class']);
+ $itemContainer.data('page', page);
+ $itemContainer.data('page-type', type);
+ $itemContainer.append($itemContent.attr('href', this.makeHref(page)).addClass(this.options.anchorClass).html(itemText));
+
+ return $itemContainer;
+ },
+
+ getPages: function (currentPage) {
+ var pages = [];
+
+ var half = Math.floor(this.options.visiblePages / 2);
+ var start = currentPage - half + 1 - this.options.visiblePages % 2;
+ var end = currentPage + half;
+
+ // handle boundary case
+ if (start <= 0) {
+ start = 1;
+ end = this.options.visiblePages;
+ }
+ if (end > this.options.totalPages) {
+ start = this.options.totalPages - this.options.visiblePages + 1;
+ end = this.options.totalPages;
+ }
+
+ var itPage = start;
+ while (itPage <= end) {
+ pages.push(itPage);
+ itPage++;
+ }
+
+ return {"currentPage": currentPage, "numeric": pages};
+ },
+
+ render: function (pages) {
+ var _this = this;
+ this.$listContainer.children().remove();
+ var items = this.buildListItems(pages);
+ jQuery.each(items, function(key, item){
+ _this.$listContainer.append(item);
+ });
+
+ this.$listContainer.children().each(function () {
+ var $this = $(this),
+ pageType = $this.data('page-type');
+
+ switch (pageType) {
+ case 'page':
+ if ($this.data('page') === pages.currentPage) {
+ $this.addClass(_this.options.activeClass);
+ }
+ break;
+ case 'first':
+ $this.toggleClass(_this.options.disabledClass, pages.currentPage === 1);
+ break;
+ case 'last':
+ $this.toggleClass(_this.options.disabledClass, pages.currentPage === _this.options.totalPages);
+ break;
+ case 'prev':
+ $this.toggleClass(_this.options.disabledClass, !_this.options.loop && pages.currentPage === 1);
+ break;
+ case 'next':
+ $this.toggleClass(_this.options.disabledClass,
+ !_this.options.loop && pages.currentPage === _this.options.totalPages);
+ break;
+ default:
+ break;
+ }
+
+ });
+ },
+
+ setupEvents: function () {
+ var _this = this;
+ this.$listContainer.off('click').on('click', 'li', function (evt) {
+ var $this = $(this);
+ if ($this.hasClass(_this.options.disabledClass) || $this.hasClass(_this.options.activeClass)) {
+ return false;
+ }
+ // Prevent click event if href is not set.
+ !_this.options.href && evt.preventDefault();
+ _this.show(parseInt($this.data('page')));
+ });
+ },
+
+ makeHref: function (page) {
+ return this.options.href ? this.generateQueryString(page) : "#";
+ },
+
+ makeText: function (text, page) {
+ return text.replace(this.options.pageVariable, page)
+ .replace(this.options.totalPagesVariable, this.options.totalPages)
+ },
+ getPageFromQueryString: function (searchStr) {
+ var search = this.getSearchString(searchStr),
+ regex = new RegExp(this.options.pageVariable + '(=([^]*)|&|#|$)'),
+ page = regex.exec(search);
+ if (!page || !page[2]) {
+ return null;
+ }
+ page = decodeURIComponent(page[2]);
+ page = parseInt(page);
+ if (isNaN(page)) {
+ return null;
+ }
+ return page;
+ },
+ generateQueryString: function (pageNumber, searchStr) {
+ var search = this.getSearchString(searchStr),
+ regex = new RegExp(this.options.pageVariable + '=*[^]*');
+ if (!search) return '';
+ return '?' + search.replace(regex, this.options.pageVariable + '=' + pageNumber);
+
+ },
+ getSearchString: function (searchStr) {
+ var search = searchStr || window.location.search;
+ if (search === '') {
+ return null;
+ }
+ if (search.indexOf('?') === 0) search = search.substr(1);
+ return search;
+ }
+
+ };
+
+ // PLUGIN DEFINITION
+
+ $.fn.twbsPagination = function (option) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ var methodReturn;
+
+ var $this = $(this);
+ var data = $this.data('twbs-pagination');
+ var options = typeof option === 'object' ? option : {};
+
+ if (!data) $this.data('twbs-pagination', (data = new TwbsPagination(this, options) ));
+ if (typeof option === 'string') methodReturn = data[ option ].apply(data, args);
+
+ return ( methodReturn === undefined ) ? $this : methodReturn;
+ };
+
+ $.fn.twbsPagination.defaults = {
+ totalPages: 1,
+ startPage: 1,
+ visiblePages: 5,
+ initiateStartPageClick: true,
+ hideOnlyOnePage: false,
+ href: false,
+ pageVariable: '{{page}}',
+ totalPagesVariable: '{{total_pages}}',
+ page: null,
+ first: 'First',
+ prev: 'Previous',
+ next: 'Next',
+ last: 'Last',
+ loop: false,
+ onPageClick: null,
+ paginationClass: 'pagination',
+ nextClass: 'page-item next',
+ prevClass: 'page-item prev',
+ lastClass: 'page-item last',
+ firstClass: 'page-item first',
+ pageClass: 'page-item',
+ activeClass: 'active',
+ disabledClass: 'disabled',
+ anchorClass: 'page-link'
+ };
+
+ $.fn.twbsPagination.Constructor = TwbsPagination;
+
+ $.fn.twbsPagination.noConflict = function () {
+ $.fn.twbsPagination = old;
+ return this;
+ };
+
+ $.fn.twbsPagination.version = "1.4.1";
+
+})(window.jQuery, window, document);
diff --git a/docs/templates/singulinkfx/styles/main.js b/docs/templates/singulinkfx/styles/main.js
new file mode 100644
index 000000000..712815855
--- /dev/null
+++ b/docs/templates/singulinkfx/styles/main.js
@@ -0,0 +1,67 @@
+// Created by robdmoore | Rob Moore (MakerX)
+// https://github.com/dotnet/docfx/issues/5103#issuecomment-658849100=
+
+$(function () {
+ var copyToClipboard = function (text) {
+ // Create a textblock and assign the text and add to document
+ var el = document.createElement("textarea");
+ el.value = text;
+ document.body.appendChild(el);
+ el.style.display = "block";
+
+ // select the entire textblock
+ if (window.document.documentMode) el.setSelectionRange(0, el.value.length);
+ else el.select();
+
+ // copy to clipboard
+ document.execCommand("copy");
+
+ // clean up element
+ document.body.removeChild(el);
+ };
+
+ $("code.hljs").each(function () {
+ var $this = $(this);
+ var language = /lang-(.+?)(\s|$)/
+ .exec($this.attr("class"))[1]
+ .toUpperCase();
+
+ if (language === "CS" || language == "CSHARP") {
+ language = "C#";
+ }
+
+ if (language === "XML") {
+ language = "XAML";
+ }
+
+ if (language === "JS") {
+ language = "JavaScript";
+ }
+
+ var $codeHeader = $(
+ '